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. The amount of
35  slip is controlled by a user-supplied field.
36 
37 Usage
38  \table
39  Property | Description | Reqd | Default
40  type | Type name: partialSlip | yes | -
41  refValue | Reference value at zero slip | no | 0
42  valueFraction | Fraction of refValue used for boundary [0-1] | yes |
43  writeValue | Output patch value (eg, ParaView) | no | false
44  \endtable
45 
46  Example of the boundary condition specification:
47  \verbatim
48  <patchName>
49  {
50  type partialSlip;
51  refValue uniform 0.001;
52  valueFraction uniform 0.1;
53  value uniform 0;
54  }
55  \endverbatim
56 
57 See also
58  Foam::transformFvPatchField
59 
60 SourceFiles
61  partialSlipFvPatchField.C
62 
63 \*---------------------------------------------------------------------------*/
64 
65 #ifndef partialSlipFvPatchField_H
66 #define partialSlipFvPatchField_H
67 
68 #include "transformFvPatchField.H"
69 
70 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
71 
72 namespace Foam
73 {
74 
75 /*---------------------------------------------------------------------------*\
76  Class partialSlipFvPatchField Declaration
77 \*---------------------------------------------------------------------------*/
78 
79 template<class Type>
80 class partialSlipFvPatchField
81 :
82  public transformFvPatchField<Type>
83 {
84  //- The parent boundary condition type
85  typedef transformFvPatchField<Type> parent_bctype;
86 
87 
88  // Private Data
89 
90  //- Reference value
91  Field<Type> refValue_;
92 
93  //- Fraction (0-1) of value used for boundary condition
94  scalarField valueFraction_;
95 
96  //- Flag to output patch values (e.g. for ParaView)
97  bool writeValue_;
98 
99 
100 public:
101 
102  //- Runtime type information
103  TypeName("partialSlip");
104 
105 
106  // Constructors
107 
108  //- Construct from patch and internal field
110  (
111  const fvPatch&,
113  );
114 
115  //- Construct from patch, internal field and dictionary
117  (
118  const fvPatch&,
120  const dictionary&
121  );
122 
123  //- Construct by mapping given partialSlipFvPatchField onto a new patch
125  (
127  const fvPatch&,
129  const fvPatchFieldMapper&
130  );
131 
132  //- Construct as copy
134  (
136  );
137 
138  //- Construct and return a clone
139  virtual tmp<fvPatchField<Type>> clone() const
140  {
141  return tmp<fvPatchField<Type>>
142  (
144  );
145  }
146 
147  //- Construct as copy setting internal field reference
149  (
152  );
153 
154  //- Construct and return a clone setting internal field reference
156  (
158  ) const
159  {
160  return tmp<fvPatchField<Type>>
161  (
162  new partialSlipFvPatchField<Type>(*this, iF)
163  );
164  }
165 
166 
167  // Member Functions
168 
169  //- False: this patch field is not altered by assignment
170  virtual bool assignable() const { return false; }
171 
172  // Access
173 
174  virtual Field<Type>& refValue()
175  {
176  return refValue_;
177  }
178 
179  virtual const Field<Type>& refValue() const
180  {
181  return refValue_;
182  }
183 
184  virtual scalarField& valueFraction()
185  {
186  return valueFraction_;
187  }
188 
189  virtual const scalarField& valueFraction() const
190  {
191  return valueFraction_;
192  }
193 
194 
195  // Mapping
196 
197  //- Map (and resize as needed) from self given a mapping object
198  virtual void autoMap
199  (
201  );
202 
203  //- Reverse map the given fvPatchField onto this fvPatchField
204  virtual void rmap
205  (
206  const fvPatchField<Type>&,
207  const labelList&
208  );
209 
210 
211  // Evaluation
212 
213  //- Return gradient at boundary
214  virtual tmp<Field<Type>> snGrad() const;
215 
216  //- Evaluate the patch field
217  virtual void evaluate
218  (
219  const Pstream::commsTypes commsType =
221  );
222 
223  //- Return face-gradient transform diagonal
224  virtual tmp<Field<Type>> snGradTransformDiag() const;
226 
227  //- Write
228  virtual void write(Ostream&) const;
229 
231  // Member Operators
232 
233  virtual void operator=(const UList<Type>&) {}
234 
235  virtual void operator=(const fvPatchField<Type>&) {}
236  virtual void operator+=(const fvPatchField<Type>&) {}
237  virtual void operator-=(const fvPatchField<Type>&) {}
238  virtual void operator*=(const fvPatchField<scalar>&) {}
239  virtual void operator/=(const fvPatchField<scalar>&) {}
240 
241  virtual void operator+=(const Field<Type>&) {}
242  virtual void operator-=(const Field<Type>&) {}
243 
244  virtual void operator*=(const Field<scalar>&) {}
245  virtual void operator/=(const Field<scalar>&) {}
246 
247  virtual void operator=(const Type&) {}
248  virtual void operator+=(const Type&) {}
249  virtual void operator-=(const Type&) {}
250  virtual void operator*=(const scalar) {}
251  virtual void operator/=(const scalar) {}
252 };
253 
254 
255 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
256 
257 } // End namespace Foam
258 
259 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
260 
261 #ifdef NoRepository
262  #include "partialSlipFvPatchField.C"
263 #endif
264 
265 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
266 
267 #endif
268 
269 // ************************************************************************* //
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
Construct and return a clone.
"blocking" : (MPI_Bsend, MPI_Recv)
virtual void operator-=(const fvPatchField< Type > &)
commsTypes
Communications types.
Definition: UPstream.H:72
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.
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::blocking)
Evaluate the patch field.
Generic templated field type.
Definition: Field.H:62
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...
Definition: areaFieldsFwd.H:42
virtual void operator=(const UList< Type > &)
A class for managing temporary objects.
Definition: HashPtrTable.H:50
virtual void operator+=(const fvPatchField< Type > &)
virtual void operator/=(const fvPatchField< scalar > &)
virtual void write(Ostream &) const
Write.
Namespace for OpenFOAM.