emptyFaPatchField.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 | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2016-2017 Wikki Ltd
9  Copyright (C) 2019-2025 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::emptyFaPatchField
29 
30 Description
31 
32 Author
33  Zeljko Tukovic, FMENA
34  Hrvoje Jasak, Wikki Ltd.
35 
36 SourceFiles
37  emptyFaPatchField.txx
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef Foam_emptyFaPatchField_H
42 #define Foam_emptyFaPatchField_H
43 
44 #include "faPatchField.H"
45 #include "emptyFaPatch.H"
46 
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 
49 namespace Foam
50 {
51 
52 /*---------------------------------------------------------------------------*\
53  Class emptyFaPatchField Declaration
54 \*---------------------------------------------------------------------------*/
55 
56 template<class Type>
58 :
59  public faPatchField<Type>
60 {
63 
64 public:
65 
66  //- Runtime type information
67  TypeName(emptyFaPatch::typeName_());
68 
69 
70  // Constructors
71 
72  //- Construct from patch and internal field
74  (
75  const faPatch&,
77  );
78 
79  //- Construct from patch, internal field and dictionary.
80  //- The "value" entry is NO_READ.
82  (
83  const faPatch&,
85  const dictionary&
86  );
87 
88  //- Construct by mapping onto a new patch
90  (
91  const this_bctype&,
92  const faPatch&,
94  const faPatchFieldMapper&
95  );
96 
97  //- Construct as copy setting internal field reference
99  (
100  const this_bctype&,
102  );
103 
104  //- No copy without an internal field
105  emptyFaPatchField(const this_bctype&) = delete;
106 
107  //- Clone with an internal field reference
109  (
111  ) const
112  {
113  return faPatchField<Type>::Clone(*this, iF);
114  }
115 
116 
117  //- Destructor
118  virtual ~emptyFaPatchField() = default;
119 
120 
121  // Member Functions
122 
123  // Mapping functions
124 
125  //- Map (and resize as needed) from self given a mapping object
126  virtual void autoMap
127  (
128  const faPatchFieldMapper&
129  )
130  {}
131 
132  //- Reverse map the given faPatchField onto this faPatchField
133  virtual void rmap
134  (
135  const faPatchField<Type>&,
136  const labelList&
137  )
138  {}
139 
141  // Evaluation Functions
142 
143  //- Update the coefficients associated with the patch field
144  // This only checks to see the case is actually 1D or 2D
145  // for which this boundary condition is valid
146  void updateCoeffs();
147 
148 
149  //- Return the matrix diagonal coefficients corresponding to the
150  //- evaluation of the value of this patchField with given weights
152  (
153  const tmp<scalarField>&
154  ) const
155  {
156  return tmp<Field<Type>>::New();
157  }
158 
159  //- Return the matrix source coefficients corresponding to the
160  //- evaluation of the value of this patchField with given weights
162  (
163  const tmp<scalarField>&
164  ) const
165  {
166  return tmp<Field<Type>>::New();
167  }
168 
169  //- Return the matrix diagonal coefficients corresponding to the
170  //- evaluation of the gradient of this patchField
171  tmp<Field<Type>> gradientInternalCoeffs() const
172  {
173  return tmp<Field<Type>>::New();
174  }
175 
176  //- Return the matrix source coefficients corresponding to the
177  //- evaluation of the gradient of this patchField
179  {
180  return tmp<Field<Type>>::New();
181  }
182 
183 
184  // Contiguous storage
185 
186  //- Retrieve patch-normal gradient [contiguous storage].
187  //- Placeholder value is zero (treated like zero-gradient).
188  virtual void snGrad(UList<Type>& result) const
189  {
190  // Treat like zero-gradient
191  result = Foam::zero{};
192  }
193 
194 
195  // Member Functions
196 
197  //- Write without "value" entry!
198  virtual void write(Ostream&) const;
199 
200 
201  // Member Operators
202 
203  //- Inherit assignment (TBD: could also be ignore assignment)
205 };
206 
207 
208 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
209 
210 } // End namespace Foam
211 
212 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
213 
214 #ifdef NoRepository
215  #include "emptyFaPatchField.txx"
216 #endif
217 
218 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
219 
220 #endif
221 
222 // ************************************************************************* //
virtual void rmap(const faPatchField< Type > &, const labelList &)
Reverse map the given faPatchField onto this faPatchField.
static tmp< faPatchField< Type > > New(const word &patchFieldType, const word &actualPatchType, const faPatch &, const DimensionedField< Type, areaMesh > &)
Return a pointer to a new patchField created on freestore given patch and internal field...
virtual void autoMap(const faPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:130
void updateCoeffs()
Update the coefficients associated with the patch field.
virtual tmp< faPatchField< Type > > clone() const
No clone without an internal field reference.
Definition: faPatchField.H:534
friend Ostream & operator(Ostream &, const faPatchField< Type > &)
faPatchField<Type> abstract base class. This class gives a fat-interface to all derived classes cover...
Definition: areaFieldsFwd.H:41
tmp< Field< Type > > gradientBoundaryCoeffs() const
Return the matrix source coefficients corresponding to the evaluation of the gradient of this patchFi...
emptyFaPatchField(const faPatch &, const DimensionedField< Type, areaMesh > &)
Construct from patch and internal field.
Author Zeljko Tukovic, FMENA Hrvoje Jasak, Wikki Ltd.
virtual tmp< Field< Type > > valueBoundaryCoeffs(const tmp< scalarField > &) const
Return the matrix source coefficients corresponding to the evaluation of the value of this patchField...
virtual ~emptyFaPatchField()=default
Destructor.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:56
Finite area patch class. Used for 2-D non-Euclidian finite area method.
Definition: faPatch.H:73
static tmp< faPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
Definition: faPatchField.H:559
virtual tmp< Field< Type > > valueInternalCoeffs(const tmp< scalarField > &) const
Return the matrix diagonal coefficients corresponding to the evaluation of the value of this patchFie...
tmp< Field< Type > > gradientInternalCoeffs() const
Return the matrix diagonal coefficients corresponding to the evaluation of the gradient of this patch...
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
virtual void write(Ostream &) const
Write without "value" entry!
A class representing the concept of 0 (zero) that can be used to avoid manipulating objects known to ...
Definition: zero.H:57
A class for managing temporary objects.
Definition: HashPtrTable.H:50
A FieldMapper for finite-area patch fields.
TypeName(emptyFaPatch::typeName_())
Runtime type information.
Namespace for OpenFOAM.
virtual tmp< Field< Type > > snGrad() const
Return patch-normal gradient.