OpenFOAM
v2312
The open source CFD toolbox
adjointOptimisationFoam.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) 2007-2021 PCOpt/NTUA
9
Copyright (C) 2013-2021 FOSS GP
10
Copyright (C) 2019 OpenCFD Ltd.
11
-------------------------------------------------------------------------------
12
License
13
This file is part of OpenFOAM.
14
15
OpenFOAM is free software: you can redistribute it and/or modify it
16
under the terms of the GNU General Public License as published by
17
the Free Software Foundation, either version 3 of the License, or
18
(at your option) any later version.
19
20
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
21
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
22
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
23
for more details.
24
25
You should have received a copy of the GNU General Public License
26
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
27
28
Application
29
adjointOptimisation
30
31
Description
32
An automated adjoint-based optimisation loop. Supports multiple types
33
of optimisation (shape, topology etc)
34
35
\*---------------------------------------------------------------------------*/
36
37
#include "
fvCFD.H
"
38
#include "
optimisationManager.H
"
39
#include "
primalSolver.H
"
40
#include "
adjointSolverManager.H
"
41
42
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43
44
int
main(
int
argc,
char
*argv[])
45
{
46
#include "
postProcess.H
"
47
48
#include "
setRootCase.H
"
49
#include "
createTime.H
"
50
#include "
createMesh.H
"
51
#include "createFields.H"
52
53
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
54
55
56
Info
<<
"\nStarting time loop\n"
<<
endl
;
57
58
for
(
om
++; !
om
.end();
om
++)
59
{
60
if
(
om
.update())
61
{
62
// Update design variables and solve all primal equations
63
om
.updateDesignVariables();
64
}
65
else
66
{
67
// Solve all primal equations
68
om
.solvePrimalEquations();
69
70
// Clear sensitivities
71
om
.clearSensitivities();
72
73
// Solve all adjoint equations
74
om
.solveAdjointEquations();
75
}
76
}
77
78
Info
<<
"End\n"
<<
endl
;
79
80
return
0;
81
}
82
83
84
// ************************************************************************* //
fvCFD.H
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition:
Ostream.H:531
om
optimisationManager & om
Definition:
createFields.H:6
createTime.H
primalSolver.H
adjointSolverManager.H
createMesh.H
Required Classes.
setRootCase.H
Foam::Info
messageStream Info
Information stream (stdout output on master, null elsewhere)
optimisationManager.H
postProcess.H
Execute application functionObjects to post-process existing results.
applications
solvers
incompressible
adjointOptimisationFoam
adjointOptimisationFoam.C
Generated by
1.8.14