GRINS-0.6.0
Public Member Functions | Protected Types | Protected Attributes | Static Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
GRINS::AxisymmetricHeatTransferBCHandling Class Reference

Base class for reading and handling boundary conditions for physics classes. More...

#include <axisym_heat_transfer_bc_handling.h>

Inheritance diagram for GRINS::AxisymmetricHeatTransferBCHandling:
Inheritance graph
[legend]
Collaboration diagram for GRINS::AxisymmetricHeatTransferBCHandling:
Collaboration graph
[legend]

Public Member Functions

 AxisymmetricHeatTransferBCHandling (const std::string &physics_name, const GetPot &input)
 
 ~AxisymmetricHeatTransferBCHandling ()
 
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. More...
 
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 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
 
virtual void user_init_dirichlet_bcs (libMesh::FEMSystem *system, libMesh::DofMap &dof_map, GRINS::BoundaryID bc_id, GRINS::BCType bc_type) const
 
void attach_neumann_bound_func (GRINS::NBCContainer &neumann_bcs)
 
void attach_dirichlet_bound_func (const GRINS::DBCContainer &dirichlet_bc)
 
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 apply_neumann_bcs (AssemblyContext &context, const GRINS::CachedValues &cache, const bool request_jacobian, const GRINS::BoundaryID bc_id) const
 
virtual void init_dirichlet_bc_func_objs (libMesh::FEMSystem *system) const
 
virtual void init_periodic_bcs (libMesh::FEMSystem *system) const
 
void set_dirichlet_bc_type (GRINS::BoundaryID bc_id, int bc_type)
 
void set_neumann_bc_type (GRINS::BoundaryID bc_id, int bc_type)
 
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)
 
libMesh::Real get_dirichlet_bc_value (GRINS::BoundaryID bc_id, int component=0) const
 
const libMesh::Point & get_neumann_bc_value (GRINS::BoundaryID bc_id) const
 
std::tr1::shared_ptr< GRINS::NeumannFuncObjget_neumann_bound_func (GRINS::BoundaryID bc_id, GRINS::VariableIndex var_id) const
 
std::tr1::shared_ptr< GRINS::NeumannFuncObjget_neumann_bound_func (GRINS::BoundaryID bc_id, GRINS::VariableIndex var_id)
 
virtual void init_dirichlet_bcs (libMesh::FEMSystem *system) const
 
GRINS::BCType get_dirichlet_bc_type (const GRINS::BoundaryID bc_id) const
 
bool is_axisymmetric () const
 

Protected Types

enum  BC_BASE {
  PERIODIC = -5, CONSTANT_DIRICHLET, PARSED_DIRICHLET, PARSED_FEM_DIRICHLET,
  AXISYMMETRIC
}
 

Protected Attributes

std::vector< std::pair< BoundaryID, BCType > > _dirichlet_bc_map
 Map between boundary id and Dirichlet boundary condition type. More...
 
std::map< GRINS::BoundaryID, GRINS::BCType_neumann_bc_map
 Map between boundary id and Neumann boundary condition type. More...
 
std::map< GRINS::BoundaryID, libMesh::Point > _dirichlet_values
 Stash prescribed Dirichlet boundary values. More...
 
std::map< GRINS::BoundaryID, libMesh::Point > _q_values
 Stash prescribed boundary fluxes. More...
 
std::map< GRINS::BoundaryID, GRINS::NBCContainer_neumann_bound_funcs
 
std::vector< GRINS::DBCContainer_dirichlet_bound_funcs
 
GRINS::BoundaryConditions _bound_conds
 Object that stashes generic boundary condition types. More...
 
std::vector< GRINS::PBCContainer_periodic_bcs
 
unsigned int _num_periodic_bcs
 
std::string _physics_name
 

Static Protected Attributes

static bool _axisymmetric = false
 Flag to cache whether or not there is an axisymmetric boundary present. More...
 

Private Types

enum  AHT_BC_TYPES {
  AXISYMMETRIC =0, ISOTHERMAL_WALL, ADIABATIC_WALL, PRESCRIBED_HEAT_FLUX,
  GENERAL_HEAT_FLUX
}
 

Private Member Functions

 AxisymmetricHeatTransferBCHandling ()
 

Private Attributes

std::string _T_var_name
 
VariableIndex _T_var
 

Detailed Description

Base class for reading and handling boundary conditions for physics classes.

Definition at line 34 of file axisym_heat_transfer_bc_handling.h.

Member Enumeration Documentation

enum GRINS::BCHandlingBase::BC_BASE
protectedinherited

Constructor & Destructor Documentation

GRINS::AxisymmetricHeatTransferBCHandling::AxisymmetricHeatTransferBCHandling ( const std::string &  physics_name,
const GetPot &  input 
)

Definition at line 39 of file axisym_heat_transfer_bc_handling.C.

References GRINS::BCHandlingBase::_physics_name, _T_var_name, GRINS::BCHandlingBase::read_bc_data(), and GRINS::T_var_name_default.

41  : BCHandlingBase(physics_name)
42  {
43  _T_var_name = input("Physics/VariableNames/Temperature", T_var_name_default );
44 
45  std::string id_str = "Physics/"+_physics_name+"/bc_ids";
46  std::string bc_str = "Physics/"+_physics_name+"/bc_types";
47  std::string var_str = "Physics/"+_physics_name+"/bc_variables";
48  std::string val_str = "Physics/"+_physics_name+"/bc_values";
49 
50  this->read_bc_data( input, id_str, bc_str, var_str, val_str );
51 
52  return;
53  }
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)
const std::string T_var_name_default
temperature
GRINS::AxisymmetricHeatTransferBCHandling::~AxisymmetricHeatTransferBCHandling ( )

Definition at line 55 of file axisym_heat_transfer_bc_handling.C.

56  {
57  return;
58  }
GRINS::AxisymmetricHeatTransferBCHandling::AxisymmetricHeatTransferBCHandling ( )
private

Member Function Documentation

void GRINS::BCHandlingBase::apply_neumann_bcs ( AssemblyContext context,
const GRINS::CachedValues cache,
const bool  request_jacobian,
const GRINS::BoundaryID  bc_id 
) const
virtualinherited

Definition at line 234 of file bc_handling_base.C.

References GRINS::BCHandlingBase::_neumann_bc_map, and GRINS::BCHandlingBase::user_apply_neumann_bcs().

238  {
239  std::map< BoundaryID, BCType>::const_iterator
240  bc_map_it = _neumann_bc_map.find( bc_id );
241 
242  /* We assume that if you didn't put a boundary id in, then you didn't want to
243  set a boundary condition on that boundary. */
244  if( bc_map_it != _neumann_bc_map.end() )
245  {
246  this->user_apply_neumann_bcs( context, cache, request_jacobian,
247  bc_id, bc_map_it->second );
248  }
249  return;
250  }
std::map< GRINS::BoundaryID, GRINS::BCType > _neumann_bc_map
Map between boundary id and Neumann boundary condition type.
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
void GRINS::BCHandlingBase::attach_dirichlet_bound_func ( const GRINS::DBCContainer dirichlet_bc)
inherited
void GRINS::BCHandlingBase::attach_neumann_bound_func ( GRINS::NBCContainer neumann_bcs)
inherited

Definition at line 61 of file bc_handling_base.C.

References GRINS::BCHandlingBase::_neumann_bound_funcs, and GRINS::NBCContainer::get_bc_id().

Referenced by GRINS::Physics::attach_neumann_bound_func().

62  {
63  _neumann_bound_funcs.insert( std::make_pair( neumann_bcs.get_bc_id(), neumann_bcs ) );
64  return;
65  }
BoundaryID get_bc_id() const
Definition: nbc_container.C:46
std::map< GRINS::BoundaryID, GRINS::NBCContainer > _neumann_bound_funcs
GRINS::BCType GRINS::BCHandlingBase::get_dirichlet_bc_type ( const GRINS::BoundaryID  bc_id) const
inlineinherited

Definition at line 207 of file bc_handling_base.h.

References GRINS::BCHandlingBase::_dirichlet_bc_map.

208  {
209  BCType bc_type_out = -100;
210 
211  for( std::vector<std::pair<BoundaryID,BCType> >::const_iterator it = _dirichlet_bc_map.begin();
212  it != _dirichlet_bc_map.end(); it++ )
213  {
214  if( it->first == bc_id ) bc_type_out = it->second;
215  }
216 
217  libmesh_assert_not_equal_to( bc_type_out, -100 );
218 
219  return bc_type_out;
220  }
std::vector< std::pair< BoundaryID, BCType > > _dirichlet_bc_map
Map between boundary id and Dirichlet boundary condition type.
int BCType
Definition: bc_types.h:32
libMesh::Real GRINS::BCHandlingBase::get_dirichlet_bc_value ( GRINS::BoundaryID  bc_id,
int  component = 0 
) const
inherited
const libMesh::Point & GRINS::BCHandlingBase::get_neumann_bc_value ( GRINS::BoundaryID  bc_id) const
inlineinherited

Definition at line 185 of file bc_handling_base.h.

References GRINS::BCHandlingBase::_q_values.

Referenced by user_apply_neumann_bcs(), GRINS::HeatTransferBCHandling::user_apply_neumann_bcs(), and GRINS::SolidMechanicsBCHandling::user_apply_neumann_bcs().

186  {
187  return (_q_values.find(bc_id))->second;
188  }
std::map< GRINS::BoundaryID, libMesh::Point > _q_values
Stash prescribed boundary fluxes.
std::tr1::shared_ptr< GRINS::NeumannFuncObj > GRINS::BCHandlingBase::get_neumann_bound_func ( GRINS::BoundaryID  bc_id,
GRINS::VariableIndex  var_id 
) const
inlineinherited

Definition at line 192 of file bc_handling_base.h.

References GRINS::BCHandlingBase::_neumann_bound_funcs.

Referenced by user_apply_neumann_bcs(), and GRINS::HeatTransferBCHandling::user_apply_neumann_bcs().

194  {
195  return ((_neumann_bound_funcs.find(bc_id))->second).get_func(var_id);
196  }
std::map< GRINS::BoundaryID, GRINS::NBCContainer > _neumann_bound_funcs
std::tr1::shared_ptr< GRINS::NeumannFuncObj > GRINS::BCHandlingBase::get_neumann_bound_func ( GRINS::BoundaryID  bc_id,
GRINS::VariableIndex  var_id 
)
inlineinherited

Definition at line 200 of file bc_handling_base.h.

References GRINS::BCHandlingBase::_neumann_bound_funcs.

202  {
203  return ((_neumann_bound_funcs.find(bc_id))->second).get_func(var_id);
204  }
std::map< GRINS::BoundaryID, GRINS::NBCContainer > _neumann_bound_funcs
void GRINS::AxisymmetricHeatTransferBCHandling::init_bc_data ( const libMesh::FEMSystem &  system)
virtual

Override this method to initialize any system-dependent data.

Override this method to, for example, cache a System variable number. This is called before any of the other init methods in this class. By default, does nothing.

Reimplemented from GRINS::BCHandlingBase.

Definition at line 92 of file axisym_heat_transfer_bc_handling.C.

References _T_var, and _T_var_name.

void GRINS::AxisymmetricHeatTransferBCHandling::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

Reimplemented from GRINS::BCHandlingBase.

Definition at line 97 of file axisym_heat_transfer_bc_handling.C.

References GRINS::BCHandlingBase::_physics_name, ADIABATIC_WALL, AXISYMMETRIC, GENERAL_HEAT_FLUX, GRINS::BCHandlingBase::init_bc_types(), ISOTHERMAL_WALL, PRESCRIBED_HEAT_FLUX, GRINS::BCHandlingBase::set_dirichlet_bc_type(), GRINS::BCHandlingBase::set_dirichlet_bc_value(), GRINS::BCHandlingBase::set_neumann_bc_type(), and GRINS::BCHandlingBase::set_neumann_bc_value().

103  {
104  switch(bc_type)
105  {
106  case(AXISYMMETRIC):
107  {
108  this->set_neumann_bc_type( bc_id, bc_type );
109  }
110  break;
111  case(ISOTHERMAL_WALL):
112  {
113  this->set_dirichlet_bc_type( bc_id, bc_type );
114 
115  this->set_dirichlet_bc_value( bc_id, input("Physics/"+_physics_name+"/T_wall_"+bc_id_string, 0.0 ) );
116  }
117  break;
118 
119  case(ADIABATIC_WALL):
120  {
121  this->set_neumann_bc_type( bc_id, bc_type );
122  }
123  break;
124 
125  case(PRESCRIBED_HEAT_FLUX):
126  {
127  this->set_neumann_bc_type( bc_id, bc_type );
128 
129  libMesh::RealGradient q_in;
130 
131  int num_q_components = input.vector_variable_size("Physics/"+_physics_name+"/q_wall_"+bc_id_string);
132 
133  for( int i = 0; i < num_q_components; i++ )
134  {
135  q_in(i) = input("Physics/"+_physics_name+"/q_wall_"+bc_id_string, 0.0, i );
136  }
137 
138  this->set_neumann_bc_value( bc_id, q_in );
139  }
140  break;
141  case(GENERAL_HEAT_FLUX):
142  {
143  this->set_neumann_bc_type( bc_id, bc_type );
144  }
145  break;
146  default:
147  {
148  // Call base class to detect any physics-common boundary conditions
149  BCHandlingBase::init_bc_types( bc_id, bc_id_string, bc_type,
150  bc_vars, bc_value, input );
151  }
152  }// End switch(bc_type)
153 
154  return;
155  }
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)
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)
void set_neumann_bc_type(GRINS::BoundaryID bc_id, int bc_type)
void set_dirichlet_bc_type(GRINS::BoundaryID bc_id, int bc_type)
void GRINS::BCHandlingBase::init_dirichlet_bc_func_objs ( libMesh::FEMSystem *  system) const
virtualinherited

Definition at line 116 of file bc_handling_base.C.

References GRINS::BCHandlingBase::_dirichlet_bound_funcs.

Referenced by GRINS::Physics::init_bcs().

117  {
118  libMesh::DofMap& dof_map = system->get_dof_map();
119 
120  for( std::vector< DBCContainer >::const_iterator
121  it = _dirichlet_bound_funcs.begin();
122  it != _dirichlet_bound_funcs.end();
123  it++ )
124  {
125  // First, get variable names. We convert them to variable ids,
126  // both to tell the DirichletBoundary what variables to
127  // project and to tell the CompositeFunction what remapping to
128  // do.
129  std::vector<VariableName> var_names = (*it).get_var_names();
130 
131  std::vector<VariableIndex> dbc_vars;
132 
133  for( std::vector<VariableName>::const_iterator name = var_names.begin();
134  name != var_names.end();
135  name++ )
136  {
137  dbc_vars.push_back( system->variable_number( *name ) );
138  }
139 
140  // Get bc_id's
141  std::set<BoundaryID> bc_ids = (*it).get_bc_ids();
142 
143  // Get Dirichlet bc functor
144  std::tr1::shared_ptr<libMesh::FunctionBase<libMesh::Number> >
145  func = (*it).get_func();
146 
147  // Remap indices as necessary
148  if (func.get())
149  {
151  remapped_func.attach_subfunction(*func, dbc_vars);
152 
153  // Now create DirichletBoundary object and give it to libMesh
154  // libMesh makes it own copy of the DirichletBoundary so we can
155  // let this one die.
156  libMesh::DirichletBoundary dbc( bc_ids, dbc_vars,
157  remapped_func );
158 
159  dof_map.add_dirichlet_boundary( dbc );
160  }
161  else
162  {
163  // Get Dirichlet bc functor
164  const std::string& func_string = (*it).get_fem_func_string();
165 
166  libmesh_assert_not_equal_to(func_string, "");
167 
168  // Need to belatedly create Dirichlet functor since we
169  // didn't have a System object handy until now.
170  libMesh::ParsedFEMFunction<libMesh::Number>
171  func(*system, func_string);
172 
173  libMesh::CompositeFEMFunction<libMesh::Number> remapped_func;
174  remapped_func.attach_subfunction(func, dbc_vars);
175 
176  // Now create DirichletBoundary object and give it to libMesh
177  // libMesh makes it own copy of the DirichletBoundary so we can
178  // let this one die.
179  libMesh::DirichletBoundary dbc( bc_ids, dbc_vars,
180  *system,
181  remapped_func );
182 
183  dof_map.add_dirichlet_boundary( dbc );
184  }
185  }
186 
187  return;
188  }
std::vector< GRINS::DBCContainer > _dirichlet_bound_funcs
void GRINS::BCHandlingBase::init_dirichlet_bcs ( libMesh::FEMSystem *  system) const
virtualinherited

Reimplemented in GRINS::ReactingLowMachNavierStokesBCHandling< Chemistry >, and GRINS::LowMachNavierStokesBCHandling.

Definition at line 190 of file bc_handling_base.C.

References GRINS::BCHandlingBase::_dirichlet_bc_map, and GRINS::BCHandlingBase::user_init_dirichlet_bcs().

Referenced by GRINS::Physics::init_bcs().

191  {
192  libMesh::DofMap& dof_map = system->get_dof_map();
193 
194  for( std::vector<std::pair<BoundaryID,BCType> >::const_iterator it = _dirichlet_bc_map.begin();
195  it != _dirichlet_bc_map.end(); it++ )
196  {
197  this->user_init_dirichlet_bcs( system, dof_map, it->first, it->second );
198  }
199 
200  return;
201  }
virtual void user_init_dirichlet_bcs(libMesh::FEMSystem *system, libMesh::DofMap &dof_map, GRINS::BoundaryID bc_id, GRINS::BCType bc_type) const
std::vector< std::pair< BoundaryID, BCType > > _dirichlet_bc_map
Map between boundary id and Dirichlet boundary condition type.
void GRINS::BCHandlingBase::init_periodic_bcs ( libMesh::FEMSystem *  system) const
virtualinherited

Definition at line 203 of file bc_handling_base.C.

References GRINS::BCHandlingBase::_num_periodic_bcs, and GRINS::BCHandlingBase::_periodic_bcs.

Referenced by GRINS::Physics::init_bcs().

204  {
205  /* Consistency check required to make sure user actually set periodic bc data.
206  This is needed because of the way we parse periodic boundary conditions. */
207  if( _periodic_bcs.size() != _num_periodic_bcs/2 )
208  {
209  std::cerr << "==========================================================" << std::endl
210  << "Error: Inconsistency in perioidic boundary conditions." << std::endl
211  << " There were " << _num_periodic_bcs << " deteced but " << std::endl
212  << " only " << _periodic_bcs.size() << " pairs of data " << std::endl
213  << " were set." << std::endl
214  << "==========================================================" << std::endl;
215  libmesh_error();
216  }
217 
218  libMesh::DofMap& dof_map = system->get_dof_map();
219 
220  for( std::vector< PBCContainer >::const_iterator it = _periodic_bcs.begin();
221  it != _periodic_bcs.end();
222  it++ )
223  {
224  libMesh::PeriodicBoundary bc( it->get_offset_vector() );
225  bc.myboundary = it->get_master_bcid();
226  bc.pairedboundary = it->get_slave_bcid();
227 
228  dof_map.add_periodic_boundary( bc );
229  }
230 
231  return;
232  }
std::vector< GRINS::PBCContainer > _periodic_bcs
unsigned int _num_periodic_bcs
bool GRINS::BCHandlingBase::is_axisymmetric ( ) const
inlineinherited
void GRINS::BCHandlingBase::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 
)
virtualinherited

Definition at line 73 of file bc_handling_base.C.

References GRINS::BCHandlingBase::init_bc_types(), and GRINS::BCHandlingBase::string_to_int().

Referenced by AxisymmetricHeatTransferBCHandling(), GRINS::HeatTransferBCHandling::HeatTransferBCHandling(), GRINS::IncompressibleNavierStokesBCHandling::IncompressibleNavierStokesBCHandling(), GRINS::LowMachNavierStokesBCHandling::LowMachNavierStokesBCHandling(), GRINS::ReactingLowMachNavierStokesBCHandling< Chemistry >::ReactingLowMachNavierStokesBCHandling(), GRINS::SolidMechanicsBCHandling::SolidMechanicsBCHandling(), and GRINS::SpalartAllmarasBCHandling::SpalartAllmarasBCHandling().

77  {
78  int num_ids = input.vector_variable_size(id_str);
79  int num_bcs = input.vector_variable_size(bc_str);
80  // int num_vars = input.vector_variable_size(var_str);
81  // int num_vals = input.vector_variable_size(val_str);
82 
83  if( num_ids != num_bcs )
84  {
85  std::cerr << "Error: Must specify equal number of boundary ids and boundary conditions"
86  << std::endl;
87  libmesh_error();
88  }
89 
90  for( int i = 0; i < num_ids; i++ )
91  {
92  int bc_id = input(id_str, -1, i );
93  std::string bc_type_in = input(bc_str, "NULL", i );
94 
95  int bc_type = this->string_to_int( bc_type_in );
96 
97  std::stringstream ss;
98  ss << bc_id;
99  std::string bc_id_string = ss.str();
100 
101  std::string bc_val = input(val_str, std::string(""), i );
102 
103  std::string bc_vars = input(var_str, std::string(""), i );
104 
105  this->init_bc_types( bc_id, bc_id_string, bc_type, bc_vars, bc_val, input );
106  }
107 
108  return;
109  }
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
void GRINS::BCHandlingBase::set_dirichlet_bc_type ( GRINS::BoundaryID  bc_id,
int  bc_type 
)
inherited

Definition at line 252 of file bc_handling_base.C.

References GRINS::BCHandlingBase::_dirichlet_bc_map.

Referenced by init_bc_types(), GRINS::HeatTransferBCHandling::init_bc_types(), GRINS::LowMachNavierStokesBCHandling::init_bc_types(), GRINS::SpalartAllmarasBCHandling::init_bc_types(), GRINS::IncompressibleNavierStokesBCHandling::init_bc_types(), and GRINS::SolidMechanicsBCHandling::init_bc_types().

253  {
254  _dirichlet_bc_map.push_back( std::make_pair(bc_id, bc_type) );
255  return;
256  }
std::vector< std::pair< BoundaryID, BCType > > _dirichlet_bc_map
Map between boundary id and Dirichlet boundary condition type.
void GRINS::BCHandlingBase::set_dirichlet_bc_value ( GRINS::BoundaryID  bc_id,
libMesh::Real  value,
int  component = 0 
)
inherited

Definition at line 264 of file bc_handling_base.C.

References GRINS::BCHandlingBase::_dirichlet_values.

Referenced by init_bc_types(), GRINS::HeatTransferBCHandling::init_bc_types(), GRINS::LowMachNavierStokesBCHandling::init_bc_types(), GRINS::IncompressibleNavierStokesBCHandling::init_bc_types(), and GRINS::SolidMechanicsBCHandling::init_bc_types().

267  {
268  _dirichlet_values[bc_id](component) = value;
269  return;
270  }
std::map< GRINS::BoundaryID, libMesh::Point > _dirichlet_values
Stash prescribed Dirichlet boundary values.
void GRINS::BCHandlingBase::set_neumann_bc_type ( GRINS::BoundaryID  bc_id,
int  bc_type 
)
inherited

Definition at line 258 of file bc_handling_base.C.

References GRINS::BCHandlingBase::_neumann_bc_map.

Referenced by init_bc_types(), GRINS::HeatTransferBCHandling::init_bc_types(), GRINS::LowMachNavierStokesBCHandling::init_bc_types(), and GRINS::SolidMechanicsBCHandling::init_bc_types().

259  {
260  _neumann_bc_map[bc_id] = bc_type;
261  return;
262  }
std::map< GRINS::BoundaryID, GRINS::BCType > _neumann_bc_map
Map between boundary id and Neumann boundary condition type.
void GRINS::BCHandlingBase::set_neumann_bc_value ( GRINS::BoundaryID  bc_id,
const libMesh::Point &  q_in 
)
inherited

Definition at line 278 of file bc_handling_base.C.

References GRINS::BCHandlingBase::_q_values.

Referenced by init_bc_types(), GRINS::HeatTransferBCHandling::init_bc_types(), GRINS::LowMachNavierStokesBCHandling::init_bc_types(), and GRINS::SolidMechanicsBCHandling::init_bc_types().

279  {
280  _q_values[bc_id] = q_in;
281  }
std::map< GRINS::BoundaryID, libMesh::Point > _q_values
Stash prescribed boundary fluxes.
int GRINS::AxisymmetricHeatTransferBCHandling::string_to_int ( const std::string &  bc_type_in) const
virtual

Reimplemented from GRINS::BCHandlingBase.

Definition at line 60 of file axisym_heat_transfer_bc_handling.C.

References GRINS::BCHandlingBase::_physics_name, ADIABATIC_WALL, AXISYMMETRIC, GENERAL_HEAT_FLUX, ISOTHERMAL_WALL, and PRESCRIBED_HEAT_FLUX.

61  {
62  AHT_BC_TYPES bc_type_out;
63 
64  if( bc_type == "isothermal_wall" )
65  bc_type_out = ISOTHERMAL_WALL;
66 
67  else if( bc_type == "adiabatic_wall" )
68  bc_type_out = ADIABATIC_WALL;
69 
70  else if( bc_type == "prescribed_heat_flux" )
71  bc_type_out = PRESCRIBED_HEAT_FLUX;
72 
73  else if( bc_type == "general_heat_flux" )
74  bc_type_out = GENERAL_HEAT_FLUX;
75 
76  else if( bc_type == "axisymmetric" )
77  {
78  bc_type_out = AXISYMMETRIC;
79  }
80  else
81  {
82  std::cerr << "==========================================================" << std::endl
83  << "Error: Invalid bc_type " << bc_type << std::endl
84  << " Physics class is " << _physics_name << std::endl
85  << "==========================================================" << std::endl;
86  libmesh_error();
87  }
88 
89  return bc_type_out;
90  }
void GRINS::AxisymmetricHeatTransferBCHandling::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
virtual

Reimplemented from GRINS::BCHandlingBase.

Definition at line 157 of file axisym_heat_transfer_bc_handling.C.

References GRINS::BCHandlingBase::_bound_conds, GRINS::BCHandlingBase::_physics_name, _T_var, ADIABATIC_WALL, GRINS::BoundaryConditions::apply_neumann_axisymmetric(), AXISYMMETRIC, GENERAL_HEAT_FLUX, GRINS::BCHandlingBase::get_neumann_bc_value(), GRINS::BCHandlingBase::get_neumann_bound_func(), and PRESCRIBED_HEAT_FLUX.

162  {
163  switch( bc_type )
164  {
165  case(AXISYMMETRIC):
166  // Don't need to do anything for dT/dr = 0
167  break;
168  // Zero heat flux
169  case(ADIABATIC_WALL):
170  // Don't need to do anything: q = 0 in this case
171  break;
172 
173  // Prescribed constant heat flux
174  case(PRESCRIBED_HEAT_FLUX):
175  {
177  this->get_neumann_bc_value(bc_id) );
178  }
179  break;
180  // General heat flux from user specified function
181  case(GENERAL_HEAT_FLUX):
182  {
183  _bound_conds.apply_neumann_axisymmetric( context, cache, request_jacobian, _T_var, -1.0,
184  this->get_neumann_bound_func( bc_id, _T_var ) );
185  }
186  break;
187  default:
188  {
189  std::cerr << "Error: Invalid Neumann BC type for " << _physics_name
190  << std::endl;
191  libmesh_error();
192  }
193  }
194  return;
195  }
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.
const libMesh::Point & get_neumann_bc_value(GRINS::BoundaryID bc_id) const
GRINS::BoundaryConditions _bound_conds
Object that stashes generic boundary condition types.
void GRINS::AxisymmetricHeatTransferBCHandling::user_init_dirichlet_bcs ( libMesh::FEMSystem *  system,
libMesh::DofMap &  dof_map,
GRINS::BoundaryID  bc_id,
GRINS::BCType  bc_type 
) const
virtual

Reimplemented from GRINS::BCHandlingBase.

Definition at line 197 of file axisym_heat_transfer_bc_handling.C.

References GRINS::BCHandlingBase::_physics_name, _T_var, GRINS::BCHandlingBase::get_dirichlet_bc_value(), and ISOTHERMAL_WALL.

201  {
202  switch( bc_type )
203  {
204  case(ISOTHERMAL_WALL):
205  {
206  std::set<BoundaryID> dbc_ids;
207  dbc_ids.insert(bc_id);
208 
209  std::vector<VariableIndex> dbc_vars;
210  dbc_vars.push_back(_T_var);
211 
212  libMesh::ConstFunction<libMesh::Number> t_func(this->get_dirichlet_bc_value(bc_id));
213 
214  libMesh::DirichletBoundary t_dbc( dbc_ids, dbc_vars, &t_func );
215 
216  dof_map.add_dirichlet_boundary( t_dbc );
217  }
218  break;
219  default:
220  {
221  std::cerr << "Error: Invalid Dirichlet BC type for " << _physics_name
222  << std::endl;
223  libmesh_error();
224  }
225  }// end switch
226 
227  return;
228  }
libMesh::Real get_dirichlet_bc_value(GRINS::BoundaryID bc_id, int component=0) const

Member Data Documentation

bool GRINS::BCHandlingBase::_axisymmetric = false
staticprotectedinherited

Flag to cache whether or not there is an axisymmetric boundary present.

Definition at line 170 of file bc_handling_base.h.

Referenced by GRINS::BCHandlingBase::is_axisymmetric(), and GRINS::BCHandlingBase::string_to_int().

GRINS::BoundaryConditions GRINS::BCHandlingBase::_bound_conds
protectedinherited

Object that stashes generic boundary condition types.

Todo:
Move this so that only one object is needed. Perhaps make static?

Definition at line 156 of file bc_handling_base.h.

Referenced by user_apply_neumann_bcs(), GRINS::HeatTransferBCHandling::user_apply_neumann_bcs(), and GRINS::SolidMechanicsBCHandling::user_apply_neumann_bcs().

std::vector<std::pair<BoundaryID,BCType> > GRINS::BCHandlingBase::_dirichlet_bc_map
protectedinherited

Map between boundary id and Dirichlet boundary condition type.

We need to keep this around because the libMesh::DirichletBoundary objects can't be created until we init the variables. We use a vector of pairs so that the boundary condition functors get added to the libMesh::DofMap in the same order as in the input file.

Definition at line 137 of file bc_handling_base.h.

Referenced by GRINS::BCHandlingBase::get_dirichlet_bc_type(), GRINS::LowMachNavierStokesBCHandling::init_dirichlet_bcs(), GRINS::BCHandlingBase::init_dirichlet_bcs(), and GRINS::BCHandlingBase::set_dirichlet_bc_type().

std::vector< GRINS::DBCContainer > GRINS::BCHandlingBase::_dirichlet_bound_funcs
protectedinherited
std::map< GRINS::BoundaryID, libMesh::Point > GRINS::BCHandlingBase::_dirichlet_values
protectedinherited

Stash prescribed Dirichlet boundary values.

Definition at line 143 of file bc_handling_base.h.

Referenced by GRINS::BCHandlingBase::set_dirichlet_bc_value().

std::map< GRINS::BoundaryID, GRINS::BCType> GRINS::BCHandlingBase::_neumann_bc_map
protectedinherited

Map between boundary id and Neumann boundary condition type.

Definition at line 140 of file bc_handling_base.h.

Referenced by GRINS::BCHandlingBase::apply_neumann_bcs(), and GRINS::BCHandlingBase::set_neumann_bc_type().

std::map< GRINS::BoundaryID, GRINS::NBCContainer > GRINS::BCHandlingBase::_neumann_bound_funcs
protectedinherited
unsigned int GRINS::BCHandlingBase::_num_periodic_bcs
protectedinherited
std::vector< GRINS::PBCContainer > GRINS::BCHandlingBase::_periodic_bcs
protectedinherited
std::string GRINS::BCHandlingBase::_physics_name
protectedinherited
std::map< GRINS::BoundaryID, libMesh::Point > GRINS::BCHandlingBase::_q_values
protectedinherited

Stash prescribed boundary fluxes.

Definition at line 146 of file bc_handling_base.h.

Referenced by GRINS::BCHandlingBase::get_neumann_bc_value(), and GRINS::BCHandlingBase::set_neumann_bc_value().

VariableIndex GRINS::AxisymmetricHeatTransferBCHandling::_T_var
private
std::string GRINS::AxisymmetricHeatTransferBCHandling::_T_var_name
private

The documentation for this class was generated from the following files:

Generated on Mon Jun 22 2015 21:32:22 for GRINS-0.6.0 by  doxygen 1.8.9.1