35 template<
typename ImplType>
36 SharedPtr<NeumannBCAbstract>
40 const std::string& section )
42 std::string reaction = this->parse_reaction(input,section);
45 SharedPtr<CatalycityBase> gamma_ptr = this->build_catalycity( input, section );
48 this->extract_material( fe_var, material );
52 libMesh::Real p0 = this->parse_thermo_pressure(input,material);
54 std::string thermochem_lib = this->parse_thermochem_model( input, material );
56 return this->build_catalytic_wall_common(input,fe_var,material,reaction,gamma_ptr,p0,thermochem_lib);
59 template<
typename ImplType>
61 const std::string& section )
const
63 std::string reaction_input_str = section+
"/catalytic_reaction";
66 if(!input.have_variable(reaction_input_str))
67 libmesh_error_msg(
"ERROR: Could not find input for "+reaction_input_str+
" !\n");
70 if( input.vector_variable_size(reaction_input_str) != 1 )
71 libmesh_error_msg(
"ERROR: Can only specify one catalytic_reaction!\n");
73 return input( reaction_input_str, std::string(
"DIE!") );
76 template<
typename ImplType>
78 const std::string& material )
const
80 std::string thermo_press_input_str =
81 "Materials/"+material+
"/ThermodynamicPressure/value";
83 if( !input.have_variable(thermo_press_input_str) )
84 libmesh_error_msg(
"ERROR: Could not find variable "+thermo_press_input_str+
"!");
86 return input(thermo_press_input_str, std::numeric_limits<libMesh::Real>::max() );
89 template<
typename ImplType>
91 const std::string& material )
const
93 std::string thermochem_input_str =
"Materials/"+material+
"/GasMixture/thermochemistry_library";
95 if( !input.have_variable(thermochem_input_str) )
96 libmesh_error_msg(
"ERROR: Could not find input option "+thermochem_input_str+
" !");
98 return input(thermochem_input_str, std::string(
"DIE!") );
101 template<
typename ImplType>
102 SharedPtr<CatalycityBase>
104 const std::string& section )
const
109 std::string catalycity_input_str = section+
"/catalycity_type";
110 if( !input.have_variable(catalycity_input_str) )
111 libmesh_error_msg(
"ERROR: Could not find input variable "+catalycity_input_str+
" !\n");
113 std::string catalycity_type = input(catalycity_input_str,
"none");
118 return SharedPtr<CatalycityBase>( catalycity_ptr.release() );
std::string parse_reaction(const GetPot &input, const std::string §ion) const
Parse the reaction.
libMesh::Real parse_thermo_pressure(const GetPot &input, const std::string &material) const
static void set_getpot(const GetPot &input)
static void set_section(const std::string §ion)
virtual SharedPtr< NeumannBCAbstract > build_neumann_func(const GetPot &input, MultiphysicsSystem &system, const FEVariablesBase &fe_var, const std::string §ion)
Builds the NeumannBCAbstract object for Neumann boundary conditions.
static libMesh::UniquePtr< CatalycityBase > build(const std::string &name)
Use this method to build objects of type Base.
SharedPtr< CatalycityBase > build_catalycity(const GetPot &input, const std::string §ion) const
Interface with libMesh for solving Multiphysics problems.
std::string parse_thermochem_model(const GetPot &input, const std::string &material) const