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 {
75  typedef fixedValueFvPatchVectorField parent_bctype;
76 
77  // Private Data
78 
79  scalar kappa_;
80  scalar E_;
81 
82 
83 public:
84 
85  //- Runtime type information
86  TypeName("adjointWallVelocity");
87 
88 
89  // Constructors
90 
91  //- Construct from patch and internal field
93  (
94  const fvPatch&,
96  );
97 
98  //- Construct from patch, internal field and dictionary
100  (
101  const fvPatch&,
103  const dictionary&
104  );
105 
106  //- Construct by mapping onto a new patch
108  (
109  const this_bctype&,
110  const fvPatch&,
112  const fvPatchFieldMapper&
113  );
114 
115  //- Construct as copy setting internal field reference
117  (
118  const this_bctype&,
120  );
121 
122  //- No copy without an internal field
124 
125  //- Clone with an internal field reference
127  (
129  ) const
130  {
131  return fvPatchField<vector>::Clone(*this, iF);
132  }
133 
134 
135  // Member functions
137  //- In case of High-Re runs based on the nutUSpaldingWallFunction
138  //- add source terms in the first cell centre off the wall
139  virtual void manipulateMatrix(fvMatrix<vector>& matrix);
140 
141  //- Update the coefficients associated with the patch field
142  virtual void updateCoeffs();
143 
144  //- Write
145  virtual void write(Ostream&) const;
146 
147 
148  // Member Operators
149 
150  //- Inherit assignment
151  using parent_bctype::operator=;
152 };
153 
154 
155 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
156 
157 } // End namespace Foam
158 
159 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
160 
161 #endif
162 
163 // ************************************************************************* //
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:130
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:635
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.
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.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:56
virtual tmp< fvPatchField< vector > > clone(const DimensionedField< vector, volMesh > &iF) const
Clone with an internal field reference.
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.