37 template<
typename ImplType>
38 SharedPtr<NeumannBCAbstract>
42 const std::string& section )
44 std::string reaction = this->parse_reaction(input,section);
47 SharedPtr<CatalycityBase> gamma_ptr = this->build_catalycity( input, section,
48 this->reactant_for_catalycity(reaction) );
51 this->extract_material( fe_var, material );
55 libMesh::Real p0 = this->parse_thermo_pressure(input,material);
57 std::string thermochem_lib = this->parse_thermochem_model(input);
59 return this->build_catalytic_wall_common(input,fe_var,material,reaction,gamma_ptr,p0,thermochem_lib);
62 template<
typename ImplType>
64 const std::string& section )
const
68 std::string bc_id_string = StringUtilities::T_to_string<BoundaryID>( *(_bc_ids->begin()) );
70 std::string prefix_str = this->catalytic_wall_prefix_str();
72 std::string reaction_input_str = section+
"/"+prefix_str+
"_"+bc_id_string;
75 if(!input.have_variable(reaction_input_str))
76 libmesh_error_msg(
"ERROR: Could not find input for "+reaction_input_str+
" !\n");
79 if( input.vector_variable_size(reaction_input_str) != 1 )
80 libmesh_error_msg(
"ERROR: Can only specify one catalytic_reaction!\n");
82 return input( reaction_input_str, std::string(
"DIE!") );
85 template<
typename ImplType>
87 const std::string& material )
const
89 std::string thermo_press_input_str =
90 "Materials/"+material+
"/ThermodynamicPressure/value";
92 std::string thermo_press_input_str_old_style =
95 if( input.have_variable(thermo_press_input_str) && input.have_variable(thermo_press_input_str_old_style) )
96 libmesh_error_msg(
"ERROR: Cannot specify both "+thermo_press_input_str+
" and "+thermo_press_input_str_old_style);
98 libMesh::Real invalid_real = std::numeric_limits<libMesh::Real>::max();
99 libMesh::Real p0 = invalid_real;
101 if( input.have_variable(thermo_press_input_str) )
102 p0 = input(thermo_press_input_str,invalid_real);
104 else if( input.have_variable(thermo_press_input_str_old_style) )
105 p0 = input(thermo_press_input_str_old_style,invalid_real);
108 libmesh_error_msg(
"ERROR: Could not valid input for thermodynamic pressure!");
113 template<
typename ImplType>
116 std::string thermochem_lib;
121 return thermochem_lib;
124 template<
typename ImplType>
125 SharedPtr<CatalycityBase>
127 const std::string& section,
128 const std::string& reactant )
const
131 std::string bc_id_str = StringUtilities::T_to_string<BoundaryID>( *(_bc_ids->begin()) );
138 std::string catalycity_input_str = section+
"/gamma_"+reactant+
"_"+bc_id_str+
"_type";
139 if( !input.have_variable(catalycity_input_str) )
140 libmesh_error_msg(
"ERROR: Could not find input variable "+catalycity_input_str+
" !\n");
142 std::string catalycity_type = input(catalycity_input_str,
"none");
143 catalycity_type +=
"_old_style";
148 return SharedPtr<CatalycityBase>( catalycity_ptr.release() );
libMesh::Real parse_thermo_pressure(const GetPot &input, const std::string &material) const
static void parse_thermochemistry_model(const GetPot &input, const std::string &physics, std::string &model)
Determine thermochemistry model type.
static void set_reactant(const std::string &reactant)
static PhysicsName reacting_low_mach_navier_stokes()
static void set_bc_id(const std::string &bc_id)
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 void set_getpot(const GetPot &input)
static void set_section(const std::string §ion)
static const std::set< BoundaryID > * _bc_ids
BoundaryID for constructing a particular boundary condition.
SharedPtr< CatalycityBase > build_catalycity(const GetPot &input, const std::string §ion, const std::string &reactant) const
static libMesh::UniquePtr< CatalycityBase > build(const std::string &name)
Use this method to build objects of type Base.
std::string parse_reaction(const GetPot &input, const std::string §ion) const
Parse the reaction.
std::string parse_thermochem_model(const GetPot &input) const
Interface with libMesh for solving Multiphysics problems.