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 {
62 
63  // Private Data
64 
65  //- Origin of the rotation
66  vector origin_;
67 
68  //- Axis of the rotation
69  vector axis_;
70 
71  //- Rotational speed
73 
74 
75 public:
76 
77  //- Runtime type information
78  TypeName("adjointRotatingWallVelocity");
79 
80 
81  // Constructors
82 
83  //- Construct from patch and internal field
85  (
86  const fvPatch&,
88  );
89 
90  //- Construct from patch, internal field and dictionary
92  (
93  const fvPatch&,
95  const dictionary&
96  );
97 
98  //- Construct by mapping onto a new patch
100  (
101  const this_bctype&,
102  const fvPatch&,
104  const fvPatchFieldMapper&
105  );
106 
107  //- Construct as copy setting internal field reference
109  (
110  const this_bctype&,
112  );
113 
114  //- No copy without an internal field
116  (
117  const this_bctype&
118  ) = delete;
119 
120  //- Clone with an internal field reference
122  (
124  ) const
125  {
126  return fvPatchField<vector>::Clone(*this, iF);
127  }
128 
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;
138 
139  // Member Operators
140 
141  //- Inherit assignment
142  using parent_bctype::operator=;
143 };
144 
145 
146 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
147 
148 } // End namespace Foam
149 
150 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
151 
152 #endif
153 
154 // ************************************************************************* //
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:130
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:635
A FieldMapper for finite-volume patch fields.
virtual tmp< fvPatchField< vector > > clone(const DimensionedField< vector, volMesh > &iF) const
Clone with an internal field reference.
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.
Namespace for OpenFOAM.