G+Smo  23.12.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tensor module

Detailed Description

This module is responsible for dimension-independent operations on tensor structures and tensor-product bases.

Classes

class  gsGenericTensorBasis< d, T >
 Class for a quasi-tensor B-spline basis. More...
 
class  gsGridIterator< T, CWISE, d, false >
 Iterator over a Cartesian product of points, which is given by coordinate-wise point sets. More...
 
class  gsGridIterator< T, mode, d, false >
 Iterator over a Cartesian product of uniformly distributed numeric points inside a (hyper-)cube. More...
 
class  gsGridIterator< Z, mode, d, true >
 Iterator over the Cartesian product of integer points in a tensor-product grid. More...
 
class  gsTensorBasis< d, T >
 Abstract base class for tensor product bases. More...
 
class  gsTensorDomainBoundaryIterator< T, D, uiter >
 Re-implements gsDomainIterator for iteration over all elements of the boundary of a tensor product parameter domain.
See gsDomainIterator for more detailed documentation and an example of the typical use!!! More...
 
class  gsTensorDomainIterator< T, D >
 Re-implements gsDomainIterator for iteration over all elements of a tensor product parameter domain.
See gsDomainIterator for more detailed documentation and an example of the typical use!!! More...
 

Functions

template<typename T , int d>
void flipTensorVector (const int dir, const gsVector< index_t, d > &sz, gsMatrix< T > &coefs)
 Flips tensor directions in place.
 
template<typename T , int d>
void permuteTensorVector (const gsVector< index_t, d > &perm, gsVector< index_t, d > &sz, gsMatrix< T > &coefs)
 
template<typename T , int d>
void swapTensorDirection (int k1, int k2, gsVector< index_t, d > &sz, gsMatrix< T > &coefs)
 
template<short_t d, typename T >
void tensorCombineTransferMatrices (gsSparseMatrix< T, RowMajor > B[d], gsSparseMatrix< T, RowMajor > &transfer)
 Combine component-wise transfer matrices into a transfer matrix for the tensor product basis. More...
 

Function Documentation

void gismo::permuteTensorVector ( const gsVector< index_t, d > &  perm,
gsVector< index_t, d > &  sz,
gsMatrix< T > &  coefs 
)

Reorders (inplace) the given tensor coefs vector (regarded as a sz.prod() x d matrix arranged as a flattened sz tensor, so that the rows are re-arranged according to the input permutation perm. The sz is updated to the new ordering.

void gismo::swapTensorDirection ( int  k1,
int  k2,
gsVector< index_t, d > &  sz,
gsMatrix< T > &  coefs 
)

Reorders (inplace) the given tensor coefs vector (regarded as a sz.prod() x d matrix arranged as a flattened sz tensor, so that the rows are re-arranged so that k1 and k2 are swapped permutation perm. The sz is updated to the new ordering.

void gismo::tensorCombineTransferMatrices ( gsSparseMatrix< T, RowMajor >  B[d],
gsSparseMatrix< T, RowMajor > &  transfer 
)

Combine component-wise transfer matrices into a transfer matrix for the tensor product basis.

Given some kind of transformation (e.g., knot insertion/refinement) which transforms each component basis separately, this function computes a joint transfer matrix transfer which describes the transfer on the whole tensor product basis.

The component transformations are allowed to change the size of the basis.