1 #ifndef VERTEXCFD_SOLIDELECTRICBOUNDARYSTATE_FACTORY_HPP
2 #define VERTEXCFD_SOLIDELECTRICBOUNDARYSTATE_FACTORY_HPP
4 #include "boundary_conditions/VertexCFD_BoundaryState_VariableExtrapolate.hpp"
5 #include "boundary_conditions/VertexCFD_BoundaryState_VariableFixed.hpp"
7 #include "induction_less_mhd_solver/closure_models/VertexCFD_Closure_SolidElectricConductivity.hpp"
9 #include "turbulence_models/boundary_conditions/VertexCFD_BoundaryState_TurbulenceSymmetry.hpp"
11 #include <Panzer_Evaluator_WithBaseImpl.hpp>
13 #include <Teuchos_ParameterList.hpp>
14 #include <Teuchos_RCP.hpp>
18 namespace BoundaryCondition
21 template<
class EvalType,
class Traits,
int NumSpaceDim>
25 static constexpr
int num_space_dim = NumSpaceDim;
27 static std::vector<Teuchos::RCP<PHX::Evaluator<Traits>>>
28 create(
const panzer::IntegrationRule& ir,
29 const Teuchos::ParameterList& bc_params,
30 const Teuchos::ParameterList& closure_model)
33 std::vector<Teuchos::RCP<PHX::Evaluator<panzer::Traits>>> evaluators;
38 const auto mat_prop_list
39 = closure_model.sublist(
"Material Properties");
43 const auto closure_type = mat_prop_list.get<std::string>(
"Type");
44 if (closure_type ==
"SolidElectricConductivity")
46 const auto mat_prop = Teuchos::rcp(
50 evaluators.push_back(mat_prop);
54 Teuchos::RCP<PHX::Evaluator<Traits>> state;
55 bool found_model =
false;
56 if (bc_params.isType<std::string>(
"Type"))
58 const auto bc_type = bc_params.get<std::string>(
"Type");
61 if (bc_type ==
"Extrapolate")
64 ir,
"electric_potential"));
65 evaluators.push_back(state);
70 if (bc_type ==
"Fixed")
73 ir, bc_params,
"electric_potential"));
74 evaluators.push_back(state);
79 if (bc_params.get<std::string>(
"Type") ==
"InsulatingWall")
82 ir,
"electric_potential"));
83 evaluators.push_back(state);
90 std::string msg =
"\n\nBoundary state " + bc_type
91 +
" failed to build.\n";
92 msg +=
"The boundary conditions implemented in VERTEX-CFD\n";
93 msg +=
"for the solid induction-less MHD equation are:\n";
94 msg +=
"Extrapolate,\n";
96 msg +=
"InsulatingWall,\n";
98 throw std::runtime_error(msg);
112 #endif // end VERTEXCFD_SOLIDELECTRICBOUNDARYSTATE_FACTORY_HPP