A matrix-free representation of the symmetric part of the Laplacian \(\Delta u\) of a finite element discretized function \( u(X) \) under Galerkin projection.
More...
|
| SymmetricLaplacianMatrix (MeshType const &mesh, Eigen::Ref< IndexVectorX const > const &eg, Eigen::Ref< VectorX const > const &wg, Eigen::Ref< MatrixX const > const &GNegg, int dims=1) |
| Construct a new symmetric Laplacian operator.
|
|
SelfType & | operator= (SelfType const &)=delete |
|
template<class TDerivedIn, class TDerivedOut> |
void | Apply (Eigen::MatrixBase< TDerivedIn > const &x, Eigen::DenseBase< TDerivedOut > &y) const |
| Applies this matrix as a linear operator on x, adding result to y.
|
|
CSCMatrix | ToMatrix () const |
| Transforms this matrix-free matrix representation into sparse compressed format.
|
|
Index | InputDimensions () const |
| Number of columns.
|
|
Index | OutputDimensions () const |
| Number of rows.
|
|
void | ComputeElementLaplacians () |
| Compute and store the element laplacians.
|
|
void | CheckValidState () const |
| Check if the state of this Laplacian matrix is valid.
|
|
template<CMesh TMesh>
struct pbat::fem::SymmetricLaplacianMatrix< TMesh >
A matrix-free representation of the symmetric part of the Laplacian \(\Delta u\) of a finite element discretized function \( u(X) \) under Galerkin projection.
The precise definition of the Laplacian matrix's symmetric part is given by \( \mathbf{L}_{ij} = \int_\Omega -\nabla \phi_i \cdot \nabla \phi_j d\Omega \).
- Todo
- Explain the Laplacian matrix and its construction and link to my higher-level FEM crash course doc.
This matrix-free Laplacian requires the following inputs:
- A finite element
mesh
satisfying concept CMesh
- A vector of element indices
eg
, associating each quadrature point with an element
- A vector of quadrature weights
wg
- A matrix
GNegg
of element shape function gradients at quadrature points (see ShapeFunctionGradients())
- An integer
dims
specifying the dimensionality of the image of the FEM function space
- Note
- The user-provided quadrature rule is injected into the Laplacian operator, allowing for arbitrary quadrature rules to be used. Since Laplacians of higher-dimensional functions are only one-dimensional Laplacian 'kroneckered' with the identity matrix, the Laplacian matrix is actually \( L \otimes I_{d \times d} \) where \( d \) is the function's dimensionality, but we need not store the duplicate entries.
- Template Parameters
-
TMesh | Type satisfying concept CMesh |