-
Notifications
You must be signed in to change notification settings - Fork 0
/
pimpleTimeFoam.C
147 lines (104 loc) · 3.86 KB
/
pimpleTimeFoam.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 4.0
\\ / A nd | Web: http://www.foam-extend.org
\\/ M anipulation | For copyright notice see file Copyright
-------------------------------------------------------------------------------
License
This file is part of foam-extend.
foam-extend is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
foam-extend is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
Application
pimpleTimeFoam
Description
Large time-step transient solver for incompressible, flow using the PIMPLE
(merged PISO-SIMPLE) algorithm.
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
Consistent formulation without time-step and relaxation dependence by Jasak
Author
Hrvoje Jasak, Wikki Ltd. All rights reserved
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
#include "turbulenceModel.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
# include "setRootCase.H"
# include "createTime.H"
# include "createMesh.H"
pimpleControl pimple(mesh);
# include "createFields.H"
# include "initContinuityErrs.H"
# include "createTimeControls.H"
Info<< "\nStarting time loop\n" << endl;
#include "StopWatch.H"
StopWatch totalTime;
StopWatch mainLoopTime;
StopWatch turbTime;
double turbLoopTotal;
// Timing Data file output
fileName outputFile("timing_log.csv");
OFstream os(outputFile, ios_base::app);
if(Pstream::master()){
os << "Main Loop,Turb Last,Turb Total" << endl;
}
totalTime.start();
while (runTime.run())
{
mainLoopTime.start();
# include "readTimeControls.H"
# include "CourantNo.H"
# include "setDeltaT.H"
runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl;
turbLoopTotal = 0.0;
// --- PIMPLE loop
while (pimple.loop())
{
# include "UEqn.H"
// --- PISO loop
while (pimple.correct())
{
# include "pEqn.H"
}
turbTime.start();
turbulence->correct();
turbTime.stop();
turbLoopTotal += turbTime.getIndTime();
}
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
mainLoopTime.stop();
// Write to log file
Info<< "Main loop time: " << mainLoopTime.getIndTime() << " s"
<< nl << "Last Iter Turbulence time: " << turbTime.getIndTime() << " s"
<< nl << "Total Loop Turbulence time: " << turbLoopTotal << " s"
<< nl << endl;
// Write to data file
if(Pstream::master()){
os << mainLoopTime.getIndTime() << ","
<< turbTime.getIndTime() << ","
<< turbLoopTotal << endl;
}
}
totalTime.stop();
Info<<"Time Profile: "
<<"\n\tTotal Time (s): " << totalTime.getTotalTime()
<<endl;
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //