8finite_element::VolumetricQuadraturePointData
12 size_t num_tris =
sides_.size();
14 size_t ttl_num_vol_qpoints = num_tris * num_vol_qpoints;
17 std::vector<unsigned int> V_quadrature_point_indices;
19 std::vector<VecDbl> V_shape_value;
20 std::vector<VecVec3> V_shape_grad;
25 V_quadrature_point_indices.reserve(ttl_num_vol_qpoints);
26 for (
unsigned int qp = 0; qp < ttl_num_vol_qpoints; ++qp)
27 V_quadrature_point_indices.push_back(qp);
36 node_shape_value.reserve(ttl_num_vol_qpoints);
37 node_shape_grad.reserve(ttl_num_vol_qpoints);
39 for (
size_t s = 0; s <
sides_.size(); s++)
43 node_shape_value.push_back(
SideShape(s, i, qpoint));
50 V_shape_value.push_back(node_shape_value);
51 V_shape_grad.push_back(node_shape_grad);
54 V_JxW.reserve(ttl_num_vol_qpoints);
55 V_qpoints_xyz.reserve(ttl_num_vol_qpoints);
56 for (
const auto& side :
sides_)
58 for (
size_t qp = 0; qp < num_vol_qpoints; ++qp)
61 V_JxW.push_back(side.detJ * w);
64 V_qpoints_xyz.push_back(side.v0 + side.J * qp_xyz_tilde);
82 const bool ON_SURFACE =
true;
87 unsigned int s = face_index;
89 std::vector<unsigned int> F_quadrature_point_indices;
91 std::vector<VecDbl> F_shape_value;
92 std::vector<VecVec3> F_shape_grad;
97 size_t ttl_num_face_qpoints = num_srf_qpoints;
99 F_quadrature_point_indices.reserve(ttl_num_face_qpoints);
100 for (
unsigned int qp = 0; qp < ttl_num_face_qpoints; ++qp)
101 F_quadrature_point_indices.push_back(qp);
103 F_normals.reserve(ttl_num_face_qpoints);
104 for (
size_t qp = 0; qp < ttl_num_face_qpoints; ++qp)
105 F_normals.push_back(
sides_[s].normal);
114 node_shape_value.reserve(ttl_num_face_qpoints);
115 node_shape_grad.reserve(ttl_num_face_qpoints);
119 node_shape_value.push_back(
SideShape(s, i, qpoint, ON_SURFACE));
124 F_shape_value.push_back(node_shape_value);
125 F_shape_grad.push_back(node_shape_grad);
128 F_JxW.reserve(ttl_num_face_qpoints);
129 F_qpoints_xyz.reserve(ttl_num_face_qpoints);
130 for (
size_t qp = 0; qp < num_srf_qpoints; ++qp)
133 F_JxW.push_back(
sides_[s].detJ_surf * w);
136 F_qpoints_xyz.push_back(
sides_[s].v0 +
sides_[s].J * qp_xyz_tilde);
const std::vector< std::vector< int > > face_node_mappings_
std::vector< chi_math::QuadraturePointXYZ > qpoints_
std::vector< double > weights_
std::vector< double > VecDbl
std::vector< chi_mesh::Vector3 > VecVec3
double SideShape(uint32_t side, uint32_t i, const chi_mesh::Vector3 &qpoint, bool on_surface=false) const
finite_element::SurfaceQuadraturePointData MakeSurfaceQuadraturePointData(size_t face_index) const override
const QuadratureLine & surface_quadrature_
const QuadratureTriangle & volume_quadrature_
finite_element::VolumetricQuadraturePointData MakeVolumetricQuadraturePointData() const override
double SideGradShape_y(uint32_t side, uint32_t i) const
double SideGradShape_x(uint32_t side, uint32_t i) const
std::vector< FEside_data2d > sides_