OpenFOAM: API Guide
v2112
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-2019 PCOpt/NTUA
9
Copyright (C) 2013-2019 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 "
setRootCase.H
"
47
#include "
createTime.H
"
48
#include "
createMesh.H
"
49
#include "createFields.H"
50
51
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52
53
54
Info
<<
"\nStarting time loop\n"
<<
endl
;
55
56
for
(
om
++; !
om
.end();
om
++)
57
{
58
if
(
om
.update())
59
{
60
// Update design variables and solve all primal equations
61
om
.updateDesignVariables();
62
}
63
else
64
{
65
// Solve all primal equations
66
om
.solvePrimalEquations();
67
}
68
69
// Update primal-based quantities of the adjoint solvers
70
om
.updatePrimalBasedQuantities();
71
72
// Solve all adjoint equations
73
om
.solveAdjointEquations();
74
75
// Compute all sensitivities
76
om
.computeSensitivities();
77
}
78
79
Info
<<
"End\n"
<<
endl
;
80
81
return
0;
82
}
83
84
85
// ************************************************************************* //
optimisationManager.H
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition:
Ostream.H:369
adjointSolverManager.H
primalSolver.H
Foam::Info
messageStream Info
Information stream (stdout output on master, null elsewhere)
om
optimisationManager & om
Definition:
createFields.H:6
setRootCase.H
createMesh.H
Required Variables.
createTime.H
fvCFD.H
applications
solvers
incompressible
adjointOptimisationFoam
adjointOptimisationFoam.C
Generated by
1.8.17
OPENFOAM® is a registered
trademark
of OpenCFD Ltd.