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)
UniquePtr< FunctionBase< Gradient > > g
const class libmesh_nullptr_t libmesh_nullptr
Class for specifying Dirichlet boundary conditions as constraints.
std::vector< unsigned int > variables
std::unique_ptr< T > UniquePtr
Definition: auto_ptr.h:46
UniquePtr< FunctionBase< Number > > f
UniquePtr< FEMFunctionBase< Gradient > > g_fem
std::set< boundary_id_type > b
UniquePtr< FEMFunctionBase< Number > > f_fem