Loading...
Searching...
No Matches
objectiveGeometric.C
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) 2023 PCOpt/NTUA
9 Copyright (C) 2023 FOSS GP
10-------------------------------------------------------------------------------
11License
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
29#include "objectiveGeometric.H"
30#include "createZeroField.H"
32
33// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
35namespace Foam
36{
37
38// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
39
43(
44 objective,
45 objectiveGeometric,
46 objective
47);
48
49// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
50
51objectiveGeometric::objectiveGeometric
52(
53 const fvMesh& mesh,
54 const dictionary& dict,
55 const word& adjointSolverName,
56 const word& primalSolverName
57)
58:
59 objective(mesh, dict, adjointSolverName, primalSolverName)
61 weight_ = dict.get<scalar>("weight");
62}
63
64
65// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * //
66
68(
69 const fvMesh& mesh,
70 const dictionary& dict,
71 const word& adjointSolverName,
72 const word& primalSolverName
73)
74{
75 const word modelType(dict.get<word>("type"));
76
77 Info<< "Creating objective function : " << dict.dictName()
78 << " of type " << modelType << endl;
79
80 auto* ctorPtr = dictionaryConstructorTable(modelType);
81
82 if (!ctorPtr)
83 {
85 (
86 dict,
87 "objectiveGeometric",
88 modelType,
89 *dictionaryConstructorTablePtr_
90 ) << exit(FatalIOError);
91 }
92
93 return autoPtr<objectiveGeometric>
94 (
95 ctorPtr(mesh, dict, adjointSolverName, primalSolverName)
96 );
97}
98
99
100// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
101
103{
104 // Update geometric fields
106
107 // Divide everything with normalization factor
109
110 // Set objective as not computed, for the next optimisation cycle
111 computed_ = false;
112}
113
114
115// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
116
117} // End namespace Foam
118
119// ************************************************************************* //
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition autoPtr.H:65
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
Mesh data needed to do the Finite Volume discretisation.
Definition fvMesh.H:85
Abstract base class for objective functions that contain only geometric quantities.
static autoPtr< objectiveGeometric > New(const fvMesh &mesh, const dictionary &dict, const word &adjointSolverName, const word &primalSolverName)
Return a reference to the selected turbulence model.
virtual void update()
Update objective function derivatives.
Abstract base class for objective functions. No point in making this runTime selectable since its chi...
Definition objective.H:58
virtual void update()=0
Update objective function derivatives.
Definition objective.C:453
scalar weight_
Objective weight.
Definition objective.H:86
virtual void doNormalization()
Normalize all fields allocated by the objective.
Definition objective.C:365
const dictionary & dict() const
Return objective dictionary.
Definition objective.C:91
bool computed_
Whether the objective is computed or not.
Definition objective.H:96
A class for handling words, derived from Foam::string.
Definition word.H:66
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Definition className.H:142
dynamicFvMesh & mesh
#define FatalIOErrorInLookup(ios, lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalIOError.
Definition error.H:637
Namespace for OpenFOAM.
messageStream Info
Information stream (stdout output on master, null elsewhere).
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition Ostream.H:519
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...
errorManipArg< error, int > exit(error &err, const int errNo=1)
Definition errorManip.H:125
#define defineRunTimeSelectionTable(baseType, argNames)
Define run-time selection table.
dictionary dict