GRINS-0.8.0
parsed_function_neumann_old_style_bc_factory.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // GRINS - General Reacting Incompressible Navier-Stokes
5 //
6 // Copyright (C) 2014-2017 Paul T. Bauman, Roy H. Stogner
7 // Copyright (C) 2010-2013 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #ifndef GRINS_PARSED_FUNCTION_NEUMANN_OLD_STYLE_BC_FACTORY_H
26 #define GRINS_PARSED_FUNCTION_NEUMANN_OLD_STYLE_BC_FACTORY_H
27 
28 // GRINS
32 #include "grins/string_utils.h"
33 
34 namespace GRINS
35 {
36  template<typename FunctionType>
38  public ParsedFunctionNeumannBCFactoryHelper<FunctionType>
39  {
40  public:
41 
42  ParsedFunctionNeumannOldStyleBCFactory( const std::string& bc_type_name )
43  : NeumannBCOldStyleFactoryAbstract(bc_type_name),
45  {}
46 
48 
49  protected:
50 
51  virtual SharedPtr<NeumannBCAbstract>
52  build_neumann_func( const GetPot& input,
53  MultiphysicsSystem& system,
54  const FEVariablesBase& fe_var,
55  const std::string& section );
56 
57  virtual std::string flux_input() const =0;
58 
59  };
60 
61  template<typename FunctionType>
62  inline
63  SharedPtr<NeumannBCAbstract>
65  MultiphysicsSystem& system,
66  const FEVariablesBase& fe_var,
67  const std::string& section )
68  {
69  libmesh_assert_equal_to( this->_bc_ids->size(), 1 );
70 
71  std::string flux_input = section+"/"+this->flux_input()+"_"+
72  StringUtilities::T_to_string<unsigned int>( *(this->_bc_ids->begin()) );
73 
74  // Make sure flux input specified and consistent with var_names size
75  this->check_for_flux(input,flux_input,fe_var.active_var_names());
76 
77  return this->build_neumman_func_common( input, system, fe_var, flux_input );
78  }
79 
80  template<typename FunctionType>
82  {
83  public:
84 
85  TractionOldStyleBCFactory( const std::string& bc_type_name )
86  : ParsedFunctionNeumannOldStyleBCFactory<FunctionType>(bc_type_name)
87  {}
88 
90 
91  protected:
92 
93  virtual std::string flux_input() const
94  { return "traction"; }
95  };
96 
97 } // end namespace GRINS
98 
99 #endif // GRINS_PARSED_FUNCTION_NEUMANN_OLD_STYLE_BC_FACTORY_H
GRINS namespace.
Interface with libMesh for solving Multiphysics problems.
const std::vector< std::string > & active_var_names() const
Return the var names that are active from this class.
virtual std::string flux_input() const =0
virtual SharedPtr< NeumannBCAbstract > build_neumann_func(const GetPot &input, MultiphysicsSystem &system, const FEVariablesBase &fe_var, const std::string &section)
Builds the NeumannBCAbstract object for Neumann boundary conditions.

Generated on Tue Dec 19 2017 12:47:27 for GRINS-0.8.0 by  doxygen 1.8.9.1