HArD::Core3D
Hybrid Arbitrary Degree::Core 3D - Library to implement 3D schemes with vertex, edge, face and cell polynomials as unknowns
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | List of all members
HArDCore3D::LASXCurl Class Reference

Discrete Lie algebra valued Serendipity Hcurl space: local operators, L2 product and global interpolator. More...

#include <lasxcurl.hpp>

Inheritance diagram for HArDCore3D::LASXCurl:
Inheritance graph
[legend]
Collaboration diagram for HArDCore3D::LASXCurl:
Collaboration graph
[legend]

Classes

struct  TransferOperators
 A structure to store the serendipity, extension and reduction operators. More...
 

Public Types

typedef std::function< Eigen::Vector3d(const Eigen::Vector3d &)> FunctionType
 
typedef std::vector< FunctionTypeLAFunctionType
 

Public Member Functions

 LASXCurl (const LieAlgebra &lie_algebra, const SXCurl &sx_curl, bool use_threads=true, std::ostream &output=std::cout)
 Constructor.
 
const Meshmesh () const
 Return the mesh.
 
const size_tdegree () const
 Return the polynomial degree.
 
const LieAlgebralieAlg () const
 Return the Lie algebra.
 
const SerendipityProblemserPro () const
 Return the serendipity operators.
 
Eigen::VectorXd interpolate (const LAFunctionType &v, const int doe_cell=-1, const int doe_face=-1, const int doe_edge=-1) const
 Interpolator of a continuous function.
 
const Eigen::VectorXd LaxcurlI (size_t iG, Eigen::VectorXd &v) const
 
const Eigen::MatrixXd & ScurlFace (size_t iF) const
 Return the serendipity reconstruction for the face of index iF.
 
const Eigen::MatrixXd & EcurlFace (size_t iF) const
 Return the extension for the face of index iF.
 
const Eigen::MatrixXd & RcurlFace (size_t iF) const
 Return the reduction for the face of index iF.
 
const Eigen::MatrixXd & ScurlFace (const Face &F) const
 Return the serendipity reconstruction for face F.
 
const Eigen::MatrixXd & EcurlFace (const Face &F) const
 Return the extension for face F.
 
const Eigen::MatrixXd & RcurlFace (const Face &F) const
 Return cell reduction for cell T.
 
const Eigen::MatrixXd & ScurlCell (size_t iT) const
 Return the serendipity reconstruction for the cell of index iT.
 
const Eigen::MatrixXd & EcurlCell (size_t iT) const
 Return the extension for the cell of index iT.
 
const Eigen::MatrixXd & RcurlCell (size_t iT) const
 Return the reduction for the cell of index iT.
 
const Eigen::MatrixXd & ScurlCell (const Cell &T) const
 Return the serendipity reconstruction for cell T.
 
const Eigen::MatrixXd & EcurlCell (const Cell &T) const
 Return the extension for cell T.
 
const Eigen::MatrixXd & RcurlCell (const Cell &T) const
 Return the reduction for cell T.
 
const Eigen::MatrixXd faceCurl (size_t iF) const
 Return the full curl operator on the face of index iF.
 
const Eigen::MatrixXd faceCurl (const Face &F) const
 Return the full curl operator on face F.
 
const Eigen::MatrixXd facePotential (size_t iF) const
 Return the potential operator on the face of index iF.
 
const Eigen::MatrixXd facePotential (const Face &F) const
 Return the potential operator on face F.
 
const Eigen::MatrixXd cellCurl (size_t iT) const
 Return the full curl operator on the cell of index iT.
 
const Eigen::MatrixXd cellCurl (const Cell &T) const
 Return the full curl operator on cell T.
 
const Eigen::MatrixXd cellPotential (size_t iT) const
 Return the potential operator on the cell of index iT.
 
const Eigen::MatrixXd cellPotential (const Cell &T) const
 Return the potential operator on cell T.
 
Eigen::MatrixXd computeL2Product (const size_t iT, const double &penalty_factor=1., const Eigen::MatrixXd &mass_Pk3_T=Eigen::MatrixXd::Zero(1, 1), const IntegralWeight &weight=IntegralWeight(1.)) const
 Compute the matrix of the (weighted) L2-product.
 
Eigen::MatrixXd computeL2ProductGradient (const size_t iT, const SXGrad &sx_grad, const std::string &side, const double &penalty_factor=1., const Eigen::MatrixXd &mass_Pk3_T=Eigen::MatrixXd::Zero(1, 1), const IntegralWeight &weight=IntegralWeight(1.)) const
 Compute the matrix of the (weighted) L2-product as 'computeL2Product', with application of the discrete gradient on the left/right/both sides (depending on argument "side").
 
const DDRCore::CellBasescellBases (size_t iT) const
 Return cell bases for the face of index iT.
 
const DDRCore::CellBasescellBases (const Cell &T) const
 Return cell bases for cell T.
 
const DDRCore::FaceBasesfaceBases (size_t iF) const
 Return face bases for the face of index iF.
 
const DDRCore::FaceBasesfaceBases (const Face &F) const
 Return cell bases for face F.
 
const DDRCore::EdgeBasesedgeBases (size_t iE) const
 Return edge bases for the edge of index iE.
 
const DDRCore::EdgeBasesedgeBases (const Edge &E) const
 Return edge bases for edge E.
 
- Public Member Functions inherited from HArDCore3D::VariableDOFSpace
 VariableDOFSpace (const Mesh &mesh, const Eigen::VectorXi n_local_vertex_dofs, const Eigen::VectorXi n_local_edge_dofs, const Eigen::VectorXi n_local_face_dofs, const Eigen::VectorXi n_local_cell_dofs)
 Constructor.
 
 VariableDOFSpace (const Mesh &mesh, size_t n_local_vertex_dofs, const Eigen::VectorXi n_local_edge_dofs, const Eigen::VectorXi n_local_face_dofs, const Eigen::VectorXi n_local_cell_dofs)
 Simpler constructor if all vertices have the same number of DOFs.
 
 VariableDOFSpace (const Mesh &mesh, size_t n_local_vertex_dofs, size_t n_local_edge_dofs, const Eigen::VectorXi n_local_face_dofs, const Eigen::VectorXi n_local_cell_dofs)
 Simpler constructor if all vertices/edges have the same number of DOFs.
 
 VariableDOFSpace (const Mesh &mesh, size_t n_local_vertex_dofs, size_t n_local_edge_dofs, size_t n_local_face_dofs, const Eigen::VectorXi n_local_cell_dofs)
 Simpler constructor if all vertices/edges/faces have the same number of DOFs.
 
 VariableDOFSpace (const Mesh &mesh, size_t n_local_vertex_dofs, size_t n_local_edge_dofs, size_t n_local_face_dofs, size_t n_local_cell_dofs)
 Simpler constructor if all vertices/edges/faces/cells have the same number of DOFs.
 
const Meshmesh () const
 Returns the mesh.
 
size_t numLocalDofsVertex (const size_t iV) const
 Returns the number of local DOFs on vertex of index iV.
 
size_t numLocalDofsVertex (const Vertex &V) const
 Returns the number of local DOFs on vertex V.
 
size_t numLocalDofsEdge (const size_t iE) const
 Returns the number of local DOFs on edge of index iE.
 
size_t numLocalDofsEdge (const Edge &E) const
 Returns the number of local DOFs on edge E.
 
size_t numLocalDofsFace (const size_t iF) const
 Returns the number of local DOFs on face of index iF.
 
size_t numLocalDofsFace (const Face &F) const
 Returns the number of local DOFs on face F.
 
size_t numLocalDofsCell (const size_t iT) const
 Returns the number of local DOFs on cell of index iT.
 
size_t numLocalDofsCell (const Cell &T) const
 Returns the number of local DOFs on cell T.
 
size_t nDOFs_vertices () const
 Total number of vertices DOFs.
 
size_t nDOFs_edges () const
 Total number of edges DOFs.
 
size_t nDOFs_faces () const
 Total number of faces DOFs.
 
size_t nDOFs_cells () const
 Total number of cells DOFs.
 
size_t dimension () const
 Returns the dimension of the global space (all DOFs for all geometric entities)
 
size_t dimensionVertex (const Vertex &V) const
 Returns the dimension of the local space on the vertex V.
 
size_t dimensionVertex (size_t iV) const
 Returns the dimension of the local space on the vertex of index iV.
 
size_t dimensionEdge (const Edge &E) const
 Returns the dimension of the local space on the edge E (including vertices)
 
size_t dimensionEdge (size_t iE) const
 Returns the dimension of the local space on the edge of index iE (including vertices)
 
size_t dimensionFace (const Face &F) const
 Returns the dimension of the local space on the face F (including edges and vertices)
 
size_t dimensionFace (size_t iF) const
 Returns the dimension of the local space on the face of index iF (including edges and vertices)
 
size_t dimensionCell (const Cell &T) const
 Returns the dimension of the local space on the cell T (including faces, edges and vertices)
 
size_t dimensionCell (size_t iT) const
 Returns the dimension of the local space on the cell of index iT (including faces, edges and vertices)
 
size_t localOffset (const Edge &E, const Vertex &V) const
 Returns the local offset of the vertex V with respect to the edge E.
 
size_t localOffset (const Edge &E) const
 Returns the local offset of the unknowns attached to the edge E.
 
size_t localOffset (const Face &F, const Vertex &V) const
 Returns the local offset of the vertex V with respect to the face F.
 
size_t localOffset (const Face &F, const Edge &E) const
 Returns the local offset of the edge E with respect to the face F.
 
size_t localOffset (const Face &F) const
 Returns the local offset of the unknowns attached to the face F.
 
size_t localOffset (const Cell &T, const Vertex &V) const
 Returns the local offset of the vertex V with respect to the cell T.
 
size_t localOffset (const Cell &T, const Edge &E) const
 Returns the local offset of the edge E with respect to the cell T.
 
size_t localOffset (const Cell &T, const Face &F) const
 Returns the local offset of the face F with respect to the cell T.
 
size_t localOffset (const Cell &T) const
 Returns the local offset of the unknowns attached to the element T.
 
size_t globalOffset (const Vertex &V) const
 Return the global offset for the unknowns on the vertex V.
 
size_t globalOffset (const Edge &E) const
 Return the global offset for the unknowns on the edge E.
 
size_t globalOffset (const Face &F) const
 Return the global offset for the unknowns on the face F.
 
size_t globalOffset (const Cell &T) const
 Return the global offset for the unknowns on the cell T.
 
Eigen::VectorXd restrictEdge (size_t iE, const Eigen::VectorXd &vh) const
 Restrict to the edge (including its vertices) of index iE.
 
Eigen::VectorXd restrictFace (size_t iF, const Eigen::VectorXd &vh) const
 Restrict to the face (including vertices and edges) of index iF.
 
Eigen::VectorXd restrictCell (size_t iT, const Eigen::VectorXd &vh) const
 Restrict to the cell (including vertices, edges and faces) of index iT.
 
Eigen::VectorXd restrict (const Edge &E, const Eigen::VectorXd vh) const
 Restrict to an edge.
 
Eigen::VectorXd restrict (const Face &F, const Eigen::VectorXd vh) const
 Restrict to a face.
 
Eigen::VectorXd restrict (const Cell &T, const Eigen::VectorXd vh) const
 Restrict to a cell.
 
Eigen::MatrixXd extendOperator (const Cell &T, const Face &F, const Eigen::MatrixXd &opF) const
 
Eigen::MatrixXd extendOperator (const Cell &T, const Edge &E, const Eigen::MatrixXd &opE) const
 Extend an edge operator to a cell.
 
Eigen::MatrixXd extendOperator (const Face &F, const Edge &E, const Eigen::MatrixXd &opE) const
 Extend an edge operator to a face.
 
void extendOperator (const Cell &T, const Face &F, Eigen::Ref< Eigen::MatrixXd > opT, const Eigen::MatrixXd &opF) const
 Adds a face operator to a cell operator: distributes and adds the contributions from face F to the operator opT on element T (equivalent to opT + extendOperator(T, F, opF)).
 
void extendOperator (const Cell &T, const Edge &E, Eigen::MatrixXd &opT, const Eigen::MatrixXd &opE) const
 Adds an edge operator to a cell.
 
void extendOperator (const Face &F, const Edge &E, Eigen::MatrixXd &opF, const Eigen::MatrixXd &opE) const
 Adds an edge operator to a face.
 
void addInnerProductContribution (const Cell &T, const Face &F, Eigen::MatrixXd &prodT, const Eigen::MatrixXd &prodF) const
 Takes an inner product prodF on a face F, and adds its contributions to the inner product prodT on the element T (distributes the contributions according to the DOFs as seen from T)
 
std::vector< size_tglobalDOFIndices (const Cell &T) const
 Returns a vector listing the global DOFs attached to the element T: vertex DOFs, edge DOFs, face DOFs and element DOFs.
 
std::vector< size_tglobalDOFIndices (const Face &F) const
 Returns a vector listing the global DOFs attached to the face F: vertex DOFs, edge DOFs, face DOFs.
 

Detailed Description

Discrete Lie algebra valued Serendipity Hcurl space: local operators, L2 product and global interpolator.

Each DOF in the XCurl space corresponds to the dimension of the Lie algebra number of DOFs in the LAXCurl space. These DOFs are stored consecutively with overall ordering given by XCurl; they represent and are locally ordered by the basis in the LieAlgebra


The documentation for this class was generated from the following files: