libMesh
dirichlet_boundaries.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2017 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_DIRICHLET_BOUNDARIES_H
21 #define LIBMESH_DIRICHLET_BOUNDARIES_H
22 
23 #include "libmesh/libmesh_config.h"
24 
25 #ifdef LIBMESH_ENABLE_DIRICHLET
26 
27 // Local Includes
28 #include "libmesh/auto_ptr.h"
29 #include "libmesh/id_types.h"
30 #include "libmesh/vector_value.h"
31 
32 // C++ Includes
33 #include <cstddef>
34 #include <set>
35 #include <vector>
36 
37 namespace libMesh
38 {
39 
40 // Forward declarations
41 class System;
42 
43 template <typename Output> class FEMFunctionBase;
44 template <typename Output> class FunctionBase;
45 
63 
89 {
90 public:
91 
96  DirichletBoundary(const std::set<boundary_id_type> & b_in,
97  const std::vector<unsigned int> & variables_in,
98  const FunctionBase<Number> * f_in,
100 
107  DirichletBoundary(const std::set<boundary_id_type> & b_in,
108  const std::vector<unsigned int> & variables_in,
109  const FunctionBase<Number> & f_in,
111 
119  DirichletBoundary(const std::set<boundary_id_type> & b_in,
120  const std::vector<unsigned int> & variables_in,
121  const FunctionBase<Number> & f_in,
122  const FunctionBase<Gradient> & g_in,
124 
129  DirichletBoundary(const std::set<boundary_id_type> & b_in,
130  const std::vector<unsigned int> & variables_in,
131  const System & f_sys_in,
132  const FEMFunctionBase<Number> * f_in,
134 
142  DirichletBoundary(const std::set<boundary_id_type> & b_in,
143  const std::vector<unsigned int> & variables_in,
144  const System & f_sys_in,
145  const FEMFunctionBase<Number> & f_in,
147 
155  DirichletBoundary(const std::set<boundary_id_type> & b_in,
156  const std::vector<unsigned int> & variables_in,
157  const System & f_sys_in,
158  const FEMFunctionBase<Number> & f_in,
159  const FEMFunctionBase<Gradient> & g_in,
161 
166  DirichletBoundary (const DirichletBoundary & dirichlet_in);
167 
172 
173  std::set<boundary_id_type> b;
174  std::vector<unsigned int> variables;
175 
178 
181 
182  const System * f_system;
183 };
184 
185 
193 class DirichletBoundaries : public std::vector<DirichletBoundary *>
194 {
195 public:
197 
199 };
200 
201 } // namespace libMesh
202 
203 #endif // LIBMESH_ENABLE_DIRICHLET
204 
205 #endif // LIBMESH_DIRICHLET_BOUNDARIES_H
DirichletBoundary(const std::set< boundary_id_type > &b_in, const std::vector< unsigned int > &variables_in, const FunctionBase< Number > *f_in, const FunctionBase< Gradient > *g_in=libmesh_nullptr)
Constructor for a system-variable-order boundary using pointers-to-functors.
~DirichletBoundary()
Standard destructor.
UniquePtr< FunctionBase< Gradient > > g
const class libmesh_nullptr_t libmesh_nullptr
This class allows one to associate Dirichlet boundary values with a given set of mesh boundary ids an...
std::vector< unsigned int > variables
The libMesh namespace provides an interface to certain functionality in the library.
std::unique_ptr< T > UniquePtr
Definition: auto_ptr.h:46
VariableIndexing
Dirichlet functions may be indexed either by "system variable order" or "local variable order"...
This is the base class for classes which contain information related to any physical process that mig...
Definition: system.h:76
We&#39;re using a class instead of a typedef to allow forward declarations and future flexibility...
UniquePtr< FunctionBase< Number > > f
UniquePtr< FEMFunctionBase< Gradient > > g_fem
std::set< boundary_id_type > b
This is the base class for functor-like classes.
FEMFunctionBase is a base class from which users can derive in order to define "function-like" object...
UniquePtr< FEMFunctionBase< Number > > f_fem