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 -------------------------------------------------------------------------------
12 License
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 
29 Class
30  Foam::adjointWallVelocityFvPatchVectorField
31 
32 Description
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 
48 SourceFiles
49  adjointWallVelocityFvPatchVectorField.C
50 
51 \*---------------------------------------------------------------------------*/
52 
53 #ifndef adjointWallVelocityFvPatchVectorField_H
54 #define adjointWallVelocityFvPatchVectorField_H
55 
56 #include "fvPatchFields.H"
59 
60 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
61 
62 namespace Foam
63 {
64 
65 /*---------------------------------------------------------------------------*\
66  Class adjointWallVelocity Declaration
67 \*---------------------------------------------------------------------------*/
68 
70 :
71  public fixedValueFvPatchVectorField,
73 {
74 private:
75 
76  // Private Data
77 
78  scalar kappa_;
79  scalar E_;
80 
81 
82 public:
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
130  (
132  ) const
133  {
134  return fvPatchField<vector>::Clone(*this, iF);
135  }
136 
137 
138  // Member functions
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 // ************************************************************************* //
Adjoint wall velocity boundary condition. If nutUSpaldingWallFunction is employed in the flow solutio...
TypeName("adjointWallVelocity")
Runtime type information.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:70
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
static tmp< fvPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
Definition: fvPatchField.H:597
virtual void manipulateMatrix(fvMatrix< vector > &matrix)
In case of High-Re runs based on the nutUSpaldingWallFunction add source terms in the first cell cent...
A FieldMapper for finite-volume patch fields.
virtual tmp< fvPatchField< vector > > clone() const
Return a clone.
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
Definition: fvPatchField.H:64
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:56
adjointWallVelocityFvPatchVectorField(const fvPatch &, const DimensionedField< vector, volMesh > &)
Construct from patch and internal field.
Base class for solution control classes.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
A class for managing temporary objects.
Definition: HashPtrTable.H:50
Namespace for OpenFOAM.