shapeSensitivitiesIncompressible.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 Class
28  Foam::incompressible::shapeSensitivitiesBase
29 
30 Description
31  Base class supporting shape sensitivity derivatives for
32  incompressible flows
33 
34 SourceFiles
35  shapeSensitivitiesBase.C
36 
37 \*---------------------------------------------------------------------------*/
38 
39 #ifndef shapeSensitivitiesIncompressible_H
40 #define shapeSensitivitiesIncompressible_H
41 
43 #include "shapeSensitivitiesBase.H"
44 
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 
47 namespace Foam
48 {
49 namespace incompressible
50 {
51 
52 /*---------------------------------------------------------------------------*\
53  Class shapeSensitivities Declaration
54 \*---------------------------------------------------------------------------*/
55 
57 :
58  public adjointSensitivity,
60 {
61 protected:
62 
63  // Protected data
64 
65  //- Fields related to direct sensitivities
70 
71 
72  // Protected Member Fuctions
73 
74  //- Accumulate direct sensitivities
75  virtual void accumulateDirectSensitivityIntegrand(const scalar dt);
76 
77  //- Accumulate sensitivities enamating from the boundary conditions
78  virtual void accumulateBCSensitivityIntegrand(const scalar dt);
79 
80  //- Compute multiplier of dv_i/db
82 
83 
84 private:
85 
86  // Private Member Functions
87 
88  //- No copy construct
89  shapeSensitivities(const shapeSensitivities&) = delete;
90 
91  //- No copy assignment
92  void operator=(const shapeSensitivities&) = delete;
93 
94 
95 public:
96 
97  //- Runtime type information
98  TypeName("shapeSensitivities");
99 
100 
101  // Constructors
102 
103  //- Construct from components
105  (
106  const fvMesh& mesh,
107  const dictionary& dict,
108  incompressibleVars& primalVars,
109  incompressibleAdjointVars& adjointVars,
111  );
112 
113 
114  //- Destructor
115  virtual ~shapeSensitivities() = default;
116 
117 
118  // Member Functions
119 
120  //- Accumulate sensitivity integrands
121  virtual void accumulateIntegrand(const scalar dt) = 0;
122 
123  //- Assemble sensitivities
124  virtual void assembleSensitivities() = 0;
125 
126  //- Zero sensitivity fields and their constituents
127  virtual void clearSensitivities();
128 
129  //- Write sensitivity fields.
130  virtual void write(const word& baseName = word::null);
131 };
132 
133 
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
135 
136 } // End namespace incompressible
137 } // End namespace Foam
138 
139 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
140 
141 #endif
142 
143 // ************************************************************************* //
Foam::sensitivity::dict
const dictionary & dict() const
Return the construction dictionary.
Definition: sensitivity.C:57
Foam::objectiveManager
class for managing incompressible objective functions.
Definition: objectiveManager.H:54
shapeSensitivitiesBase.H
Foam::incompressible::shapeSensitivities::bcDxDbMult_
autoPtr< boundaryVectorField > bcDxDbMult_
Definition: shapeSensitivitiesIncompressible.H:68
Foam::incompressible::shapeSensitivities::~shapeSensitivities
virtual ~shapeSensitivities()=default
Destructor.
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:65
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::incompressible::shapeSensitivities::accumulateBCSensitivityIntegrand
virtual void accumulateBCSensitivityIntegrand(const scalar dt)
Accumulate sensitivities enamating from the boundary conditions.
Definition: shapeSensitivitiesIncompressible.C:66
Foam::incompressible::shapeSensitivities::assembleSensitivities
virtual void assembleSensitivities()=0
Assemble sensitivities.
Foam::incompressible::shapeSensitivities::write
virtual void write(const word &baseName=word::null)
Write sensitivity fields.
Definition: shapeSensitivitiesIncompressible.C:170
Foam::incompressibleAdjointVars
Class including all adjoint fields for incompressible flows.
Definition: incompressibleAdjointVars.H:52
Foam::shapeSensitivitiesBase
Definition: shapeSensitivitiesBase.H:63
Foam::incompressible::shapeSensitivities
Definition: shapeSensitivitiesIncompressible.H:55
Foam::incompressible::shapeSensitivities::TypeName
TypeName("shapeSensitivities")
Runtime type information.
Foam::incompressible::shapeSensitivities::dSfdbMult_
autoPtr< boundaryVectorField > dSfdbMult_
Fields related to direct sensitivities.
Definition: shapeSensitivitiesIncompressible.H:65
Foam::incompressible::adjointSensitivity
Abstract base class for adjoint-based sensitivities in incompressible flows.
Definition: adjointSensitivityIncompressible.H:75
Foam::incompressible::shapeSensitivities::accumulateIntegrand
virtual void accumulateIntegrand(const scalar dt)=0
Accumulate sensitivity integrands.
Foam::incompressible::shapeSensitivities::accumulateDirectSensitivityIntegrand
virtual void accumulateDirectSensitivityIntegrand(const scalar dt)
Accumulate direct sensitivities.
Definition: shapeSensitivitiesIncompressible.C:47
Foam::incompressible::shapeSensitivities::dvdbMult
tmp< boundaryVectorField > dvdbMult() const
Compute multiplier of dv_i/db.
Definition: shapeSensitivitiesIncompressible.C:88
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
Foam::incompressible::shapeSensitivities::dxdbDirectMult_
autoPtr< boundaryVectorField > dxdbDirectMult_
Definition: shapeSensitivitiesIncompressible.H:67
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:6
Foam::fvMesh
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:85
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
adjointSensitivityIncompressible.H
Foam::word::null
static const word null
An empty word.
Definition: word.H:80
Foam::incompressible::shapeSensitivities::clearSensitivities
virtual void clearSensitivities()
Zero sensitivity fields and their constituents.
Definition: shapeSensitivitiesIncompressible.C:158
Foam::incompressible::shapeSensitivities::dnfdbMult_
autoPtr< boundaryVectorField > dnfdbMult_
Definition: shapeSensitivitiesIncompressible.H:66
Foam::incompressibleVars
Base class for solution control classes.
Definition: incompressibleVars.H:54