|
HArD::Core3D
Hybrid Arbitrary Degree::Core 3D - Library to implement 3D schemes with vertex, edge, face and cell polynomials as unknowns
|
Classes providing cell and face quadrature rules, and values of basis functions at the nodes. More...
Classes | |
| class | HArDCore3D::ElementQuad |
| class | HArDCore3D::UVector |
| class | HArDCore3D::HybridCore |
Typedefs | |
| typedef Family< MonomialScalarBasisCell > | HArDCore3D::HybridCore::PolyCellBasisType |
| type for cell basis More... | |
| typedef Family< MonomialScalarBasisFace > | HArDCore3D::HybridCore::PolyFaceBasisType |
| type for face basis More... | |
| typedef Family< MonomialScalarBasisEdge > | HArDCore3D::HybridCore::PolyEdgeBasisType |
| type for edge basis More... | |
Functions | |
| HArDCore3D::ElementQuad::ElementQuad (const HybridCore &hho, const size_t iT, const size_t doeT, const size_t doeF) | |
| Class constructor: loads the quadrature rules and values of basis functions/gradients at these points. More... | |
| const QuadratureRule & | HArDCore3D::ElementQuad::get_quadT () const |
| Returns quadrature rules in cell. More... | |
| const QuadratureRule & | HArDCore3D::ElementQuad::get_quadF (size_t ilF) const |
| Returns quadrature rules on face with local number ilF. More... | |
| const boost::multi_array< double, 2 > & | HArDCore3D::ElementQuad::get_phiT_quadT () const |
| Returns values of cell basis functions at cell quadrature nodes. More... | |
| const boost::multi_array< VectorRd, 2 > & | HArDCore3D::ElementQuad::get_dphiT_quadT () const |
| Returns values of gradients of cell basis functions at cell quadrature nodes. More... | |
| const boost::multi_array< double, 2 > & | HArDCore3D::ElementQuad::get_phiT_quadF (size_t ilF) const |
| Returns values of cell basis functions at face quadrature nodes, for face with local number ilF. More... | |
| const boost::multi_array< double, 2 > | HArDCore3D::ElementQuad::get_phiF_quadF (size_t ilF) const |
| Returns values of face basis functions at face quadrature nodes, for face with local number ilF. More... | |
| const boost::multi_array< VectorRd, 2 > & | HArDCore3D::ElementQuad::get_dphiT_quadF (size_t ilF) const |
| Returns values of gradients of cell basis functions at face quadrature nodes, for face with local number ilF. More... | |
| boost::multi_array< VectorRd, 2 > | HArDCore3D::ElementQuad::get_vec_phiT_quadT (size_t degree) const |
| Builds on the fly the values of vector cell basis functions at cell quadrature nodes. The vector basis is obtained by tensorization of the scalar one: \((\phi_1,0,0), (\phi_2,0,0), ..., (\phi_N,0,0), (0,\phi_1,0), (0,\phi_2,0) ... (0,\phi_N,0), (0,0,\phi_1) ... (0,0,\phi_N)\). More... | |
| boost::multi_array< VectorRd, 2 > | HArDCore3D::ElementQuad::get_vec_phiT_quadF (size_t ilF, size_t degree) const |
| Builds on the fly the values of vector cell basis functions at face quadrature nodes. The vector basis is obtained by tensorization of the scalar one as in get_vec_phiT_quadT. More... | |
| boost::multi_array< VectorRd, 2 > | HArDCore3D::ElementQuad::get_vec_phiF_quadF (size_t ilF, size_t degree) const |
| Builds on the fly the values of vector face basis functions at face quadrature nodes. The vector basis is obtained by tensorization of the scalar one as in get_vec_phiT_quadT. More... | |
| template<typename GeometricSupport > | |
| size_t const | HArDCore3D::DimPoly (int m) |
| template<> | |
| const size_t | HArDCore3D::DimPoly< Cell > (const int m) |
| Compute the size of the basis of 3-variate polynomials up to degree m. More... | |
| template<> | |
| const size_t | HArDCore3D::DimPoly< Face > (const int m) |
| Compute the size of the basis of 2-variate polynomials up to degree m. More... | |
| template<> | |
| const size_t | HArDCore3D::DimPoly< Edge > (const int m) |
| Compute the size of the basis of 1-variate polynomials up to degree m. More... | |
| HArDCore3D::UVector::UVector (const Eigen::VectorXd values, const Mesh &mesh, const int cell_deg, const size_t face_deg) | |
| Eigen::VectorXd & | HArDCore3D::UVector::asVectorXd () const |
| Return the values as an Eigen vector. More... | |
| const int | HArDCore3D::UVector::get_cell_deg () const |
| Return the cell degree. More... | |
| const size_t | HArDCore3D::UVector::get_face_deg () const |
| Return the face degree. More... | |
| const size_t | HArDCore3D::UVector::n_cell_dofs () const |
| Number of dofs in each cell. More... | |
| const size_t | HArDCore3D::UVector::n_face_dofs () const |
| Number of dofs on each face. More... | |
| const size_t | HArDCore3D::UVector::n_total_cell_dofs () const |
| Total number of cell dofs (in the vector, this is where the face dofs start) More... | |
| Eigen::VectorXd | HArDCore3D::UVector::restr (size_t iT) const |
| Extract the restriction of the unknowns corresponding to cell iT and its faces. More... | |
| UVector | HArDCore3D::UVector::operator+ (const UVector &b) |
| Overloads the addition: adds the coefficients. More... | |
| UVector | HArDCore3D::UVector::operator- (const UVector &b) |
| Overloads the subtraction: subtracts the coefficients. More... | |
| double | HArDCore3D::UVector::operator() (size_t index) const |
| Overloads the (): returns the corresponding coefficient. More... | |
| HArDCore3D::HybridCore::HybridCore (const Mesh *mesh_ptr, const int cell_deg, const size_t face_deg, const int edge_deg, const bool use_threads=true, std::ostream &output=std::cout, const bool ortho=true) | |
| Class constructor: initialises the data structure with the given mesh, and desired polynomial degrees of the basis functions. More... | |
| const Mesh * | HArDCore3D::HybridCore::get_mesh () const |
| Returns a pointer to the mesh. More... | |
| const int | HArDCore3D::HybridCore::CellDegree () const |
| Return the degree of cell polynomials. More... | |
| const int | HArDCore3D::HybridCore::CellDegreePos () const |
| const size_t | HArDCore3D::HybridCore::FaceDegree () const |
| Return the degree of face polynomials. More... | |
| const PolyCellBasisType & | HArDCore3D::HybridCore::CellBasis (size_t iT) const |
| Return cell basis for element with global index iT. More... | |
| const PolyFaceBasisType & | HArDCore3D::HybridCore::FaceBasis (size_t iF) const |
| Return face basis for face with global index iF. More... | |
| const PolyEdgeBasisType & | HArDCore3D::HybridCore::EdgeBasis (size_t iE) const |
| Return edge basis for edge with global index iE. More... | |
| double | HArDCore3D::HybridCore::L2norm (const UVector &Xh) const |
| Compute L2 norm of a discrete function (using cell values) More... | |
| double | HArDCore3D::HybridCore::H1norm (const UVector &Xh) const |
| Compute discrete H1 norm of a discrete function. More... | |
| template<typename ContinuousFunction > | |
| UVector | HArDCore3D::HybridCore::interpolate (const ContinuousFunction &f, const int deg_cell, const size_t deg_face, size_t doe) const |
| Compute the interpolant in the discrete space of a continuous function. More... | |
| Eigen::VectorXd | HArDCore3D::HybridCore::compute_weights (size_t iT) const |
| Computes the weights to get cell values from face values when l=-1. More... | |
| double | HArDCore3D::HybridCore::evaluate_in_cell (const UVector Xh, size_t iT, VectorRd x) const |
| Evaluates a discrete function in the cell iT at point x. More... | |
| double | HArDCore3D::HybridCore::evaluate_in_face (const UVector Xh, size_t iF, VectorRd x) const |
| Evaluates a discrete function on the face iF at point x. More... | |
| Eigen::VectorXd | HArDCore3D::HybridCore::VertexValues (const UVector Xh, const std::string from_dofs) |
| From a hybrid function, computes a vector of values at the vertices of the mesh. More... | |
Classes providing cell and face quadrature rules, and values of basis functions at the nodes.
Classes providing tools to implement schemes having polynomial unknowns in the cells, on the faces, and on the edges.
type for cell basis
type for edge basis
type for face basis
|
inline |
Return the values as an Eigen vector.
|
inline |
Return cell basis for element with global index iT.
|
inline |
Return the degree of cell polynomials.
|
inline |
| Eigen::VectorXd HybridCore::compute_weights | ( | size_t | iT | ) | const |
Computes the weights to get cell values from face values when l=-1.
|
inline |
|
inline |
Compute the size of the basis of 3-variate polynomials up to degree m.
| m | Polynomial degree |
|
inline |
Compute the size of the basis of 1-variate polynomials up to degree m.
| m | Polynomial degree |
|
inline |
Compute the size of the basis of 2-variate polynomials up to degree m.
| m | Polynomial degree |
|
inline |
Return edge basis for edge with global index iE.
| ElementQuad::ElementQuad | ( | const HybridCore & | hho, |
| const size_t | iT, | ||
| const size_t | doeT, | ||
| const size_t | doeF | ||
| ) |
Class constructor: loads the quadrature rules and values of basis functions/gradients at these points.
| hho | A reference to the hybridcore instance |
| iT | Global index of cell |
| doeT | The degree of exactness for cell quadratures |
| doeF | The degree of exactness of face quadratures |
| double HybridCore::evaluate_in_cell | ( | const UVector | Xh, |
| size_t | iT, | ||
| VectorRd | x | ||
| ) | const |
Evaluates a discrete function in the cell iT at point x.
| double HybridCore::evaluate_in_face | ( | const UVector | Xh, |
| size_t | iF, | ||
| VectorRd | x | ||
| ) | const |
Evaluates a discrete function on the face iF at point x.
|
inline |
Return face basis for face with global index iF.
|
inline |
Return the degree of face polynomials.
|
inline |
Return the cell degree.
|
inline |
Returns values of gradients of cell basis functions at face quadrature nodes, for face with local number ilF.
|
inline |
Returns values of gradients of cell basis functions at cell quadrature nodes.
|
inline |
Return the face degree.
|
inline |
Returns a pointer to the mesh.
|
inline |
Returns values of face basis functions at face quadrature nodes, for face with local number ilF.
|
inline |
Returns values of cell basis functions at face quadrature nodes, for face with local number ilF.
|
inline |
Returns values of cell basis functions at cell quadrature nodes.
|
inline |
Returns quadrature rules on face with local number ilF.
|
inline |
Returns quadrature rules in cell.
| boost::multi_array< VectorRd, 2 > ElementQuad::get_vec_phiF_quadF | ( | size_t | ilF, |
| size_t | degree | ||
| ) | const |
Builds on the fly the values of vector face basis functions at face quadrature nodes. The vector basis is obtained by tensorization of the scalar one as in get_vec_phiT_quadT.
| degree | local number of face required degree of basis function |
| boost::multi_array< VectorRd, 2 > ElementQuad::get_vec_phiT_quadF | ( | size_t | ilF, |
| size_t | degree | ||
| ) | const |
Builds on the fly the values of vector cell basis functions at face quadrature nodes. The vector basis is obtained by tensorization of the scalar one as in get_vec_phiT_quadT.
| degree | local number of face maximum degree of basis functions required |
| boost::multi_array< VectorRd, 2 > ElementQuad::get_vec_phiT_quadT | ( | size_t | degree | ) | const |
Builds on the fly the values of vector cell basis functions at cell quadrature nodes. The vector basis is obtained by tensorization of the scalar one: \((\phi_1,0,0), (\phi_2,0,0), ..., (\phi_N,0,0), (0,\phi_1,0), (0,\phi_2,0) ... (0,\phi_N,0), (0,0,\phi_1) ... (0,0,\phi_N)\).
| degree | maximal degree of basis functions that is required |
| double HybridCore::H1norm | ( | const UVector & | Xh | ) | const |
Compute discrete H1 norm of a discrete function.
| Xh | Vector of unknowns |
| HybridCore::HybridCore | ( | const Mesh * | mesh_ptr, |
| const int | cell_deg, | ||
| const size_t | face_deg, | ||
| const int | edge_deg, | ||
| const bool | use_threads = true, |
||
| std::ostream & | output = std::cout, |
||
| const bool | ortho = true |
||
| ) |
Class constructor: initialises the data structure with the given mesh, and desired polynomial degrees of the basis functions.
The orthonormalisation comes at a cost in terms of manipulation of the basis functions. This should only be used when the polynomial degree is large and/or the cell is distorted. However, in these cases, it can make a huge difference on the observed convergence rate.
| mesh_ptr | A pointer to the loaded mesh |
| cell_deg | The degree of the cell polynomials |
| face_deg | The degree of the face polynomials |
| edge_deg | The degree of the edge polynomials |
| use_threads | Optional argument to indicate if threads should be used |
| output | Optional argument for specifying outputs of messages |
| ortho | Optional argument for choosing to orthonormalise or not the basis functions |
| UVector HArDCore3D::HybridCore::interpolate | ( | const ContinuousFunction & | f, |
| const int | deg_cell, | ||
| const size_t | deg_face, | ||
| size_t | doe | ||
| ) | const |
Compute the interpolant in the discrete space of a continuous function.
| f | function to interpolate |
| deg_cell | degree of cell polynomials for interpolation |
| deg_face | degree of face polynomials for interpolation |
| doe | degree of exactness of the quadrature rules to compute the interpolate |
| double HybridCore::L2norm | ( | const UVector & | Xh | ) | const |
Compute L2 norm of a discrete function (using cell values)
| Xh | Vector of unknowns |
|
inline |
Number of dofs in each cell.
|
inline |
Number of dofs on each face.
|
inline |
Total number of cell dofs (in the vector, this is where the face dofs start)
|
inline |
Overloads the (): returns the corresponding coefficient.
Overloads the addition: adds the coefficients.
Overloads the subtraction: subtracts the coefficients.
| Eigen::VectorXd UVector::restr | ( | size_t | iT | ) | const |
Extract the restriction of the unknowns corresponding to cell iT and its faces.
| UVector::UVector | ( | const Eigen::VectorXd | values, |
| const Mesh & | mesh, | ||
| const int | cell_deg, | ||
| const size_t | face_deg | ||
| ) |
| values | values of the vector |
| mesh | reference to the mesh |
| cell_deg | polynomial degrees in cell |
| face_deg | polynomial degrees on faces |
| Eigen::VectorXd HybridCore::VertexValues | ( | const UVector | Xh, |
| const std::string | from_dofs | ||
| ) |
From a hybrid function, computes a vector of values at the vertices of the mesh.
| Xh | vector of discrete unknowns on cell and face polynomials |
| from_dofs | Type of unknowns to use: "cell" or "face" |