emptyFvPatchField.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Class
25  Foam::emptyFvPatchField
26 
27 Group
28  grpConstraintBoundaryConditions
29 
30 Description
31  This boundary condition provides an 'empty' condition for reduced
32  dimensions cases, i.e. 1- and 2-D geometries. Apply this condition to
33  patches whose normal is aligned to geometric directions that do not
34  constitue solution directions.
35 
36  \heading Patch usage
37 
38  Example of the boundary condition specification:
39  \verbatim
40  myPatch
41  {
42  type empty;
43  }
44  \endverbatim
45 
46 SourceFiles
47  emptyFvPatchField.C
48 
49 \*---------------------------------------------------------------------------*/
50 
51 #ifndef emptyFvPatchField_H
52 #define emptyFvPatchField_H
53 
54 #include "fvPatchField.H"
55 #include "emptyFvPatch.H"
56 
57 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
58 
59 namespace Foam
60 {
61 
62 /*---------------------------------------------------------------------------*\
63  Class emptyFvPatchField Declaration
64 \*---------------------------------------------------------------------------*/
65 
66 template<class Type>
67 class emptyFvPatchField
68 :
69  public fvPatchField<Type>
70 {
71 
72 public:
73 
74  //- Runtime type information
75  TypeName(emptyFvPatch::typeName_());
76 
77 
78  // Constructors
79 
80  //- Construct from patch and internal field
82  (
83  const fvPatch&,
85  );
86 
87  //- Construct from patch, internal field and dictionary
89  (
90  const fvPatch&,
92  const dictionary&
93  );
94 
95  //- Construct by mapping given emptyFvPatchField onto a new patch
97  (
99  const fvPatch&,
101  const fvPatchFieldMapper&
102  );
103 
104  //- Construct as copy
106  (
108  );
109 
110  //- Construct and return a clone
111  virtual tmp<fvPatchField<Type> > clone() const
112  {
113  return tmp<fvPatchField<Type> >
114  (
115  new emptyFvPatchField<Type>(*this)
116  );
117  }
118 
119  //- Construct as copy setting internal field reference
121  (
124  );
125 
126  //- Construct and return a clone setting internal field reference
128  (
130  ) const
131  {
132  return tmp<fvPatchField<Type> >
133  (
134  new emptyFvPatchField<Type>(*this, iF)
135  );
136  }
137 
138 
139  // Member functions
140 
141  // Mapping functions
142 
143  //- Map (and resize as needed) from self given a mapping object
144  virtual void autoMap
145  (
146  const fvPatchFieldMapper&
147  )
148  {}
149 
150  //- Reverse map the given fvPatchField onto this fvPatchField
151  virtual void rmap
152  (
153  const fvPatchField<Type>&,
154  const labelList&
155  )
156  {}
157 
158 
159  // Evaluation functions
160 
161  //- Update the coefficients associated with the patch field
162  // This only checks to see the case is actually 1D or 2D
163  // for which this boundary condition is valid
164  void updateCoeffs();
165 
166 
167  //- Return the matrix diagonal coefficients corresponding to the
168  // evaluation of the value of this patchField with given weights
170  (
171  const tmp<scalarField>&
172  ) const
173  {
174  return tmp<Field<Type> >(new Field<Type>(0));
175  }
176 
177  //- Return the matrix source coefficients corresponding to the
178  // evaluation of the value of this patchField with given weights
180  (
181  const tmp<scalarField>&
182  ) const
183  {
184  return tmp<Field<Type> >(new Field<Type>(0));
185  }
186 
187  //- Return the matrix diagonal coefficients corresponding to the
188  // evaluation of the gradient of this patchField
190  {
191  return tmp<Field<Type> >(new Field<Type>(0));
192  }
193 
194  //- Return the matrix source coefficients corresponding to the
195  // evaluation of the gradient of this patchField
197  {
198  return tmp<Field<Type> >(new Field<Type>(0));
199  }
200 };
201 
202 
203 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
204 
205 } // End namespace Foam
206 
207 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
208 
209 #ifdef NoRepository
210 # include "emptyFvPatchField.C"
211 #endif
212 
213 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
214 
215 #endif
216 
217 // ************************************************************************* //
This boundary condition provides an &#39;empty&#39; condition for reduced dimensions cases, i.e. 1- and 2-D geometries. Apply this condition to patches whose normal is aligned to geometric directions that do not constitue solution directions.
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
virtual tmp< Field< Type > > valueInternalCoeffs(const tmp< scalarField > &) const
Return the matrix diagonal coefficients corresponding to the.
emptyFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
virtual tmp< Field< Type > > valueBoundaryCoeffs(const tmp< scalarField > &) const
Return the matrix source coefficients corresponding to the.
Foam::fvPatchFieldMapper.
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:137
Namespace for OpenFOAM.
void updateCoeffs()
Update the coefficients associated with the patch field.
virtual tmp< fvPatchField< Type > > clone() const
Construct and return a clone.
tmp< Field< Type > > gradientInternalCoeffs() const
Return the matrix diagonal coefficients corresponding to the.
tmp< Field< Type > > gradientBoundaryCoeffs() const
Return the matrix source coefficients corresponding to the.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
Definition: fvPatchField.H:65
Pre-declare SubField and related Field type.
Definition: Field.H:57
TypeName(emptyFvPatch::typeName_())
Runtime type information.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:61
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
A class for managing temporary objects.
Definition: PtrList.H:118