objectiveNutSqr.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 -------------------------------------------------------------------------------
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::objectives::objectiveNutSqr
30 
31 Description
32  Objective qualitatively quantifying noise through the integral of the
33  squared turbulent viscosity over specified cellZones. Requires the adjoint
34  to the turbulence model to be incorporated into the optimisation loop.
35 
36  Reference:
37  \verbatim
38  Objective function initially presented in
39 
40  Papoutsis-Kiachagias, E. M., Magoulas, N., Mueller, J., Othmer, C.,
41  & Giannakoglou, K. C. (2015).
42  Noise reduction in car aerodynamics using a surrogate objective
43  function and the continuous adjoint method with wall functions.
44  Computers & Fluids, 122(20), 223-232.
45  https://doi.org/10.1016/j.compfluid.2015.09.002
46  \endverbatim
47 
48 SourceFiles
49  objectiveNutSqrNoise.C
50 
51 \*---------------------------------------------------------------------------*/
52 
53 #ifndef objectiveNutSqr_H
54 #define objectiveNutSqr_H
55 
57 
58 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
59 
60 namespace Foam
61 {
62 
63 namespace objectives
64 {
65 
66 /*---------------------------------------------------------------------------*\
67  Class objectiveNutSqr Declaration
68 \*---------------------------------------------------------------------------*/
69 
70 class objectiveNutSqr
71 :
73 {
74  // Private data
75 
76  //- Where to define the objective
77  labelList zones_;
78 
79 
80 public:
81 
82  //- Runtime type information
83  TypeName("nutSqr");
84 
85 
86  // Constructors
87 
88  //- From components
90  (
91  const fvMesh& mesh,
92  const dictionary& dict,
93  const word& adjointSolverName,
94  const word& primalSolverName
95  );
96 
97 
98  //- Destructor
99  virtual ~objectiveNutSqr() = default;
100 
101 
102  // Member Functions
103 
104  //- Return the objective function value
105  scalar J();
106 
107  //- Update field to be added to the adjoint turbulence model PDE
108  // The equivalent for the second turbulence model variable should
109  // be implemented for turbulence models other than SA
110  void update_dJdTMvar1();
111 
112  //- Update field to be added to be added to volume-based
113  //- sensitivity derivatives, emerging from delta ( dV ) / delta b
115 };
116 
117 
118 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
119 
120 } // End namespace objectiveNutSqrNoise
121 } // End namespace Foam
122 
123 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
124 
125 #endif
126 
127 // ************************************************************************* //
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:65
Foam::objectives::objectiveNutSqr::TypeName
TypeName("nutSqr")
Runtime type information.
Foam::objectives::objectiveNutSqr::update_divDxDbMultiplier
void update_divDxDbMultiplier()
Definition: objectiveNutSqr.C:145
Foam::objectives::objectiveNutSqr::J
scalar J()
Return the objective function value.
Definition: objectiveNutSqr.C:97
Foam::objectives::objectiveNutSqr::update_dJdTMvar1
void update_dJdTMvar1()
Update field to be added to the adjoint turbulence model PDE.
Definition: objectiveNutSqr.C:122
Foam::objectives::objectiveNutSqr
Objective qualitatively quantifying noise through the integral of the squared turbulent viscosity ove...
Definition: objectiveNutSqr.H:69
Foam::objectiveIncompressible
Abstract base class for objective functions in incompressible flows.
Definition: objectiveIncompressible.H:54
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
objectiveIncompressible.H
Foam::objectives::objectiveNutSqr::~objectiveNutSqr
virtual ~objectiveNutSqr()=default
Destructor.
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::objectives::objectiveNutSqr::objectiveNutSqr
objectiveNutSqr(const fvMesh &mesh, const dictionary &dict, const word &adjointSolverName, const word &primalSolverName)
From components.
Definition: objectiveNutSqr.C:55
Foam::List< label >