1 #ifndef VERTEXCFD_CONDUCTIONBOUNDARYSTATE_FACTORY_HPP
2 #define VERTEXCFD_CONDUCTIONBOUNDARYSTATE_FACTORY_HPP
4 #include "closure_models/VertexCFD_Closure_ConstantScalarField.hpp"
6 #include "conduction/boundary_conditions/VertexCFD_BoundaryState_AdiabaticWall.hpp"
7 #include "conduction/closure_models/VertexCFD_Closure_ConductionThermalConductivity.hpp"
9 #include "boundary_conditions/VertexCFD_BoundaryState_VariableExtrapolate.hpp"
10 #include "boundary_conditions/VertexCFD_BoundaryState_VariableFixed.hpp"
12 #include <Panzer_Evaluator_WithBaseImpl.hpp>
14 #include <Teuchos_ParameterList.hpp>
15 #include <Teuchos_RCP.hpp>
19 namespace BoundaryCondition
37 template<
class EvalType,
class Traits,
int NumSpaceDim>
62 static std::vector<Teuchos::RCP<PHX::Evaluator<Traits>>>
63 create(
const panzer::IntegrationRule& ir,
64 const Teuchos::ParameterList& bc_params,
65 const Teuchos::ParameterList& closure_model)
68 std::vector<Teuchos::RCP<PHX::Evaluator<panzer::Traits>>> evaluators;
73 const auto mat_prop_list
74 = closure_model.sublist(
"Material Properties");
78 const auto closure_type = mat_prop_list.get<std::string>(
"Type");
79 if (closure_type ==
"ConstantMaterialProperties")
81 const auto mat_prop = Teuchos::rcp(
85 evaluators.push_back(mat_prop);
89 Teuchos::RCP<PHX::Evaluator<Traits>> state;
90 bool found_model =
false;
91 if (bc_params.isType<std::string>(
"Type"))
93 const auto bc_type = bc_params.get<std::string>(
"Type");
95 if (bc_type ==
"AdiabaticWall")
98 evaluators.push_back(state);
102 if (bc_type ==
"Extrapolate")
106 evaluators.push_back(state);
110 if (bc_type ==
"Fixed")
113 ir, bc_params,
"temperature"));
114 evaluators.push_back(state);
121 std::string msg =
"\n\nBoundary state " + bc_type
122 +
" failed to build.\n";
123 msg +=
"The boundary conditions implemented in VERTEX-CFD\n";
124 msg +=
"for the conduction equation are:\n";
125 msg +=
"AdiabaticWall,\n";
126 msg +=
"Extrapolate,\n";
129 throw std::runtime_error(msg);
143 #endif // end VERTEXCFD_CONDUCTIONBOUNDARYSTATE_FACTORY_HPP