Chi-Tech
PieceWiseLinearContinuous.h
Go to the documentation of this file.
1#ifndef SPATIAL_DISCRETIZATION_PWLC_H
2#define SPATIAL_DISCRETIZATION_PWLC_H
3
6
7// ######################################################### Class def
9{
10/**Generalization of the Galerkin Finite Element Method
11 * with piecewise linear basis functions
12 * for use by a Continues Finite Element Method (CFEM).
13 * \ingroup doc_SpatialDiscretization*/
15{
16public:
17 // prevent anything else other than a shared pointer
18 static std::shared_ptr<PieceWiseLinearContinuous>
19 New(const chi_mesh::MeshContinuum& grid,
22
23 // 03
24 void
25 BuildSparsityPattern(std::vector<int64_t>& nodal_nnz_in_diag,
26 std::vector<int64_t>& nodal_nnz_off_diag,
27 const UnknownManager& unknown_manager) const override;
28
29 // 04 Mappings
30 int64_t MapDOF(const chi_mesh::Cell& cell,
31 unsigned int node,
32 const UnknownManager& unknown_manager,
33 unsigned int unknown_id,
34 unsigned int component) const override;
35
36 int64_t MapDOFLocal(const chi_mesh::Cell& cell,
37 unsigned int node,
38 const UnknownManager& unknown_manager,
39 unsigned int unknown_id,
40 unsigned int component) const override;
41
42 int64_t MapDOF(const chi_mesh::Cell& cell, unsigned int node) const override
43 {
44 return MapDOF(cell, node, UNITARY_UNKNOWN_MANAGER, 0, 0);
45 }
46 int64_t MapDOFLocal(const chi_mesh::Cell& cell,
47 unsigned int node) const override
48 {
49 return MapDOFLocal(cell, node, UNITARY_UNKNOWN_MANAGER, 0, 0);
50 }
51
52 size_t GetNumGhostDOFs(const UnknownManager& unknown_manager) const override;
53
54 std::vector<int64_t>
55 GetGhostDOFIndices(const UnknownManager& unknown_manager) const override;
56
57protected:
58 // 02
59 void OrderNodes();
60
61 std::map<uint64_t, int64_t> node_mapping_;
62 std::map<uint64_t, int64_t> ghost_node_mapping_;
63
64private:
65 // 00
67 QuadratureOrder q_order,
68 CoordinateSystemType cs_type);
69};
70} // namespace chi_math::spatial_discretization
71
72#endif // SPATIAL_DISCRETIZATION_PWLC_H
const UnknownManager UNITARY_UNKNOWN_MANAGER
static std::shared_ptr< PieceWiseLinearContinuous > New(const chi_mesh::MeshContinuum &grid, QuadratureOrder q_order=QuadratureOrder::SECOND, CoordinateSystemType cs_type=CoordinateSystemType::CARTESIAN)
void BuildSparsityPattern(std::vector< int64_t > &nodal_nnz_in_diag, std::vector< int64_t > &nodal_nnz_off_diag, const UnknownManager &unknown_manager) const override
int64_t MapDOF(const chi_mesh::Cell &cell, unsigned int node) const override
PieceWiseLinearContinuous(const chi_mesh::MeshContinuum &grid, QuadratureOrder q_order, CoordinateSystemType cs_type)
std::vector< int64_t > GetGhostDOFIndices(const UnknownManager &unknown_manager) const override
int64_t MapDOFLocal(const chi_mesh::Cell &cell, unsigned int node) const override
size_t GetNumGhostDOFs(const UnknownManager &unknown_manager) const override
int64_t MapDOFLocal(const chi_mesh::Cell &cell, unsigned int node, const UnknownManager &unknown_manager, unsigned int unknown_id, unsigned int component) const override
int64_t MapDOF(const chi_mesh::Cell &cell, unsigned int node, const UnknownManager &unknown_manager, unsigned int unknown_id, unsigned int component) const override
QuadratureOrder
Definition: quadrature.h:12
CoordinateSystemType
Definition: chi_math.h:29