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 and return a clone
116  virtual tmp<fvPatchVectorField> clone() const
117  {
119  (
121  );
122  }
123 
124  //- Construct as copy setting internal field reference
126  (
129  );
130 
131  //- Construct and return a clone setting internal field reference
133  (
135  ) const
136  {
138  (
140  );
141  }
142 
143 
144  // Member functions
145 
146  //- In case of High-Re runs based on the nutUSpaldingWallFunction
147  //- add source terms in the first cell centre off the wall
148  virtual void manipulateMatrix(fvMatrix<vector>& matrix);
149 
150  //- Update the coefficients associated with the patch field
151  virtual void updateCoeffs();
152 
153  //- Write
154  virtual void write(Ostream&) const;
155 };
156 
157 
158 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
159 
160 } // End namespace Foam
161 
162 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
163 
164 #endif
165 
166 // ************************************************************************* //
Foam::adjointWallVelocityFvPatchVectorField::adjointWallVelocityFvPatchVectorField
adjointWallVelocityFvPatchVectorField(const fvPatch &, const DimensionedField< vector, volMesh > &)
Construct from patch and internal field.
Definition: adjointWallVelocityFvPatchVectorField.C:39
Foam::adjointWallVelocityFvPatchVectorField::write
virtual void write(Ostream &) const
Write.
Definition: adjointWallVelocityFvPatchVectorField.C:221
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::adjointBoundaryCondition
Base class for solution control classes.
Definition: adjointBoundaryCondition.H:52
Foam::adjointWallVelocityFvPatchVectorField::TypeName
TypeName("adjointWallVelocity")
Runtime type information.
Foam::adjointWallVelocityFvPatchVectorField::clone
virtual tmp< fvPatchVectorField > clone() const
Construct and return a clone.
Definition: adjointWallVelocityFvPatchVectorField.H:115
Foam::adjointWallVelocityFvPatchVectorField::manipulateMatrix
virtual void manipulateMatrix(fvMatrix< vector > &matrix)
Definition: adjointWallVelocityFvPatchVectorField.C:104
Foam::fvPatch
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Definition: fvPatch.H:65
Foam::adjointWallVelocityFvPatchVectorField
Adjoint wall velocity boundary condition. If nutUSpaldingWallFunction is employed in the flow solutio...
Definition: adjointWallVelocityFvPatchVectorField.H:68
adjointBoundaryConditions.H
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:121
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
fvPatchFields.H
fixedValueFvPatchFields.H
Foam::fvMatrix
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Definition: fvPatchField.H:76
Foam::fvPatchFieldMapper
Foam::fvPatchFieldMapper.
Definition: fvPatchFieldMapper.H:47
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
Foam::adjointWallVelocityFvPatchVectorField::updateCoeffs
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
Definition: adjointWallVelocityFvPatchVectorField.C:166
Foam::DimensionedField
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Definition: DimensionedField.H:54