25 #ifndef GRINS_BC_HANDLING_BASE_H
26 #define GRINS_BC_HANDLING_BASE_H
29 #include "libmesh/libmesh.h"
30 #include "libmesh/getpot.h"
31 #include "libmesh/point.h"
53 class AssemblyContext;
68 virtual void read_bc_data(
const GetPot& input,
const std::string& id_str,
69 const std::string& bc_str,
70 const std::string& var_str,
71 const std::string& val_str );
77 virtual void init_bc_data(
const libMesh::FEMSystem& system );
81 const bool request_jacobian,
86 const bool request_jacobian,
111 virtual int string_to_int(
const std::string& bc_type_in )
const;
114 const std::string& bc_id_string,
116 const std::string& bc_vars,
117 const std::string& bc_value,
118 const GetPot& input );
121 libMesh::DofMap& dof_map,
146 std::map< GRINS::BoundaryID, libMesh::Point >
_q_values;
191 std::tr1::shared_ptr< GRINS::NeumannFuncObj >
199 std::tr1::shared_ptr< GRINS::NeumannFuncObj >
209 BCType bc_type_out = -100;
211 for( std::vector<std::pair<BoundaryID,BCType> >::const_iterator it =
_dirichlet_bc_map.begin();
214 if( it->first == bc_id ) bc_type_out = it->second;
217 libmesh_assert_not_equal_to( bc_type_out, -100 );
223 #endif // GRINS_BC_HANDLING_BASE
unsigned int VariableIndex
More descriptive name of the type used for variable indices.
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 user_init_dirichlet_bcs(libMesh::FEMSystem *system, libMesh::DofMap &dof_map, GRINS::BoundaryID bc_id, GRINS::BCType bc_type) const
Simple helper class to setup general Dirichlet boundary conditions.
std::vector< GRINS::PBCContainer > _periodic_bcs
libMesh::boundary_id_type BoundaryID
More descriptive name of the type used for boundary ids.
void attach_dirichlet_bound_func(const GRINS::DBCContainer &dirichlet_bc)
std::vector< GRINS::DBCContainer > _dirichlet_bound_funcs
virtual void apply_neumann_bcs(AssemblyContext &context, const GRINS::CachedValues &cache, const bool request_jacobian, const GRINS::BoundaryID bc_id) const
std::tr1::shared_ptr< GRINS::NeumannFuncObj > get_neumann_bound_func(GRINS::BoundaryID bc_id, GRINS::VariableIndex var_id) const
virtual ~BCHandlingBase()
std::map< GRINS::BoundaryID, libMesh::Point > _dirichlet_values
Stash prescribed Dirichlet boundary values.
void attach_neumann_bound_func(GRINS::NBCContainer &neumann_bcs)
void set_dirichlet_bc_value(GRINS::BoundaryID bc_id, libMesh::Real value, int component=0)
void set_neumann_bc_value(GRINS::BoundaryID bc_id, const libMesh::Point &q_in)
unsigned int _num_periodic_bcs
const libMesh::Point & get_neumann_bc_value(GRINS::BoundaryID bc_id) const
Simple helper class to setup general Neumann boundary conditions.
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)
GRINS::BCType get_dirichlet_bc_type(const GRINS::BoundaryID bc_id) const
std::vector< std::pair< BoundaryID, BCType > > _dirichlet_bc_map
Map between boundary id and Dirichlet boundary condition type.
virtual void init_dirichlet_bcs(libMesh::FEMSystem *system) const
virtual int string_to_int(const std::string &bc_type_in) const
virtual void init_periodic_bcs(libMesh::FEMSystem *system) const
bool is_axisymmetric() const
static bool _axisymmetric
Flag to cache whether or not there is an axisymmetric boundary present.
virtual void init_dirichlet_bc_func_objs(libMesh::FEMSystem *system) const
std::map< GRINS::BoundaryID, GRINS::NBCContainer > _neumann_bound_funcs
GRINS::BoundaryConditions _bound_conds
Object that stashes generic boundary condition types.
Class to hold typical boundary condition methods.
Base class for reading and handling boundary conditions for physics classes.
virtual void init_bc_data(const libMesh::FEMSystem &system)
Override this method to initialize any system-dependent data.
std::map< GRINS::BoundaryID, libMesh::Point > _q_values
Stash prescribed boundary fluxes.
std::map< GRINS::BoundaryID, GRINS::BCType > _neumann_bc_map
Map between boundary id and Neumann boundary condition type.
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
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
std::string _physics_name