6#include <unsupported/Eigen/KroneckerProduct> 
   35    typedef std::function<Eigen::Vector2d(
const Eigen::Vector2d &)> 
FunctionType;
 
   40                     const Eigen::MatrixXd & _rot,     
 
   41                     const Eigen::MatrixXd & _potential 
 
 
 
   76      std::unique_ptr<Poly2BasisEdgeType> 
Polyk2;
 
 
   87      return m_sxgrad.
mesh();
 
 
  108          const int doe_cell = -1 
 
  177                * Eigen::KroneckerProduct(m_sxgrad.
edgeGradient(iE), Eigen::Matrix2d::Identity());
 
 
  192                * Eigen::KroneckerProduct(m_sxgrad.
edgePotential(iE), Eigen::Matrix2d::Identity());
 
 
  209      Eigen::MatrixXd GradPermutedBasis 
 
  223                * Eigen::KroneckerProduct(GradPermutedBasis, Eigen::Matrix2d::Identity());
 
 
  262                * Eigen::KroneckerProduct(m_sxgrad.
cellPotential(iT), Eigen::Matrix2d::Identity());
 
 
  282      double hTm2 = std::pow(
mesh().cell(iT)->diam(), -2);
 
  283      return hTm2 * Eigen::KroneckerProduct(m_sxgrad.
computeStabilisation(iT, weight), Eigen::Matrix2d::Identity()); 
 
 
  288                          const std::vector<Eigen::VectorXd> & list_dofs, 
 
  289                          const std::string typegrad=
"full"  
  294                  const Eigen::VectorXd & u   
 
  303      assert( m_cell_bases[iT] );
 
  304      return *m_cell_bases[iT].get();
 
 
  317      assert( m_edge_bases[iE] );
 
  318      return *m_edge_bases[iE].get();
 
 
  330      return *m_cell_operators[iT];
 
 
  336      return *m_cell_operators[
T.global_index()];
 
 
  341    EdgeBases _compute_edge_bases(
size_t iE);
 
  342    CellBases _compute_cell_bases(
size_t iT);
 
  347    const DDRCore m_ddrcore_for_sxcurl;   
 
  353    std::vector<std::unique_ptr<CellBases> > m_cell_bases;
 
  355    std::vector<std::unique_ptr<EdgeBases> > m_edge_bases;
 
  358    std::ostream & m_output;
 
  360    LocalOperators  _compute_cell_operators(
size_t iT);
 
  364    std::vector<std::unique_ptr<LocalOperators> > m_cell_operators;
 
 
Construct all polynomial spaces for the DDR sequence.
Definition ddrcore.hpp:63
 
Matrix family obtained from a scalar family.
Definition basis.hpp:750
 
Discrete Serendipity Hcurl space: local operators, L2 product and global interpolator.
Definition sxcurl.hpp:16
 
Discrete Serendipity Hgrad space: local operators, L2 product and global interpolator.
Definition sxgrad.hpp:20
 
Construct all polynomial spaces for the DDR sequence.
Definition serendipity_problem.hpp:20
 
Vector family obtained by tensorization of a scalar family.
Definition basis.hpp:564
 
Vector version of sXgrad, the arbitrary order space with nodal primal unknowns.
Definition vsxgrad.hpp:32
 
Base class for global DOF spaces.
Definition variabledofspace.hpp:17
 
Eigen::MatrixXd PermuteTensorization(const size_t a, const size_t b)
Returns the matrix giving the permutation of the tensorization of a family of size a with a family of...
Definition basis.cpp:224
 
constexpr int dimspace
Dimension, and generic types for vector in correct dimension (makes it easier to translate a code bet...
Definition basis.hpp:53
 
Family< RolyComplBasisCell > RolyComplBasisCellType
Definition vsxgrad.hpp:59
 
const Eigen::MatrixXd cellPotential(size_t iT) const
Return the potential operator (expressed on Polykpo3) on the cell of index iT.
Definition vsxgrad.hpp:257
 
const size_t & degree() const
Return the polynomial degree.
Definition sxgrad.hpp:55
 
std::function< Eigen::Vector2d(const Eigen::Vector2d &)> FunctionType
Definition vsxgrad.hpp:35
 
const Mesh & mesh() const
Return the mesh.
Definition sxgrad.hpp:49
 
Family< CurlBasis< ShiftedBasis< MonomialScalarBasisCell > > > RolyBasisCellType
Definition vsxgrad.hpp:58
 
std::unique_ptr< PolyBasisEdgeType > Polykmo
Definition ddrcore.hpp:109
 
std::unique_ptr< Poly2x2BasisCellType > Polykpo2x2
Definition vsxgrad.hpp:69
 
const Eigen::MatrixXd edgeGradient(size_t iE) const
Return the gradient operator (expressed on Polyk3) on the edge of index iE.
Definition vsxgrad.hpp:172
 
std::unique_ptr< Poly2BasisEdgeType > Polyk2
Definition vsxgrad.hpp:76
 
const Eigen::MatrixXd cellDivergence(const Cell &T) const
Return the divergence operator (expressed on the ancester of Polyk3x3, which should be m_sxgrad....
Definition vsxgrad.hpp:251
 
const Eigen::MatrixXd cellDivergence(size_t iT) const
Return the divergence operator (expressed on the ancester of Polyk3x3, which should be m_sxgrad....
Definition vsxgrad.hpp:245
 
MatrixFamily< DDRCore::PolyBasisCellType, dimspace > Poly2x2BasisCellType
Definition vsxgrad.hpp:57
 
auto Polyk2(size_t iT) const -> const Poly2BasisCellType &
Definition vsxgrad.hpp:157
 
const SXGrad & sXgrad() const
Return the underlying sXgrad space.
Definition vsxgrad.hpp:91
 
auto RolyComplk(size_t iT) const -> const RolyComplBasisCellType &
Definition vsxgrad.hpp:165
 
std::unique_ptr< Poly2BasisEdgeType > Polykmo2
Definition vsxgrad.hpp:75
 
std::vector< double > computeH1norms(const std::vector< Eigen::VectorXd > &list_dofs, const std::string typegrad="full") const
Compute the H^1 discrete norm, with full or symmetric gradient.
Definition vsxgrad.cpp:284
 
const Eigen::MatrixXd cellSymGradient(const Cell &T) const
Return the symmetric gradient operator (expressed on Polyk3x3) on cell T.
Definition vsxgrad.hpp:239
 
std::unique_ptr< Poly2BasisCellType > Polykmo2
Definition ddrcore.hpp:91
 
std::unique_ptr< Poly2BasisCellType > Polykmo2
Definition vsxgrad.hpp:67
 
std::unique_ptr< Poly2BasisCellType > Polykptwo2
Definition vsxgrad.hpp:68
 
Eigen::VectorXd interpolate(const FunctionType &q, const int doe_cell=-1) const
Interpolator of a continuous function.
Definition vsxgrad.cpp:82
 
const LocalOperators & cellOperators(size_t iT) const
Return cell operators for the cell of index iT.
Definition vsxgrad.hpp:328
 
std::unique_ptr< PolyBasisEdgeType > Polykpo
Definition ddrcore.hpp:107
 
Eigen::MatrixXd potential
Definition vsxgrad.hpp:50
 
std::unique_ptr< RolyComplBasisCellType > RolyComplkmo
Definition ddrcore.hpp:95
 
TensorizedVectorFamily< DDRCore::PolyBasisCellType, dimspace > Poly2BasisCellType
Definition vsxgrad.hpp:56
 
Family< MonomialScalarBasisCell > PolyBasisCellType
Definition vsxgrad.hpp:55
 
const EdgeBases & edgeBases(size_t iE) const
Return edge bases for the edge of index iE.
Definition vsxgrad.hpp:315
 
std::unique_ptr< PolyBasisCellType > Polykpo
Definition ddrcore.hpp:85
 
const Eigen::MatrixXd edgeGradient(const Edge &E) const
Return the gradient operator (expressed on Polyk3) on edge E.
Definition vsxgrad.hpp:181
 
TensorizedVectorFamily< DDRCore::PolyBasisEdgeType, dimspace > Poly2BasisEdgeType
Definition vsxgrad.hpp:62
 
std::vector< VectorRd > computeVertexValues(const Eigen::VectorXd &u) const
Computes the values of the potential reconstruction at the mesh vertices.
Definition vsxgrad.cpp:327
 
auto PolykpoE(size_t iE) const -> const PolyBasisEdgeType &
Definition vsxgrad.hpp:128
 
auto PolykptwoE(size_t iE) const -> const PolyBasisEdgeType &
Definition vsxgrad.hpp:132
 
const Eigen::MatrixXd cellPotential(const Cell &T) const
Return the potential operator on cell T.
Definition vsxgrad.hpp:266
 
auto PolykE(size_t iE) const -> const PolyBasisEdgeType &
Definition vsxgrad.hpp:125
 
std::unique_ptr< Poly2BasisEdgeType > Polykptwo2
Definition vsxgrad.hpp:78
 
const Eigen::MatrixXd edgePotential(size_t iE) const
Return the potential operator on the edge of index iE.
Definition sxgrad.hpp:134
 
Family< MonomialScalarBasisEdge > PolyBasisEdgeType
Definition vsxgrad.hpp:61
 
Eigen::MatrixXd rot
Definition vsxgrad.hpp:49
 
const EdgeBases & edgeBases(const Edge &E) const
Return edge bases for edge E.
Definition vsxgrad.hpp:322
 
const DDRCore::CellBases & cellBases(size_t iT) const
Return cell bases for the cell of index iT.
Definition sxgrad.hpp:208
 
const Mesh & mesh() const
Return the mesh.
Definition vsxgrad.hpp:85
 
const Eigen::MatrixXd edgePotential(size_t iE) const
Return the potential operator (expressed on Polykpo3) on the edge of index iE.
Definition vsxgrad.hpp:187
 
const Eigen::MatrixXd edgePotential(const Edge &E) const
Return the potential operator (expressed on Polykpo3) on edge E.
Definition vsxgrad.hpp:196
 
const CellBases & cellBases(const Cell &T) const
Return vector/matrix cell bases for cell T.
Definition vsxgrad.hpp:308
 
const Eigen::MatrixXd cellGradient(size_t iT) const
Return the gradient operator (expressed on Polyk3x3) on the cell of index iT.
Definition vsxgrad.hpp:203
 
std::unique_ptr< PolyBasisCellType > Polykmo
Definition ddrcore.hpp:87
 
std::unique_ptr< PolyBasisCellType > Polykmtwo
Definition ddrcore.hpp:88
 
const Eigen::MatrixXd cellGradient(const Cell &T) const
Return the gradient operator (expressed on Polyk3x3) on cell T.
Definition vsxgrad.hpp:227
 
std::unique_ptr< Poly2BasisEdgeType > Polykpo2
Definition vsxgrad.hpp:77
 
std::unique_ptr< RolyBasisCellType > Rolykmo
Definition ddrcore.hpp:93
 
auto Polykmo(size_t iT) const -> const PolyBasisCellType &
Definition vsxgrad.hpp:142
 
Eigen::MatrixXd _permute_bases(size_t iT)
Definition vsxgrad.cpp:129
 
Eigen::MatrixXd computeStabilisation(const size_t iT, const IntegralWeight &weight=IntegralWeight(1.)) const
Compute the H^1-stabilisation (based on the L^2 stabilisation implemented in SXgrad)
Definition vsxgrad.hpp:276
 
auto Polykpo(size_t iT) const -> const PolyBasisCellType &
Definition vsxgrad.hpp:137
 
const size_t & degree() const
Return the polynomial degree.
Definition vsxgrad.hpp:97
 
const Eigen::MatrixXd cellSymGradient(size_t iT) const
Return the symmetric gradient operator (expressed on Polyk3x3) on the cell of index iT.
Definition vsxgrad.hpp:233
 
Eigen::MatrixXd _injection(size_t iT)
Definition vsxgrad.cpp:157
 
Eigen::MatrixXd computeStabilisation(const size_t iT, const IntegralWeight &weight=IntegralWeight(1.)) const
Computes only the stabilisation matrix of the (weighted) L2-product for the cell of index iT.
Definition sxgrad.hpp:186
 
const Eigen::MatrixXd cellGradient(size_t iT) const
Return the full gradient operator on the cell of index iT.
Definition sxgrad.hpp:146
 
const LocalOperators & cellOperators(const Cell &T) const
Return cell operators for cell T.
Definition vsxgrad.hpp:334
 
auto Rolyk(size_t iT) const -> const RolyBasisCellType &
Definition vsxgrad.hpp:161
 
const CellBases & cellBases(size_t iT) const
Return vector/matrix cell bases for the face of index iT.
Definition vsxgrad.hpp:301
 
auto Polykptwo(size_t iT) const -> const PolyBasisCellType &
Definition vsxgrad.hpp:152
 
const DDRCore::EdgeBases & edgeBases(size_t iE) const
Return edge bases for the edge of index iE.
Definition sxgrad.hpp:221
 
const Eigen::MatrixXd cellPotential(size_t iT) const
Return the potential operator on the cell of index iT.
Definition sxgrad.hpp:158
 
LocalOperators(const Eigen::MatrixXd &_rot, const Eigen::MatrixXd &_potential)
Definition vsxgrad.hpp:39
 
std::unique_ptr< PolyBasisEdgeType > Polyk
Definition ddrcore.hpp:108
 
std::unique_ptr< PolyBasisCellType > Polyk
Definition ddrcore.hpp:86
 
const Eigen::MatrixXd edgeGradient(size_t iE) const
Return the full gradient operator on the edge of index iE.
Definition sxgrad.hpp:122
 
auto Polyk(size_t iT) const -> const PolyBasisCellType &
Definition vsxgrad.hpp:147
 
bool use_threads
Definition HHO_DiffAdvecReac.hpp:47
 
if(strcmp(field, 'real')) % real valued entries T
Definition mmread.m:93
 
Definition ddr-klplate.hpp:27
 
static auto q
Definition ddrcore-test.hpp:14
 
Structure for weights (scalar, at the moment) in integral.
Definition integralweight.hpp:33
 
Definition vsxgrad.hpp:66
 
Definition vsxgrad.hpp:74
 
Definition vsxgrad.hpp:38