40 #include "libmesh/getpot.h"
41 #include "libmesh/string_to_enum.h"
42 #include "libmesh/fem_system.h"
47 template<
class Mu,
class SH,
class TC>
49 const std::string& core_physics_name,
52 _flow_vars(input, core_physics_name),
53 _press_var(input,core_physics_name, true ),
54 _temp_vars(input, core_physics_name),
67 template<
class Mu,
class SH,
class TC>
76 if( this->_enable_thermo_press_calc )
81 template<
class Mu,
class SH,
class TC>
87 "ThermodynamicPressure",
94 "ReferenceTemperature",
118 template<
class Mu,
class SH,
class TC>
122 this->_dim = system->get_mesh().mesh_dimension();
124 this->_flow_vars.init(system);
125 this->_press_var.init(system);
126 this->_temp_vars.init(system);
130 if( _enable_thermo_press_calc )
131 _p0_var->init(system);
136 template<
class Mu,
class SH,
class TC>
139 const unsigned int dim = system->get_mesh().mesh_dimension();
141 system->time_evolving(_flow_vars.u());
142 system->time_evolving(_flow_vars.v());
145 system->time_evolving(_flow_vars.w());
147 system->time_evolving(_temp_vars.T());
148 system->time_evolving(_press_var.p());
150 if( _enable_thermo_press_calc )
151 system->time_evolving(_p0_var->p0());
156 template<
class Mu,
class SH,
class TC>
162 context.get_element_fe(_flow_vars.u())->get_JxW();
163 context.get_element_fe(_flow_vars.u())->get_phi();
164 context.get_element_fe(_flow_vars.u())->get_dphi();
165 context.get_element_fe(_flow_vars.u())->get_xyz();
167 context.get_element_fe(_temp_vars.T())->get_JxW();
168 context.get_element_fe(_temp_vars.T())->get_phi();
169 context.get_element_fe(_temp_vars.T())->get_dphi();
170 context.get_element_fe(_temp_vars.T())->get_xyz();
172 context.get_element_fe(_press_var.p())->get_phi();
173 context.get_element_fe(_press_var.p())->get_xyz();
178 template<
class Mu,
class SH,
class TC>
180 (
const std::string & param_name,
185 _mu.register_parameter(param_name, param_pointer);
186 _cp.register_parameter(param_name, param_pointer);
187 _k.register_parameter(param_name, param_pointer);
LowMachNavierStokesBase()
void read_input_options(const GetPot &input)
Read options from GetPot input file.
libMesh::UniquePtr< ThermoPressureFEVariable > _p0_var
Physics abstract base class. Defines API for physics to be added to MultiphysicsSystem.
static std::string temperature_section()
static PhysicsName low_mach_navier_stokes()
bool _enable_thermo_press_calc
Flag to enable thermodynamic pressure calculation.
virtual void init_variables(libMesh::FEMSystem *system)
Initialize variables for this physics.
static void check_and_register_variable(const std::string &var_name, const FEVariablesBase &variable)
First check if var_name is registered and then register.
void register_variables()
static std::string velocity_section()
virtual void set_time_evolving_vars(libMesh::FEMSystem *system)
Sets velocity variables to be time-evolving.
Helper functions for parsing material properties.
static std::string thermo_pressure_section()
static std::string pressure_section()
Physics class for Incompressible Navier-Stokes.
static void read_property(const GetPot &input, const std::string &old_option, const std::string &property, const std::string &core_physics, ParameterUser ¶m_user, libMesh::Real &value)
Helper function for parsing/maintaing backward compatibility.
virtual void init_context(AssemblyContext &context)
Initialize context for added physics variables.
virtual void register_parameter(const std::string ¶m_name, libMesh::ParameterMultiAccessor< libMesh::Number > ¶m_pointer) const
Each subclass will register its copy of an independent.
virtual void register_parameter(const std::string ¶m_name, libMesh::ParameterMultiAccessor< libMesh::Number > ¶m_pointer) const
Each subclass will register its copy of an independent.