22#ifndef SERENDIPITY_PROBLEM_HPP
23#define SERENDIPITY_PROBLEM_HPP
54 std::ostream &
output = std::cout,
62 return m_serendipity_edges[
iF];
68 return m_serendipity_edges[
iF].size();
80 return m_serendipity_faces[
iT];
86 return m_serendipity_faces[
iT].size();
113 return *m_face_bases_Polyl[
iF].get();
140 return *m_cell_bases_Polyl[
iT].get();
172 assert( m_face_bases_RolyCompllpo[
iF] );
173 return *m_face_bases_RolyCompllpo[
iF].get();
199 assert( m_cell_bases_RolyCompllpo[
iT] );
200 return *m_cell_bases_RolyCompllpo[
iT].get();
238 return m_ddrcore.
mesh();
249 std::vector<size_t> _compute_serendipity_edges(
size_t iF);
255 std::vector<size_t> _compute_serendipity_faces(
size_t iT);
263 std::ostream & m_output;
266 bool m_use_serendipity;
269 std::vector<std::unique_ptr<PolylBasisFaceType> > m_face_bases_Polyl;
270 std::vector<std::unique_ptr<PolylBasisCellType> > m_cell_bases_Polyl;
273 std::vector<std::unique_ptr<RolyCompllpoBasisFaceType> > m_face_bases_RolyCompllpo;
274 std::vector<std::unique_ptr<RolyCompllpoBasisCellType> > m_cell_bases_RolyCompllpo;
277 std::vector<std::vector<size_t>> m_serendipity_edges;
278 std::vector<std::vector<size_t>> m_serendipity_faces;
281 std::vector<InverseProblem> m_inverse_problem_faces;
282 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:1147
Construct all polynomial spaces for the DDR sequence.
Definition serendipity_problem.hpp:40
Class to describe a mesh.
Definition MeshND.hpp:17
@ Matrix
Definition basis.hpp:67
size_t dimFaceRolyCompllpo(size_t iF) const
Return the dimension of R^{c,l+1} on face of index iF.
Definition serendipity_problem.hpp:157
size_t dimCellRolyCompllpo(const Cell &T) const
Return the dimension of R^{c,l+1} on cell T.
Definition serendipity_problem.hpp:190
const std::vector< size_t > & serendipityFaces(size_t iT) const
Return the list of serendipity face in a cell.
Definition serendipity_problem.hpp:78
RestrictedBasis< DDRCore::RolyComplBasisCellType > RolyCompllpoBasisCellType
Definition serendipity_problem.hpp:45
const Mesh & mesh() const
Return a const reference to the mesh.
Definition serendipity_problem.hpp:236
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:254
const PolylBasisFaceType & faceBasisPolyl(const Face &F) const
Return the basis of P^l on face F.
Definition serendipity_problem.hpp:118
const RolyCompllpoBasisCellType & cellBasisRolyCompllpo(const Cell &T) const
Return the basis of R^{c,l+1} on cell T.
Definition serendipity_problem.hpp:205
const RolyCompllpoBasisFaceType & faceBasisRolyCompllpo(size_t iF) const
Return the basis of R^{c,l+1} on face of index iF.
Definition serendipity_problem.hpp:169
const PolylBasisCellType & cellBasisPolyl(const Cell &T) const
Return the basis of P^l on cell T.
Definition serendipity_problem.hpp:145
const int n_serendipityEdges(size_t iF) const
Return the number of serendipity edges in a face.
Definition serendipity_problem.hpp:66
size_t dimCellPolyl(size_t iT) const
Return the dimension of P^l on cell of index iT.
Definition serendipity_problem.hpp:124
const RolyCompllpoBasisCellType & cellBasisRolyCompllpo(size_t iT) const
Return the basis of R^{c,l+1} on cell of index iT.
Definition serendipity_problem.hpp:196
Eigen::VectorXi nDOFs_cells_SXCurl() const
Number of DOFs on cells for serendipity XCurl space.
Definition serendipity_problem.cpp:295
const std::vector< size_t > & serendipityEdges(size_t iF) const
Return the list of serendipity edges in a face.
Definition serendipity_problem.hpp:60
const Mesh & mesh() const
Return a const reference to the mesh.
Definition ddrcore.hpp:134
const Eigen::MatrixXd SerendipityOperatorFace(const Face &F, const Eigen::MatrixXd &LF) const
Compute the serendipity operator on the face F.
Definition serendipity_problem.hpp:220
const int n_serendipityFaces(size_t iT) const
Return the number of serendipity faces in a cell.
Definition serendipity_problem.hpp:84
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:161
Eigen::VectorXi nDOFs_faces_SXCurl() const
Number of DOFs on faces for serendipity XCurl space.
Definition serendipity_problem.cpp:284
size_t dimFacePolyl(size_t iF) const
Return the dimension of P^l on face of index iF.
Definition serendipity_problem.hpp:97
const size_t & degree() const
Return the polynomial degree.
Definition ddrcore.hpp:140
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
size_t dimCellPolyl(const Cell &T) const
Return the dimension of P^l on cell T.
Definition serendipity_problem.hpp:130
const int serDegreeCell(size_t iT) const
Return the serendipity degree ell_T in a cell.
Definition serendipity_problem.hpp:90
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:72
const PolylBasisCellType & cellBasisPolyl(size_t iT) const
Return the basis of P^l on cell of index iT.
Definition serendipity_problem.hpp:136
Eigen::VectorXi nDOFs_cells_SXGrad() const
Number of DOFs on cells for serendipity XGrad space.
Definition serendipity_problem.cpp:272
size_t dimFaceRolyCompllpo(const Face &F) const
Return the dimension of R^{c,l+1} on face F.
Definition serendipity_problem.hpp:163
size_t dimFacePolyl(const Face &F) const
Return the dimension of P^{l+1} on face F.
Definition serendipity_problem.hpp:103
const DDRCore & ddrCore() const
Return a const reference to the underlying DDR core.
Definition serendipity_problem.hpp:242
const Eigen::MatrixXd SerendipityOperatorCell(const Cell &T, const Eigen::MatrixXd <) const
Compute the serendipity operator on the Cell T.
Definition serendipity_problem.hpp:229
const RolyCompllpoBasisFaceType & faceBasisRolyCompllpo(const Face &F) const
Return the basis of R^{c,l+1} on face F.
Definition serendipity_problem.hpp:178
size_t dimCellRolyCompllpo(size_t iT) const
Return the dimension of R^{c,l+1} on cell of index iT.
Definition serendipity_problem.hpp:184
const PolylBasisFaceType & faceBasisPolyl(size_t iF) const
Return the basis of P^l on face of index iF.
Definition serendipity_problem.hpp:109
Eigen::VectorXi nDOFs_faces_SXGrad() const
Number of DOFs on faces for serendipity XGrad space.
Definition serendipity_problem.cpp:262
bool use_threads
Definition HHO_DiffAdvecReac.hpp:47
Definition ddr-magnetostatics.hpp:41
Basis dimensions for various polynomial spaces on edges/faces/elements (when relevant): Pk,...
Definition polynomialspacedimension.hpp:54