16 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : enter";
33 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
34 <<
"invalid coordinate system, static_cast<int>(type) = "
49 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
50 <<
"invalid geometry, static_cast<int>(type) = "
52 <<
"for curvilinear coordinate system, static_cast<int>(type) = "
71 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
72 <<
"invalid geometry, static_cast<int>(type) = "
74 <<
"for curvilinear coordinate system, static_cast<int>(type) = "
84 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
85 <<
"invalid geometry, static_cast<int>(type) = "
87 <<
"for curvilinear coordinate system";
92 for (
size_t gs = 0; gs <
groupsets_.size(); ++gs)
95 const auto angular_quad_ptr =
groupsets_[gs].quadrature_;
101 const auto curvilinear_angular_quad_ptr =
102 std::dynamic_pointer_cast<CylAngQuad>(angular_quad_ptr);
103 if (!curvilinear_angular_quad_ptr)
106 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
107 <<
"invalid angular quadrature, static_cast<int>(type) = "
108 <<
static_cast<int>(angular_quad_ptr->type_)
109 <<
", for groupset = " << gs;
117 const auto curvilinear_angular_quad_ptr =
118 std::dynamic_pointer_cast<SphAngQuad>(angular_quad_ptr);
119 if (!curvilinear_angular_quad_ptr)
122 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
123 <<
"invalid angular quadrature, static_cast<int>(type) = "
124 <<
static_cast<int>(angular_quad_ptr->type_)
125 <<
", for groupset = " << gs;
133 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
134 <<
"invalid curvilinear coordinate system, static_cast<int>(type) = "
141 const auto angleagg_method =
groupsets_[gs].angleagg_method_;
149 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
150 <<
"invalid angle aggregation type, static_cast<int>(type) = "
151 <<
static_cast<int>(angleagg_method) <<
", for groupset = " << gs;
161 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
162 <<
"invalid angle aggregation type, static_cast<int>(type) = "
163 <<
static_cast<int>(angleagg_method) <<
", for groupset = " << gs;
171 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
172 <<
"invalid curvilinear coordinate system, static_cast<int>(type) = "
180 const std::vector<chi_mesh::Vector3> unit_normal_vectors = {
185 for (
const auto& cell :
grid_ptr_->local_cells)
187 for (
const auto& face : cell.faces_)
189 if (!face.has_neighbor_)
191 bool face_orthogonal =
false;
192 for (
size_t d = 0; d < unit_normal_vectors.size(); ++d)
194 const auto n_dot_e = face.normal_.Dot(unit_normal_vectors[d]);
195 if (n_dot_e > 0.999999)
197 face_orthogonal =
true;
200 else if (n_dot_e < -0.999999)
202 for (
const auto& v_id : face.vertex_ids_)
204 const auto& vertex =
grid_ptr_->vertices[v_id];
205 if (std::abs(vertex[d]) > 1.0e-12)
208 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::"
209 "PerformInputChecks : "
210 <<
"mesh contains boundary faces with outward-oriented unit "
211 <<
"normal vector " << (-1 * unit_normal_vectors[d]).PrintS()
212 <<
"with vertices characterised by v(" << d <<
") != 0.";
216 face_orthogonal =
true;
220 if (!face_orthogonal)
223 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : "
224 <<
"mesh contains boundary faces not orthogonal with respect to "
225 <<
"Cartesian reference frame.";
233 <<
"D_DO_RZ_SteadyState::SteadyStateSolver::PerformInputChecks : exit";
static void Exit(int error_code)
LogStream Log(LOG_LVL level=LOG_0)
void PerformInputChecks() override
chi_math::CoordinateSystemType coord_system_type_
virtual void PerformInputChecks()
chi_mesh::MeshContinuumPtr grid_ptr_
std::vector< LBSGroupset > groupsets_
GeometryType geometry_type