partialSlipFvPatchField.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) 2011-2017 OpenFOAM Foundation
9  Copyright (C) 2021 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::partialSlipFvPatchField
29 
30 Group
31  grpWallBoundaryConditions grpGenericBoundaryConditions
32 
33 Description
34  This boundary condition provides a partial slip condition.
35  The amount of slip is controlled by a user-supplied field.
36 
37  The "value" entry is NO_READ, optional write.
38 
39 Usage
40  \table
41  Property | Description | Reqd | Default
42  type | Type name: partialSlip | yes | -
43  refValue | Reference value at zero slip | no | 0
44  valueFraction | Fraction of refValue used for boundary [0-1] | yes |
45  writeValue | Output patch value (eg, ParaView) | no | false
46  \endtable
47 
48  Example of the boundary condition specification:
49  \verbatim
50  <patchName>
51  {
52  type partialSlip;
53  refValue uniform 0.001;
54  valueFraction uniform 0.1;
55  }
56  \endverbatim
57 
58 See also
59  Foam::transformFvPatchField
60 
61 SourceFiles
62  partialSlipFvPatchField.C
63 
64 \*---------------------------------------------------------------------------*/
65 
66 #ifndef Foam_partialSlipFvPatchField_H
67 #define Foam_partialSlipFvPatchField_H
68 
69 #include "transformFvPatchField.H"
70 
71 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
72 
73 namespace Foam
74 {
75 
76 /*---------------------------------------------------------------------------*\
77  Class partialSlipFvPatchField Declaration
78 \*---------------------------------------------------------------------------*/
79 
80 template<class Type>
81 class partialSlipFvPatchField
82 :
83  public transformFvPatchField<Type>
84 {
85  //- The parent boundary condition type
86  typedef transformFvPatchField<Type> parent_bctype;
87 
88 
89  // Private Data
90 
91  //- Reference value
92  Field<Type> refValue_;
93 
94  //- Fraction (0-1) of value used for boundary condition
95  scalarField valueFraction_;
96 
97  //- Flag to output patch values (e.g. for ParaView)
98  bool writeValue_;
99 
100 
101 public:
102 
103  //- Runtime type information
104  TypeName("partialSlip");
105 
106 
107  // Constructors
108 
109  //- Construct from patch and internal field
111  (
112  const fvPatch&,
114  );
115 
116  //- Construct from patch, internal field and dictionary.
117  //- The "value" entry is NO_READ.
119  (
120  const fvPatch&,
122  const dictionary&
123  );
124 
125  //- Construct by mapping given partialSlip patch field
126  //- onto a new patch
128  (
130  const fvPatch&,
132  const fvPatchFieldMapper&
133  );
134 
135  //- Construct as copy
137  (
139  );
140 
141  //- Construct as copy setting internal field reference
143  (
146  );
147 
148  //- Return a clone
149  virtual tmp<fvPatchField<Type>> clone() const
150  {
151  return fvPatchField<Type>::Clone(*this);
152  }
153 
154  //- Clone with an internal field reference
156  (
158  ) const
159  {
160  return fvPatchField<Type>::Clone(*this, iF);
161  }
162 
163 
164  // Member Functions
165 
166  //- False: this patch field is not altered by assignment
167  virtual bool assignable() const { return false; }
168 
169 
170  // Access
171 
172  virtual Field<Type>& refValue()
173  {
174  return refValue_;
175  }
176 
177  virtual const Field<Type>& refValue() const
178  {
179  return refValue_;
180  }
181 
182  virtual scalarField& valueFraction()
183  {
184  return valueFraction_;
185  }
186 
187  virtual const scalarField& valueFraction() const
188  {
189  return valueFraction_;
190  }
192 
193  // Mapping
194 
195  //- Map (and resize as needed) from self given a mapping object
196  virtual void autoMap
197  (
198  const fvPatchFieldMapper&
199  );
201  //- Reverse map the given fvPatchField onto this fvPatchField
202  virtual void rmap
203  (
204  const fvPatchField<Type>&,
205  const labelList&
206  );
207 
208 
209  // Evaluation
210 
211  //- Return gradient at boundary
212  virtual tmp<Field<Type>> snGrad() const;
214  //- Evaluate the patch field
215  virtual void evaluate
216  (
217  const Pstream::commsTypes commsType =
219  );
220 
221  //- Return face-gradient transform diagonal
222  virtual tmp<Field<Type>> snGradTransformDiag() const;
224 
225  //- Write
226  virtual void write(Ostream&) const;
227 
229  // Member Operators
230 
231  virtual void operator=(const UList<Type>&) {}
232 
233  virtual void operator=(const fvPatchField<Type>&) {}
234  virtual void operator+=(const fvPatchField<Type>&) {}
235  virtual void operator-=(const fvPatchField<Type>&) {}
236  virtual void operator*=(const fvPatchField<scalar>&) {}
237  virtual void operator/=(const fvPatchField<scalar>&) {}
238 
239  virtual void operator+=(const Field<Type>&) {}
240  virtual void operator-=(const Field<Type>&) {}
241 
242  virtual void operator*=(const Field<scalar>&) {}
243  virtual void operator/=(const Field<scalar>&) {}
244 
245  virtual void operator=(const Type&) {}
246  virtual void operator+=(const Type&) {}
247  virtual void operator-=(const Type&) {}
248  virtual void operator*=(const scalar) {}
249  virtual void operator/=(const scalar) {}
250 };
251 
252 
253 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
254 
255 } // End namespace Foam
256 
257 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
258 
259 #ifdef NoRepository
260  #include "partialSlipFvPatchField.C"
261 #endif
262 
263 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
264 
265 #endif
266 
267 // ************************************************************************* //
virtual void operator*=(const fvPatchField< scalar > &)
This boundary condition provides a partial slip condition. The amount of slip is controlled by a user...
virtual tmp< fvPatchField< Type > > clone() const
Return a clone.
virtual void operator-=(const fvPatchField< Type > &)
commsTypes
Communications types.
Definition: UPstream.H:77
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
virtual tmp< Field< Type > > snGradTransformDiag() const
Return face-gradient transform diagonal.
partialSlipFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:70
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
virtual scalarField & valueFraction()
virtual Field< Type > & refValue()
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
static tmp< fvPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
Definition: fvPatchField.H:597
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
A FieldMapper for finite-volume patch fields.
virtual tmp< Field< Type > > snGrad() const
Return gradient at boundary.
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:56
TypeName("partialSlip")
Runtime type information.
virtual bool assignable() const
False: this patch field is not altered by assignment.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
virtual void operator=(const UList< Type > &)
A class for managing temporary objects.
Definition: HashPtrTable.H:50
"buffered" : (MPI_Bsend, MPI_Recv)
virtual void operator+=(const fvPatchField< Type > &)
virtual void operator/=(const fvPatchField< scalar > &)
virtual void write(Ostream &) const
Write.
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Evaluate the patch field.
Namespace for OpenFOAM.