GRINS-0.6.0
boundary_conditions.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // GRINS - General Reacting Incompressible Navier-Stokes
5 //
6 // Copyright (C) 2014-2015 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_BOUNDARY_CONDITIONS_H
26 #define GRINS_BOUNDARY_CONDITIONS_H
27 
28 // GRINS
29 #include "grins/var_typedefs.h"
30 #include "grins/neumann_func_obj.h"
31 
32 // libMesh
33 #include "libmesh/libmesh.h"
34 #include "libmesh/vector_value.h"
35 #include "libmesh/tensor_tools.h"
36 
37 namespace GRINS
38 {
39  // Forward Declarations
40  class AssemblyContext;
41  class CachedValues;
42 
44 
49  {
50  public:
51 
54 
56  template<typename FEShape = libMesh::Real>
57  void apply_neumann( AssemblyContext& context,
58  const VariableIndex var,
59  const libMesh::Real sign,
60  const typename libMesh::TensorTools::IncrementRank<FEShape>::type& value ) const;
61 
63  template<typename FEShape = libMesh::Real>
65  const VariableIndex var,
66  const libMesh::Real sign,
67  const typename libMesh::TensorTools::IncrementRank<FEShape>::type& value ) const;
68 
70 
72  template<typename FEShape = libMesh::Real>
74  const VariableIndex var,
75  const libMesh::Real sign,
76  const FEShape& value ) const;
77 
79 
81  template<typename FEShape = libMesh::Real>
83  const VariableIndex var,
84  const libMesh::Real sign,
85  const FEShape& value ) const;
86 
87 
89 
90  template<typename FEShape = libMesh::Real>
91  void apply_neumann( AssemblyContext& context,
92  const CachedValues& cache,
93  const bool request_jacobian,
94  const VariableIndex var,
95  const libMesh::Real sign,
96  std::tr1::shared_ptr<NeumannFuncObj> neumann_func ) const;
97 
99 
100  template<typename FEShape = libMesh::Real>
102  const CachedValues& cache,
103  const bool request_jacobian,
104  const VariableIndex var,
105  const libMesh::Real sign,
106  const std::tr1::shared_ptr<NeumannFuncObj> neumann_func ) const;
107 
109 
112  template<typename FEShape = libMesh::Real>
113  void apply_neumann_normal( AssemblyContext& context,
114  const CachedValues& cache,
115  const bool request_jacobian,
116  const VariableIndex var,
117  const libMesh::Real sign,
118  std::tr1::shared_ptr<NeumannFuncObj> neumann_func ) const;
119 
121 
124  template<typename FEShape = libMesh::Real>
126  const CachedValues& cache,
127  const bool request_jacobian,
128  const VariableIndex var,
129  const libMesh::Real sign,
130  std::tr1::shared_ptr<NeumannFuncObj> neumann_func ) const;
131 
134  template<typename FEShape = libMesh::Real>
135  void pin_value( AssemblyContext& context, const CachedValues& cache,
136  const bool request_jacobian,
137  const VariableIndex var, const double value,
138  const libMesh::Point& pin_location, const double penalty = 1.0 );
139 
140  };
141 
142 } // end namespace GRINS
143 #endif // GRINS_BOUNDARY_CONDITIONS_H
unsigned int VariableIndex
More descriptive name of the type used for variable indices.
Definition: var_typedefs.h:40
void apply_neumann_normal(AssemblyContext &context, const VariableIndex var, const libMesh::Real sign, const FEShape &value) const
Applies Neumann boundary conditions for the constant case.
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.
void pin_value(AssemblyContext &context, const CachedValues &cache, const bool request_jacobian, const VariableIndex var, const double value, const libMesh::Point &pin_location, const double penalty=1.0)
The idea here is to pin a variable to a particular value if there is a null space - e...
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.
GRINS namespace.
void apply_neumann_normal_axisymmetric(AssemblyContext &context, const VariableIndex var, const libMesh::Real sign, const FEShape &value) const
Applies Neumann boundary conditions for the constant case.
Class to hold typical boundary condition methods.

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