HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Public Types | Public Member Functions | List of all members
HArDCore2D::LEPNCCore Class Reference

#include <lepnccore.hpp>

Inheritance diagram for HArDCore2D::LEPNCCore:
Inheritance graph
[legend]
Collaboration diagram for HArDCore2D::LEPNCCore:
Collaboration graph
[legend]

Public Types

using cell_basis_type = std::function< double(double, double)>
 type for cell basis More...
 
using cell_gradient_type = std::function< VectorRd(double, double)>
 type for gradients of cell basis More...
 
- Public Types inherited from HArDCore2D::HybridCore
typedef Family< MonomialScalarBasisCellPolyCellBasisType
 type for cell basis More...
 
typedef Family< MonomialScalarBasisEdgePolyEdgeBasisType
 type for edge basis More...
 

Public Member Functions

 LEPNCCore (const Mesh *mesh_ptr, const size_t K, const size_t L, std::ostream &output=std::cout)
 Class constructor: initialise the LEPNCCore class, and creates non-conforming basis functions (and gradients) More...
 
const cell_basis_typenc_basis (size_t iT, size_t i) const
 Return a reference to the i'th non-conforming basis function of the cell iT. More...
 
const cell_gradient_typenc_gradient (size_t iT, size_t i) const
 Return a reference to the gradient of the i'th non-conforming basis function of the cell iT. More...
 
const VectorRd ml_node (size_t iT, size_t i) const
 Return the i'th nodal point in cell iT (for mass lumping) More...
 
const std::vector< Eigen::ArrayXd > nc_basis_quad (const size_t iT, const QuadratureRule quad) const
 Computes non-conforming basis functions at the given quadrature nodes. More...
 
const std::vector< Eigen::ArrayXXd > grad_nc_basis_quad (const size_t iT, const QuadratureRule quad) const
 Compute \((\nabla \phi_i^{nc})_{i\in I}\) at the quadrature nodes, where \((\phi_i^{nc})_{i\in I}\) are the cell basis functions. More...
 
Eigen::MatrixXd gram_matrix (const std::vector< Eigen::ArrayXd > &f_quad, const std::vector< Eigen::ArrayXd > &g_quad, const size_t &nrows, const size_t &ncols, const QuadratureRule &quad, const bool &sym, std::vector< double > L2weight={}) const
 
Eigen::MatrixXd gram_matrix (const std::vector< Eigen::ArrayXXd > &F_quad, const std::vector< Eigen::ArrayXXd > &G_quad, const size_t &nrows, const size_t &ncols, const QuadratureRule &quad, const bool &sym, std::vector< Eigen::Matrix2d > L2Weight={}) const
 Overloaded version of the previous one for vector-valued functions: the functions (F_i) and (G_j) are vector-valued functions. More...
 
template<typename Function >
Eigen::VectorXd nc_interpolate_moments (const Function &f, size_t doe) const
 Interpolates a continuous function on the degrees of freedom, using the moments on the basis functions. The first ones are the cell DOFs (DimPoly<Cell>(1) for each cell), the last ones are the edge DOFs (one for each edge) More...
 
template<typename Function >
Eigen::VectorXd nc_interpolate_ml (const Function &f, size_t doe) const
 Interpolates a continuous function on the degrees of freedom, using the moments on the basis functions associated to the edges and the nodal values (corresponding to mass-lumping) on the cell basis functions. The first ones are the cell DOFs (DimPoly<Cell>(1) for each cell), the last ones are the edge DOFs (one for each edge) More...
 
Eigen::VectorXd nc_restr (const Eigen::VectorXd &Xh, size_t iT) const
 Extract from a global vector Xh of unknowns the non-conforming unknowns corresponding to cell iT. More...
 
double nc_L2norm (const Eigen::VectorXd &Xh) const
 Compute L2 norm of a discrete function (given by coefficients on the basis functions) More...
 
double nc_L2norm_ml (const Eigen::VectorXd &Xh) const
 Compute L2 norm of the mass-lumped discrete function (given by coefficients on the basis functions) More...
 
double nc_H1norm (const Eigen::VectorXd &Xh) const
 Compute broken H1 norm of a discrete function (given by coefficients on the basis functions) More...
 
double nc_evaluate_in_cell (const Eigen::VectorXd XTF, size_t iT, double x, double y) const
 Evaluates a non-conforming discrete function in the cell iT at point (x,y) More...
 
Eigen::VectorXd nc_VertexValues (const Eigen::VectorXd Xh, const double weight=0)
 From a non-conforming discrete function, computes a vector of values at the vertices of the mesh. More...
 
- Public Member Functions inherited from HArDCore2D::HybridCore
 HybridCore (const Mesh *mesh_ptr, const int cell_deg, const size_t 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 Meshget_mesh () const
 Returns a pointer to the mesh. More...
 
const int CellDegree () const
 Return the degree of cell polynomials. More...
 
const int CellDegreePos () const
 
const size_t EdgeDegree () const
 Return the degree of edge polynomials. More...
 
const PolyCellBasisTypeCellBasis (size_t iT) const
 Return cell basis for element with global index iT. More...
 
const PolyEdgeBasisTypeEdgeBasis (size_t iE) const
 Return edge basis for edge with global index iE. More...
 
double L2norm (const UVector &Xh) const
 Compute L2 norm of a discrete function (using cell values) More...
 
double H1norm (const UVector &Xh) const
 Compute discrete H1 norm of a discrete function. More...
 
template<typename ContinuousFunction >
UVector interpolate (const ContinuousFunction &f, const int deg_cell, const size_t deg_edge, size_t doe) const
 Compute the interpolant in the discrete space of a continuous function. More...
 
Eigen::VectorXd compute_weights (size_t iT) const
 Computes the weights to get cell values from edge values when l=-1. More...
 
double 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 evaluate_in_edge (const UVector Xh, size_t iE, VectorRd x) const
 Evaluates a discrete function on the edge iE at point x. More...
 
Eigen::VectorXd 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...
 

Detailed Description

The LEPNCCore class provides basis functions for non-conforming schemes on generic polygonal meshes


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