adjointRotatingWallVelocityFvPatchVectorField.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) 2020 PCOpt/NTUA
9  Copyright (C) 2020 FOSS GP
10 -------------------------------------------------------------------------------
11 License
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 
27 
28 Class
29  Foam::adjointRotatingWallVelocityFvPatchVectorField
30 
31 Description
32  The same as adjointWallVelocity but additionally computes the sensitivity
33  contribution emerging from the change in the positions of the face centres,
34  in case rotatingWallVelocity is used for the flow simulation.
35 
36 SourceFiles
37  adjointRotatingWallVelocityFvPatchVectorField.C
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef adjointRotatingWallVelocityFvPatchVectorField_H
42 #define adjointRotatingWallVelocityFvPatchVectorField_H
43 
45 #include "Function1.H"
46 
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 
49 namespace Foam
50 {
51 
52 /*---------------------------------------------------------------------------*\
53  Class adjointRotatingWallVelocity Declaration
54 \*---------------------------------------------------------------------------*/
55 
57 :
59 {
60 private:
61 
62  // Private Data
63 
64  //- Origin of the rotation
65  vector origin_;
66 
67  //- Axis of the rotation
68  vector axis_;
69 
70  //- Rotational speed
72 
73 
74 public:
75 
76  //- Runtime type information
77  TypeName("adjointRotatingWallVelocity");
78 
79 
80  // Constructors
81 
82  //- Construct from patch and internal field
84  (
85  const fvPatch&,
87  );
88 
89  //- Construct from patch, internal field and dictionary
91  (
92  const fvPatch&,
94  const dictionary&
95  );
96 
97  //- Construct by mapping given
98  //- adjointRotatingWallVelocityFvPatchVectorField onto a new patch
100  (
102  const fvPatch&,
104  const fvPatchFieldMapper&
105  );
106 
107  //- Construct as copy setting internal field reference
109  (
112  );
113 
114  //- Return a clone
115  virtual tmp<fvPatchField<vector>> clone() const
116  {
117  return fvPatchField<vector>::Clone(*this);
118  }
119 
120  //- Clone with an internal field reference
122  (
124  ) const
125  {
126  return fvPatchField<vector>::Clone(*this, iF);
127  }
129 
130  // Member functions
131 
132  //- Compute contribution to SDs
133  virtual tmp<tensorField> dxdbMult() const;
134 
135  //- Write
136  virtual void write(Ostream&) const;
137 };
138 
139 
140 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
141 
142 } // End namespace Foam
143 
144 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
145 
146 #endif
147 
148 // ************************************************************************* //
Adjoint wall velocity boundary condition. If nutUSpaldingWallFunction is employed in the flow solutio...
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
The same as adjointWallVelocity but additionally computes the sensitivity contribution emerging from ...
static tmp< fvPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
Definition: fvPatchField.H:597
A FieldMapper for finite-volume patch fields.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:56
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
adjointRotatingWallVelocityFvPatchVectorField(const fvPatch &, const DimensionedField< vector, volMesh > &)
Construct from patch and internal field.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Definition: HashPtrTable.H:48
A class for managing temporary objects.
Definition: HashPtrTable.H:50
virtual tmp< tensorField > dxdbMult() const
Compute contribution to SDs.
TypeName("adjointRotatingWallVelocity")
Runtime type information.
virtual tmp< fvPatchField< vector > > clone() const
Return a clone.
Namespace for OpenFOAM.