HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions
GMpoly_cell.hpp File Reference
#include <cassert>
#include <cmath>
#include <algorithm>
#include <array>
#include <iostream>
#include <vector>
#include <unordered_map>
#include <mesh.hpp>
#include <quadraturerule.hpp>
#include <basis.hpp>
#include <typeinfo>
Include dependency graph for GMpoly_cell.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  HArDCore2D::VecHash
 Hash function for VectorZd type. More...
 

Namespaces

namespace  HArDCore2D
 

Typedefs

typedef std::unordered_map< VectorZd, double, VecHashHArDCore2D::MonomialCellIntegralsType
 Type for list of integrals of monomials.
 

Functions

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.