Chi-Tech
FiniteVolume.h
Go to the documentation of this file.
1#ifndef SPATIAL_DISCRETIZATION_FV_H
2#define SPATIAL_DISCRETIZATION_FV_H
3
6
7#include <map>
8
9//###################################################################
11{
12/**Spatial discretizations supporting Finite Volume representations.
13\ingroup doc_SpatialDiscretization*/
15{
16private:
17 std::map<uint64_t, uint64_t> neighbor_cell_local_ids_;
18private:
19 explicit FiniteVolume(const chi_mesh::MeshContinuum& grid,
20 CoordinateSystemType cs_type);
21
22public:
23 virtual ~FiniteVolume() = default;
24 //prevent anything else other than a shared pointer
25 static
26 std::shared_ptr<FiniteVolume>
27 New(const chi_mesh::MeshContinuum& in_grid,
28 CoordinateSystemType in_cs_type =
30
31 //01
32 void CreateCellMappings();
33
34 //02 node ordering
35protected:
36 void OrderNodes();
37
38 //03 sparsity
39public:
40 void BuildSparsityPattern(std::vector<int64_t>& nodal_nnz_in_diag,
41 std::vector<int64_t>& nodal_nnz_off_diag,
42 const UnknownManager& unknown_manager) const override;
43
44 //04a mappings
45 int64_t MapDOF(const chi_mesh::Cell& cell,
46 unsigned int node,
47 const UnknownManager& unknown_manager,
48 unsigned int unknown_id,
49 unsigned int component) const override;
50
51 int64_t MapDOFLocal(const chi_mesh::Cell& cell,
52 unsigned int node,
53 const UnknownManager& unknown_manager,
54 unsigned int unknown_id,
55 unsigned int component) const override;
56
57 int64_t MapDOF(const chi_mesh::Cell& cell, unsigned int node) const override
58 {
59 return MapDOF(cell, node, UNITARY_UNKNOWN_MANAGER, 0, 0);
60 }
61 int64_t MapDOFLocal(const chi_mesh::Cell& cell,
62 unsigned int node) const override
63 {
64 return MapDOFLocal(cell, node, UNITARY_UNKNOWN_MANAGER, 0, 0);
65 }
66
67 //05 utils
68 size_t GetNumGhostDOFs(const UnknownManager& unknown_manager) const override;
69 std::vector<int64_t>
70 GetGhostDOFIndices(const UnknownManager& unknown_manager) const override;
71};
72
73}//namespace chi_math
74
75
76#endif
const UnknownManager UNITARY_UNKNOWN_MANAGER
void BuildSparsityPattern(std::vector< int64_t > &nodal_nnz_in_diag, std::vector< int64_t > &nodal_nnz_off_diag, const UnknownManager &unknown_manager) const override
size_t GetNumGhostDOFs(const UnknownManager &unknown_manager) const override
Definition: fv_05_utils.cc:14
int64_t MapDOF(const chi_mesh::Cell &cell, unsigned int node, const UnknownManager &unknown_manager, unsigned int unknown_id, unsigned int component) 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
std::map< uint64_t, uint64_t > neighbor_cell_local_ids_
Definition: FiniteVolume.h:17
int64_t MapDOFLocal(const chi_mesh::Cell &cell, unsigned int node) const override
Definition: FiniteVolume.h:61
int64_t MapDOF(const chi_mesh::Cell &cell, unsigned int node) const override
Definition: FiniteVolume.h:57
static std::shared_ptr< FiniteVolume > New(const chi_mesh::MeshContinuum &in_grid, CoordinateSystemType in_cs_type=CoordinateSystemType::CARTESIAN)
FiniteVolume(const chi_mesh::MeshContinuum &grid, CoordinateSystemType cs_type)
std::vector< int64_t > GetGhostDOFIndices(const UnknownManager &unknown_manager) const override
Definition: fv_05_utils.cc:25
CoordinateSystemType
Definition: chi_math.h:29