22 #ifndef SERENDIPITY_PROBLEM_HPP
23 #define SERENDIPITY_PROBLEM_HPP
58 return m_serendipity_edges[iF];
64 return m_serendipity_edges[iF].size();
76 return m_serendipity_faces[iT];
82 return m_serendipity_faces[iT].size();
108 assert( m_face_bases_Polyl[iF] );
109 return *m_face_bases_Polyl[iF].get();
135 assert( m_cell_bases_Polyl[iT] );
136 return *m_cell_bases_Polyl[iT].get();
168 assert( m_face_bases_RolyCompllpo[iF] );
169 return *m_face_bases_RolyCompllpo[iF].get();
195 assert( m_cell_bases_RolyCompllpo[iT] );
196 return *m_cell_bases_RolyCompllpo[iT].get();
234 return m_ddrcore.
mesh();
239 std::vector<size_t> _compute_serendipity_edges(
size_t iF);
245 std::vector<size_t> _compute_serendipity_faces(
size_t iT);
253 std::ostream & m_output;
256 std::vector<std::unique_ptr<PolylBasisFaceType> > m_face_bases_Polyl;
257 std::vector<std::unique_ptr<PolylBasisCellType> > m_cell_bases_Polyl;
260 std::vector<std::unique_ptr<RolyCompllpoBasisFaceType> > m_face_bases_RolyCompllpo;
261 std::vector<std::unique_ptr<RolyCompllpoBasisCellType> > m_cell_bases_RolyCompllpo;
264 std::vector<std::vector<size_t>> m_serendipity_edges;
265 std::vector<std::vector<size_t>> m_serendipity_faces;
268 std::vector<InverseProblem> m_inverse_problem_faces;
269 std::vector<InverseProblem> m_inverse_problem_cells;
Construct all polynomial spaces for the DDR sequence.
Definition: ddrcore.hpp:62
Generate a basis restricted to the first "dimension" functions.
Definition: basis.hpp:1119
Construct all polynomial spaces for the DDR sequence.
Definition: serendipity_problem.hpp:40
Class to describe a mesh.
Definition: MeshND.hpp:17
size_t dimFaceRolyCompllpo(size_t iF) const
Return the dimension of R^{c,l+1} on face of index iF.
Definition: serendipity_problem.hpp:153
size_t dimCellRolyCompllpo(const Cell &T) const
Return the dimension of R^{c,l+1} on cell T.
Definition: serendipity_problem.hpp:186
const size_t & degree() const
Return the polynomial degree.
Definition: ddrcore.hpp:140
RestrictedBasis< DDRCore::RolyComplBasisCellType > RolyCompllpoBasisCellType
Definition: serendipity_problem.hpp:45
const Eigen::MatrixXd SerendipityOperatorCell(const size_t iT, const Eigen::MatrixXd <) const
Compute the serendipity operator on the cell of index iT.
Definition: serendipity_problem.cpp:247
const PolylBasisFaceType & faceBasisPolyl(size_t iF) const
Return the basis of P^l on face of index iF.
Definition: serendipity_problem.hpp:105
const RolyCompllpoBasisFaceType & faceBasisRolyCompllpo(size_t iF) const
Return the basis of R^{c,l+1} on face of index iF.
Definition: serendipity_problem.hpp:165
const int n_serendipityEdges(size_t iF) const
Return the number of serendipity edges in a face.
Definition: serendipity_problem.hpp:62
size_t dimCellPolyl(size_t iT) const
Return the dimension of P^l on cell of index iT.
Definition: serendipity_problem.hpp:120
const RolyCompllpoBasisCellType & cellBasisRolyCompllpo(size_t iT) const
Return the basis of R^{c,l+1} on cell of index iT.
Definition: serendipity_problem.hpp:192
Eigen::VectorXd nDOFs_faces_SXGrad() const
Number of DOFs on faces for serendipity XGrad space.
Definition: serendipity_problem.cpp:255
const PolylBasisCellType & cellBasisPolyl(size_t iT) const
Return the basis of P^l on cell of index iT.
Definition: serendipity_problem.hpp:132
const Mesh & mesh() const
Return a const reference to the mesh.
Definition: ddrcore.hpp:134
const PolylBasisFaceType & faceBasisPolyl(const Face &F) const
Return the basis of P^l on face F.
Definition: serendipity_problem.hpp:114
Eigen::VectorXd nDOFs_cells_SXCurl() const
Number of DOFs on cells for serendipity XCurl space.
Definition: serendipity_problem.cpp:288
const Eigen::MatrixXd SerendipityOperatorFace(const Face &F, const Eigen::MatrixXd &LF) const
Compute the serendipity operator on the face F.
Definition: serendipity_problem.hpp:216
const int n_serendipityFaces(size_t iT) const
Return the number of serendipity faces in a cell.
Definition: serendipity_problem.hpp:80
const RolyCompllpoBasisFaceType & faceBasisRolyCompllpo(const Face &F) const
Return the basis of R^{c,l+1} on face F.
Definition: serendipity_problem.hpp:174
const Eigen::MatrixXd SerendipityOperatorFace(const size_t iF, const Eigen::MatrixXd &LF) const
Compute the serendipity operator on the face of index iF.
Definition: serendipity_problem.cpp:157
Eigen::VectorXd nDOFs_faces_SXCurl() const
Number of DOFs on faces for serendipity XCurl space.
Definition: serendipity_problem.cpp:277
size_t dimFacePolyl(size_t iF) const
Return the dimension of P^l on face of index iF.
Definition: serendipity_problem.hpp:93
RestrictedBasis< DDRCore::PolyBasisFaceType > PolylBasisFaceType
Definition: serendipity_problem.hpp:42
Eigen::FullPivLU< Eigen::MatrixXd > InverseProblem
Type for inverses of matrix for serendipity problem.
Definition: serendipity_problem.hpp:49
const PolylBasisCellType & cellBasisPolyl(const Cell &T) const
Return the basis of P^l on cell T.
Definition: serendipity_problem.hpp:141
Eigen::VectorXd nDOFs_cells_SXGrad() const
Number of DOFs on cells for serendipity XGrad space.
Definition: serendipity_problem.cpp:265
size_t dimCellPolyl(const Cell &T) const
Return the dimension of P^l on cell T.
Definition: serendipity_problem.hpp:126
const int serDegreeCell(size_t iT) const
Return the serendipity degree ell_T in a cell.
Definition: serendipity_problem.hpp:86
const RolyCompllpoBasisCellType & cellBasisRolyCompllpo(const Cell &T) const
Return the basis of R^{c,l+1} on cell T.
Definition: serendipity_problem.hpp:201
RestrictedBasis< DDRCore::RolyComplBasisFaceType > RolyCompllpoBasisFaceType
Definition: serendipity_problem.hpp:44
RestrictedBasis< DDRCore::PolyBasisCellType > PolylBasisCellType
Definition: serendipity_problem.hpp:43
const int serDegreeFace(size_t iF) const
Return the serendipity degree ell_F in a face.
Definition: serendipity_problem.hpp:68
const Mesh & mesh() const
Return a const reference to the mesh.
Definition: serendipity_problem.hpp:232
size_t dimFaceRolyCompllpo(const Face &F) const
Return the dimension of R^{c,l+1} on face F.
Definition: serendipity_problem.hpp:159
size_t dimFacePolyl(const Face &F) const
Return the dimension of P^{l+1} on face F.
Definition: serendipity_problem.hpp:99
SerendipityProblem(const DDRCore &ddrcore, bool use_threads=true, std::ostream &output=std::cout)
Constructor.
Definition: serendipity_problem.cpp:11
const Eigen::MatrixXd SerendipityOperatorCell(const Cell &T, const Eigen::MatrixXd <) const
Compute the serendipity operator on the Cell T.
Definition: serendipity_problem.hpp:225
const std::vector< size_t > & serendipityFaces(size_t iT) const
Return the list of serendipity face in a cell.
Definition: serendipity_problem.hpp:74
const std::vector< size_t > & serendipityEdges(size_t iF) const
Return the list of serendipity edges in a face.
Definition: serendipity_problem.hpp:56
size_t dimCellRolyCompllpo(size_t iT) const
Return the dimension of R^{c,l+1} on cell of index iT.
Definition: serendipity_problem.hpp:180
bool use_threads
Definition: HHO_DiffAdvecReac.hpp:47
Definition: ddr-magnetostatics.hpp:40
MeshND::Face< 2 > Face
Definition: Mesh2D.hpp:12
MeshND::Cell< 2 > Cell
Definition: Mesh2D.hpp:13
Basis dimensions for various polynomial spaces on edges/faces/elements (when relevant): Pk,...
Definition: polynomialspacedimension.hpp:54