Loading...
Searching...
No Matches
adjointWallVelocityFvPatchVectorField.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) 2007-2020 PCOpt/NTUA
9 Copyright (C) 2013-2020 FOSS GP
10 Copyright (C) 2019 OpenCFD Ltd.
11-------------------------------------------------------------------------------
12License
13 This file is part of OpenFOAM.
14
15 OpenFOAM is free software: you can redistribute it and/or modify it
16 under the terms of the GNU General Public License as published by
17 the Free Software Foundation, either version 3 of the License, or
18 (at your option) any later version.
19
20 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
21 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
23 for more details.
24
25 You should have received a copy of the GNU General Public License
26 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
27
28
29Class
30 Foam::adjointWallVelocityFvPatchVectorField
31
32Description
33 Adjoint wall velocity boundary condition. If nutUSpaldingWallFunction is
34 employed in the flow solution, the corresponding adjoint wall function is
35 used. Otherwise, the typical low-Re boundary condition is applied
36
37 Reference:
38 \verbatim
39 For both the low- and high-Re variants
40
41 Papoutsis-Kiachagias, E. M., & Giannakoglou, K. C. (2014).
42 Continuous Adjoint Methods for Turbulent Flows, Applied to Shape
43 and Topology Optimization: Industrial Applications.
44 Archives of Computational Methods in Engineering, 23(2), 255-299.
45 http://doi.org/10.1007/s11831-014-9141-9
46 \endverbatim
47
48SourceFiles
49 adjointWallVelocityFvPatchVectorField.C
50
51\*---------------------------------------------------------------------------*/
52
53#ifndef adjointWallVelocityFvPatchVectorField_H
54#define adjointWallVelocityFvPatchVectorField_H
55
56#include "fvPatchFields.H"
59
60// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
61
62namespace Foam
63{
65/*---------------------------------------------------------------------------*\
66 Class adjointWallVelocity Declaration
67\*---------------------------------------------------------------------------*/
68
70:
71 public fixedValueFvPatchVectorField,
73{
74private:
75
76 // Private Data
77
78 scalar kappa_;
79 scalar E_;
80
81
82public:
83
84 //- Runtime type information
85 TypeName("adjointWallVelocity");
86
87
88 // Constructors
89
90 //- Construct from patch and internal field
92 (
93 const fvPatch&,
95 );
96
97 //- Construct from patch, internal field and dictionary
99 (
100 const fvPatch&,
102 const dictionary&
103 );
104
105 //- Construct by mapping given adjointWallVelocityFvPatchVectorField
106 //- onto a new patch
108 (
110 const fvPatch&,
112 const fvPatchFieldMapper&
113 );
114
115 //- Construct as copy setting internal field reference
117 (
120 );
121
122 //- Return a clone
123 virtual tmp<fvPatchField<vector>> clone() const
124 {
125 return fvPatchField<vector>::Clone(*this);
126 }
127
128 //- Clone with an internal field reference
132 ) const
133 {
134 return fvPatchField<vector>::Clone(*this, iF);
135 }
136
137
138 // Member functions
139
140 //- In case of High-Re runs based on the nutUSpaldingWallFunction
141 //- add source terms in the first cell centre off the wall
142 virtual void manipulateMatrix(fvMatrix<vector>& matrix);
143
144 //- Update the coefficients associated with the patch field
145 virtual void updateCoeffs();
146
147 //- Write
148 virtual void write(Ostream&) const;
149};
150
151
152// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
153
154} // End namespace Foam
155
156// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
157
158#endif
159
160// ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition Ostream.H:59
TypeName("adjointWallVelocity")
Runtime type information.
virtual tmp< fvPatchField< vector > > clone() const
Return a clone.
virtual void manipulateMatrix(fvMatrix< vector > &matrix)
In case of High-Re runs based on the nutUSpaldingWallFunction add source terms in the first cell cent...
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
adjointWallVelocityFvPatchVectorField(const fvPatch &, const DimensionedField< vector, volMesh > &)
Construct from patch and internal field.
virtual tmp< fvPatchField< vector > > clone(const DimensionedField< vector, volMesh > &iF) const
Clone with an internal field reference.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Definition fvMatrix.H:118
A FieldMapper for finite-volume patch fields.
static tmp< fvPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition fvPatch.H:71
A class for managing temporary objects.
Definition tmp.H:75
Namespace for OpenFOAM.
adjointBoundaryCondition< vector > adjointVectorBoundaryCondition
runTime write()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68