-
Notifications
You must be signed in to change notification settings - Fork 23
/
dns.doc
292 lines (180 loc) · 9.86 KB
/
dns.doc
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
267
268
269
270
Models:
ns_grid.F90 2D/3D NS main development platform
ns.F90 2D/3D NS and NS-alpha (div tau form)
ns_impulse.F90 2D/3D NS impulse form
ns_decomp3.F90 2D/3D NS
shallow.F90 2D shallow water equations
ns_ghost.F90 2D/3D NS 4th order
ns_psivor.F90 2D NS streamfunction-vorticity form
cns.F90 2D/3D compressible NS using finite differences
1. ns_grid.F90. To build: 'make dnsgrid'
This is the main development platform used for debugging. It is
signifcanlty slower then some of the other models. Fully gridspace
based. All work done in the 3d parallel decoposition.
All operaters are computed via the der() subroutine. It
handles spectral and 4th order via transpose operators.
1.1 ns_ibm.F90. To build: 'make dnsibm'
A version of ns_grid.F90 which contains the Immersed Boundary Method
2. ns.F90 To build: 'make dns'
This is the optimized spectral code. Most work is done in
the transform_to_z space with operations are done directly
on the fourier coefficients. Nonlinear terms computed in
grid space using the regular 3d parallel decomposition.
3. ns_decomp3.F90 To build: 'make dnsslow'
Spectral code were all work is done in the regular 3d parallel
decomposition space. Not as fast as ns.F90 and no longer maintained.
4. ns_impulse.F90 To build: 'make dnsi'
A version of ns_grid.F90 that supports the impulse formulation
of the equations. No longer maintined, but may be revived for
the NS-alpha model in U-V form.
5. shallow.F90 To build: 'make dnss'
A 2D shallow water version of the model. Supports alpha>=0 with the
div(tau) form of the equations. Fourier and doubly periodic only (but
just because we use hyper viscosity. Could be easily converted to
grid point model) See shallow.doc for some more documentation.
6. ns_ghost.F90 To build: 'make dnsghost'
7. ns_psivor.F90. To build: 'make dnsvor'
8. cns.F90 To build: 'make cdns'
compressible NS.
****************************************************************************
Running the code
1. setting the resolution
./gridsetup L M N NX NY NZ gx1 gy1 gz1 gx2 gy2 gz2 n_var
L M N = parallel decomposition.
NX NY NZ = global grid
gx1 gy1 gz1 = number of padding/ghost cells on right edge (default = 2 2 0)
gx2 gy2 gz2 = number of ghost cells on left edge (default = 0 0 0)
n_var = number of variables (default = 3)
Examples: to run the spectral code at 256^3 on 128 cpus:
(doesn't need ghost cells, but needs a little extra storage for
FFT's, provided by default values of gx1,gy1,gz1)
./gridsetup.py 1 1 128 256 256 256
To run a 4th order finite difference code (needs 2 ghost cells in
every direction), with storage for (u,v,w):
./gridsetup.py 8 8 4 256 256 256 2 2 2 2 2 2
To run a 4th order finite difference code (needs 2 ghost cells in
every direction), with storage for (u,v,w,rho,p):
./gridsetup.py 8 8 4 256 256 256 2 2 2 2 2 2 5
2. compiling
3. the input file.
line 1. input file type. 0-8
Each input file type has its own routine to read in the parameters
in init_grid.F90. number 8 is the newest input file format, documented
here. The others should be considered obsolete.
line 2 header_user User seletec snapshot file header type
The header can include:
1: time, x, y and z coordinate data
2: no headers, no periodic extension
3: ensight headers, no periodic extension
4: 4 byte header, FORTRAN style (for input only)
5: time, Lz, x, y and z coordinate data
line 3 equations. valid values: ns_uvw
ns_psivor
shallow
line 4 initial condition
KH-blob initial velocity computed from a specified
vortex sheet
KH-anal analytic KH problem from E & Lui
iso12 random phases,
spectrum in E(k) given by init_cond_subtype
vxpair Monika's vortex instability problem
iso12e quick version of iso12 (gives different
answers for different parallel decompositions,
and may not be as isotropic)
sht shallow water testcases from McWilliams and Polvani
zero flow at rest
decay2048 Decaying spectrum (slow init, but reproducable)
decay2048_e same as decay, not reproducible with different parallel
decomposition
decay2048_s for restart only. re-scale amplitude of restart
data to fit prescribed spectrum
init_cond_subtype==0: Menevaus's spectrum
init_cond_subtype==1: Livescu's spectrum
line 5 initial condition subtype
see initital condition subroutines in cases2v.F90, cases3v.F90
line 6 forcing:
none
iso12 Relax to E(1)=E(2)=.5
iso12_hel Relax E as iso12, also induce helicity
iso12w stochastic, white in time, wave numbers 1,2
iso Relax to Overholt & Pope spectrum
iso23w stochastic, white in time, wave numbers 2,3
balu Relax to E(10)=1
iso12_hel Susan's helicity forcing in wave numbers 1,2
High wave number forcing options:
to add addition peak wave number forcings, see
init_grid.F90:;read_type8()
iso_high_NN (where NN has to be 16 or 24)
Deterministic forcing in wave numbers NN+/-8
peaked at wave number NN
sto_high_NN where NN has to be 3,4,8,10,16,24,26,32 and 64
(more can be added by editing init_grid.F90)
Stochastic forcing in wave numbers
NN +/- fparam1 (for fparam1, see below)
peaked at wave number NN
line 7 ffval,fparam1 Only used by the sto_high_NN forcings
ffval = sqrt<f,f>
fparam1 = width of forcing in wave nubmers
line 8 viscosity type.
value: data on line 7 is actual value
smallest: use smallest grid will support (not coded?)
kediff data on line 7 is KE dissipation rate of smallest
scale
Re data on line 7 is Re (not coded?)
hyper data on line 7 is ??? (check code)
line 9 viscosity data, see line 6.
line 10 hyper viscosity type: none,
line 11 hyper viscosity value
line 12 hypo viscosity type: none,
line 13 hypo viscosity value
line 14 fcor, the rotation speed about z-axis
line 15 Lz aspect ratio in z direction
line 16 bous A boussenesque parameter
line 17 alpha alpha=0: dont use alpha model
0<alpha<=1 value of alpha
alpha>1 value of alpha in units of delx
allpha=9999 run with alpha=infinity (not coded?)
line 18 smagorinsky 0: dont use
line 19 number of scalars
line 20+ schmidt number, scalar_type (one line for each scalar)
(line numbers now assume 0 scalars)
(these next two are only used by turb_diag.F90:)
line 20 compute angle averaged structure functions? value: 0 or 1
line 21 compute velocity and passive scalar PDFs? value: 0 or 1
line 22 numerical method: fft, fft-dealias, fft-sphere, fft-phase, 4th
line 23 x boundary condition: (model dependent)
line 24 y boundary condition:
line 25 z boundary condition:
line 26 amount of time to run
line 27 advective CFL number suggested value: 1.5
line 28 viscous CFL number. suggested value: .25
line 29 min dt
line 30 max dt
for the *_dt settings below:
0 = disabled
< 0 = timesteps. example: -10 means output every 10 timesteps
> 0 = time. example: .1 means output every t=.1 time units
line 31 restart_dt (ignored)
line 32 diag_dt save scalar data (collected every timestep) to .scalar file
when mod(time,diag_dt)==0. Can also be used in
output_model() in addition to model_dt.
line 33 model_dt compute and output model specific data (output_model()):
spectrum, scalars_turb, PDFs, structure functions...
line 34 screen_dt output diagnostic info to stdou
line 35 output_dt output data files (can be used for restart)
line 36 output_vorticity?
line 37 n_output_custom Number of custom output times to follow (0 is okay)
1 per line
line 38+ custom output times.
4. running the code and command line options
./dns [options] -i <input_file> <run_name>
options:
-r restart from files restart.[uvw]
5. restart files.
To read a restart file on a machine
with the opposit endian-ness of the machine which created the file,
uncomment the 'call set_byteswap_input(1)' in dns.F90.
****************************************************************************
Scripts for testing:
****************************************************************************
see dns/README and dns/testing/README