Loading...
Searching...
No Matches
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-------------------------------------------------------------------------------
11License
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
27Class
28 Foam::partialSlipFvPatchField
29
30Group
31 grpWallBoundaryConditions grpGenericBoundaryConditions
32
33Description
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
39Usage
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
58See also
59 Foam::transformFvPatchField
60
61SourceFiles
62 partialSlipFvPatchField.C
63
64\*---------------------------------------------------------------------------*/
65
66#ifndef Foam_partialSlipFvPatchField_H
67#define Foam_partialSlipFvPatchField_H
68
70
71// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
72
73namespace Foam
74{
75
76/*---------------------------------------------------------------------------*\
77 Class partialSlipFvPatchField Declaration
78\*---------------------------------------------------------------------------*/
79
80template<class Type>
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
101public:
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 );
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 );
200
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
261#endif
262
263// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
264
265#endif
266
267// ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic templated field type that is much like a Foam::List except that it is expected to hold numeri...
Definition Field.H:172
constexpr Field() noexcept
Default construct.
Definition FieldI.H:24
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition Ostream.H:59
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition UList.H:89
commsTypes
Communications types.
Definition UPstream.H:81
@ buffered
"buffered" : (MPI_Bsend, MPI_Recv)
Definition UPstream.H:82
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
A FieldMapper for finite-volume patch fields.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
static tmp< fvPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
fvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition fvPatch.H:71
This boundary condition provides a partial slip condition. The amount of slip is controlled by a user...
virtual void operator/=(const Field< scalar > &)
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
virtual void operator+=(const Field< Type > &)
virtual void operator=(const Type &)
virtual void operator*=(const Field< scalar > &)
partialSlipFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
virtual void operator+=(const fvPatchField< Type > &)
virtual tmp< Field< Type > > snGrad() const
Return gradient at boundary.
virtual void operator/=(const fvPatchField< scalar > &)
virtual void operator=(const fvPatchField< Type > &)
virtual void operator*=(const fvPatchField< scalar > &)
virtual void operator/=(const scalar)
virtual void operator-=(const fvPatchField< Type > &)
virtual void operator=(const UList< Type > &)
virtual void operator-=(const Type &)
virtual const scalarField & valueFraction() const
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
virtual const Field< Type > & refValue() const
virtual tmp< fvPatchField< Type > > clone() const
Return a clone.
virtual bool assignable() const
False: this patch field is not altered by assignment.
virtual tmp< Field< Type > > snGradTransformDiag() const
Return face-gradient transform diagonal.
virtual void operator*=(const scalar)
virtual void operator-=(const Field< Type > &)
virtual void operator+=(const Type &)
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Evaluate the patch field.
TypeName("partialSlip")
Runtime type information.
virtual tmp< fvPatchField< Type > > clone(const DimensionedField< Type, volMesh > &iF) const
Clone with an internal field reference.
A class for managing temporary objects.
Definition tmp.H:75
Intermediate layer (not used directly as a user boundary condition). The "value" entry is NO_READ,...
transformFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
Namespace for OpenFOAM.
List< label > labelList
A List of labels.
Definition List.H:62
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
runTime write()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68