HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
|
Classes providing quadratures on edges and in cells. More...
Namespaces | |
namespace | HArDCore2D |
Classes | |
struct | HArDCore2D::VecHash |
Hash function for VectorZd type. More... | |
class | HArDCore2D::QuadRuleEdge |
class | HArDCore2D::LegendreGauss |
struct | HArDCore2D::QuadratureNode |
Description of one node and one weight from a quadrature rule. More... | |
Typedefs | |
typedef std::unordered_map< VectorZd, double, VecHash > | HArDCore2D::MonomialCellIntegralsType |
Type for list of integrals of monomials. | |
typedef std::vector< double > | HArDCore2D::MonomialEdgeIntegralsType |
Type for list of edge integrals of monomials. | |
typedef std::vector< QuadratureNode > | HArDCore2D::QuadratureRule |
Functions | |
size_t | HArDCore2D::VecHash::operator() (const VectorZd &p) const |
MonomialCellIntegralsType | HArDCore2D::IntegrateCellMonomials (const Cell &T, const size_t maxdeg) |
Compute all integrals on a cell of monomials up to a total degree, using vertex values. | |
MonomialCellIntegralsType | HArDCore2D::CheckIntegralsDegree (const Cell &T, const size_t degree, const MonomialCellIntegralsType &mono_int_map={}) |
Checks if the degree of an existing list of monomial integrals is sufficient, other re-compute and return a proper list. | |
template<typename BasisType > | |
Eigen::MatrixXd | HArDCore2D::transformGM (const Family< BasisType > &family_basis, const char RC, const Eigen::MatrixXd &anc_GM) |
Transforms a Gram Matrix from an ancestor to a family basis. | |
template<typename BasisType > | |
Eigen::MatrixXd | HArDCore2D::transformGM (const RestrictedBasis< BasisType > &restr_basis, const char RC, const Eigen::MatrixXd &anc_GM) |
Transforms a Gram Matrix from an ancestor to a restricted basis. | |
template<typename BasisType > | |
Eigen::MatrixXd | HArDCore2D::transformGM (const ShiftedBasis< BasisType > &shifted_basis, const char RC, const Eigen::MatrixXd &anc_GM) |
Transforms a Gram Matrix from an ancestor to a shifted basis. | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const MonomialScalarBasisCell &basis1, const MonomialScalarBasisCell &basis2, MonomialCellIntegralsType mono_int_map={}) |
Computes the Gram Matrix of a pair of local scalar monomial bases. | |
template<typename BasisType > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const BasisType &basis, MonomialCellIntegralsType mono_int_map={}) |
This overload to simplify the call to GramMatrix in case the two bases are the same. | |
template<typename BasisType1 , typename BasisType2 , size_t N> | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const TensorizedVectorFamily< BasisType1, N > &basis1, const TensorizedVectorFamily< BasisType2, N > &basis2, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of any pair of tensorized scalar bases. | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const RolyComplBasisCell &basis1, const RolyComplBasisCell &basis2, MonomialCellIntegralsType mono_int_map={}) |
Computes the Gram Matrix of a pair of RolyCompl bases. | |
template<typename BasisType1 , size_t N> | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const RolyComplBasisCell &rolycompl_basis, const TensorizedVectorFamily< BasisType1, N > &tens_family, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of a RolyCompl basis and a tensorized scalar basis. | |
template<typename BasisType1 , size_t N> | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const TensorizedVectorFamily< BasisType1, N > &tens_family, const RolyComplBasisCell &rolycompl_basis, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of a tensorized scalar basis and a RolyCompl basis. | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const GolyComplBasisCell &basis1, const GolyComplBasisCell &basis2, MonomialCellIntegralsType mono_int_map={}) |
Gram Matrix of a pair of GolyCompl bases. | |
Eigen::MatrixXd | HArDCore2D::GMRolyComplScalar (const Cell &T, const RolyComplBasisCell &rolycompl_basis, const MonomialScalarBasisCell &mono_basis, const size_t m, MonomialCellIntegralsType mono_int_map) |
Computes the Gram Matrix of the mth component of a RolyCompl Basis and a monomial basis. | |
template<typename BasisType > | |
Eigen::MatrixXd | HArDCore2D::GMRolyComplScalar (const Cell &T, const RolyComplBasisCell &basis1, const BasisType &basis2, const size_t m, MonomialCellIntegralsType mono_int_map) |
Generic template to compute the Gram Matrix of the mth component of a RolyCompl Basis and any basis. | |
template<typename BasisType > | |
constexpr bool | HArDCore2D::useAncestor () |
Determines if the ancestor of a basis will be used to compute a Gram matrix for this basis. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const BasisType1 &basis1, const BasisType2 &basis2, MonomialCellIntegralsType mono_int_map={}) |
Generic template to compute the Gram Matrix of any pair of bases. | |
Eigen::MatrixXd | HArDCore2D::GMScalarDerivative (const Cell &T, const MonomialScalarBasisCell &basis1, const MonomialScalarBasisCell &basis2, const size_t m, MonomialCellIntegralsType mono_int_map={}) |
Computes the Gram Matrix of a pair of local scalar monomial bases, taking a partial derivative of the first (w.r.t. the homogeneous coordinates, without scaling) | |
Eigen::MatrixXd | HArDCore2D::GMScalarDerivative (const Cell &T, const MonomialScalarBasisCell &basis1, const MonomialScalarBasisCell &basis2, const size_t m, const size_t l, MonomialCellIntegralsType mono_int_map={}) |
Computes the Gram Matrix of a pair of local scalar monomial bases, taking partial derivatives of each of them (w.r.t. the homogeneous coordinates, without scaling) | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GMScalarDerivative (const Cell &T, const BasisType1 &basis1, const BasisType2 &basis2, const size_t m, MonomialCellIntegralsType mono_int_map={}) |
Generic template to compute the Gram Matrix of any pair of scalar bases, taking a partial derivative of the first (w.r.t. the homogeneous coordinates, without scaling) | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GMScalarDerivative (const Cell &T, const BasisType1 &basis1, const BasisType2 &basis2, const size_t m, const size_t l, MonomialCellIntegralsType mono_int_map={}) |
Generic template to compute the Gram Matrix of any pair of scalar bases, taking partial derivatives of each of them (w.r.t. the homogeneous coordinates, without scaling) | |
template<typename BasisType1 , typename BasisType2 , size_t N> | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const GradientBasis< BasisType1 > &grad_basis, const TensorizedVectorFamily< BasisType2, N > &tens_family, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of a gradient basis and a tensorized scalar basis. | |
template<typename BasisType1 , typename BasisType2 , size_t N> | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const TensorizedVectorFamily< BasisType1, N > &tens_family, const GradientBasis< BasisType2 > &grad_basis, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of a tensorized scalar basis and a gradient basis. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const GradientBasis< BasisType1 > &grad_basis1, const GradientBasis< BasisType2 > &grad_basis2, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of a gradient basis and another gradient basis. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const CurlBasis< BasisType1 > &basis1, const CurlBasis< BasisType2 > &basis2, MonomialCellIntegralsType mono_int_map={}) |
Generic template to compute the Gram Matrix of a pair of Curl bases. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const CurlBasis< BasisType1 > &curl_basis, const TensorizedVectorFamily< BasisType2, 2 > &tens_family, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of a curl basis and a tensorized scalar basis. | |
template<typename BasisType1 , typename BasisType2 , size_t N> | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const TensorizedVectorFamily< BasisType1, N > &tens_family, const CurlBasis< BasisType2 > &curl_basis, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of a tensorized scalar basis and a gradient basis. | |
template<typename BasisType1 , typename BasisType2 > | |
boost::disable_if< boost::is_same< BasisType2, MonomialCellIntegralsType >, Eigen::MatrixXd >::type | HArDCore2D::GramMatrix (const Cell &T, const DivergenceBasis< BasisType1 > &basis1, const BasisType2 &basis2, MonomialCellIntegralsType mono_int_map={}) |
Generic template to compute the Gram Matrix of a Divergence basis and any other basis. | |
template<typename BasisType1 , typename Basis2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const BasisType1 &basis1, const DivergenceBasis< Basis2 > &basis2, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of any basis and a Divergence basis. | |
template<typename BasisType1 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrixDiv (const Cell &T, const TensorizedVectorFamily< BasisType1, 2 > &basis1, const MonomialScalarBasisCell &basis2, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of a Divergence<Tensorized> basis and a monomial scalar basis. | |
Eigen::MatrixXd | HArDCore2D::GramMatrixDiv (const Cell &T, const RolyComplBasisCell &basis1, const MonomialScalarBasisCell &basis2, MonomialCellIntegralsType mono_int_map={}) |
Computes the Gram Matrix of a Divergence<RolyCompl> basis and a monomial scalar basis. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrixDiv (const Cell &T, const BasisType1 &basis1, const BasisType2 &basis2, MonomialCellIntegralsType mono_int_map={}) |
Template to compute the Gram Matrix of the divergence of any basis and any other basis. | |
template<typename BasisType1 , typename BasisType2 , size_t N> | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const MatrixFamily< BasisType1, N > &basis1, const MatrixFamily< BasisType2, N > &basis2, MonomialCellIntegralsType mono_int_map={}) |
Gram Matrix of any pair of MatrixFamily bases. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const DivergenceBasis< MatrixFamily< BasisType1, dimspace > > &basis1, const TensorizedVectorFamily< BasisType2, dimspace > &basis2, MonomialCellIntegralsType mono_int_map={}) |
Gram Matrix of the divergence of a MatrixFamily and a tensorized basis. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const GradientBasis< TensorizedVectorFamily< BasisType1, dimspace > > &basis1, const MatrixFamily< BasisType2, dimspace > &basis2, MonomialCellIntegralsType mono_int_map={}) |
Gram Matrix of the gradient basis of a tensorized family and a matrix family (only valid if N=dimspace in Tensorized and MatrixFamily). | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const MatrixFamily< BasisType1, dimspace > &basis1, const GradientBasis< TensorizedVectorFamily< BasisType2, dimspace > > &basis2, MonomialCellIntegralsType mono_int_map={}) |
Gram Matrix of a Matrix family and the gradient of a tensorized family. | |
template<typename BasisType1 , typename BasisType2 , size_t N> | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Cell &T, const GradientBasis< TensorizedVectorFamily< BasisType1, N > > &basis1, const GradientBasis< TensorizedVectorFamily< BasisType2, N > > &basis2, MonomialCellIntegralsType mono_int_map={}) |
Gram Matrix of two gradient bases of tensorized families. | |
MonomialEdgeIntegralsType | HArDCore2D::IntegrateEdgeMonomials (const Edge &E, const size_t maxdeg) |
Compute all integrals of edge monomials up to a total degree. | |
MonomialEdgeIntegralsType | HArDCore2D::CheckIntegralsDegree (const Edge &E, const size_t degree, const MonomialEdgeIntegralsType &mono_int_map={}) |
Checks if the degree of an existing list of monomial integrals is sufficient, other re-compute and return a proper list. | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Edge &E, const MonomialScalarBasisEdge &basis1, const MonomialScalarBasisEdge &basis2, MonomialEdgeIntegralsType mono_int_map={}) |
Computes the Gram Matrix of a pair of local scalar monomial bases. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Edge &E, const BasisType1 &basis1, const BasisType2 &basis2, MonomialEdgeIntegralsType mono_int_map={}) |
Generic template to compute the Gram Matrix of any pair of bases. | |
template<typename BasisType1 , typename BasisType2 , size_t N> | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Edge &E, const TensorizedVectorFamily< BasisType1, N > &basis1, const TensorizedVectorFamily< BasisType2, N > &basis2, MonomialEdgeIntegralsType mono_int_map={}) |
GramMatrix of two tensorized families on the edge. | |
template<typename BasisType > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Edge &E, const BasisType &basis, MonomialEdgeIntegralsType mono_int_map={}) |
This overload to simplify the call to GramMatrix in case the two bases are the same. | |
Eigen::MatrixXd | HArDCore2D::GMDer (const Edge &E, const MonomialScalarBasisEdge &basis1, const MonomialScalarBasisEdge &basis2, MonomialEdgeIntegralsType mono_int_map={}) |
Computes the Gram Matrix of the derivative of a monomial basis with another monomial basis. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GMDer (const Edge &E, const BasisType1 &basis1, const BasisType2 &basis2, MonomialEdgeIntegralsType mono_int_map={}) |
Generic template for GMDer with derived bases. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Edge &E, const GradientBasis< BasisType1 > &basis1, const BasisType2 &basis2, MonomialEdgeIntegralsType mono_int_map={}) |
Computes the Gram Matrix of a gradient basis (considering the tangential gradient as a scalar) and a scalar basis. | |
template<typename BasisType1 , typename BasisType2 > | |
Eigen::MatrixXd | HArDCore2D::GramMatrix (const Edge &E, const BasisType1 &basis1, const GradientBasis< BasisType2 > &basis2, MonomialEdgeIntegralsType mono_int_map={}) |
Computes the Gram Matrix of a scalar basis and a gradient basis (considering the tangential gradient as a scalar) | |
HArDCore2D::QuadRuleEdge::QuadRuleEdge (size_t doe, bool warn) | |
HArDCore2D::QuadRuleEdge::~QuadRuleEdge () | |
size_t | HArDCore2D::QuadRuleEdge::nq () |
double | HArDCore2D::QuadRuleEdge::xq (size_t i) |
double | HArDCore2D::QuadRuleEdge::yq (size_t i) |
double | HArDCore2D::QuadRuleEdge::wq (size_t i) |
void | HArDCore2D::QuadRuleEdge::setup (double xV[], double yV[]) |
HArDCore2D::LegendreGauss::LegendreGauss (size_t doe) | |
HArDCore2D::LegendreGauss::~LegendreGauss () | |
void | HArDCore2D::LegendreGauss::sub_rule_01 () |
void | HArDCore2D::LegendreGauss::sub_rule_02 () |
void | HArDCore2D::LegendreGauss::sub_rule_03 () |
void | HArDCore2D::LegendreGauss::sub_rule_04 () |
void | HArDCore2D::LegendreGauss::sub_rule_05 () |
void | HArDCore2D::LegendreGauss::sub_rule_06 () |
void | HArDCore2D::LegendreGauss::sub_rule_07 () |
void | HArDCore2D::LegendreGauss::sub_rule_08 () |
void | HArDCore2D::LegendreGauss::sub_rule_09 () |
void | HArDCore2D::LegendreGauss::sub_rule_10 () |
void | HArDCore2D::LegendreGauss::sub_rule_11 () |
size_t | HArDCore2D::LegendreGauss::npts () |
double | HArDCore2D::LegendreGauss::wq (size_t i) |
double | HArDCore2D::LegendreGauss::tq (size_t i) |
HArDCore2D::QuadratureNode::QuadratureNode (double x, double y, double w) | |
Eigen::Vector2d | HArDCore2D::QuadratureNode::vector () const |
Returns the quadrature point as an Eigen vector. | |
QuadratureRule | HArDCore2D::generate_quadrature_rule (const Cell &T, const int doe, const bool force_split=false) |
Generate quadrature rule on mesh element. | |
QuadratureRule | HArDCore2D::generate_quadrature_rule (const Edge &E, const int doe) |
Generate quadrature rule on mesh face. | |
Variables | |
double | HArDCore2D::QuadratureNode::x |
double | HArDCore2D::QuadratureNode::y |
double | HArDCore2D::QuadratureNode::w |
Classes providing quadratures on edges and in cells.
typedef std::unordered_map<VectorZd, double, VecHash> HArDCore2D::MonomialCellIntegralsType |
Type for list of integrals of monomials.
typedef std::vector<double> HArDCore2D::MonomialEdgeIntegralsType |
Type for list of edge integrals of monomials.
typedef std::vector<QuadratureNode> HArDCore2D::QuadratureRule |
MonomialCellIntegralsType HArDCore2D::CheckIntegralsDegree | ( | const Cell & | T, |
const size_t | degree, | ||
const MonomialCellIntegralsType & | mono_int_map = {} |
||
) |
Checks if the degree of an existing list of monomial integrals is sufficient, other re-compute and return a proper list.
T | Cell |
degree | Expected degree |
mono_int_map | Existing list, optional |
MonomialEdgeIntegralsType HArDCore2D::CheckIntegralsDegree | ( | const Edge & | E, |
const size_t | degree, | ||
const MonomialEdgeIntegralsType & | mono_int_map = {} |
||
) |
Checks if the degree of an existing list of monomial integrals is sufficient, other re-compute and return a proper list.
E | Edge |
degree | Expected degree |
mono_int_map | Existing list, optional |
QuadratureRule HArDCore2D::generate_quadrature_rule | ( | const Cell & | T, |
const int | doe, | ||
const bool | force_split = false |
||
) |
Generate quadrature rule on mesh element.
T | Reference to the mesh cell |
doe | Degree of exactness |
force_split | TRUE if we want the quadrature nodes to be computed by forcing the splitting of the cell into triangles based on its center of mass and edges (otherwise, for simple cells, quadrature nodes are computed by splitting in fewer triangles) |
QuadratureRule HArDCore2D::generate_quadrature_rule | ( | const Edge & | E, |
const int | doe | ||
) |
Generate quadrature rule on mesh face.
E | Reference to the mesh face |
doe | Degree of exactness |
Eigen::MatrixXd HArDCore2D::GMDer | ( | const Edge & | E, |
const BasisType1 & | basis1, | ||
const BasisType2 & | basis2, | ||
MonomialEdgeIntegralsType | mono_int_map = {} |
||
) |
Generic template for GMDer with derived bases.
E | Edge to which the basis corresponds |
basis1 | First basis (rows of the Gram matrix), to be differentiated |
basis2 | Second basis (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GMDer | ( | const Edge & | E, |
const MonomialScalarBasisEdge & | basis1, | ||
const MonomialScalarBasisEdge & | basis2, | ||
MonomialEdgeIntegralsType | mono_int_map = {} |
||
) |
Computes the Gram Matrix of the derivative of a monomial basis with another monomial basis.
E | Edge to which the basis corresponds |
basis1 | First basis, to be differentiated |
basis2 | Second basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GMRolyComplScalar | ( | const Cell & | T, |
const RolyComplBasisCell & | basis1, | ||
const BasisType & | basis2, | ||
const size_t | m, | ||
MonomialCellIntegralsType | mono_int_map | ||
) |
Generic template to compute the Gram Matrix of the mth component of a RolyCompl Basis and any basis.
T | Cell to which the basis corresponds |
basis1 | First basis |
basis2 | Second basis (columns of the Gram matrix) |
m | Differentiate basis1 with respect to the mth variable |
mono_int_map | list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GMRolyComplScalar | ( | const Cell & | T, |
const RolyComplBasisCell & | rolycompl_basis, | ||
const MonomialScalarBasisCell & | mono_basis, | ||
const size_t | m, | ||
MonomialCellIntegralsType | mono_int_map | ||
) |
Computes the Gram Matrix of the mth component of a RolyCompl Basis and a monomial basis.
T | Cell to which the basis corresponds |
rolycompl_basis | First basis |
mono_basis | Second basis |
m | Add one to the power of the mth variable |
mono_int_map | list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GMScalarDerivative | ( | const Cell & | T, |
const BasisType1 & | basis1, | ||
const BasisType2 & | basis2, | ||
const size_t | m, | ||
const size_t | l, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Generic template to compute the Gram Matrix of any pair of scalar bases, taking partial derivatives of each of them (w.r.t. the homogeneous coordinates, without scaling)
T | Cell to which the basis corresponds |
basis1 | First basis (rows of the Gram matrix) |
basis2 | Second basis (columns of the Gram matrix) |
m | Differentiate basis1 with respect to the mth variable |
l | Differentiate basis2 with respect to the lth variable |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GMScalarDerivative | ( | const Cell & | T, |
const BasisType1 & | basis1, | ||
const BasisType2 & | basis2, | ||
const size_t | m, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Generic template to compute the Gram Matrix of any pair of scalar bases, taking a partial derivative of the first (w.r.t. the homogeneous coordinates, without scaling)
T | Cell to which the basis corresponds |
basis1 | First basis (rows of the Gram matrix) |
basis2 | Second basis (columns of the Gram matrix) |
m | Differentiate basis1 with respect to the mth variable |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GMScalarDerivative | ( | const Cell & | T, |
const MonomialScalarBasisCell & | basis1, | ||
const MonomialScalarBasisCell & | basis2, | ||
const size_t | m, | ||
const size_t | l, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Computes the Gram Matrix of a pair of local scalar monomial bases, taking partial derivatives of each of them (w.r.t. the homogeneous coordinates, without scaling)
T | Cell to which the basis corresponds |
basis1 | First basis |
basis2 | Second basis |
m | Differentiate basis1 with respect to the mth variable |
l | Differentiate basis2 with respect to the lth variable |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GMScalarDerivative | ( | const Cell & | T, |
const MonomialScalarBasisCell & | basis1, | ||
const MonomialScalarBasisCell & | basis2, | ||
const size_t | m, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Computes the Gram Matrix of a pair of local scalar monomial bases, taking a partial derivative of the first (w.r.t. the homogeneous coordinates, without scaling)
T | Cell to which the basis corresponds |
basis1 | First basis |
basis2 | Second basis |
m | Differentiate basis1 with respect to the mth variable |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const BasisType & | basis, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
This overload to simplify the call to GramMatrix in case the two bases are the same.
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const BasisType1 & | basis1, | ||
const BasisType2 & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Generic template to compute the Gram Matrix of any pair of bases.
T | Cell to which the basis corresponds |
basis1 | First basis (rows of the Gram matrix) |
basis2 | Second basis (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const BasisType1 & | basis1, | ||
const DivergenceBasis< Basis2 > & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of any basis and a Divergence basis.
T | Cell to which the basis corresponds |
basis1 | First basis (tensorized basis) |
basis2 | Second basis (divergence basis) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const CurlBasis< BasisType1 > & | basis1, | ||
const CurlBasis< BasisType2 > & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Generic template to compute the Gram Matrix of a pair of Curl bases.
T | Cell to which the basis corresponds |
basis1 | First basis |
basis2 | Second basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const CurlBasis< BasisType1 > & | curl_basis, | ||
const TensorizedVectorFamily< BasisType2, 2 > & | tens_family, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of a curl basis and a tensorized scalar basis.
T | Cell to which the basis corresponds |
curl_basis | First basis (rows of the Gram matrix) - curl basis |
tens_family | Second basis (columns of the Gram matrix) - tensorized basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of the bases |
boost::disable_if< boost::is_same< BasisType2, MonomialCellIntegralsType >, Eigen::MatrixXd >::type HArDCore2D::GramMatrix | ( | const Cell & | T, |
const DivergenceBasis< BasisType1 > & | basis1, | ||
const BasisType2 & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Generic template to compute the Gram Matrix of a Divergence basis and any other basis.
T | Cell to which the basis corresponds |
basis1 | First basis (rows of the Gram matrix) |
basis2 | Second basis (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const DivergenceBasis< MatrixFamily< BasisType1, dimspace > > & | basis1, | ||
const TensorizedVectorFamily< BasisType2, dimspace > & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Gram Matrix of the divergence of a MatrixFamily and a tensorized basis.
T | Cell to which the basis corresponds |
basis1 | Divergence of MatrixFamily (rows of the Gram matrix) |
basis2 | Tensorized family (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const GolyComplBasisCell & | basis1, | ||
const GolyComplBasisCell & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Gram Matrix of a pair of GolyCompl bases.
T | Cell to which the basis corresponds |
basis1 | First basis |
basis2 | Second basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const GradientBasis< BasisType1 > & | grad_basis, | ||
const TensorizedVectorFamily< BasisType2, N > & | tens_family, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of a gradient basis and a tensorized scalar basis.
T | Cell to which the basis corresponds |
grad_basis | First basis (rows of the Gram matrix) - gradient basis |
tens_family | Second basis (columns of the Gram matrix) - tensorized basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of the bases |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const GradientBasis< BasisType1 > & | grad_basis1, | ||
const GradientBasis< BasisType2 > & | grad_basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of a gradient basis and another gradient basis.
T | Cell to which the basis corresponds |
grad_basis1 | First basis (rows of the Gram matrix) - gradient basis |
grad_basis2 | Second basis (columns of the Gram matrix) - gradient basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of the bases |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const GradientBasis< TensorizedVectorFamily< BasisType1, dimspace > > & | basis1, | ||
const MatrixFamily< BasisType2, dimspace > & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Gram Matrix of the gradient basis of a tensorized family and a matrix family (only valid if N=dimspace in Tensorized and MatrixFamily).
T | Cell to which the basis corresponds |
basis1 | Gradient of tensorized (rows of the Gram matrix) |
basis2 | Matrix family (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const GradientBasis< TensorizedVectorFamily< BasisType1, N > > & | basis1, | ||
const GradientBasis< TensorizedVectorFamily< BasisType2, N > > & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Gram Matrix of two gradient bases of tensorized families.
T | Cell to which the basis corresponds |
basis1 | First family |
basis2 | Second family (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const MatrixFamily< BasisType1, dimspace > & | basis1, | ||
const GradientBasis< TensorizedVectorFamily< BasisType2, dimspace > > & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Gram Matrix of a Matrix family and the gradient of a tensorized family.
T | Cell to which the basis corresponds |
basis1 | Matrix family (rows of the Gram matrix) |
basis2 | Gradient of tensorized (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const MatrixFamily< BasisType1, N > & | basis1, | ||
const MatrixFamily< BasisType2, N > & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Gram Matrix of any pair of MatrixFamily bases.
T | Cell to which the basis corresponds |
basis1 | First basis (rows of the Gram matrix) |
basis2 | Second basis (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const MonomialScalarBasisCell & | basis1, | ||
const MonomialScalarBasisCell & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Computes the Gram Matrix of a pair of local scalar monomial bases.
T | Cell to which the basis corresponds |
basis1 | First basis |
basis2 | Second basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const RolyComplBasisCell & | basis1, | ||
const RolyComplBasisCell & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Computes the Gram Matrix of a pair of RolyCompl bases.
T | Cell to which the basis corresponds |
basis1 | First basis |
basis2 | Second basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const RolyComplBasisCell & | rolycompl_basis, | ||
const TensorizedVectorFamily< BasisType1, N > & | tens_family, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of a RolyCompl basis and a tensorized scalar basis.
T | Cell to which the basis corresponds |
rolycompl_basis | First basis (RolyCompl basis) |
tens_family | Second basis (tensorized basis) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const TensorizedVectorFamily< BasisType1, N > & | basis1, | ||
const TensorizedVectorFamily< BasisType2, N > & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of any pair of tensorized scalar bases.
T | Cell to which the basis corresponds |
basis1 | First basis (rows of the Gram matrix) |
basis2 | Second basis (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const TensorizedVectorFamily< BasisType1, N > & | tens_family, | ||
const CurlBasis< BasisType2 > & | curl_basis, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of a tensorized scalar basis and a gradient basis.
T | Cell to which the basis corresponds |
tens_family | First basis (rows of the Gram matrix) - gradient basis |
curl_basis | Second basis (columns of the Gram matrix) - tensorized basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of the bases |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const TensorizedVectorFamily< BasisType1, N > & | tens_family, | ||
const GradientBasis< BasisType2 > & | grad_basis, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of a tensorized scalar basis and a gradient basis.
T | Cell to which the basis corresponds |
tens_family | First basis (rows of the Gram matrix) - gradient basis |
grad_basis | Second basis (columns of the Gram matrix) - tensorized basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of the bases |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Cell & | T, |
const TensorizedVectorFamily< BasisType1, N > & | tens_family, | ||
const RolyComplBasisCell & | rolycompl_basis, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of a tensorized scalar basis and a RolyCompl basis.
T | Cell to which the basis corresponds |
tens_family | First basis (tensorized basis) |
rolycompl_basis | Second basis (RolyCompl basis) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Edge & | E, |
const BasisType & | basis, | ||
MonomialEdgeIntegralsType | mono_int_map = {} |
||
) |
This overload to simplify the call to GramMatrix in case the two bases are the same.
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Edge & | E, |
const BasisType1 & | basis1, | ||
const BasisType2 & | basis2, | ||
MonomialEdgeIntegralsType | mono_int_map = {} |
||
) |
Generic template to compute the Gram Matrix of any pair of bases.
E | Edge to which the basis corresponds |
basis1 | First basis (rows of the Gram matrix) |
basis2 | Second basis (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Edge & | E, |
const BasisType1 & | basis1, | ||
const GradientBasis< BasisType2 > & | basis2, | ||
MonomialEdgeIntegralsType | mono_int_map = {} |
||
) |
Computes the Gram Matrix of a scalar basis and a gradient basis (considering the tangential gradient as a scalar)
E | Edge to which the basis corresponds |
basis1 | Scalar basis |
basis2 | Gradient basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Edge & | E, |
const GradientBasis< BasisType1 > & | basis1, | ||
const BasisType2 & | basis2, | ||
MonomialEdgeIntegralsType | mono_int_map = {} |
||
) |
Computes the Gram Matrix of a gradient basis (considering the tangential gradient as a scalar) and a scalar basis.
E | Edge to which the basis corresponds |
basis1 | Gradient basis |
basis2 | Scalar basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Edge & | E, |
const MonomialScalarBasisEdge & | basis1, | ||
const MonomialScalarBasisEdge & | basis2, | ||
MonomialEdgeIntegralsType | mono_int_map = {} |
||
) |
Computes the Gram Matrix of a pair of local scalar monomial bases.
E | Edge to which the basis corresponds |
basis1 | First basis |
basis2 | Second basis |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrix | ( | const Edge & | E, |
const TensorizedVectorFamily< BasisType1, N > & | basis1, | ||
const TensorizedVectorFamily< BasisType2, N > & | basis2, | ||
MonomialEdgeIntegralsType | mono_int_map = {} |
||
) |
GramMatrix of two tensorized families on the edge.
E | Edge to which the basis corresponds |
basis1 | First basis (rows of the Gram matrix) |
basis2 | Second basis (columns of the Gram matrix) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrixDiv | ( | const Cell & | T, |
const BasisType1 & | basis1, | ||
const BasisType2 & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of the divergence of any basis and any other basis.
T | Cell to which the basis corresponds |
basis1 | First basis (vector basis) |
basis2 | Second basis (scalar basis) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of the bases |
Eigen::MatrixXd HArDCore2D::GramMatrixDiv | ( | const Cell & | T, |
const RolyComplBasisCell & | basis1, | ||
const MonomialScalarBasisCell & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Computes the Gram Matrix of a Divergence<RolyCompl> basis and a monomial scalar basis.
T | Cell to which the basis corresponds |
basis1 | First basis (RolyCompl basis) |
basis2 | Second basis (tensorized basis) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
Eigen::MatrixXd HArDCore2D::GramMatrixDiv | ( | const Cell & | T, |
const TensorizedVectorFamily< BasisType1, 2 > & | basis1, | ||
const MonomialScalarBasisCell & | basis2, | ||
MonomialCellIntegralsType | mono_int_map = {} |
||
) |
Template to compute the Gram Matrix of a Divergence<Tensorized> basis and a monomial scalar basis.
T | Cell to which the basis corresponds |
basis1 | First basis (divergence basis) |
basis2 | Second basis (monomial scalar basis) |
mono_int_map | Optional list of integrals of monomials up to the sum of max degree of basis1 and basis2 |
MonomialCellIntegralsType HArDCore2D::IntegrateCellMonomials | ( | const Cell & | T, |
const size_t | maxdeg | ||
) |
Compute all integrals on a cell of monomials up to a total degree, using vertex values.
T | Cell |
maxdeg | Maximal total degree |
MonomialEdgeIntegralsType HArDCore2D::IntegrateEdgeMonomials | ( | const Edge & | E, |
const size_t | maxdeg | ||
) |
Compute all integrals of edge monomials up to a total degree.
E | Edge |
maxdeg | Maximal total degree |
LegendreGauss::LegendreGauss | ( | size_t | doe | ) |
size_t LegendreGauss::npts | ( | ) |
size_t QuadRuleEdge::nq | ( | ) |
|
inline |
QuadRuleEdge::QuadRuleEdge | ( | size_t | doe, |
bool | warn | ||
) |
void QuadRuleEdge::setup | ( | double | xV[], |
double | yV[] | ||
) |
void LegendreGauss::sub_rule_01 | ( | ) |
void LegendreGauss::sub_rule_02 | ( | ) |
void LegendreGauss::sub_rule_03 | ( | ) |
void LegendreGauss::sub_rule_04 | ( | ) |
void LegendreGauss::sub_rule_05 | ( | ) |
void LegendreGauss::sub_rule_06 | ( | ) |
void LegendreGauss::sub_rule_07 | ( | ) |
void LegendreGauss::sub_rule_08 | ( | ) |
void LegendreGauss::sub_rule_09 | ( | ) |
void LegendreGauss::sub_rule_10 | ( | ) |
void LegendreGauss::sub_rule_11 | ( | ) |
double LegendreGauss::tq | ( | size_t | i | ) |
|
inline |
Transforms a Gram Matrix from an ancestor to a family basis.
family_basis | Family |
RC | R if transformation applied on rows (left), C if applied on columns (right) |
anc_GM | Gram matrix of the ancestor basis |
|
inline |
Transforms a Gram Matrix from an ancestor to a restricted basis.
restr_basis | Restricted basis |
RC | R if transformation applied on rows (left), C if applied on columns (right) |
anc_GM | Gram matrix of the ancestor basis |
|
inline |
Transforms a Gram Matrix from an ancestor to a shifted basis.
shifted_basis | Shifted basis |
RC | R if transformation applied on rows (left), C if applied on columns (right) |
anc_GM | Gram matrix of the ancestor basis |
|
constexpr |
Determines if the ancestor of a basis will be used to compute a Gram matrix for this basis.
|
inline |
Returns the quadrature point as an Eigen vector.
double QuadRuleEdge::wq | ( | size_t | i | ) |
double LegendreGauss::wq | ( | size_t | i | ) |
double QuadRuleEdge::xq | ( | size_t | i | ) |
double QuadRuleEdge::yq | ( | size_t | i | ) |
LegendreGauss::~LegendreGauss | ( | ) |
QuadRuleEdge::~QuadRuleEdge | ( | ) |
double HArDCore2D::QuadratureNode::w |
double HArDCore2D::QuadratureNode::x |
double HArDCore2D::QuadratureNode::y |