30 #include "libmesh/const_function.h"
31 #include "libmesh/dirichlet_boundaries.h"
32 #include "libmesh/dof_map.h"
33 #include "libmesh/fem_system.h"
45 std::string var_str =
"Physics/"+
_physics_name+
"/bc_variables";
48 this->
read_bc_data( input, id_str, bc_str, var_str, val_str );
62 if( bc_type ==
"isothermal_wall" )
65 else if( bc_type ==
"adiabatic_wall" )
68 else if( bc_type ==
"prescribed_heat_flux" )
71 else if( bc_type ==
"general_heat_flux" )
91 const std::string& bc_id_string,
93 const std::string& bc_vars,
94 const std::string& bc_value,
117 libMesh::RealGradient q_in;
119 int num_q_components = input.vector_variable_size(
"Physics/"+
_physics_name+
"/q_wall_"+bc_id_string);
121 for(
int i = 0; i < num_q_components; i++ )
123 q_in(i) = input(
"Physics/"+
_physics_name+
"/q_wall_"+bc_id_string, 0.0, i );
138 bc_vars, bc_value, input );
147 libMesh::DofMap& dof_map,
155 std::set<BoundaryID> dbc_ids;
156 dbc_ids.insert(bc_id);
158 std::vector<VariableIndex> dbc_vars;
161 libMesh::ConstFunction<libMesh::Number>
164 libMesh::DirichletBoundary t_dbc( dbc_ids, dbc_vars, &t_func );
166 dof_map.add_dirichlet_boundary( t_dbc );
171 std::cerr <<
"Error: Invalid Dirichlet BC type for " <<
_physics_name
182 const bool request_jacobian,
184 const BCType bc_type )
const
225 std::cerr <<
"Error: Invalid Neumann BC type for " <<
_physics_name
virtual void read_bc_data(const GetPot &input, const std::string &id_str, const std::string &bc_str, const std::string &var_str, const std::string &val_str)
virtual void init_bc_types(const GRINS::BoundaryID bc_id, const std::string &bc_id_string, const int bc_type, const std::string &bc_vars, const std::string &bc_value, const GetPot &input)
libMesh::boundary_id_type BoundaryID
More descriptive name of the type used for boundary ids.
virtual ~HeatTransferBCHandling()
std::tr1::shared_ptr< GRINS::NeumannFuncObj > get_neumann_bound_func(GRINS::BoundaryID bc_id, GRINS::VariableIndex var_id) const
void apply_neumann_axisymmetric(AssemblyContext &context, const VariableIndex var, const libMesh::Real sign, const typename libMesh::TensorTools::IncrementRank< FEShape >::type &value) const
Applies Neumann boundary conditions for the constant case.
VariableIndex T_var() const
void set_dirichlet_bc_value(GRINS::BoundaryID bc_id, libMesh::Real value, int component=0)
void apply_neumann(AssemblyContext &context, const VariableIndex var, const libMesh::Real sign, const typename libMesh::TensorTools::IncrementRank< FEShape >::type &value) const
Applies Neumann boundary conditions for the constant case.
void set_neumann_bc_value(GRINS::BoundaryID bc_id, const libMesh::Point &q_in)
virtual void init(libMesh::FEMSystem *system)
const libMesh::Point & get_neumann_bc_value(GRINS::BoundaryID bc_id) const
virtual void init_bc_types(const GRINS::BoundaryID bc_id, const std::string &bc_id_string, const int bc_type, const std::string &bc_vars, const std::string &bc_value, const GetPot &input)
virtual int string_to_int(const std::string &bc_type_in) const
virtual void init_bc_data(const libMesh::FEMSystem &system)
Override this method to initialize any system-dependent data.
virtual int string_to_int(const std::string &bc_type_in) const
bool is_axisymmetric() const
virtual void user_apply_neumann_bcs(AssemblyContext &context, const GRINS::CachedValues &cache, const bool request_jacobian, const GRINS::BoundaryID bc_id, const GRINS::BCType bc_type) const
GRINS::BoundaryConditions _bound_conds
Object that stashes generic boundary condition types.
Base class for reading and handling boundary conditions for physics classes.
virtual void user_init_dirichlet_bcs(libMesh::FEMSystem *system, libMesh::DofMap &dof_map, GRINS::BoundaryID bc_id, GRINS::BCType bc_type) const
void set_neumann_bc_type(GRINS::BoundaryID bc_id, int bc_type)
void set_dirichlet_bc_type(GRINS::BoundaryID bc_id, int bc_type)
libMesh::Real get_dirichlet_bc_value(GRINS::BoundaryID bc_id, int component=0) const
PrimitiveTempVariables _temp_vars
std::string _physics_name