forked from Nek5000/NekDoc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rea_explicit.tex
266 lines (259 loc) · 14.5 KB
/
rea_explicit.tex
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
\subsection{Parameters}
This section tells nek5000
\begin{itemize}
\item If the input file reflects a 2D or 3D job (it should match the \textit{ldim} parameter in the SIZE file).
\item The combination of heat transfer, Stokes, Navier-Stokes, steady or unsteady to be run.
\item The relevant physical parameters.
\item The solution algorithm within nek5000 to use.
\item The timestep size or Courant number to use, or whether to run variable DT (\(dt\)), etc.
\end{itemize}
A .rea file starts with the following three parameters:
\begin{description}
\item [NEKTON VERSION] the version of nek5000
\item [DIMENSIONAL RUN] number of spatial dimensions (NDIM=2,3 - has to match the setting in the SIZE file).
\item [PARAMETERS FOLLOW] the number of parameters which are going to be followed in the .rea file.(NPARAM)
\end{description}
The latter specifies how many lines of .rea file, starting from the next line, are the parameters and have to be read by the program.\\
% \noindent\Large\textbf{- Available Parameters}\normalsize
\subsection{Available Parameters}
% \begin{center}
% \begin{tabular}{ | c | c | c | p{10cm} |}
% \hline
% number & name & def. value & comments \\ \hline
% \textbf{P001} & DENSITY & & density for the case of constant properties (see parameter \textbf{P030})\\ \hline
% \textbf{P002} & VISCOS & & kinematic viscosity (if \(<0 \rightarrow Re\), otherwise \(1/Re\)).\\
% \hline
% \end{tabular}
% \end{center}
\begin{description}
\item [P001 DENSITY] density for the case of constant properties (for variable density see parameter \textbf{P030}).
\item [P002 VISCOS] kinematic viscosity (if \(<0 \rightarrow Re\), otherwise \(1/Re\)).
\item [P003 BETAG] if \(>0\), natural convection is turned on (Boussinesq approximation). {\textcolor{red}{NOT IN USE !}}
\item [P004 GTHETA] model parameter for Boussinesq approximation (see parameter P003). {\textcolor{red}{ NOT IN USE!}}
\item [P005 PGRADX] {\textcolor{red}{ NOT IN USE!}}
\item [P006 ] {\textcolor{red}{ NOT IN USE!}}
\item [P007 RHOCP] navier5.f: param(7) = param(1) ! rhoCP = rho {\textcolor{red}{ NOT IN USE!}}
\item [P008 CONDUCT] conductivity for the case of constant properties (if \(<0\), it defines the Peclet number, see parameter P030). \\
connect2.f: if(param(8) .lt.0.0) param(8) = -1.0/param(8)\\
navier5.f: param(8) = param(2) ! conduct = dyn. visc
\item [P009 ] {\textcolor{red}{ NOT IN USE!}} (passed to CPFLD(2,3)!)\\
connect2.f: CPFLD(2,3)=PARAM(9)
\item [P010 FINTIME] if \(>0\), specifies simulation end time. Otherwise, use NSTEP (P011).\\
drive2.f: FINTIM = PARAM(10)
\item [P011 NSTEP] number of time steps.\\
connect2.f: param(11) = 1.0\\
drive2.f: NSTEPS = PARAM(11)
\item [P012 DT] upper bound on time step \(dt\) (if \(<0\), then \(dt=|P012|\) constant)\\
connect2.f: param(12) = 1.0\\
drive2.f: DT = abs(PARAM(12))
\item [P013 IOCOMM] frequency of iteration histories\\
drive2.f: IOCOMM = PARAM(13)
\item [P014 IOTIME] if \(>0\), time interval to dump the fld file. Otherwise, use IOSTEP (P015).\\
drive2.f: TIMEIO = PARAM(14)
\item [P015 IOSTEP] dump frequency, number of time steps between dumps.\\
drive2.f: IOSTEP = PARAM(15)\\
navier5.f: if (iastep.eq.0) iastep=param(15) ! same as iostep
\item [P016 PSSOLVER] heat/passive scalar solver:
\subitem 1: Helmholz
\subitem 2: CVODE
\subitem 3: CVODE with user-supplied Jacobian
\subitem Note: a negative number will set source terms to 0.
\item [P017 AXIS] {\textcolor{red}{ NOT IN USE!}}
\item [P018 GRID] {\textcolor{red}{ NOT IN USE!}}
\item [P019 INTYPE] {\textcolor{red}{ NOT IN USE!}}\\
connect2.f: param(19) = 0.0
\item [P020 NORDER] {\textcolor{red}{ NOT IN USE!}}
\item [P021 DIVERGENCE] tolerance for the pressure solver.\\
drive2.f: TOLPDF = abs(PARAM(21))\\
hmholtz.f: if (name.eq.'PRES'.and.param(21).ne.0) tol=abs(param(21))
\item [P022 HELMHOLTZ] tolerance for the velocity solver.\\
drive2.f: TOLHDF = abs(PARAM(22))\\
hmholtz.f: if (param(22).ne.0) tol=abs(param(22))\\
hmholtz.f: if (param(22).lt.0) tol=abs(param(22))*rbn0\\
navier4.f: if (param(22).ne.0) tol = abs(param(22))
\item [P023 NPSCAL] number of passive scalars.\\
connect2.f: NPSCAL=INT(PARAM(23))
\item [P024 TOLREL] relative tolerance for the passive scalar solver (CVODE).\\
drive2.f: TOLREL = abs(PARAM(24))
\item [P025 TOLABS] absolute tolerance for the passive scalar solver (CVODE).\\
drive2.f: TOLABS = abs(PARAM(25))
\item [P026 COURANT] maximum Courant number (number of RK4 substeps if OIFS is used).\\
drive2.f: CTARG = PARAM(26)
\item [P027 TORDER] temporal discretization order (2 or 3).\\
drive2.f: NBDINP = PARAM(27)
\item [P028 NABMSH] Order of temporal integration for mesh velocity.if 1, 2, or 3 use Adams-Bashforth of corresponding order. Otherwise, extrapolation of order TORDER (P027).\\
\item [P029 MHD\_VISCOS] if \(>0 \rightarrow\) magnetic viscosity, if \(<0 \rightarrow\) magnetic Reynolds number.\\
connect2.f: if(param(29).lt.0.0) param(29) = -1.0/param(29)\\
connect2.f: if (param(29).ne.0.) ifmhd = .true.\\
connect2.f: cpfld(ifldmhd,1) = param(29) ! magnetic viscosity
\item [P030 USERVP] if
\subitem 0: constant properties
\subitem 1: user-defined properties via USERVP subroutine (each scalar separately)
\subitem 2: user-defined properties via USERVP subroutine (all scalars at once)
\item [P031 NPERT] if \(\ne 0\), number of perturbation modes in linearized N-S.\\
connect2.f: if (param(31).ne.0.) ifpert = .true.\\
connect2.f: if (param(31).lt.0.) ifbase = .false. ! don't time adv base flow\\
connect2.f: npert = abs(param(31))
\item [P032 NBCRE2] if \(>0\), number of BCs in .re2 file, 0: all.\\
connect2.f: if (param(32).gt.0) nfldt = ibc + param(32)-1
\item [P033 ] {\textcolor{red}{ NOT IN USE!}}
\item [P034 ] {\textcolor{red}{ NOT IN USE!}}
\item [P035 ] {\textcolor{red}{ NOT IN USE!}}
\item [P036 XMAGNET] {\textcolor{red}{ NOT IN USE!}}
\item [P037 NGRIDS] {\textcolor{red}{ NOT IN USE!}}
\item [P038 NORDER2] {\textcolor{red}{ NOT IN USE!}}
\item [P039 NORDER3] {\textcolor{red}{ NOT IN USE!}}
\item [P040 ] {\textcolor{red}{ NOT IN USE!}}
\item [P041 ] 1 \(\rightarrow\) multiplicative SEMG\\
hsmg.f:c if (param(41).eq.1) ifhybrid = .true. \(\leftarrow\) {\textcolor{red}{ NOT IN USE!}}
\item [P042 ] linear solver for the pressure equation, 0 \(\rightarrow\) GMRES or 1 \(\rightarrow\) PCG
\item [P043 ] 0: additive multilevel scheme - 1: original two level scheme.\\
navier6.f: if (lx1.eq.2) param(43)=1.\\
navier6.f: if (param(43).eq.0) call hsmg\_setup
\item [P044 ] 0=E-based additive Schwarz for PnPn-2; 1=A-based.
\item [P045 ] Free-surface stability control (defaults to 1.0)\\
subs1.f: FACTOR = PARAM(45)
\item [P046 ] if \(>0\), do not set Initial Condition (no call to subroutine SETICS).\\
drive2.f: irst = param(46)\\
ic.f: irst = param(46) ! for lee's restart (rarely used)\\
subs1.f: irst = param(46)
\item [P047 ] parameter for moving mesh (Poisson ratio for mesh elasticity solve (default 0.4)).\\
mvmesh.f: VNU = param(47)
\item [P048 ] {\textcolor{red}{ NOT IN USE!}}
\item [P049 ] if \(<0\), mixing length factor {\textcolor{red}{ NOT IN USE!}}.\\
drive2.f:c IF (PARAM(49) .LE. 0.0) PARAM(49) = TLFAC\\
turb.f: TLFAC = PARAM(49)
\item [P050 ] {\textcolor{red}{ NOT IN USE!}}
\item [P051 ] {\textcolor{red}{ NOT IN USE!}}
\item [P052 HISTEP] if \(>1\), history points dump frequency (in number of steps).\\
prepost.f: if (param(52).ge.1) iohis=param(52)
\item [P053 ] {\textcolor{red}{ NOT IN USE!}}
\item [P054 ] direction of fixed mass flowrate (1: \(x\)-, 2: \(y\)-, 3: \(z\)-direction). If 0: \(x\)-direction.\\
drive2.f: if (param(54).ne.0) icvflow = abs(param(54))\\
drive2.f: if (param(54).lt.0) iavflow = 1 ! mean velocity
\item [P055 ] volumetric flow rate for periodic case; if p54\(<0\), then p55:=mean velocity.\\
drive2.f: flowrate = param(55)
\item [P056 ] {\textcolor{red}{ NOT IN USE!}}
\item [P057 ] {\textcolor{red}{ NOT IN USE!}}
\item [P058 ] {\textcolor{red}{ NOT IN USE!}}
\item [P059 ] if \(\neq0\), deformed elements (only relevant for FDM). !=0 \(\rightarrow\) full Jac. eval. for each el.
\item [P060 ] if \(\neq0\), initialize velocity to 1e-10 (for steady Stokes problem).
\item [P061 ] {\textcolor{red}{ NOT IN USE!}}
\item [P062 ] if \(>0\), swap bytes for output.
\item [P063 WDSIZO] real output wordsize (8: 8-byte reals, else 4-byte).\\
prepost.f: if (param(63).gt.0) wdsizo = 8 ! 64-bit .fld file
\item [P064 ] if \(=1\), restart perturbation solution\\
pertsupport.f: if(param(64).ne.1) then !fresh start, param(64) is restart flag
\item [P065 ] number of I\/O nodes (if \(< 0\) write in separate subdirectories).
\item [P066 ] Output format: (only postx uses .rea value; other nondefault should be set in usrdat) (if \(\geq 0\) binary else ASCII).\\
connect2.f: param(66) = 6 ! binary is default\\
connect2.f: param(66) = 0 ! ASCII
\item [P067 ] read format (if \(\geq 0\) binary else ASCII).
\item [P068 ] averaging frequency in avg\_all (0: every timestep).
\item [P069 ] {\textcolor{red}{ NOT IN USE!}}
\item [P070 ] {\textcolor{red}{ NOT IN USE!}}
\item [P071 ] {\textcolor{red}{ NOT IN USE!}}
\item [P072 ] {\textcolor{red}{ NOT IN USE!}}
\item [P073 ] {\textcolor{red}{ NOT IN USE!}}
\item [P074 ] if \( > 0\) print Helmholtz solver iterations.\\
hmholtz.f: if (nid.eq.0.and.ifprint.and.param(74).ne.0) ifprinthmh=.true.
\item [P075 ] {\textcolor{red}{ NOT IN USE!}}
\item [P076 ] {\textcolor{red}{ NOT IN USE!}}
\item [P077 ] {\textcolor{red}{ NOT IN USE!}}
\item [P078 ] {\textcolor{red}{ NOT IN USE!}}
\item [P079 ] {\textcolor{red}{ NOT IN USE!}}
\item [P080 ] {\textcolor{red}{ NOT IN USE!}}
\item [P081 ] {\textcolor{red}{ NOT IN USE!}}
\item [P082 ] coarse-grid dimension (2: linear). {\textcolor{red}{ NOT IN USE!}}
\item [P083 ] {\textcolor{red}{ NOT IN USE!}}
\item [P084 ] if \(<0\), force initial time step to this value.
\item [P085 ] set \(dt\) in \textit{setdt}.\\
subs1.f: dt=dtopf*param(85)
\item [P086 ] {\textcolor{red}{RESERVED !}} if \(\neq0\), use skew-symmetric form, else convective form.\\
drive2.f: PARAM(86) = 0 ! No skew-symm. convection for now\\
navier1.f: if (param(86).ne.0.0) then ! skew-symmetric form
\item [P087 ] {\textcolor{red}{ NOT IN USE!}}
\item [P088 ] {\textcolor{red}{ NOT IN USE!}}
\item [P089 ] {\textcolor{red}{RESERVED !}}
\item [P090 ] {\textcolor{red}{ NOT IN USE!}}
\item [P091 ] {\textcolor{red}{ NOT IN USE!}}
\item [P092 ] {\textcolor{red}{ NOT IN USE!}}
\item [P093 ] number of previous solutions to use for residual projection.\\
(adjust MXPREF in SIZEu accordingly)
\item [P094 ] if \(>0\), start projecting velocity and passive scalars after P094 steps
\item [P095 ] if \(>0\), start projecting pressure after P095 steps
\item [P096 ] {\textcolor{red}{ NOT IN USE!}}
\item [P097 ] {\textcolor{red}{ NOT IN USE!}}
\item [P098 ] {\textcolor{red}{ NOT IN USE!}}
\item [P099 ] dealiasing:
\subitem \(<0\): disable
\subitem 3: old dealiasing
\subitem 4: new dealiasing
\item [P100 ] {\textcolor{red}{RESERVED !}} pressure preconditioner when using CG solver (0: Jacobi, \(>0\): two-level Schwarz) {\textcolor{red}{or wiseversa?}}
\item [P101 ] number of additional modes to filter (0: only last mode)\\
navier5.f: ncut = param(101)+1
\item [P102 ] {\textcolor{red}{ NOT IN USE!}}
\item [P103 ] filter weight for last mode (\(<0\): disabled)
\item [P107 ] if \(\neq0\), add it to h2 in sethlm
\item [P116 NELX] number of elements in x for Fast Tensor Product FTP solver (0: do not use FTP).\\
NOTE: box geometries, constant properties only!
\item [P117 NELY] number of elements in y for FTP
\item [P118 NELZ] number of elements in z for FTP
\end{description}
\bigskip
\subsection{Available Logical Switches}
This part of .rea file starts with such a line:
\begin{verbatim}
n LOGICAL SWITCHES FOLLOW
\end{verbatim}
where \(n\) is the number of logical switches which is set in the following lines.
\subsection{Logical switches}\label{sec:switches}
Note that by default all logical switches are set to false.
\begin{description}
\item[IFFLOW] solve for fluid (velocity, pressure).
\item[IFHEAT] solve for heat (temperature and/or scalars).
\item[IFTRAN] solve transient equations (otherwise, solve the steady Stokes flow).
\item[IFADVC] specify the fields with convection.
\item[IFTMSH] specify the field(s) defined on T mesh (first field is the ALE mesh).
\item[IFAXIS] axisymmetric formulation.
\item[IFSTRS] use stress formulation in the incompressible case.
\item[IFLOMACH] use low Mach number compressible flow.
\item[IFMGRID] moving grid (for free surface flow).
\item[IFMVBD] moving boundary (for free surface flow).
\item[IFCHAR] use characteristics for convection operator.
\item[IFSYNC] use mpi barriers to provide better timing information.
\item[IFUSERVP] user-defined properties (e.g., \(\mu\), \(\rho\)) varying with space and time.
\end{description}
\begin{comment}
WRITE (6,*) 'IFTRAN =',IFTRAN
00130 WRITE (6,*) 'IFFLOW =',IFFLOW
00131 WRITE (6,*) 'IFHEAT =',IFHEAT
00132 WRITE (6,*) 'IFSPLIT =',IFSPLIT
00133 WRITE (6,*) 'IFLOMACH =',IFLOMACH
00134 WRITE (6,*) 'IFUSERVP =',IFUSERVP
00135 WRITE (6,*) 'IFUSERMV =',IFUSERMV
00136 WRITE (6,*) 'IFSTRS =',IFSTRS
00137 WRITE (6,*) 'IFCHAR =',IFCHAR
00138 WRITE (6,*) 'IFCYCLIC =',IFCYCLIC
00139 WRITE (6,*) 'IFAXIS =',IFAXIS
00140 WRITE (6,*) 'IFMVBD =',IFMVBD
00141 WRITE (6,*) 'IFMELT =',IFMELT
00142 WRITE (6,*) 'IFMODEL =',IFMODEL
00143 WRITE (6,*) 'IFKEPS =',IFKEPS
00144 WRITE (6,*) 'IFMOAB =',IFMOAB
00145 WRITE (6,*) 'IFNEKNEK =',IFNEKNEK
00146 WRITE (6,*) 'IFSYNC =',IFSYNC
00147 WRITE (6,*) ' '
00148 WRITE (6,*) 'IFVCOR =',IFVCOR
00149 WRITE (6,*) 'IFINTQ =',IFINTQ
00150 WRITE (6,*) 'IFCWUZ =',IFCWUZ
00151 WRITE (6,*) 'IFSWALL =',IFSWALL
00152 WRITE (6,*) 'IFGEOM =',IFGEOM
00153 WRITE (6,*) 'IFSURT =',IFSURT
00154 WRITE (6,*) 'IFWCNO =',IFWCNO
00155 DO 500 IFIELD=1,NFIELD
00156 WRITE (6,*) ' '
00157 WRITE (6,*) 'IFTMSH for field',IFIELD,' = ',IFTMSH(IFIELD)
00158 WRITE (6,*) 'IFADVC for field',IFIELD,' = ',IFADVC(IFIELD)
00159 WRITE (6,*) 'IFNONL for field',IFIELD,' = ',IFNONL(IFIELD)
\end{comment}