Chi-Tech
PieceWiseLinearSlabMapping.h
Go to the documentation of this file.
1#ifndef PWL_SLAB_VALUES_H
2#define PWL_SLAB_VALUES_H
3
6#include "mesh/Cell/cell.h"
7#include <array>
8
9// ###################################################################
11{
12
13/**Object for handling slab shaped piecewise linear shape functions.
14* \ingroup doc_CellMappings*/
16{
17public:
18 /**Constructor for a slab view.*/
20 const chi_mesh::MeshContinuum& ref_grid,
21 const QuadratureLine& volume_quadrature);
22
24 MakeVolumetricQuadraturePointData() const override;
25
27 MakeSurfaceQuadraturePointData(size_t face_index) const override;
28
29 // ################################################## Define standard
30 // slab linear shape
31 // functions
32 double SlabShape(uint32_t index,
33 const chi_mesh::Vector3& qpoint,
34 bool on_surface = false,
35 uint32_t edge = 0) const;
36
37 double SlabGradShape(uint32_t index) const;
38
39 // ############################################### Actual shape functions
40 // as function of cartesian
41 // coordinates
42 double ShapeValue(int i, const chi_mesh::Vector3& xyz) const override;
43
45 const chi_mesh::Vector3& xyz) const override;
46
47 void ShapeValues(const chi_mesh::Vector3& xyz,
48 std::vector<double>& shape_values) const override;
49
50 void GradShapeValues(
51 const chi_mesh::Vector3& xyz,
52 std::vector<chi_mesh::Vector3>& gradshape_values) const override;
53
54private:
56 uint64_t v0i_;
57 uint64_t v1i_;
58 std::array<chi_mesh::Normal, 2> normals_;
60 double h_;
61};
62} // namespace chi_math::cell_mapping
63#endif
finite_element::VolumetricQuadraturePointData MakeVolumetricQuadraturePointData() const override
finite_element::SurfaceQuadraturePointData MakeSurfaceQuadraturePointData(size_t face_index) const override
double SlabShape(uint32_t index, const chi_mesh::Vector3 &qpoint, bool on_surface=false, uint32_t edge=0) const
double ShapeValue(int i, const chi_mesh::Vector3 &xyz) const override
PieceWiseLinearSlabMapping(const chi_mesh::Cell &slab_cell, const chi_mesh::MeshContinuum &ref_grid, const QuadratureLine &volume_quadrature)
void GradShapeValues(const chi_mesh::Vector3 &xyz, std::vector< chi_mesh::Vector3 > &gradshape_values) const override
void ShapeValues(const chi_mesh::Vector3 &xyz, std::vector< double > &shape_values) const override
chi_mesh::Vector3 GradShapeValue(int i, const chi_mesh::Vector3 &xyz) const override