HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Loading...
Searching...
No Matches
platescore.hpp
Go to the documentation of this file.
1#ifndef PLATESCORE_HPP
2#define PLATESCORE_HPP
3
4#include <memory>
5#include <iostream>
6
7#include <basis.hpp>
9
15namespace HArDCore2D
16{
17
25 {
26 public:
27 // Types for element bases
33
34 // Types for edge bases
36
38 struct CellBases
39 {
41 typedef Cell GeometricSupport;
42
43 std::unique_ptr<PolyBasisCellType> Polykp1;
44 std::unique_ptr<PolyBasisCellType> Polykm2;
45 std::unique_ptr<Poly2BasisCellType> Poly2km1;
46 std::unique_ptr<PolySymBasisCellType> PolySymkm1;
47 std::unique_ptr<HolyBasisCellType> Holykm4;
48 std::unique_ptr<HolyComplBasisCellType> HolyComplkm1;
49 };
50
52 struct EdgeBases
53 {
55 typedef Edge GeometricSupport;
56
57 std::unique_ptr<PolyBasisEdgeType> Polykm1;
58 std::unique_ptr<PolyBasisEdgeType> Polykm2;
59 std::unique_ptr<PolyBasisEdgeType> Polykm3;
60 };
61
63 PlatesCore(const Mesh & mesh, size_t K, bool use_threads = true, std::ostream & output = std::cout);
64
66 const Mesh & mesh() const
67 {
68 return m_mesh;
69 }
70
72 const size_t & degree() const
73 {
74 return m_K;
75 }
76
78 inline const CellBases & cellBases(size_t iT) const
79 {
80 // Make sure that the basis has been created
81 assert( m_cell_bases[iT] );
82 return *m_cell_bases[iT].get();
83 }
84
86 inline const EdgeBases & edgeBases(size_t iE) const
87 {
88 // Make sure that the basis has been created
89 assert( m_edge_bases[iE] );
90 return *m_edge_bases[iE].get();
91 }
92 private:
94 CellBases _construct_cell_bases(size_t iT);
95
97 EdgeBases _construct_edge_bases(size_t iE);
98
99 // Pointer to the mesh
100 const Mesh & m_mesh;
101 // Degree
102 const size_t m_K;
103 // Output stream
104 std::ostream & m_output;
105
106 // Cell bases
107 std::vector<std::unique_ptr<CellBases> > m_cell_bases;
108 // Edge bases
109 std::vector<std::unique_ptr<EdgeBases> > m_edge_bases;
110 };
111} // namespace HArDCore2D
112
113#endif
Definition basis.hpp:311
Construct all polynomial spaces for the plates sequence.
Definition platescore.hpp:25
Vector family obtained by tensorization of a scalar family.
Definition basis.hpp:559
Definition Mesh2D.hpp:26
bool use_threads
Definition HHO_DiffAdvecReac.hpp:47
size_t K
Definition HHO_DiffAdvecReac.hpp:46
const EdgeBases & edgeBases(size_t iE) const
Return edge bases for edge iE.
Definition platescore.hpp:86
Family< MonomialScalarBasisEdge > PolyBasisEdgeType
Definition platescore.hpp:35
Family< HessianBasis< ShiftedBasis< MonomialScalarBasisCell > > > HolyBasisCellType
Definition platescore.hpp:31
std::unique_ptr< Poly2BasisCellType > Poly2km1
Definition platescore.hpp:45
TensorizedVectorFamily< PolyBasisCellType, dimspace > Poly2BasisCellType
Definition platescore.hpp:29
std::unique_ptr< PolyBasisEdgeType > Polykm2
Definition platescore.hpp:58
Family< MonomialScalarBasisCell > PolyBasisCellType
Definition platescore.hpp:28
std::unique_ptr< HolyComplBasisCellType > HolyComplkm1
Definition platescore.hpp:48
Family< MatrixFamily< PolyBasisCellType, dimspace > > PolySymBasisCellType
Definition platescore.hpp:30
const Mesh & mesh() const
Return a const reference to the mesh.
Definition platescore.hpp:66
std::unique_ptr< PolyBasisEdgeType > Polykm3
Definition platescore.hpp:59
Family< HolyComplBasisCell > HolyComplBasisCellType
Definition platescore.hpp:32
Edge GeometricSupport
Geometric support.
Definition platescore.hpp:55
std::unique_ptr< PolyBasisCellType > Polykm2
Definition platescore.hpp:44
std::unique_ptr< HolyBasisCellType > Holykm4
Definition platescore.hpp:47
Cell GeometricSupport
Geometric support.
Definition platescore.hpp:41
std::unique_ptr< PolySymBasisCellType > PolySymkm1
Definition platescore.hpp:46
std::unique_ptr< PolyBasisCellType > Polykp1
Definition platescore.hpp:43
const size_t & degree() const
Return the polynomial degree.
Definition platescore.hpp:72
const CellBases & cellBases(size_t iT) const
Return cell bases for element iT.
Definition platescore.hpp:78
std::unique_ptr< PolyBasisEdgeType > Polykm1
Definition platescore.hpp:57
Definition ddr-klplate.hpp:27
Structure to store element bases.
Definition platescore.hpp:39
Structure to store edge bases.
Definition platescore.hpp:53