Chi-Tech
UnitIntegralContainer.h
Go to the documentation of this file.
1#ifndef CHITECH_UNITINTEGRALCONTAINER_H
2#define CHITECH_UNITINTEGRALCONTAINER_H
3
4#include <vector>
5#include "mesh/chi_mesh.h"
6
7namespace chi_math
8{
9class CellMapping;
10}
11
12namespace chi_diffusion
13{
14
16{
17public:
18 typedef std::vector<double> VecDbl;
19 typedef std::vector<VecDbl> MatDbl;
20 typedef std::vector<chi_mesh::Vector3> VecVec3;
21 typedef std::vector<VecVec3> MatVec3;
22
23private:
29
30 std::vector<MatDbl> IntS_shapeI_shapeJ_;
31 std::vector<VecDbl> IntS_shapeI_;
32 std::vector<MatVec3> IntS_shapeI_gradshapeJ_;
33
34 std::vector<std::vector<int>> face_dof_mappings_;
35 size_t num_nodes_ = 0;
36
37public:
43 std::vector<MatDbl> IntS_shapeI_shapeJ,
44 std::vector<VecDbl> IntS_shapeI,
45 std::vector<MatVec3> IntS_shapeI_gradshapeJ,
46 std::vector<std::vector<int>> face_dof_mappings,
47 size_t num_nodes);
48
49 static UnitIntegralContainer Make(const chi_math::CellMapping& cell_mapping);
50
51 double IntV_gradShapeI_gradShapeJ(unsigned int i, unsigned int j) const;
52
54 unsigned int j) const;
55 double IntV_shapeI_shapeJ(unsigned int i, unsigned int j) const;
56
57 double IntV_shapeI(unsigned int i) const;
58
59 chi_mesh::Vector3 IntV_gradshapeI(unsigned int i) const;
60
61 double
62 IntS_shapeI_shapeJ(unsigned int face, unsigned int i, unsigned int j) const;
63
64 double IntS_shapeI(unsigned int face, unsigned int i) const;
65
67 unsigned int i,
68 unsigned int j) const;
69
70 int FaceDofMapping(size_t face, size_t face_node_index) const
71 {
72 auto& face_data = face_dof_mappings_.at(face);
73 return face_data.at(face_node_index);
74 }
75
76 size_t NumNodes() const { return num_nodes_; }
77
79 {
81 }
83 {
85 }
87 const VecDbl& GetIntV_shapeI() const { return IntV_shapeI_; }
88 const VecVec3& GetIntV_gradshapeI() const { return IntV_gradshapeI_; }
89
90 const std::vector<MatDbl>& GetIntS_shapeI_shapeJ() const
91 {
93 }
94 const std::vector<VecDbl>& GetIntS_shapeI() const { return IntS_shapeI_; }
95 const std::vector<MatVec3>& GetIntS_shapeI_gradshapeJ() const
96 {
98 }
99};
100
101} // namespace chi_diffusion
102
103#endif // CHITECH_UNITINTEGRALCONTAINER_H
UnitIntegralContainer(MatDbl IntV_gradShapeI_gradShapeJ, MatVec3 IntV_shapeI_gradshapeJ, MatDbl IntV_shapeI_shapeJ, VecDbl IntV_shapeI, VecVec3 IntV_gradshapeI, std::vector< MatDbl > IntS_shapeI_shapeJ, std::vector< VecDbl > IntS_shapeI, std::vector< MatVec3 > IntS_shapeI_gradshapeJ, std::vector< std::vector< int > > face_dof_mappings, size_t num_nodes)
const MatVec3 & GetIntV_shapeI_gradshapeJ() const
static UnitIntegralContainer Make(const chi_math::CellMapping &cell_mapping)
int FaceDofMapping(size_t face, size_t face_node_index) const
chi_mesh::Vector3 IntV_shapeI_gradshapeJ(unsigned int i, unsigned int j) const
chi_mesh::Vector3 IntV_gradshapeI(unsigned int i) const
double IntV_shapeI(unsigned int i) const
double IntV_shapeI_shapeJ(unsigned int i, unsigned int j) const
chi_mesh::Vector3 IntS_shapeI_gradshapeJ(unsigned int face, unsigned int i, unsigned int j) const
double IntV_gradShapeI_gradShapeJ(unsigned int i, unsigned int j) const
const std::vector< MatVec3 > & GetIntS_shapeI_gradshapeJ() const
std::vector< chi_mesh::Vector3 > VecVec3
double IntS_shapeI(unsigned int face, unsigned int i) const
const std::vector< VecDbl > & GetIntS_shapeI() const
const std::vector< MatDbl > & GetIntS_shapeI_shapeJ() const
std::vector< MatVec3 > IntS_shapeI_gradshapeJ_
double IntS_shapeI_shapeJ(unsigned int face, unsigned int i, unsigned int j) const
std::vector< std::vector< int > > face_dof_mappings_
const MatDbl & GetIntV_gradShapeI_gradShapeJ() const