23 polyh_cell.vertex_ids_.size(),
24 MakeFaceNodeMapping(polyh_cell)),
25 volume_quadrature_(volume_quadrature),
26 surface_quadrature_(surface_quadrature)
33 size_t num_faces = polyh_cell.
faces_.size();
36 for (
size_t f = 0; f < num_faces; f++)
49 face_f_data.
sides.reserve(num_edges);
50 for (
size_t e = 0; e < num_edges; ++e)
55 size_t ep1 = (e < (num_edges - 1)) ? e + 1 : 0;
58 side_data.
v_index.resize(2, -1);
80 tangent = tangent / tangent.
Norm();
116 side_data.
Jinv = Jinv;
117 side_data.
JTinv = JTinv;
119 face_f_data.
sides.push_back(side_data);
140 for (
size_t f = 0; f <
face_data_.size(); f++)
143 for (
size_t s = 0; s <
face_data_[f].sides.size(); s++)
147 const uint64_t s0 =
face_data_[f].sides[s].v_index[0];
148 const uint64_t s1 =
face_data_[f].sides[s].v_index[1];
151 newSideMap.
index = 0;
156 newSideMap.
index = 2;
161 newSideMap.
index = -1;
162 for (
size_t v = 0; v < polyh_cell.
faces_[f].vertex_ids_.size(); v++)
165 polyh_cell.
faces_[f].vertex_ids_[v])
172 newFaceMap.
side_map.push_back(newSideMap);
174 newNodeMap.
face_map.push_back(newFaceMap);
const chi_mesh::MeshContinuum & ref_grid_
std::vector< double > face_betaf_
Face Beta-factor.
std::vector< FEnodeMap > node_side_maps_
Maps nodes to side tets.
std::vector< FEface_data > face_data_
Holds determinants and data tet-by-tet.
PieceWiseLinearPolyhedronMapping(const chi_mesh::Cell &polyh_cell, const chi_mesh::MeshContinuum &ref_grid, const QuadratureTetrahedron &volume_quadrature, const QuadratureTriangle &surface_quadrature)
double alphac_
Cell alpha-factor.
Normal normal_
A list of the vertices.
std::vector< uint64_t > vertex_ids_
Vertex centroid_
The face centroid.
std::vector< CellFace > faces_
std::vector< uint64_t > vertex_ids_
std::vector< FEside_data3d > sides
std::vector< FEnodeSideMap > side_map
std::vector< FEnodeFaceMap > face_map
std::vector< uint64_t > v_index
chi_mesh::Matrix3x3 JTinv
void SetColJVec(int j, Vector3 vec)
Vector3 Cross(const Vector3 &that) const