MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_global_parameters.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2!>
3!! @file
4!! @brief Contains module m_global_parameters
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
7! This file exists so that Fypp can be run without generating case.fpp files for
8! each target. This is useful when generating documentation, for example. This
9! should also let MFC be built with CMake directly, without invoking mfc.sh.
10
11! For pre-process.
12# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 14 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp" 2
17# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
18# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
19# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
20# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25
26# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29
30# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43! New line at end of file is required for FYPP
44# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
45# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
46# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
47# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52
53# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56
57# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70! New line at end of file is required for FYPP
71# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
72
73# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78
79# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80
81# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82
83# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125
126# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149! New line at end of file is required for FYPP
150# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
151# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
152# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
153# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158
159# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162
163# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164
165# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166
167# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176! New line at end of file is required for FYPP
177# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
178
179# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180
181# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182
183# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184
185# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186
187# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234! New line at end of file is required for FYPP
235# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
236
237# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
238
239# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
240
241# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242
243# 76 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244
245# 91 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246
247# 102 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249# 115 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250
251# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252
253# 154 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255# 165 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256
257# 176 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258
259# 187 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261# 198 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262
263# 208 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264
265# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267# 220 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268
269# 226 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
270
271# 232 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273# 234 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274# 235 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275! New line at end of file is required for FYPP
276# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
277
278# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
279
280! Caution:
281! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
282! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
283! For an example see misc/nvidia_uvm/bind.sh.
284# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
285
286# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
287
288# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289
290# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
291
292# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
293
294# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
295
296# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
297
298# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299! New line at end of file is required for FYPP
300# 7 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp" 2
301
302!> @brief Global parameters for the computational domain, fluid properties, and simulation algorithm configuration
304
305#ifdef MFC_MPI
306 use mpi !< message passing interface (mpi) module
307#endif
308
309 use m_derived_types !< definitions of the derived types
310
311 use m_helper_basic !< functions to compare floating point numbers
312
313 ! $:USE_GPU_MODULE()
314
315 implicit none
316
317 real(wp) :: wall_time = 0
318 real(wp) :: wall_time_avg = 0
319
320 ! Logistics
321 integer :: num_procs !< Number of processors
322 character(LEN=path_len) :: case_dir !< Case folder location
323 logical :: run_time_info !< Run-time output flag
324 integer :: t_step_old !< Existing IC/grid folder
325
326 ! Computational Domain Parameters
327 integer :: proc_rank !< Rank of the local processor
328
329 !> @name Number of cells in the x-, y- and z-directions, respectively
330 !> @{
331 integer :: m, n, p
332 !> @}
333
334 !> @name Max and min number of cells in a direction of each combination of x-,y-, and z-
336
337 !> @name Global number of cells in each direction
338 !> @{
339 integer :: m_glb, n_glb, p_glb
340 !> @}
341
342 !> @name Cylindrical coordinates (either axisymmetric or full 3D)
343 !> @{
344 logical :: cyl_coord
345 integer :: grid_geometry
346 !> @}
347
348# 53 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
349#if defined(MFC_OpenACC)
350# 53 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
351!$acc declare create(cyl_coord, grid_geometry)
352# 53 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
353#elif defined(MFC_OpenMP)
354# 53 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
355!$omp declare target (cyl_coord, grid_geometry)
356# 53 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
357#endif
358
359 !> @name Cell-boundary (CB) locations in the x-, y- and z-directions, respectively
360 !> @{
361
362 real(wp), target, allocatable, dimension(:) :: x_cb, y_cb, z_cb
363 !> @}
364
365 !> @name Cell-center (CC) locations in the x-, y- and z-directions, respectively
366 !> @{
367
368 real(wp), target, allocatable, dimension(:) :: x_cc, y_cc, z_cc
369 !> @}
370 !type(bounds_info) :: x_domain, y_domain, z_domain !<
371 !! Locations of the domain bounds in the x-, y- and z-coordinate directions
372 !> @name Cell-width distributions in the x-, y- and z-directions, respectively
373 !> @{
374
375 real(wp), target, allocatable, dimension(:) :: dx, dy, dz
376 !> @}
377
378 real(wp) :: dt !< Size of the time-step
379
380
381# 76 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
382#if defined(MFC_OpenACC)
383# 76 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
384!$acc declare create(x_cb, y_cb, z_cb, x_cc, y_cc, z_cc, dx, dy, dz, dt, m, n, p)
385# 76 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
386#elif defined(MFC_OpenMP)
387# 76 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
388!$omp declare target (x_cb, y_cb, z_cb, x_cc, y_cc, z_cc, dx, dy, dz, dt, m, n, p)
389# 76 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
390#endif
391
392 !> @name Starting time-step iteration, stopping time-step iteration and the number
393 !! of time-step iterations between successive solution backups, respectively
394 !> @{
396 !> @}
397
398 !> @name Starting time, stopping time, and time between backups, simulation time,
399 !! and prescribed cfl respectively
400 !> @{
402 integer :: n_start
403 !> @}
404
405# 90 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
406#if defined(MFC_OpenACC)
407# 90 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
408!$acc declare create(cfl_target)
409# 90 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
410#elif defined(MFC_OpenMP)
411# 90 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
412!$omp declare target (cfl_target)
413# 90 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
414#endif
415
417
418 integer :: t_step_print !< Number of time-steps between printouts
419
420 ! Simulation Algorithm Parameters
421 integer :: model_eqns !< Multicomponent flow model
422# 102 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
423 integer :: num_dims !< Number of spatial dimensions
424 integer :: num_vels !< Number of velocity components (different from num_dims for mhd)
425# 105 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
426 logical :: mpp_lim !< Mixture physical parameters (MPP) limits
427 integer :: time_stepper !< Time-stepper algorithm
428 logical :: prim_vars_wrt
429
430# 131 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
431 integer :: recon_type !< Reconstruction Type
432 integer :: weno_polyn !< Degree of the WENO polynomials (polyn)
433 integer :: muscl_polyn !< Degree of the MUSCL polynomials (polyn)i
434 integer :: weno_order !< Order of the WENO reconstruction
435 integer :: muscl_order !< Order of the MUSCL reconstruction
436 integer :: weno_num_stencils !< Number of stencils for WENO reconstruction (only different from weno_polyn for TENO(>5))
437 integer :: muscl_lim !< MUSCL Limiter
438 integer :: num_fluids !< number of fluids in the simulation
439 logical :: wenojs !< WENO-JS (default)
440 logical :: mapped_weno !< WENO-M (WENO with mapping of nonlinear weights)
441 logical :: wenoz !< WENO-Z
442 logical :: teno !< TENO (Targeted ENO)
443 real(wp) :: wenoz_q !< Power constant for WENO-Z
444 logical :: mhd !< Magnetohydrodynamics
445 logical :: relativity !< Relativity (only for MHD)
446 integer :: igr_iter_solver!< IGR elliptic solver
447 integer :: igr_order !< Reconstruction order for IGR
448 logical :: igr !< Use information geometric regularization
449 logical :: igr_pres_lim !< Limit to positive pressures for IGR
450 logical :: viscous !< Viscous effects
451# 152 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
452
453 !> @name Variables for our of core IGR computation on NVIDIA
454 !> @{
455 logical :: nv_uvm_out_of_core ! Enable out-of-core storage of q_cons_ts(2) in timestepping (default FALSE)
456 integer :: nv_uvm_igr_temps_on_gpu ! 0 => jac, jac_rhs, and jac_old on CPU
457 ! 1 => jac on GPU, jac_rhs and jac_old on CPU
458 ! 2 => jac and jac_rhs on GPU, jac_old on CPU
459 ! 3 => jac, jac_rhs, and jac_old on GPU (default)
460 logical :: nv_uvm_pref_gpu ! Enable explicit gpu memory hints (default FALSE)
461 !> @}
462
463 real(wp) :: weno_eps !< Binding for the WENO nonlinear weights
464 real(wp) :: teno_ct !< Smoothness threshold for TENO
465 logical :: mp_weno !< Monotonicity preserving (MP) WENO
466 logical :: weno_avg ! Average left/right cell-boundary states
467 logical :: weno_re_flux !< WENO reconstruct velocity gradients for viscous stress tensor
468 integer :: riemann_solver !< Riemann solver algorithm
469 integer :: low_mach !< Low Mach number fix to HLLC Riemann solver
470 integer :: wave_speeds !< Wave speeds estimation method
471 integer :: avg_state !< Average state evaluation method
472 logical :: alt_soundspeed !< Alternate mixture sound speed
473 logical :: null_weights !< Null undesired WENO weights
474 logical :: mixture_err !< Mixture properties correction
475 logical :: hypoelasticity !< hypoelasticity modeling
476 logical :: hyperelasticity !< hyperelasticity modeling
477 logical :: int_comp !< THINC interface compression
478 real(wp) :: ic_eps !< THINC Epsilon to compress on surface cells
479 real(wp) :: ic_beta !< THINC Sharpness Parameter
480 integer :: hyper_model !< hyperelasticity solver algorithm
481 logical :: elasticity !< elasticity modeling, true for hyper or hypo
482 logical, parameter :: chemistry = .false. !< Chemistry modeling
483 logical :: shear_stress !< Shear stresses
484 logical :: bulk_stress !< Bulk stresses
485 logical :: cont_damage !< Continuum damage modeling
486 logical :: hyper_cleaning !< Hyperbolic cleaning for MHD for divB=0
487 integer :: num_igr_iters !< number of iterations for elliptic solve
488 integer :: num_igr_warm_start_iters !< number of warm start iterations for elliptic solve
489 real(wp) :: alf_factor !< alpha factor for IGR
490
491 logical :: bodyforces
492 logical :: bf_x, bf_y, bf_z !< body force toggle in three directions
493 !< amplitude, frequency, and phase shift sinusoid in each direction
494# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
495# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
496 real(wp) :: k_x
497# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
498 real(wp) :: p_x
499# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
500 real(wp) :: w_x
501# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
502 real(wp) :: g_x
503# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
504# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
505# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
506 real(wp) :: k_y
507# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
508 real(wp) :: p_y
509# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
510 real(wp) :: w_y
511# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
512 real(wp) :: g_y
513# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
514# 195 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
515# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
516 real(wp) :: k_z
517# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
518 real(wp) :: p_z
519# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
520 real(wp) :: w_z
521# 196 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
522 real(wp) :: g_z
523# 198 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
524# 199 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
525 real(wp), dimension(3) :: accel_bf
526
527# 200 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
528#if defined(MFC_OpenACC)
529# 200 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
530!$acc declare create(accel_bf)
531# 200 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
532#elif defined(MFC_OpenMP)
533# 200 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
534!$omp declare target (accel_bf)
535# 200 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
536#endif
537 ! $:GPU_DECLARE(create='[k_x,w_x,p_x,g_x,k_y,w_y,p_y,g_y,k_z,w_z,p_z,g_z]')
538
540
541# 206 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
542
543# 206 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
544#if defined(MFC_OpenACC)
545# 206 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
546!$acc declare create(num_dims, num_vels, weno_polyn, weno_order)
547# 206 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
548#elif defined(MFC_OpenMP)
549# 206 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
550!$omp declare target (num_dims, num_vels, weno_polyn, weno_order)
551# 206 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
552#endif
553
554# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
555#if defined(MFC_OpenACC)
556# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
557!$acc declare create(weno_num_stencils, num_fluids, wenojs)
558# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
559#elif defined(MFC_OpenMP)
560# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
561!$omp declare target (weno_num_stencils, num_fluids, wenojs)
562# 207 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
563#endif
564
565# 208 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
566#if defined(MFC_OpenACC)
567# 208 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
568!$acc declare create(mapped_weno, wenoz, teno, wenoz_q, mhd, relativity)
569# 208 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
570#elif defined(MFC_OpenMP)
571# 208 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
572!$omp declare target (mapped_weno, wenoz, teno, wenoz_q, mhd, relativity)
573# 208 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
574#endif
575
576# 209 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
577#if defined(MFC_OpenACC)
578# 209 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
579!$acc declare create(igr_iter_solver, igr_order, viscous, igr_pres_lim, igr)
580# 209 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
581#elif defined(MFC_OpenMP)
582# 209 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
583!$omp declare target (igr_iter_solver, igr_order, viscous, igr_pres_lim, igr)
584# 209 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
585#endif
586
587# 210 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
588#if defined(MFC_OpenACC)
589# 210 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
590!$acc declare create(recon_type, muscl_order, muscl_polyn, muscl_lim)
591# 210 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
592#elif defined(MFC_OpenMP)
593# 210 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
594!$omp declare target (recon_type, muscl_order, muscl_polyn, muscl_lim)
595# 210 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
596#endif
597# 212 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
598
599
600# 213 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
601#if defined(MFC_OpenACC)
602# 213 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
603!$acc declare create(mpp_lim, model_eqns, mixture_err, alt_soundspeed)
604# 213 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
605#elif defined(MFC_OpenMP)
606# 213 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
607!$omp declare target (mpp_lim, model_eqns, mixture_err, alt_soundspeed)
608# 213 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
609#endif
610
611# 214 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
612#if defined(MFC_OpenACC)
613# 214 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
614!$acc declare create(avg_state, mp_weno, weno_eps, teno_CT, hypoelasticity)
615# 214 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
616#elif defined(MFC_OpenMP)
617# 214 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
618!$omp declare target (avg_state, mp_weno, weno_eps, teno_CT, hypoelasticity)
619# 214 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
620#endif
621
622# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
623#if defined(MFC_OpenACC)
624# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
625!$acc declare create(hyperelasticity, hyper_model, elasticity, low_Mach)
626# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
627#elif defined(MFC_OpenMP)
628# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
629!$omp declare target (hyperelasticity, hyper_model, elasticity, low_Mach)
630# 215 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
631#endif
632
633# 216 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
634#if defined(MFC_OpenACC)
635# 216 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
636!$acc declare create(shear_stress, bulk_stress, cont_damage, hyper_cleaning)
637# 216 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
638#elif defined(MFC_OpenMP)
639# 216 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
640!$omp declare target (shear_stress, bulk_stress, cont_damage, hyper_cleaning)
641# 216 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
642#endif
643
644 logical :: relax !< activate phase change
645 integer :: relax_model !< Relaxation model
646 real(wp) :: palpha_eps !< trigger parameter for the p relaxation procedure, phase change model
647 real(wp) :: ptgalpha_eps !< trigger parameter for the pTg relaxation procedure, phase change model
648
649
650# 223 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
651#if defined(MFC_OpenACC)
652# 223 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
653!$acc declare create(relax, relax_model, palpha_eps, ptgalpha_eps)
654# 223 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
655#elif defined(MFC_OpenMP)
656# 223 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
657!$omp declare target (relax, relax_model, palpha_eps, ptgalpha_eps)
658# 223 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
659#endif
660
661 integer :: num_bc_patches
662 logical :: bc_io
663 !> @name Boundary conditions (BC) in the x-, y- and z-directions, respectively
664 !> @{
666 !> @}
667#if defined(MFC_OpenACC)
668
669# 232 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
670#if defined(MFC_OpenACC)
671# 232 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
672!$acc declare create(bc_x%vb1, bc_x%vb2, bc_x%vb3, bc_x%ve1, bc_x%ve2, bc_x%ve3)
673# 232 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
674#elif defined(MFC_OpenMP)
675# 232 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
676!$omp declare target (bc_x%vb1, bc_x%vb2, bc_x%vb3, bc_x%ve1, bc_x%ve2, bc_x%ve3)
677# 232 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
678#endif
679
680# 233 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
681#if defined(MFC_OpenACC)
682# 233 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
683!$acc declare create(bc_y%vb1, bc_y%vb2, bc_y%vb3, bc_y%ve1, bc_y%ve2, bc_y%ve3)
684# 233 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
685#elif defined(MFC_OpenMP)
686# 233 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
687!$omp declare target (bc_y%vb1, bc_y%vb2, bc_y%vb3, bc_y%ve1, bc_y%ve2, bc_y%ve3)
688# 233 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
689#endif
690
691# 234 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
692#if defined(MFC_OpenACC)
693# 234 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
694!$acc declare create(bc_z%vb1, bc_z%vb2, bc_z%vb3, bc_z%ve1, bc_z%ve2, bc_z%ve3)
695# 234 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
696#elif defined(MFC_OpenMP)
697# 234 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
698!$omp declare target (bc_z%vb1, bc_z%vb2, bc_z%vb3, bc_z%ve1, bc_z%ve2, bc_z%ve3)
699# 234 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
700#endif
701#elif defined(MFC_OpenMP)
702
703# 236 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
704#if defined(MFC_OpenACC)
705# 236 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
706!$acc declare create(bc_x, bc_y, bc_z)
707# 236 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
708#elif defined(MFC_OpenMP)
709# 236 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
710!$omp declare target (bc_x, bc_y, bc_z)
711# 236 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
712#endif
713#endif
715 real(wp) :: x_a, y_a, z_a
716 real(wp) :: x_b, y_b, z_b
717
718 logical :: parallel_io !< Format of the data files
719 logical :: file_per_process !< shared file or not when using parallel io
720 integer :: precision !< Precision of output files
721 logical :: down_sample !< down sample the output files
722
723# 246 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
724#if defined(MFC_OpenACC)
725# 246 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
726!$acc declare create(down_sample)
727# 246 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
728#elif defined(MFC_OpenMP)
729# 246 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
730!$omp declare target (down_sample)
731# 246 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
732#endif
733
734 integer, allocatable, dimension(:) :: proc_coords !<
735 !! Processor coordinates in MPI_CART_COMM
736
737 integer, allocatable, dimension(:) :: start_idx !<
738 !! Starting cell-center index of local processor in global grid
739
740 type(mpi_io_var), public :: mpi_io_data
745 real(wp), allocatable, dimension(:, :), public :: mpi_io_data_lag_bubbles
746
747 !> @name MPI info for parallel IO with Lustre file systems
748 !> @{
749 character(LEN=name_len) :: mpiiofs
750 integer :: mpi_info_int
751 !> @}
752
753 !> @name Annotations of the structure of the state and flux vectors in terms of the
754 !! size and the configuration of the system of equations to which they belong
755 !> @{
756 integer :: sys_size !< Number of unknowns in system of eqns.
757 type(int_bounds_info) :: cont_idx !< Indexes of first & last continuity eqns.
758 type(int_bounds_info) :: mom_idx !< Indexes of first & last momentum eqns.
759 integer :: e_idx !< Index of energy equation
760 integer :: n_idx !< Index of number density
761 type(int_bounds_info) :: adv_idx !< Indexes of first & last advection eqns.
762 type(int_bounds_info) :: internalenergies_idx !< Indexes of first & last internal energy eqns.
763 type(bub_bounds_info) :: bub_idx !< Indexes of first & last bubble variable eqns.
764 integer :: alf_idx !< Index of void fraction
765 integer :: gamma_idx !< Index of specific heat ratio func. eqn.
766 integer :: pi_inf_idx !< Index of liquid stiffness func. eqn.
767 type(int_bounds_info) :: b_idx !< Indexes of first and last magnetic field eqns.
768 type(int_bounds_info) :: stress_idx !< Indexes of first and last shear stress eqns.
769 type(int_bounds_info) :: xi_idx !< Indexes of first and last reference map eqns.
770 integer :: b_size !< Number of elements in the symmetric b tensor, plus one
771 integer :: tensor_size !< Number of elements in the full tensor plus one
772 type(int_bounds_info) :: species_idx !< Indexes of first & last concentration eqns.
773 integer :: c_idx !< Index of color function
774 integer :: damage_idx !< Index of damage state variable (D) for continuum damage model
775 integer :: psi_idx !< Index of hyperbolic cleaning state variable for MHD
776 !> @}
777
778# 291 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
779#if defined(MFC_OpenACC)
780# 291 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
781!$acc declare create(sys_size, E_idx, n_idx, bub_idx, alf_idx, gamma_idx)
782# 291 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
783#elif defined(MFC_OpenMP)
784# 291 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
785!$omp declare target (sys_size, E_idx, n_idx, bub_idx, alf_idx, gamma_idx)
786# 291 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
787#endif
788
789# 292 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
790#if defined(MFC_OpenACC)
791# 292 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
792!$acc declare create(pi_inf_idx, B_idx, stress_idx, xi_idx, b_size)
793# 292 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
794#elif defined(MFC_OpenMP)
795# 292 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
796!$omp declare target (pi_inf_idx, B_idx, stress_idx, xi_idx, b_size)
797# 292 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
798#endif
799
800# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
801#if defined(MFC_OpenACC)
802# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
803!$acc declare create(tensor_size, species_idx, c_idx)
804# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
805#elif defined(MFC_OpenMP)
806# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
807!$omp declare target (tensor_size, species_idx, c_idx)
808# 293 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
809#endif
810
811 ! Cell Indices for the (local) interior points (O-m, O-n, 0-p).
812 ! Stands for "InDices With INTerior".
814
815# 298 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
816#if defined(MFC_OpenACC)
817# 298 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
818!$acc declare create(idwint)
819# 298 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
820#elif defined(MFC_OpenMP)
821# 298 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
822!$omp declare target (idwint)
823# 298 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
824#endif
825
826 ! Cell Indices for the entire (local) domain. In simulation and post_process,
827 ! this includes the buffer region. idwbuff and idwint are the same otherwise.
828 ! Stands for "InDices With BUFFer".
830
831# 304 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
832#if defined(MFC_OpenACC)
833# 304 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
834!$acc declare create(idwbuff)
835# 304 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
836#elif defined(MFC_OpenMP)
837# 304 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
838!$omp declare target (idwbuff)
839# 304 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
840#endif
841
842 !> @name The number of fluids, along with their identifying indexes, respectively,
843 !! for which viscous effects, e.g. the shear and/or the volume Reynolds (Re)
844 !! numbers, will be non-negligible.
845 !> @{
846 integer, dimension(2) :: re_size
847 integer :: re_size_max
848 integer, allocatable, dimension(:, :) :: re_idx
849 !> @}
850
851
852# 315 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
853#if defined(MFC_OpenACC)
854# 315 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
855!$acc declare create(Re_size, Re_size_max, Re_idx)
856# 315 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
857#elif defined(MFC_OpenMP)
858# 315 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
859!$omp declare target (Re_size, Re_size_max, Re_idx)
860# 315 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
861#endif
862
863 ! The WENO average (WA) flag regulates whether the calculation of any cell-
864 ! average spatial derivatives is carried out in each cell by utilizing the
865 ! arithmetic mean of the left and right, WENO-reconstructed, cell-boundary
866 ! values or simply, the unaltered left and right, WENO-reconstructed, cell-
867 ! boundary values.
868 !> @{
869 real(wp) :: wa_flg
870 !> @}
871
872
873# 326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
874#if defined(MFC_OpenACC)
875# 326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
876!$acc declare create(wa_flg)
877# 326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
878#elif defined(MFC_OpenMP)
879# 326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
880!$omp declare target (wa_flg)
881# 326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
882#endif
883
884 !> @name The coordinate direction indexes and flags (flg), respectively, for which
885 !! the configurations will be determined with respect to a working direction
886 !! and that will be used to isolate the contributions, in that direction, in
887 !! the dimensionally split system of equations.
888 !> @{
889 integer, dimension(3) :: dir_idx
890 real(wp), dimension(3) :: dir_flg
891 integer, dimension(3) :: dir_idx_tau !!used for hypoelasticity=true
892 !> @}
893
894
895# 338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
896#if defined(MFC_OpenACC)
897# 338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
898!$acc declare create(dir_idx, dir_flg, dir_idx_tau)
899# 338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
900#elif defined(MFC_OpenMP)
901# 338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
902!$omp declare target (dir_idx, dir_flg, dir_idx_tau)
903# 338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
904#endif
905
906 integer :: buff_size !<
907 !! The number of cells that are necessary to be able to store enough boundary
908 !! conditions data to march the solution in the physical computational domain
909 !! to the next time-step.
910
911
912# 345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
913#if defined(MFC_OpenACC)
914# 345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
915!$acc declare create(buff_size)
916# 345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
917#elif defined(MFC_OpenMP)
918# 345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
919!$omp declare target (buff_size)
920# 345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
921#endif
922
923 integer :: shear_num !! Number of shear stress components
924 integer, dimension(3) :: shear_indices !<
925 !! Indices of the stress components that represent shear stress
926 integer :: shear_bc_flip_num !<
927 !! Number of shear stress components to reflect for boundary conditions
928 integer, dimension(3, 2) :: shear_bc_flip_indices !<
929 !! Indices of shear stress components to reflect for boundary conditions.
930 !! Size: (1:3, 1:shear_BC_flip_num) for (x/y/z, [indices])
931
932
933# 356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
934#if defined(MFC_OpenACC)
935# 356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
936!$acc declare create(shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
937# 356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
938#elif defined(MFC_OpenMP)
939# 356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
940!$omp declare target (shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
941# 356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
942#endif
943
944 ! END: Simulation Algorithm Parameters
945
946 ! Fluids Physical Parameters
947
948 type(physical_parameters), dimension(num_fluids_max) :: fluid_pp !<
949 !! Database of the physical parameters of each of the fluids that is present
950 !! in the flow. These include the stiffened gas equation of state parameters,
951 !! and the Reynolds numbers.
952
953 ! Subgrid Bubble Parameters
955
956 integer :: fd_order !<
957 !! The order of the finite-difference (fd) approximations of the first-order
958 !! derivatives that need to be evaluated when the CoM or flow probe data
959 !! files are to be written at each time step
960
961 integer :: fd_number !<
962 !! The finite-difference number is given by MAX(1, fd_order/2). Essentially,
963 !! it is a measure of the half-size of the finite-difference stencil for the
964 !! selected order of accuracy.
965
966# 379 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
967#if defined(MFC_OpenACC)
968# 379 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
969!$acc declare create(fd_order, fd_number)
970# 379 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
971#elif defined(MFC_OpenMP)
972# 379 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
973!$omp declare target (fd_order, fd_number)
974# 379 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
975#endif
976
977 logical :: probe_wrt
978 logical :: integral_wrt
979 integer :: num_probes
980 integer :: num_integrals
981 type(vec3_dt), dimension(num_probes_max) :: probe
982 type(integral_parameters), dimension(num_probes_max) :: integral
983
984 !> @name Reference density and pressure for Tait EOS
985 !> @{
986 real(wp) :: rhoref, pref
987 !> @}
988
989# 392 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
990#if defined(MFC_OpenACC)
991# 392 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
992!$acc declare create(rhoref, pref)
993# 392 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
994#elif defined(MFC_OpenMP)
995# 392 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
996!$omp declare target (rhoref, pref)
997# 392 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
998#endif
999
1000 !> @name Immersed Boundaries
1001 !> @{
1002 logical :: ib
1003 integer :: num_ibs
1004
1005 type(ib_patch_parameters), dimension(num_patches_max) :: patch_ib
1006 type(vec3_dt), allocatable, dimension(:) :: airfoil_grid_u, airfoil_grid_l
1007 integer :: np
1008 !! Database of the immersed boundary patch parameters for each of the
1009 !! patches employed in the configuration of the initial condition. Note that
1010 !! the maximum allowable number of patches, num_patches_max, may be changed
1011 !! in the module m_derived_types.f90.
1012
1013
1014# 407 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1015#if defined(MFC_OpenACC)
1016# 407 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1017!$acc declare create(ib, num_ibs, patch_ib, Np, airfoil_grid_u, airfoil_grid_l)
1018# 407 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1019#elif defined(MFC_OpenMP)
1020# 407 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1021!$omp declare target (ib, num_ibs, patch_ib, Np, airfoil_grid_u, airfoil_grid_l)
1022# 407 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1023#endif
1024 !> @}
1025
1026 !> @name Bubble modeling
1027 !> @{
1028# 415 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1029 integer :: nb !< Number of eq. bubble sizes
1030# 417 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1031
1032 real(wp) :: eu !< Euler number
1033 real(wp) :: ca !< Cavitation number
1034 real(wp) :: web !< Weber number
1035 real(wp) :: re_inv !< Inverse Reynolds number
1036
1037# 422 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1038#if defined(MFC_OpenACC)
1039# 422 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1040!$acc declare create(Eu, Ca, Web, Re_inv)
1041# 422 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1042#elif defined(MFC_OpenMP)
1043# 422 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1044!$omp declare target (Eu, Ca, Web, Re_inv)
1045# 422 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1046#endif
1047
1048 real(wp), dimension(:), allocatable :: weight !< Simpson quadrature weights
1049 real(wp), dimension(:), allocatable :: r0 !< Bubble sizes
1050
1051# 426 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1052#if defined(MFC_OpenACC)
1053# 426 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1054!$acc declare create(weight, R0)
1055# 426 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1056#elif defined(MFC_OpenMP)
1057# 426 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1058!$omp declare target (weight, R0)
1059# 426 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1060#endif
1061
1062 logical :: bubbles_euler !< Bubbles euler on/off
1063 logical :: polytropic !< Polytropic switch
1064 logical :: polydisperse !< Polydisperse bubbles
1065
1066# 431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1067#if defined(MFC_OpenACC)
1068# 431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1069!$acc declare create(bubbles_euler, polytropic, polydisperse)
1070# 431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1071#elif defined(MFC_OpenMP)
1072# 431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1073!$omp declare target (bubbles_euler, polytropic, polydisperse)
1074# 431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1075#endif
1076
1077 logical :: adv_n !< Solve the number density equation and compute alpha from number density
1078 logical :: adap_dt !< Adaptive step size control
1079 real(wp) :: adap_dt_tol !< Tolerance to control adaptive step size
1080 integer :: adap_dt_max_iters !< Maximum number of iterations
1081
1082# 437 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1083#if defined(MFC_OpenACC)
1084# 437 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1085!$acc declare create(adv_n, adap_dt, adap_dt_tol, adap_dt_max_iters)
1086# 437 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1087#elif defined(MFC_OpenMP)
1088# 437 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1089!$omp declare target (adv_n, adap_dt, adap_dt_tol, adap_dt_max_iters)
1090# 437 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1091#endif
1092
1093 integer :: bubble_model !< Gilmore or Keller--Miksis bubble model
1094 integer :: thermal !< Thermal behavior. 1 = adiabatic, 2 = isotherm, 3 = transfer
1095
1096# 441 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1097#if defined(MFC_OpenACC)
1098# 441 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1099!$acc declare create(bubble_model, thermal)
1100# 441 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1101#elif defined(MFC_OpenMP)
1102# 441 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1103!$omp declare target (bubble_model, thermal)
1104# 441 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1105#endif
1106
1107 real(wp), allocatable, dimension(:, :, :) :: ptil !< Pressure modification
1108
1109 real(wp) :: poly_sigma !< log normal sigma for polydisperse PDF
1110
1111# 446 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1112#if defined(MFC_OpenACC)
1113# 446 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1114!$acc declare create(ptil, poly_sigma)
1115# 446 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1116#elif defined(MFC_OpenMP)
1117# 446 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1118!$omp declare target (ptil, poly_sigma)
1119# 446 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1120#endif
1121
1122 logical :: qbmm !< Quadrature moment method
1123 integer, parameter :: nmom = 6 !< Number of carried moments per R0 location
1124 integer :: nmomsp !< Number of moments required by ensemble-averaging
1125 integer :: nmomtot !< Total number of carried moments moments/transport equations
1126
1127 real(wp) :: pi_fac !< Factor for artificial pi_inf
1128
1129# 454 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1130#if defined(MFC_OpenACC)
1131# 454 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1132!$acc declare create(qbmm, nmomsp, nmomtot, pi_fac)
1133# 454 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1134#elif defined(MFC_OpenMP)
1135# 454 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1136!$omp declare target (qbmm, nmomsp, nmomtot, pi_fac)
1137# 454 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1138#endif
1139
1140# 457 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1141
1142# 457 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1143#if defined(MFC_OpenACC)
1144# 457 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1145!$acc declare create(nb)
1146# 457 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1147#elif defined(MFC_OpenMP)
1148# 457 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1149!$omp declare target (nb)
1150# 457 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1151#endif
1152# 459 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1153
1154 type(scalar_field), allocatable, dimension(:) :: mom_sp
1155 type(scalar_field), allocatable, dimension(:, :, :) :: mom_3d
1156
1157# 462 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1158#if defined(MFC_OpenACC)
1159# 462 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1160!$acc declare create(mom_sp, mom_3d)
1161# 462 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1162#elif defined(MFC_OpenMP)
1163# 462 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1164!$omp declare target (mom_sp, mom_3d)
1165# 462 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1166#endif
1167
1168 !> @}
1169
1171
1172# 467 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1173#if defined(MFC_OpenACC)
1174# 467 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1175!$acc declare create(chem_params)
1176# 467 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1177#elif defined(MFC_OpenMP)
1178# 467 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1179!$omp declare target (chem_params)
1180# 467 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1181#endif
1182
1183 !> @name Physical bubble parameters (see Ando 2010, Preston 2007)
1184 !> @{
1185 real(wp) :: phi_vg, phi_gv, pe_c, tw, k_vl, k_gl
1186
1187# 472 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1188#if defined(MFC_OpenACC)
1189# 472 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1190!$acc declare create(phi_vg, phi_gv, Pe_c, Tw, k_vl, k_gl)
1191# 472 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1192#elif defined(MFC_OpenMP)
1193# 472 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1194!$omp declare target (phi_vg, phi_gv, Pe_c, Tw, k_vl, k_gl)
1195# 472 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1196#endif
1197
1198 real(wp), dimension(:), allocatable :: pb0, mass_g0, mass_v0, pe_t, k_v, k_g
1199 real(wp), dimension(:), allocatable :: re_trans_t, re_trans_c, im_trans_t, im_trans_c, omegan
1200
1201# 476 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1202#if defined(MFC_OpenACC)
1203# 476 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1204!$acc declare create(pb0, mass_g0, mass_v0, Pe_T, k_v, k_g)
1205# 476 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1206#elif defined(MFC_OpenMP)
1207# 476 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1208!$omp declare target (pb0, mass_g0, mass_v0, Pe_T, k_v, k_g)
1209# 476 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1210#endif
1211
1212# 477 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1213#if defined(MFC_OpenACC)
1214# 477 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1215!$acc declare create(Re_trans_T, Re_trans_c, Im_trans_T, Im_trans_c, omegaN)
1216# 477 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1217#elif defined(MFC_OpenMP)
1218# 477 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1219!$omp declare target (Re_trans_T, Re_trans_c, Im_trans_T, Im_trans_c, omegaN)
1220# 477 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1221#endif
1222
1223 real(wp) :: gam, gam_m
1224
1225# 480 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1226#if defined(MFC_OpenACC)
1227# 480 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1228!$acc declare create(gam, gam_m)
1229# 480 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1230#elif defined(MFC_OpenMP)
1231# 480 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1232!$omp declare target (gam, gam_m)
1233# 480 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1234#endif
1235
1236 real(wp) :: r0ref, p0ref, rho0ref, t0ref, ss, pv, vd, mu_l, mu_v, mu_g, &
1237 gam_v, gam_g, m_v, m_g, cp_v, cp_g, r_v, r_g
1238
1239# 484 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1240#if defined(MFC_OpenACC)
1241# 484 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1242!$acc declare create(R0ref, p0ref, rho0ref, T0ref, ss, pv, vd, mu_l, mu_v, mu_g, gam_v, gam_g, M_v, M_g, cp_v, cp_g, R_v, R_g)
1243# 484 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1244#elif defined(MFC_OpenMP)
1245# 484 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1246!$omp declare target (R0ref, p0ref, rho0ref, T0ref, ss, pv, vd, mu_l, mu_v, mu_g, gam_v, gam_g, M_v, M_g, cp_v, cp_g, R_v, R_g)
1247# 484 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1248#endif
1249# 486 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1250 !> @}
1251
1252 !> @name Acoustic acoustic_source parameters
1253 !> @{
1254 logical :: acoustic_source !< Acoustic source switch
1255 type(acoustic_parameters), dimension(num_probes_max) :: acoustic !< Acoustic source parameters
1256 integer :: num_source !< Number of acoustic sources
1257 !> @}
1258
1259# 494 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1260#if defined(MFC_OpenACC)
1261# 494 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1262!$acc declare create(acoustic_source, acoustic, num_source)
1263# 494 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1264#elif defined(MFC_OpenMP)
1265# 494 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1266!$omp declare target (acoustic_source, acoustic, num_source)
1267# 494 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1268#endif
1269
1270 !> @name Surface tension parameters
1271 !> @{
1272
1273 real(wp) :: sigma
1275
1276# 501 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1277#if defined(MFC_OpenACC)
1278# 501 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1279!$acc declare create(sigma, surface_tension)
1280# 501 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1281#elif defined(MFC_OpenMP)
1282# 501 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1283!$omp declare target (sigma, surface_tension)
1284# 501 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1285#endif
1286 !> @}
1287
1288 integer :: momxb, momxe
1289 integer :: advxb, advxe
1290 integer :: contxb, contxe
1291 integer :: intxb, intxe
1292 integer :: bubxb, bubxe
1293 integer :: strxb, strxe
1294 integer :: chemxb, chemxe
1295 integer :: xibeg, xiend
1296
1297# 512 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1298#if defined(MFC_OpenACC)
1299# 512 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1300!$acc declare create(momxb, momxe, advxb, advxe, contxb, contxe)
1301# 512 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1302#elif defined(MFC_OpenMP)
1303# 512 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1304!$omp declare target (momxb, momxe, advxb, advxe, contxb, contxe)
1305# 512 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1306#endif
1307
1308# 513 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1309#if defined(MFC_OpenACC)
1310# 513 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1311!$acc declare create(intxb, intxe, bubxb, bubxe)
1312# 513 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1313#elif defined(MFC_OpenMP)
1314# 513 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1315!$omp declare target (intxb, intxe, bubxb, bubxe)
1316# 513 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1317#endif
1318
1319# 514 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1320#if defined(MFC_OpenACC)
1321# 514 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1322!$acc declare create(strxb, strxe, chemxb, chemxe)
1323# 514 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1324#elif defined(MFC_OpenMP)
1325# 514 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1326!$omp declare target (strxb, strxe, chemxb, chemxe)
1327# 514 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1328#endif
1329
1330# 515 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1331#if defined(MFC_OpenACC)
1332# 515 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1333!$acc declare create(xibeg, xiend)
1334# 515 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1335#elif defined(MFC_OpenMP)
1336# 515 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1337!$omp declare target (xibeg, xiend)
1338# 515 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1339#endif
1340
1341 real(wp), allocatable, dimension(:) :: gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps
1342
1343# 518 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1344#if defined(MFC_OpenACC)
1345# 518 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1346!$acc declare create(gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps)
1347# 518 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1348#elif defined(MFC_OpenMP)
1349# 518 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1350!$omp declare target (gammas, gs_min, pi_infs, ps_inf, cvs, qvs, qvps)
1351# 518 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1352#endif
1353
1354 real(wp) :: mytime !< Current simulation time
1355 real(wp) :: finaltime !< Final simulation time
1356
1357 logical :: rdma_mpi
1358
1359 type(pres_field), allocatable, dimension(:) :: pb_ts
1360
1361 type(pres_field), allocatable, dimension(:) :: mv_ts
1362
1363
1364# 529 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1365#if defined(MFC_OpenACC)
1366# 529 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1367!$acc declare create(pb_ts, mv_ts)
1368# 529 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1369#elif defined(MFC_OpenMP)
1370# 529 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1371!$omp declare target (pb_ts, mv_ts)
1372# 529 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1373#endif
1374
1375 !> @name lagrangian subgrid bubble parameters
1376 !> @{!
1377 logical :: bubbles_lagrange !< Lagrangian subgrid bubble model switch
1378 type(bubbles_lagrange_parameters) :: lag_params !< Lagrange bubbles' parameters
1379
1380# 535 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1381#if defined(MFC_OpenACC)
1382# 535 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1383!$acc declare create(bubbles_lagrange, lag_params)
1384# 535 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1385#elif defined(MFC_OpenMP)
1386# 535 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1387!$omp declare target (bubbles_lagrange, lag_params)
1388# 535 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1389#endif
1390 !> @}
1391
1392 real(wp) :: bx0 !< Constant magnetic field in the x-direction (1D)
1393
1394# 539 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1395#if defined(MFC_OpenACC)
1396# 539 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1397!$acc declare create(Bx0)
1398# 539 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1399#elif defined(MFC_OpenMP)
1400# 539 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1401!$omp declare target (Bx0)
1402# 539 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1403#endif
1404
1405 logical :: fft_wrt
1406 logical :: dummy !< AMDFlang workaround: keep a dummy logical to avoid a compiler case-optimization bug when a parameter+GPU-kernel conditional is false
1407
1408 !> @name Continuum damage model parameters
1409 !> @{!
1410 real(wp) :: tau_star !< Stress threshold for continuum damage modeling
1411 real(wp) :: cont_damage_s !< Exponent s for continuum damage modeling
1412 real(wp) :: alpha_bar !< Damage rate factor for continuum damage modeling
1413
1414# 549 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1415#if defined(MFC_OpenACC)
1416# 549 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1417!$acc declare create(tau_star, cont_damage_s, alpha_bar)
1418# 549 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1419#elif defined(MFC_OpenMP)
1420# 549 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1421!$omp declare target (tau_star, cont_damage_s, alpha_bar)
1422# 549 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1423#endif
1424 !> @}
1425
1426 !> @name MHD Hyperbolic cleaning parameters
1427 !> @{!
1428 real(wp) :: hyper_cleaning_speed !< Hyperbolic cleaning wave speed (c_h)
1429 real(wp) :: hyper_cleaning_tau !< Hyperbolic cleaning tau
1430
1431# 556 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1432#if defined(MFC_OpenACC)
1433# 556 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1434!$acc declare create(hyper_cleaning_speed, hyper_cleaning_tau)
1435# 556 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1436#elif defined(MFC_OpenMP)
1437# 556 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1438!$omp declare target (hyper_cleaning_speed, hyper_cleaning_tau)
1439# 556 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1440#endif
1441 !> @}
1442
1443contains
1444
1445 !> Assigns default values to the user inputs before reading
1446 !! them in. This enables for an easier consistency check of
1447 !! these parameters once they are read from the input file.
1449
1450 integer :: i, j !< Generic loop iterator
1451
1452 ! Logistics
1453 case_dir = '.'
1454 run_time_info = .false.
1455 t_step_old = dflt_int
1456
1457 ! Computational domain parameters
1458 m = dflt_int; n = 0; p = 0
1460
1461 cyl_coord = .false.
1462
1463 dt = dflt_real
1464
1465 cfl_adap_dt = .false.
1466 cfl_const_dt = .false.
1467 cfl_dt = .false.
1468 cfl_target = dflt_real
1469
1470 t_step_start = dflt_int
1471 t_step_stop = dflt_int
1472 t_step_save = dflt_int
1473 t_step_print = 1
1474
1475 n_start = dflt_int
1476 t_stop = dflt_real
1477 t_save = dflt_real
1478
1479 ! NVIDIA UVM options
1480 nv_uvm_out_of_core = .false.
1481 nv_uvm_igr_temps_on_gpu = 3 ! => jac, jac_rhs, and jac_old on GPU (default)
1482 nv_uvm_pref_gpu = .false.
1483
1484 ! Simulation algorithm parameters
1485 model_eqns = dflt_int
1486 mpp_lim = .false.
1487 time_stepper = dflt_int
1488 weno_eps = dflt_real
1489 teno_ct = dflt_real
1490 mp_weno = .false.
1491 weno_avg = .false.
1492 weno_re_flux = .false.
1493 riemann_solver = dflt_int
1494 low_mach = 0
1495 wave_speeds = dflt_int
1496 avg_state = dflt_int
1497 alt_soundspeed = .false.
1498 null_weights = .false.
1499 mixture_err = .false.
1500 parallel_io = .false.
1501 file_per_process = .false.
1502 precision = 2
1503 down_sample = .false.
1504 relax = .false.
1505 relax_model = dflt_int
1506 palpha_eps = dflt_real
1507 ptgalpha_eps = dflt_real
1508 hypoelasticity = .false.
1509 hyperelasticity = .false.
1510 int_comp = .false.
1511 ic_eps = dflt_ic_eps
1512 ic_beta = dflt_ic_beta
1513 elasticity = .false.
1514 hyper_model = dflt_int
1515 b_size = dflt_int
1516 tensor_size = dflt_int
1517 rdma_mpi = .false.
1518 shear_stress = .false.
1519 bulk_stress = .false.
1520 cont_damage = .false.
1521 hyper_cleaning = .false.
1522 num_igr_iters = dflt_num_igr_iters
1523 num_igr_warm_start_iters = dflt_num_igr_warm_start_iters
1524 alf_factor = dflt_alf_factor
1525
1526# 643 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1527 mapped_weno = .false.
1528 wenoz = .false.
1529 teno = .false.
1530 wenoz_q = dflt_real
1531 igr = .false.
1532 igr_order = dflt_int
1533 igr_pres_lim = .false.
1534 viscous = .false.
1535 igr_iter_solver = 1
1536# 653 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1537
1538 chem_params%diffusion = .false.
1539 chem_params%reactions = .false.
1540 chem_params%gamma_method = 1
1541 chem_params%transport_model = 1
1542
1543 num_bc_patches = 0
1544 bc_io = .false.
1545
1546 bc_x%beg = dflt_int; bc_x%end = dflt_int
1547 bc_y%beg = dflt_int; bc_y%end = dflt_int
1548 bc_z%beg = dflt_int; bc_z%end = dflt_int
1549
1550# 667 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1551# 668 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1552 bc_x%vb1 = 0._wp
1553 bc_x%ve1 = 0._wp
1554# 668 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1555 bc_x%vb2 = 0._wp
1556 bc_x%ve2 = 0._wp
1557# 668 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1558 bc_x%vb3 = 0._wp
1559 bc_x%ve3 = 0._wp
1560# 671 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1561# 667 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1562# 668 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1563 bc_y%vb1 = 0._wp
1564 bc_y%ve1 = 0._wp
1565# 668 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1566 bc_y%vb2 = 0._wp
1567 bc_y%ve2 = 0._wp
1568# 668 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1569 bc_y%vb3 = 0._wp
1570 bc_y%ve3 = 0._wp
1571# 671 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1572# 667 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1573# 668 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1574 bc_z%vb1 = 0._wp
1575 bc_z%ve1 = 0._wp
1576# 668 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1577 bc_z%vb2 = 0._wp
1578 bc_z%ve2 = 0._wp
1579# 668 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1580 bc_z%vb3 = 0._wp
1581 bc_z%ve3 = 0._wp
1582# 671 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1583# 672 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1584
1585 x_domain%beg = dflt_real; x_domain%end = dflt_real
1586 y_domain%beg = dflt_real; y_domain%end = dflt_real
1587 z_domain%beg = dflt_real; z_domain%end = dflt_real
1588
1589 ! Fluids physical parameters
1590 do i = 1, num_fluids_max
1591 fluid_pp(i)%gamma = dflt_real
1592 fluid_pp(i)%pi_inf = dflt_real
1593 fluid_pp(i)%cv = 0._wp
1594 fluid_pp(i)%qv = 0._wp
1595 fluid_pp(i)%qvp = 0._wp
1596 fluid_pp(i)%Re(:) = dflt_real
1597 fluid_pp(i)%G = 0._wp
1598 end do
1599
1600 ! Subgrid bubble parameters
1601 bub_pp%R0ref = dflt_real; r0ref = dflt_real
1602 bub_pp%p0ref = dflt_real; p0ref = dflt_real
1603 bub_pp%rho0ref = dflt_real; rho0ref = dflt_real
1604 bub_pp%T0ref = dflt_real; t0ref = dflt_real
1605 bub_pp%ss = dflt_real; ss = dflt_real
1606 bub_pp%pv = dflt_real; pv = dflt_real
1607 bub_pp%vd = dflt_real; vd = dflt_real
1608 bub_pp%mu_l = dflt_real; mu_l = dflt_real
1609 bub_pp%mu_v = dflt_real; mu_v = dflt_real
1610 bub_pp%mu_g = dflt_real; mu_g = dflt_real
1611 bub_pp%gam_v = dflt_real; gam_v = dflt_real
1612 bub_pp%gam_g = dflt_real; gam_g = dflt_real
1613 bub_pp%M_v = dflt_real; m_v = dflt_real
1614 bub_pp%M_g = dflt_real; m_g = dflt_real
1615 bub_pp%k_v = dflt_real;
1616 bub_pp%k_g = dflt_real;
1617 bub_pp%cp_v = dflt_real; cp_v = dflt_real
1618 bub_pp%cp_g = dflt_real; cp_g = dflt_real
1619 bub_pp%R_v = dflt_real; r_v = dflt_real
1620 bub_pp%R_g = dflt_real; r_g = dflt_real
1621
1622 ! Tait EOS
1623 rhoref = dflt_real
1624 pref = dflt_real
1625
1626 ! Immersed Boundaries
1627 ib = .false.
1628 num_ibs = dflt_int
1629
1630 ! Bubble modeling
1631 bubbles_euler = .false.
1632 bubble_model = 1
1633 polytropic = .true.
1634 polydisperse = .false.
1635 thermal = dflt_int
1636 r0ref = dflt_real
1637
1638# 727 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1639 nb = 1
1640 recon_type = weno_type
1641 weno_order = dflt_int
1642 muscl_order = dflt_int
1643 muscl_lim = dflt_int
1644 num_fluids = dflt_int
1645# 734 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1646
1647 adv_n = .false.
1648 adap_dt = .false.
1649 adap_dt_tol = dflt_adap_dt_tol
1650 adap_dt_max_iters = dflt_adap_dt_max_iters
1651
1652 pi_fac = 1._wp
1653
1654 ! User inputs for qbmm for simulation code
1655 qbmm = .false.
1656
1657 eu = dflt_real
1658 ca = dflt_real
1659 re_inv = dflt_real
1660 web = dflt_real
1661 poly_sigma = dflt_real
1662
1663 ! Acoustic source
1664 acoustic_source = .false.
1665 num_source = dflt_int
1666
1667 ! Surface tension
1668 sigma = dflt_real
1669 surface_tension = .false.
1670
1671 bodyforces = .false.
1672 bf_x = .false.; bf_y = .false.; bf_z = .false.
1673 !< amplitude, frequency, and phase shift sinusoid in each direction
1674# 763 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1675# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1676 k_x = dflt_real
1677# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1678 p_x = dflt_real
1679# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1680 w_x = dflt_real
1681# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1682 g_x = dflt_real
1683# 766 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1684# 763 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1685# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1686 k_y = dflt_real
1687# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1688 p_y = dflt_real
1689# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1690 w_y = dflt_real
1691# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1692 g_y = dflt_real
1693# 766 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1694# 763 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1695# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1696 k_z = dflt_real
1697# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1698 p_z = dflt_real
1699# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1700 w_z = dflt_real
1701# 764 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1702 g_z = dflt_real
1703# 766 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1704# 767 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1705
1706 fft_wrt = .false.
1707 dummy = .false.
1708
1709 do j = 1, num_probes_max
1710 acoustic(j)%pulse = dflt_int
1711 acoustic(j)%support = dflt_int
1712 acoustic(j)%dipole = .false.
1713 do i = 1, 3
1714 acoustic(j)%loc(i) = dflt_real
1715 end do
1716 acoustic(j)%mag = dflt_real
1717 acoustic(j)%length = dflt_real
1718 acoustic(j)%height = dflt_real
1719 acoustic(j)%wavelength = dflt_real
1720 acoustic(j)%frequency = dflt_real
1721 acoustic(j)%gauss_sigma_dist = dflt_real
1722 acoustic(j)%gauss_sigma_time = dflt_real
1723 acoustic(j)%npulse = dflt_real
1724 acoustic(j)%dir = dflt_real
1725 acoustic(j)%delay = dflt_real
1726 acoustic(j)%foc_length = dflt_real
1727 acoustic(j)%aperture = dflt_real
1728 acoustic(j)%element_spacing_angle = dflt_real
1729 acoustic(j)%element_polygon_ratio = dflt_real
1730 acoustic(j)%rotate_angle = dflt_real
1731 acoustic(j)%num_elements = dflt_int
1732 acoustic(j)%element_on = dflt_int
1733 acoustic(j)%bb_num_freq = dflt_int
1734 acoustic(j)%bb_lowest_freq = dflt_real
1735 acoustic(j)%bb_bandwidth = dflt_real
1736 end do
1737
1738 fd_order = dflt_int
1739 probe_wrt = .false.
1740 integral_wrt = .false.
1741 num_probes = dflt_int
1742 num_integrals = dflt_int
1743
1744 do i = 1, num_probes_max
1745 probe(i)%x = dflt_real
1746 probe(i)%y = dflt_real
1747 probe(i)%z = dflt_real
1748 end do
1749
1750 do i = 1, num_probes_max
1751 integral(i)%xmin = dflt_real
1752 integral(i)%xmax = dflt_real
1753 integral(i)%ymin = dflt_real
1754 integral(i)%ymax = dflt_real
1755 integral(i)%ymin = dflt_real
1756 integral(i)%ymax = dflt_real
1757 end do
1758
1759 ! GRCBC flags
1760# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1761 bc_x%grcbc_in = .false.
1762 bc_x%grcbc_out = .false.
1763 bc_x%grcbc_vel_out = .false.
1764# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1765 bc_y%grcbc_in = .false.
1766 bc_y%grcbc_out = .false.
1767 bc_y%grcbc_vel_out = .false.
1768# 823 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1769 bc_z%grcbc_in = .false.
1770 bc_z%grcbc_out = .false.
1771 bc_z%grcbc_vel_out = .false.
1772# 827 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1773
1774 ! Lagrangian subgrid bubble model
1775 bubbles_lagrange = .false.
1776 lag_params%solver_approach = dflt_int
1777 lag_params%cluster_type = dflt_int
1778 lag_params%pressure_corrector = .false.
1779 lag_params%smooth_type = dflt_int
1780 lag_params%heatTransfer_model = .false.
1781 lag_params%massTransfer_model = .false.
1782 lag_params%write_bubbles = .false.
1783 lag_params%write_bubbles_stats = .false.
1784 lag_params%nBubs_glb = dflt_int
1785 lag_params%epsilonb = 1._wp
1786 lag_params%charwidth = dflt_real
1787 lag_params%valmaxvoid = dflt_real
1788
1789 ! Continuum damage model
1790 tau_star = dflt_real
1791 cont_damage_s = dflt_real
1792 alpha_bar = dflt_real
1793
1794 ! MHD
1795 bx0 = dflt_real
1796 hyper_cleaning_speed = dflt_real
1797 hyper_cleaning_tau = dflt_real
1798
1799# 854 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1800 mhd = .false.
1801 relativity = .false.
1802# 857 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1803
1804 do i = 1, num_patches_max
1805 patch_ib(i)%geometry = dflt_int
1806 patch_ib(i)%x_centroid = 0._wp
1807 patch_ib(i)%y_centroid = 0._wp
1808 patch_ib(i)%z_centroid = 0._wp
1809 patch_ib(i)%length_x = dflt_real
1810 patch_ib(i)%length_y = dflt_real
1811 patch_ib(i)%length_z = dflt_real
1812 patch_ib(i)%radius = dflt_real
1813 patch_ib(i)%theta = dflt_real
1814 patch_ib(i)%c = dflt_real
1815 patch_ib(i)%t = dflt_real
1816 patch_ib(i)%m = dflt_real
1817 patch_ib(i)%p = dflt_real
1818 patch_ib(i)%slip = .false.
1819
1820 ! Proper default values for translating STL models
1821 patch_ib(i)%model_scale(:) = 1._wp
1822 patch_ib(i)%model_translate(:) = 0._wp
1823 patch_ib(i)%model_rotate(:) = 0._wp
1824 patch_ib(i)%model_filepath(:) = dflt_char
1825 patch_ib(i)%model_spc = num_ray
1826 patch_ib(i)%model_threshold = ray_tracing_threshold
1827
1828 ! Variables to handle moving imersed boundaries, defaulting to no movement
1829 patch_ib(i)%moving_ibm = 0
1830 patch_ib(i)%vel(:) = 0._wp
1831 patch_ib(i)%angles(:) = 0._wp
1832 patch_ib(i)%angular_vel(:) = 0._wp
1833 patch_ib(i)%mass = dflt_real
1834 patch_ib(i)%moment = dflt_real
1835 patch_ib(i)%centroid_offset(:) = 0._wp
1836
1837 ! sets values of a rotation matrix which can be used when calculating rotations
1838 patch_ib(i)%rotation_matrix = 0._wp
1839 patch_ib(i)%rotation_matrix(1, 1) = 1._wp
1840 patch_ib(i)%rotation_matrix(2, 2) = 1._wp
1841 patch_ib(i)%rotation_matrix(3, 3) = 1._wp
1842 patch_ib(i)%rotation_matrix_inverse = patch_ib(i)%rotation_matrix
1843 end do
1844
1846
1847 !> The computation of parameters, the allocation of memory,
1848 !! the association of pointers and/or the execution of any
1849 !! other procedures that are necessary to setup the module.
1851
1852 integer :: i, j, k
1853 integer :: fac
1854
1855# 910 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1856 ! Determining the degree of the WENO polynomials
1857 if (recon_type == weno_type) then
1858 weno_polyn = (weno_order - 1)/2
1859 if (teno) then
1861 else
1863 end if
1864 elseif (recon_type == muscl_type) then
1866 end if
1867
1868# 921 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1869#if defined(MFC_OpenACC)
1870# 921 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1871!$acc update device(weno_polyn, muscl_polyn)
1872# 921 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1873#elif defined(MFC_OpenMP)
1874# 921 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1875!$omp target update to(weno_polyn, muscl_polyn)
1876# 921 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1877#endif
1878
1879# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1880#if defined(MFC_OpenACC)
1881# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1882!$acc update device(weno_num_stencils)
1883# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1884#elif defined(MFC_OpenMP)
1885# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1886!$omp target update to(weno_num_stencils)
1887# 922 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1888#endif
1889
1890# 923 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1891#if defined(MFC_OpenACC)
1892# 923 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1893!$acc update device(nb)
1894# 923 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1895#elif defined(MFC_OpenMP)
1896# 923 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1897!$omp target update to(nb)
1898# 923 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1899#endif
1900
1901# 924 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1902#if defined(MFC_OpenACC)
1903# 924 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1904!$acc update device(num_dims, num_vels, num_fluids)
1905# 924 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1906#elif defined(MFC_OpenMP)
1907# 924 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1908!$omp target update to(num_dims, num_vels, num_fluids)
1909# 924 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1910#endif
1911
1912# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1913#if defined(MFC_OpenACC)
1914# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1915!$acc update device(igr, igr_order, igr_iter_solver)
1916# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1917#elif defined(MFC_OpenMP)
1918# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1919!$omp target update to(igr, igr_order, igr_iter_solver)
1920# 925 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1921#endif
1922# 927 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
1923
1924 ! Initializing the number of fluids for which viscous effects will
1925 ! be non-negligible, the number of distinctive material interfaces
1926 ! for which surface tension will be important and also, the number
1927 ! of fluids for which the physical and geometric curvatures of the
1928 ! interfaces will be computed
1929 re_size = 0
1930 re_size_max = 0
1931
1932 ! Gamma/Pi_inf Model
1933 if (model_eqns == 1) then
1934
1935 ! Annotating structure of the state and flux vectors belonging
1936 ! to the system of equations defined by the selected number of
1937 ! spatial dimensions and the gamma/pi_inf model
1938 cont_idx%beg = 1
1939 cont_idx%end = cont_idx%beg
1940 mom_idx%beg = cont_idx%end + 1
1941 mom_idx%end = cont_idx%end + num_vels
1942 e_idx = mom_idx%end + 1
1943 adv_idx%beg = e_idx + 1
1944 adv_idx%end = adv_idx%beg + 1
1945 gamma_idx = adv_idx%beg
1946 pi_inf_idx = adv_idx%end
1947 sys_size = adv_idx%end
1948
1949 ! Volume Fraction Model
1950 else
1951
1952 ! Annotating structure of the state and flux vectors belonging
1953 ! to the system of equations defined by the selected number of
1954 ! spatial dimensions and the volume fraction model
1955 if (model_eqns == 2) then
1956 cont_idx%beg = 1
1957 cont_idx%end = num_fluids
1958 mom_idx%beg = cont_idx%end + 1
1959 mom_idx%end = cont_idx%end + num_vels
1960 e_idx = mom_idx%end + 1
1961
1962 if (igr) then
1963 ! Volume fractions are stored in the indices immediately following
1964 ! the energy equation. IGR tracks a total of (N-1) volume fractions
1965 ! for N fluids, hence the "-1" in adv_idx%end. If num_fluids = 1
1966 ! then adv_idx%end < adv_idx%beg, which skips all loops over the
1967 ! volume fractions since there is no volume fraction to track
1968 adv_idx%beg = e_idx + 1 ! Alpha for fluid 1
1969 adv_idx%end = e_idx + num_fluids - 1
1970 else
1971 ! Volume fractions are stored in the indices immediately following
1972 ! the energy equation. WENO/MUSCL + Riemann tracks a total of (N)
1973 ! volume fractions for N fluids, hence the lack of "-1" in adv_idx%end
1974 adv_idx%beg = e_idx + 1
1975 adv_idx%end = e_idx + num_fluids
1976 end if
1977
1978 sys_size = adv_idx%end
1979
1980 if (bubbles_euler) then
1981 alf_idx = adv_idx%end
1982 else
1983 alf_idx = 1
1984 end if
1985
1986 if (bubbles_euler) then
1987 bub_idx%beg = sys_size + 1
1988 if (qbmm) then
1989 nmomsp = 4 !number of special moments
1990 if (nnode == 4) then
1991 ! nmom = 6 : It is already a parameter
1992 nmomtot = nmom*nb
1993 end if
1994 bub_idx%end = adv_idx%end + nb*nmom
1995 else
1996 if (.not. polytropic) then
1997 bub_idx%end = sys_size + 4*nb
1998 else
1999 bub_idx%end = sys_size + 2*nb
2000 end if
2001 end if
2002 sys_size = bub_idx%end
2003
2004 if (adv_n) then
2005 n_idx = bub_idx%end + 1
2006 sys_size = n_idx
2007 end if
2008
2009#ifdef MFC_DEBUG
2010# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2011 block
2012# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2013 use iso_fortran_env, only: output_unit
2014# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2015
2016# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2017 print *, 'm_global_parameters.fpp:1013: ', '@:ALLOCATE(bub_idx%rs(nb), bub_idx%vs(nb))'
2018# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2019
2020# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2021 call flush (output_unit)
2022# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2023 end block
2024# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2025#endif
2026# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2027 allocate (bub_idx%rs(nb), bub_idx%vs(nb))
2028# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2029
2030# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2031
2032# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2033
2034# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2035#if defined(MFC_OpenACC)
2036# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2037!$acc enter data create(bub_idx%rs, bub_idx%vs)
2038# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2039#elif defined(MFC_OpenMP)
2040# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2041!$omp target enter data map(always,alloc:bub_idx%rs, bub_idx%vs)
2042# 1013 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2043#endif
2044#ifdef MFC_DEBUG
2045# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2046 block
2047# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2048 use iso_fortran_env, only: output_unit
2049# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2050
2051# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2052 print *, 'm_global_parameters.fpp:1014: ', '@:ALLOCATE(bub_idx%ps(nb), bub_idx%ms(nb))'
2053# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2054
2055# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2056 call flush (output_unit)
2057# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2058 end block
2059# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2060#endif
2061# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2062 allocate (bub_idx%ps(nb), bub_idx%ms(nb))
2063# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2064
2065# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2066
2067# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2068
2069# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2070#if defined(MFC_OpenACC)
2071# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2072!$acc enter data create(bub_idx%ps, bub_idx%ms)
2073# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2074#elif defined(MFC_OpenMP)
2075# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2076!$omp target enter data map(always,alloc:bub_idx%ps, bub_idx%ms)
2077# 1014 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2078#endif
2079
2080 gam = bub_pp%gam_g
2081
2082 if (qbmm) then
2083#ifdef MFC_DEBUG
2084# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2085 block
2086# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2087 use iso_fortran_env, only: output_unit
2088# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2089
2090# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2091 print *, 'm_global_parameters.fpp:1019: ', '@:ALLOCATE(bub_idx%moms(nb, nmom))'
2092# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2093
2094# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2095 call flush (output_unit)
2096# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2097 end block
2098# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2099#endif
2100# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2101 allocate (bub_idx%moms(nb, nmom))
2102# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2103
2104# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2105
2106# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2107#if defined(MFC_OpenACC)
2108# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2109!$acc enter data create(bub_idx%moms)
2110# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2111#elif defined(MFC_OpenMP)
2112# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2113!$omp target enter data map(always,alloc:bub_idx%moms)
2114# 1019 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2115#endif
2116 do i = 1, nb
2117 do j = 1, nmom
2118 bub_idx%moms(i, j) = bub_idx%beg + (j - 1) + (i - 1)*nmom
2119 end do
2120 bub_idx%rs(i) = bub_idx%moms(i, 2)
2121 bub_idx%vs(i) = bub_idx%moms(i, 3)
2122 end do
2123
2124 else
2125 do i = 1, nb
2126 if (.not. polytropic) then
2127 fac = 4
2128 else
2129 fac = 2
2130 end if
2131
2132 bub_idx%rs(i) = bub_idx%beg + (i - 1)*fac
2133 bub_idx%vs(i) = bub_idx%rs(i) + 1
2134
2135 if (.not. polytropic) then
2136 bub_idx%ps(i) = bub_idx%vs(i) + 1
2137 bub_idx%ms(i) = bub_idx%ps(i) + 1
2138 end if
2139 end do
2140 end if
2141 end if
2142
2143 if (mhd) then
2144 b_idx%beg = sys_size + 1
2145 if (n == 0) then
2146 b_idx%end = sys_size + 2 ! 1D: By, Bz
2147 else
2148 b_idx%end = sys_size + 3 ! 2D/3D: Bx, By, Bz
2149 end if
2150 sys_size = b_idx%end
2151 end if
2152
2153 else if (model_eqns == 3) then
2154 cont_idx%beg = 1
2155 cont_idx%end = num_fluids
2156 mom_idx%beg = cont_idx%end + 1
2157 mom_idx%end = cont_idx%end + num_vels
2158 e_idx = mom_idx%end + 1
2159 adv_idx%beg = e_idx + 1
2160 adv_idx%end = e_idx + num_fluids
2161 alf_idx = adv_idx%end
2162 internalenergies_idx%beg = adv_idx%end + 1
2165
2166 else if (model_eqns == 4) then
2167 cont_idx%beg = 1 ! one continuity equation
2168 cont_idx%end = 1 !num_fluids
2169 mom_idx%beg = cont_idx%end + 1 ! one momentum equation in each direction
2170 mom_idx%end = cont_idx%end + num_vels
2171 e_idx = mom_idx%end + 1 ! one energy equation
2172 adv_idx%beg = e_idx + 1
2173 adv_idx%end = adv_idx%beg !one volume advection equation
2174 alf_idx = adv_idx%end
2175 sys_size = adv_idx%end
2176
2177 if (bubbles_euler) then
2178 bub_idx%beg = sys_size + 1
2179 bub_idx%end = sys_size + 2*nb
2180 if (.not. polytropic) then
2181 bub_idx%end = sys_size + 4*nb
2182 end if
2183 sys_size = bub_idx%end
2184
2185#ifdef MFC_DEBUG
2186# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2187 block
2188# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2189 use iso_fortran_env, only: output_unit
2190# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2191
2192# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2193 print *, 'm_global_parameters.fpp:1089: ', '@:ALLOCATE(bub_idx%rs(nb), bub_idx%vs(nb))'
2194# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2195
2196# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2197 call flush (output_unit)
2198# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2199 end block
2200# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2201#endif
2202# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2203 allocate (bub_idx%rs(nb), bub_idx%vs(nb))
2204# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2205
2206# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2207
2208# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2209
2210# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2211#if defined(MFC_OpenACC)
2212# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2213!$acc enter data create(bub_idx%rs, bub_idx%vs)
2214# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2215#elif defined(MFC_OpenMP)
2216# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2217!$omp target enter data map(always,alloc:bub_idx%rs, bub_idx%vs)
2218# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2219#endif
2220#ifdef MFC_DEBUG
2221# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2222 block
2223# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2224 use iso_fortran_env, only: output_unit
2225# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2226
2227# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2228 print *, 'm_global_parameters.fpp:1090: ', '@:ALLOCATE(bub_idx%ps(nb), bub_idx%ms(nb))'
2229# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2230
2231# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2232 call flush (output_unit)
2233# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2234 end block
2235# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2236#endif
2237# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2238 allocate (bub_idx%ps(nb), bub_idx%ms(nb))
2239# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2240
2241# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2242
2243# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2244
2245# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2246#if defined(MFC_OpenACC)
2247# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2248!$acc enter data create(bub_idx%ps, bub_idx%ms)
2249# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2250#elif defined(MFC_OpenMP)
2251# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2252!$omp target enter data map(always,alloc:bub_idx%ps, bub_idx%ms)
2253# 1090 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2254#endif
2255
2256 do i = 1, nb
2257 if (polytropic) then
2258 fac = 2
2259 else
2260 fac = 4
2261 end if
2262
2263 bub_idx%rs(i) = bub_idx%beg + (i - 1)*fac
2264 bub_idx%vs(i) = bub_idx%rs(i) + 1
2265
2266 if (.not. polytropic) then
2267 bub_idx%ps(i) = bub_idx%vs(i) + 1
2268 bub_idx%ms(i) = bub_idx%ps(i) + 1
2269 end if
2270 end do
2271 end if
2272 end if
2273
2274 ! Determining the number of fluids for which the shear and the
2275 ! volume Reynolds numbers, e.g. viscous effects, are important
2276 do i = 1, num_fluids
2277 if (fluid_pp(i)%Re(1) > 0) re_size(1) = re_size(1) + 1
2278 if (fluid_pp(i)%Re(2) > 0) re_size(2) = re_size(2) + 1
2279 end do
2280
2281 if (re_size(1) > 0._wp) shear_stress = .true.
2282 if (re_size(2) > 0._wp) bulk_stress = .true.
2283
2284 re_size_max = maxval(re_size)
2285
2286
2287# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2288#if defined(MFC_OpenACC)
2289# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2290!$acc update device(Re_size, Re_size_max, shear_stress, bulk_stress)
2291# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2292#elif defined(MFC_OpenMP)
2293# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2294!$omp target update to(Re_size, Re_size_max, shear_stress, bulk_stress)
2295# 1122 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2296#endif
2297
2298 ! Bookkeeping the indexes of any viscous fluids and any pairs of
2299 ! fluids whose interface will support effects of surface tension
2300 if (viscous) then
2301
2302#ifdef MFC_DEBUG
2303# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2304 block
2305# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2306 use iso_fortran_env, only: output_unit
2307# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2308
2309# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2310 print *, 'm_global_parameters.fpp:1128: ', '@:ALLOCATE(Re_idx(1:2, 1:Re_size_max))'
2311# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2312
2313# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2314 call flush (output_unit)
2315# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2316 end block
2317# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2318#endif
2319# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2320 allocate (re_idx(1:2, 1:re_size_max))
2321# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2322
2323# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2324
2325# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2326#if defined(MFC_OpenACC)
2327# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2328!$acc enter data create(Re_idx)
2329# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2330#elif defined(MFC_OpenMP)
2331# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2332!$omp target enter data map(always,alloc:Re_idx)
2333# 1128 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2334#endif
2335
2336 k = 0
2337 do i = 1, num_fluids
2338 if (fluid_pp(i)%Re(1) > 0) then
2339 k = k + 1; re_idx(1, k) = i
2340 end if
2341 end do
2342
2343 k = 0
2344 do i = 1, num_fluids
2345 if (fluid_pp(i)%Re(2) > 0) then
2346 k = k + 1; re_idx(2, k) = i
2347 end if
2348 end do
2349
2350 end if
2351
2352 end if
2353
2354 if (model_eqns == 2 .or. model_eqns == 3) then
2355
2356 if (hypoelasticity .or. hyperelasticity) then
2357 elasticity = .true.
2358 stress_idx%beg = sys_size + 1
2359 stress_idx%end = sys_size + (num_dims*(num_dims + 1))/2
2360 if (cyl_coord) stress_idx%end = stress_idx%end + 1
2361 ! number of stresses is 1 in 1D, 3 in 2D, 4 in 2D-Axisym, 6 in 3D
2362 sys_size = stress_idx%end
2363
2364 ! shear stress index is 2 for 2D and 2,4,5 for 3D
2365 if (num_dims == 1) then
2366 shear_num = 0
2367 else if (num_dims == 2) then
2368 shear_num = 1
2369 shear_indices(1) = stress_idx%beg - 1 + 2
2372 ! Both x-dir and y-dir: flip tau_xy only
2373 else if (num_dims == 3) then
2374 shear_num = 3
2375 shear_indices(1:3) = stress_idx%beg - 1 + (/2, 4, 5/)
2377 shear_bc_flip_indices(1, 1:2) = shear_indices((/1, 2/))
2378 shear_bc_flip_indices(2, 1:2) = shear_indices((/1, 3/))
2379 shear_bc_flip_indices(3, 1:2) = shear_indices((/2, 3/))
2380 ! x-dir: flip tau_xy and tau_xz
2381 ! y-dir: flip tau_xy and tau_yz
2382 ! z-dir: flip tau_xz and tau_yz
2383 end if
2384
2385# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2386#if defined(MFC_OpenACC)
2387# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2388!$acc update device(shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
2389# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2390#elif defined(MFC_OpenMP)
2391# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2392!$omp target update to(shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
2393# 1178 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2394#endif
2395 end if
2396
2397 if (hyperelasticity) then
2398 ! number of entries in the symmetric btensor plus the jacobian
2399 b_size = (num_dims*(num_dims + 1))/2 + 1
2400 ! storing the jacobian in the last entry
2401 tensor_size = num_dims**2 + 1
2402 xi_idx%beg = sys_size + 1
2403 xi_idx%end = sys_size + num_dims
2404 ! adding three more equations for the \xi field and the elastic energy
2405 sys_size = xi_idx%end + 1
2406 end if
2407
2408 if (surface_tension) then
2409 c_idx = sys_size + 1
2410 sys_size = c_idx
2411 end if
2412
2413 if (cont_damage) then
2414 damage_idx = sys_size + 1
2416 end if
2417
2418 if (hyper_cleaning) then
2419 psi_idx = sys_size + 1
2421 end if
2422
2423 end if
2424
2425 ! END: Volume Fraction Model
2426
2427 if (chemistry) then
2428 species_idx%beg = sys_size + 1
2429 species_idx%end = sys_size + num_species
2430 sys_size = species_idx%end
2431 end if
2432
2433 if (bubbles_euler .and. qbmm .and. .not. polytropic) then
2434 allocate (mpi_io_data%view(1:sys_size + 2*nb*4))
2435 allocate (mpi_io_data%var(1:sys_size + 2*nb*4))
2436 elseif (bubbles_lagrange) then
2437 allocate (mpi_io_data%view(1:sys_size + 1))
2438 allocate (mpi_io_data%var(1:sys_size + 1))
2439 else
2440 allocate (mpi_io_data%view(1:sys_size))
2441 allocate (mpi_io_data%var(1:sys_size))
2442 end if
2443
2444 if (.not. down_sample) then
2445 do i = 1, sys_size
2446 allocate (mpi_io_data%var(i)%sf(0:m, 0:n, 0:p))
2447 mpi_io_data%var(i)%sf => null()
2448 end do
2449 end if
2450 if (bubbles_euler .and. qbmm .and. .not. polytropic) then
2451 do i = sys_size + 1, sys_size + 2*nb*4
2452 allocate (mpi_io_data%var(i)%sf(0:m, 0:n, 0:p))
2453 mpi_io_data%var(i)%sf => null()
2454 end do
2455 elseif (bubbles_lagrange) then
2456 do i = 1, sys_size + 1
2457 allocate (mpi_io_data%var(i)%sf(0:m, 0:n, 0:p))
2458 mpi_io_data%var(i)%sf => null()
2459 end do
2460 end if
2461
2462 ! Configuring the WENO average flag that will be used to regulate
2463 ! whether any spatial derivatives are to computed in each cell by
2464 ! using the arithmetic mean of left and right, WENO-reconstructed,
2465 ! cell-boundary values or otherwise, the unaltered left and right,
2466 ! WENO-reconstructed, cell-boundary values
2467 wa_flg = 0._wp; if (weno_avg) wa_flg = 1._wp
2468
2469# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2470#if defined(MFC_OpenACC)
2471# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2472!$acc update device(wa_flg)
2473# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2474#elif defined(MFC_OpenMP)
2475# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2476!$omp target update to(wa_flg)
2477# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2478#endif
2479
2480 ! Resort to default WENO-JS if no other WENO scheme is selected
2481# 1256 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2482 wenojs = .not. (mapped_weno .or. wenoz .or. teno)
2483# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2484
2485 if (ib) allocate (mpi_io_ib_data%var%sf(0:m, 0:n, 0:p))
2486 np = 0
2487
2488 if (elasticity) then
2489 fd_number = max(1, fd_order/2)
2490 end if
2491
2492 if (mhd) then ! TODO merge with above; waiting for hyperelasticity PR
2493 fd_number = max(1, fd_order/2)
2494 end if
2495
2496 if (probe_wrt) then
2497 fd_number = max(1, fd_order/2)
2498 end if
2499
2500 call s_configure_coordinate_bounds(recon_type, weno_polyn, muscl_polyn, &
2503 bubbles_lagrange, m, n, p, &
2504 num_dims, igr, ib)
2505
2506# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2507#if defined(MFC_OpenACC)
2508# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2509!$acc update device(idwint, idwbuff)
2510# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2511#elif defined(MFC_OpenMP)
2512# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2513!$omp target update to(idwint, idwbuff)
2514# 1279 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2515#endif
2516
2517 ! Configuring Coordinate Direction Indexes
2518 if (bubbles_euler) then
2519#ifdef MFC_DEBUG
2520# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2521 block
2522# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2523 use iso_fortran_env, only: output_unit
2524# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2525
2526# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2527 print *, 'm_global_parameters.fpp:1283: ', '@:ALLOCATE(ptil( idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
2528# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2529
2530# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2531 call flush (output_unit)
2532# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2533 end block
2534# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2535#endif
2536# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2537 allocate (ptil( idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
2538# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2539
2540# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2541
2542# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2543#if defined(MFC_OpenACC)
2544# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2545!$acc enter data create(ptil)
2546# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2547#elif defined(MFC_OpenMP)
2548# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2549!$omp target enter data map(always,alloc:ptil)
2550# 1283 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2551#endif
2552# 1287 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2553 end if
2554
2555
2556# 1289 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2557#if defined(MFC_OpenACC)
2558# 1289 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2559!$acc update device(fd_order, fd_number)
2560# 1289 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2561#elif defined(MFC_OpenMP)
2562# 1289 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2563!$omp target update to(fd_order, fd_number)
2564# 1289 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2565#endif
2566
2567 if (cyl_coord .neqv. .true.) then ! Cartesian grid
2568 grid_geometry = 1
2569 elseif (cyl_coord .and. p == 0) then ! Axisymmetric cylindrical grid
2570 grid_geometry = 2
2571 else ! Fully 3D cylindrical grid
2572 grid_geometry = 3
2573 end if
2574
2575 momxb = mom_idx%beg
2576 momxe = mom_idx%end
2577 advxb = adv_idx%beg
2578 advxe = adv_idx%end
2579 contxb = cont_idx%beg
2580 contxe = cont_idx%end
2581 bubxb = bub_idx%beg
2582 bubxe = bub_idx%end
2583 strxb = stress_idx%beg
2584 strxe = stress_idx%end
2587 xibeg = xi_idx%beg
2588 xiend = xi_idx%end
2589 chemxb = species_idx%beg
2590 chemxe = species_idx%end
2591
2592
2593# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2594#if defined(MFC_OpenACC)
2595# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2596!$acc update device(momxb, momxe, advxb, advxe, contxb, contxe, bubxb, bubxe, intxb, intxe, sys_size, buff_size, E_idx, alf_idx, n_idx, adv_n, adap_dt, pi_fac, strxb, strxe, chemxb, chemxe, c_idx, adap_dt_tol, adap_dt_max_iters)
2597# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2598#elif defined(MFC_OpenMP)
2599# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2600!$omp target update to(momxb, momxe, advxb, advxe, contxb, contxe, bubxb, bubxe, intxb, intxe, sys_size, buff_size, E_idx, alf_idx, n_idx, adv_n, adap_dt, pi_fac, strxb, strxe, chemxb, chemxe, c_idx, adap_dt_tol, adap_dt_max_iters)
2601# 1316 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2602#endif
2603# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2604
2605# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2606#if defined(MFC_OpenACC)
2607# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2608!$acc update device(b_size, xibeg, xiend, tensor_size)
2609# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2610#elif defined(MFC_OpenMP)
2611# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2612!$omp target update to(b_size, xibeg, xiend, tensor_size)
2613# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2614#endif
2615
2616
2617# 1322 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2618#if defined(MFC_OpenACC)
2619# 1322 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2620!$acc update device(species_idx)
2621# 1322 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2622#elif defined(MFC_OpenMP)
2623# 1322 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2624!$omp target update to(species_idx)
2625# 1322 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2626#endif
2627
2628# 1323 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2629#if defined(MFC_OpenACC)
2630# 1323 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2631!$acc update device(cfl_target, m, n, p)
2632# 1323 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2633#elif defined(MFC_OpenMP)
2634# 1323 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2635!$omp target update to(cfl_target, m, n, p)
2636# 1323 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2637#endif
2638
2639
2640# 1325 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2641#if defined(MFC_OpenACC)
2642# 1325 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2643!$acc update device(alt_soundspeed, acoustic_source, num_source)
2644# 1325 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2645#elif defined(MFC_OpenMP)
2646# 1325 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2647!$omp target update to(alt_soundspeed, acoustic_source, num_source)
2648# 1325 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2649#endif
2650
2651# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2652#if defined(MFC_OpenACC)
2653# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2654!$acc update device(dt, sys_size, buff_size, pref, rhoref, gamma_idx, pi_inf_idx, E_idx, alf_idx, stress_idx, mpp_lim, bubbles_euler, hypoelasticity, alt_soundspeed, avg_state, model_eqns, mixture_err, grid_geometry, cyl_coord, mp_weno, weno_eps, teno_CT, hyperelasticity, hyper_model, elasticity, xi_idx, B_idx, low_Mach)
2655# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2656#elif defined(MFC_OpenMP)
2657# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2658!$omp target update to(dt, sys_size, buff_size, pref, rhoref, gamma_idx, pi_inf_idx, E_idx, alf_idx, stress_idx, mpp_lim, bubbles_euler, hypoelasticity, alt_soundspeed, avg_state, model_eqns, mixture_err, grid_geometry, cyl_coord, mp_weno, weno_eps, teno_CT, hyperelasticity, hyper_model, elasticity, xi_idx, B_idx, low_Mach)
2659# 1326 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2660#endif
2661# 1333 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2662
2663
2664# 1334 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2665#if defined(MFC_OpenACC)
2666# 1334 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2667!$acc update device(Bx0)
2668# 1334 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2669#elif defined(MFC_OpenMP)
2670# 1334 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2671!$omp target update to(Bx0)
2672# 1334 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2673#endif
2674
2675
2676# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2677#if defined(MFC_OpenACC)
2678# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2679!$acc update device(chem_params)
2680# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2681#elif defined(MFC_OpenMP)
2682# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2683!$omp target update to(chem_params)
2684# 1336 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2685#endif
2686
2687
2688# 1338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2689#if defined(MFC_OpenACC)
2690# 1338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2691!$acc update device(cont_damage, tau_star, cont_damage_s, alpha_bar)
2692# 1338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2693#elif defined(MFC_OpenMP)
2694# 1338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2695!$omp target update to(cont_damage, tau_star, cont_damage_s, alpha_bar)
2696# 1338 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2697#endif
2698
2699
2700# 1340 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2701#if defined(MFC_OpenACC)
2702# 1340 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2703!$acc update device(hyper_cleaning, hyper_cleaning_speed, hyper_cleaning_tau)
2704# 1340 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2705#elif defined(MFC_OpenMP)
2706# 1340 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2707!$omp target update to(hyper_cleaning, hyper_cleaning_speed, hyper_cleaning_tau)
2708# 1340 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2709#endif
2710
2711# 1343 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2712
2713# 1343 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2714#if defined(MFC_OpenACC)
2715# 1343 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2716!$acc update device(wenojs, mapped_weno, wenoz, teno)
2717# 1343 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2718#elif defined(MFC_OpenMP)
2719# 1343 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2720!$omp target update to(wenojs, mapped_weno, wenoz, teno)
2721# 1343 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2722#endif
2723
2724# 1344 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2725#if defined(MFC_OpenACC)
2726# 1344 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2727!$acc update device(wenoz_q)
2728# 1344 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2729#elif defined(MFC_OpenMP)
2730# 1344 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2731!$omp target update to(wenoz_q)
2732# 1344 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2733#endif
2734
2735# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2736#if defined(MFC_OpenACC)
2737# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2738!$acc update device(mhd, relativity)
2739# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2740#elif defined(MFC_OpenMP)
2741# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2742!$omp target update to(mhd, relativity)
2743# 1345 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2744#endif
2745
2746# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2747#if defined(MFC_OpenACC)
2748# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2749!$acc update device(muscl_order, muscl_lim)
2750# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2751#elif defined(MFC_OpenMP)
2752# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2753!$omp target update to(muscl_order, muscl_lim)
2754# 1346 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2755#endif
2756
2757# 1347 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2758#if defined(MFC_OpenACC)
2759# 1347 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2760!$acc update device(igr, igr_order)
2761# 1347 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2762#elif defined(MFC_OpenMP)
2763# 1347 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2764!$omp target update to(igr, igr_order)
2765# 1347 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2766#endif
2767
2768# 1348 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2769#if defined(MFC_OpenACC)
2770# 1348 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2771!$acc update device(num_fluids, num_dims, viscous, num_vels, nb, muscl_lim)
2772# 1348 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2773#elif defined(MFC_OpenMP)
2774# 1348 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2775!$omp target update to(num_fluids, num_dims, viscous, num_vels, nb, muscl_lim)
2776# 1348 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2777#endif
2778# 1350 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2779
2780
2781# 1351 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2782#if defined(MFC_OpenACC)
2783# 1351 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2784!$acc update device(dir_idx, dir_flg, dir_idx_tau)
2785# 1351 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2786#elif defined(MFC_OpenMP)
2787# 1351 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2788!$omp target update to(dir_idx, dir_flg, dir_idx_tau)
2789# 1351 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2790#endif
2791
2792
2793# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2794#if defined(MFC_OpenACC)
2795# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2796!$acc update device(relax, relax_model, palpha_eps, ptgalpha_eps)
2797# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2798#elif defined(MFC_OpenMP)
2799# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2800!$omp target update to(relax, relax_model, palpha_eps, ptgalpha_eps)
2801# 1353 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2802#endif
2803
2804 ! Allocating grid variables for the x-, y- and z-directions
2805#ifdef MFC_DEBUG
2806# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2807 block
2808# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2809 use iso_fortran_env, only: output_unit
2810# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2811
2812# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2813 print *, 'm_global_parameters.fpp:1356: ', '@:ALLOCATE(x_cb(-1 - buff_size:m + buff_size))'
2814# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2815
2816# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2817 call flush (output_unit)
2818# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2819 end block
2820# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2821#endif
2822# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2823 allocate (x_cb(-1 - buff_size:m + buff_size))
2824# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2825
2826# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2827
2828# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2829#if defined(MFC_OpenACC)
2830# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2831!$acc enter data create(x_cb)
2832# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2833#elif defined(MFC_OpenMP)
2834# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2835!$omp target enter data map(always,alloc:x_cb)
2836# 1356 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2837#endif
2838#ifdef MFC_DEBUG
2839# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2840 block
2841# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2842 use iso_fortran_env, only: output_unit
2843# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2844
2845# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2846 print *, 'm_global_parameters.fpp:1357: ', '@:ALLOCATE(x_cc(-buff_size:m + buff_size))'
2847# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2848
2849# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2850 call flush (output_unit)
2851# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2852 end block
2853# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2854#endif
2855# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2856 allocate (x_cc(-buff_size:m + buff_size))
2857# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2858
2859# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2860
2861# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2862#if defined(MFC_OpenACC)
2863# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2864!$acc enter data create(x_cc)
2865# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2866#elif defined(MFC_OpenMP)
2867# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2868!$omp target enter data map(always,alloc:x_cc)
2869# 1357 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2870#endif
2871#ifdef MFC_DEBUG
2872# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2873 block
2874# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2875 use iso_fortran_env, only: output_unit
2876# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2877
2878# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2879 print *, 'm_global_parameters.fpp:1358: ', '@:ALLOCATE(dx(-buff_size:m + buff_size))'
2880# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2881
2882# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2883 call flush (output_unit)
2884# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2885 end block
2886# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2887#endif
2888# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2889 allocate (dx(-buff_size:m + buff_size))
2890# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2891
2892# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2893
2894# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2895#if defined(MFC_OpenACC)
2896# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2897!$acc enter data create(dx)
2898# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2899#elif defined(MFC_OpenMP)
2900# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2901!$omp target enter data map(always,alloc:dx)
2902# 1358 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2903#endif
2904#ifdef MFC_SIMULATION
2905# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2906#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
2907# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2908 block
2909# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2910! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
2911# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2912! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
2913# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2914! The cudafor functionality has not changed. But for new users, or users who have needed to
2915# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2916! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
2917# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2918! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
2919# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2920! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
2921# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2922#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
2923# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2924 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
2925# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2926#else
2927# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2928 use cuda_runtime_api
2929# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2930#endif
2931# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2932 integer :: istat
2933# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2934
2935# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2936 if (nv_uvm_pref_gpu) then
2937# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2938 !print*, "Moving x_cb to GPU => ", SHAPE(x_cb)
2939# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2940 ! set preferred location GPU
2941# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2942 istat = cudamemadvise(c_devloc(x_cb), sizeof(x_cb), cudamemadvisesetpreferredlocation, 0)
2943# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2944 if (istat /= cudasuccess) then
2945# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2946 write (*, "('Error code: ',I0, ': ')") istat
2947# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2948 !write(*,*) cudaGetErrorString(istat)
2949# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2950 end if
2951# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2952 ! set accessed by CPU
2953# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2954 istat = cudamemadvise(c_devloc(x_cb), sizeof(x_cb), cudamemadvisesetaccessedby, cudacpudeviceid)
2955# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2956 if (istat /= cudasuccess) then
2957# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2958 write (*, "('Error code: ',I0, ': ')") istat
2959# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2960 !write(*,*) cudaGetErrorString(istat)
2961# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2962 end if
2963# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2964 ! prefetch to GPU - physically populate memory pages
2965# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2966 istat = cudamemprefetchasync(c_devloc(x_cb), sizeof(x_cb), 0, 0)
2967# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2968 if (istat /= cudasuccess) then
2969# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2970 write (*, "('Error code: ',I0, ': ')") istat
2971# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2972 !write(*,*) cudaGetErrorString(istat)
2973# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2974 end if
2975# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2976 end if
2977# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2978 end block
2979# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2980#endif
2981# 1359 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2982#endif
2983#ifdef MFC_SIMULATION
2984# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2985#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
2986# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2987 block
2988# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2989! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
2990# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2991! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
2992# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2993! The cudafor functionality has not changed. But for new users, or users who have needed to
2994# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2995! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
2996# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2997! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
2998# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
2999! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3000# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3001#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3002# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3003 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3004# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3005#else
3006# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3007 use cuda_runtime_api
3008# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3009#endif
3010# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3011 integer :: istat
3012# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3013
3014# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3015 if (nv_uvm_pref_gpu) then
3016# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3017 !print*, "Moving x_cc to GPU => ", SHAPE(x_cc)
3018# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3019 ! set preferred location GPU
3020# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3021 istat = cudamemadvise(c_devloc(x_cc), sizeof(x_cc), cudamemadvisesetpreferredlocation, 0)
3022# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3023 if (istat /= cudasuccess) then
3024# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3025 write (*, "('Error code: ',I0, ': ')") istat
3026# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3027 !write(*,*) cudaGetErrorString(istat)
3028# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3029 end if
3030# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3031 ! set accessed by CPU
3032# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3033 istat = cudamemadvise(c_devloc(x_cc), sizeof(x_cc), cudamemadvisesetaccessedby, cudacpudeviceid)
3034# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3035 if (istat /= cudasuccess) then
3036# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3037 write (*, "('Error code: ',I0, ': ')") istat
3038# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3039 !write(*,*) cudaGetErrorString(istat)
3040# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3041 end if
3042# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3043 ! prefetch to GPU - physically populate memory pages
3044# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3045 istat = cudamemprefetchasync(c_devloc(x_cc), sizeof(x_cc), 0, 0)
3046# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3047 if (istat /= cudasuccess) then
3048# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3049 write (*, "('Error code: ',I0, ': ')") istat
3050# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3051 !write(*,*) cudaGetErrorString(istat)
3052# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3053 end if
3054# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3055 end if
3056# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3057 end block
3058# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3059#endif
3060# 1360 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3061#endif
3062#ifdef MFC_SIMULATION
3063# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3064#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3065# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3066 block
3067# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3068! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
3069# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3070! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
3071# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3072! The cudafor functionality has not changed. But for new users, or users who have needed to
3073# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3074! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
3075# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3076! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
3077# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3078! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3079# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3080#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3081# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3082 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3083# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3084#else
3085# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3086 use cuda_runtime_api
3087# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3088#endif
3089# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3090 integer :: istat
3091# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3092
3093# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3094 if (nv_uvm_pref_gpu) then
3095# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3096 !print*, "Moving dx to GPU => ", SHAPE(dx)
3097# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3098 ! set preferred location GPU
3099# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3100 istat = cudamemadvise(c_devloc(dx), sizeof(dx), cudamemadvisesetpreferredlocation, 0)
3101# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3102 if (istat /= cudasuccess) then
3103# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3104 write (*, "('Error code: ',I0, ': ')") istat
3105# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3106 !write(*,*) cudaGetErrorString(istat)
3107# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3108 end if
3109# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3110 ! set accessed by CPU
3111# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3112 istat = cudamemadvise(c_devloc(dx), sizeof(dx), cudamemadvisesetaccessedby, cudacpudeviceid)
3113# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3114 if (istat /= cudasuccess) then
3115# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3116 write (*, "('Error code: ',I0, ': ')") istat
3117# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3118 !write(*,*) cudaGetErrorString(istat)
3119# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3120 end if
3121# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3122 ! prefetch to GPU - physically populate memory pages
3123# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3124 istat = cudamemprefetchasync(c_devloc(dx), sizeof(dx), 0, 0)
3125# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3126 if (istat /= cudasuccess) then
3127# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3128 write (*, "('Error code: ',I0, ': ')") istat
3129# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3130 !write(*,*) cudaGetErrorString(istat)
3131# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3132 end if
3133# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3134 end if
3135# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3136 end block
3137# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3138#endif
3139# 1361 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3140#endif
3141
3142 if (n == 0) return;
3143#ifdef MFC_DEBUG
3144# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3145 block
3146# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3147 use iso_fortran_env, only: output_unit
3148# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3149
3150# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3151 print *, 'm_global_parameters.fpp:1364: ', '@:ALLOCATE(y_cb(-1 - buff_size:n + buff_size))'
3152# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3153
3154# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3155 call flush (output_unit)
3156# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3157 end block
3158# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3159#endif
3160# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3161 allocate (y_cb(-1 - buff_size:n + buff_size))
3162# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3163
3164# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3165
3166# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3167#if defined(MFC_OpenACC)
3168# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3169!$acc enter data create(y_cb)
3170# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3171#elif defined(MFC_OpenMP)
3172# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3173!$omp target enter data map(always,alloc:y_cb)
3174# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3175#endif
3176#ifdef MFC_DEBUG
3177# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3178 block
3179# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3180 use iso_fortran_env, only: output_unit
3181# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3182
3183# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3184 print *, 'm_global_parameters.fpp:1365: ', '@:ALLOCATE(y_cc(-buff_size:n + buff_size))'
3185# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3186
3187# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3188 call flush (output_unit)
3189# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3190 end block
3191# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3192#endif
3193# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3194 allocate (y_cc(-buff_size:n + buff_size))
3195# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3196
3197# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3198
3199# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3200#if defined(MFC_OpenACC)
3201# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3202!$acc enter data create(y_cc)
3203# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3204#elif defined(MFC_OpenMP)
3205# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3206!$omp target enter data map(always,alloc:y_cc)
3207# 1365 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3208#endif
3209#ifdef MFC_DEBUG
3210# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3211 block
3212# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3213 use iso_fortran_env, only: output_unit
3214# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3215
3216# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3217 print *, 'm_global_parameters.fpp:1366: ', '@:ALLOCATE(dy(-buff_size:n + buff_size))'
3218# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3219
3220# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3221 call flush (output_unit)
3222# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3223 end block
3224# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3225#endif
3226# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3227 allocate (dy(-buff_size:n + buff_size))
3228# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3229
3230# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3231
3232# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3233#if defined(MFC_OpenACC)
3234# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3235!$acc enter data create(dy)
3236# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3237#elif defined(MFC_OpenMP)
3238# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3239!$omp target enter data map(always,alloc:dy)
3240# 1366 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3241#endif
3242#ifdef MFC_SIMULATION
3243# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3244#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3245# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3246 block
3247# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3248! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
3249# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3250! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
3251# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3252! The cudafor functionality has not changed. But for new users, or users who have needed to
3253# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3254! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
3255# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3256! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
3257# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3258! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3259# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3260#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3261# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3262 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3263# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3264#else
3265# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3266 use cuda_runtime_api
3267# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3268#endif
3269# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3270 integer :: istat
3271# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3272
3273# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3274 if (nv_uvm_pref_gpu) then
3275# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3276 !print*, "Moving y_cb to GPU => ", SHAPE(y_cb)
3277# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3278 ! set preferred location GPU
3279# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3280 istat = cudamemadvise(c_devloc(y_cb), sizeof(y_cb), cudamemadvisesetpreferredlocation, 0)
3281# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3282 if (istat /= cudasuccess) then
3283# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3284 write (*, "('Error code: ',I0, ': ')") istat
3285# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3286 !write(*,*) cudaGetErrorString(istat)
3287# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3288 end if
3289# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3290 ! set accessed by CPU
3291# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3292 istat = cudamemadvise(c_devloc(y_cb), sizeof(y_cb), cudamemadvisesetaccessedby, cudacpudeviceid)
3293# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3294 if (istat /= cudasuccess) then
3295# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3296 write (*, "('Error code: ',I0, ': ')") istat
3297# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3298 !write(*,*) cudaGetErrorString(istat)
3299# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3300 end if
3301# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3302 ! prefetch to GPU - physically populate memory pages
3303# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3304 istat = cudamemprefetchasync(c_devloc(y_cb), sizeof(y_cb), 0, 0)
3305# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3306 if (istat /= cudasuccess) then
3307# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3308 write (*, "('Error code: ',I0, ': ')") istat
3309# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3310 !write(*,*) cudaGetErrorString(istat)
3311# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3312 end if
3313# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3314 end if
3315# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3316 end block
3317# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3318#endif
3319# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3320#endif
3321#ifdef MFC_SIMULATION
3322# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3323#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3324# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3325 block
3326# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3327! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
3328# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3329! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
3330# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3331! The cudafor functionality has not changed. But for new users, or users who have needed to
3332# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3333! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
3334# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3335! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
3336# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3337! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3338# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3339#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3340# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3341 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3342# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3343#else
3344# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3345 use cuda_runtime_api
3346# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3347#endif
3348# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3349 integer :: istat
3350# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3351
3352# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3353 if (nv_uvm_pref_gpu) then
3354# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3355 !print*, "Moving y_cc to GPU => ", SHAPE(y_cc)
3356# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3357 ! set preferred location GPU
3358# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3359 istat = cudamemadvise(c_devloc(y_cc), sizeof(y_cc), cudamemadvisesetpreferredlocation, 0)
3360# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3361 if (istat /= cudasuccess) then
3362# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3363 write (*, "('Error code: ',I0, ': ')") istat
3364# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3365 !write(*,*) cudaGetErrorString(istat)
3366# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3367 end if
3368# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3369 ! set accessed by CPU
3370# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3371 istat = cudamemadvise(c_devloc(y_cc), sizeof(y_cc), cudamemadvisesetaccessedby, cudacpudeviceid)
3372# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3373 if (istat /= cudasuccess) then
3374# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3375 write (*, "('Error code: ',I0, ': ')") istat
3376# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3377 !write(*,*) cudaGetErrorString(istat)
3378# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3379 end if
3380# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3381 ! prefetch to GPU - physically populate memory pages
3382# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3383 istat = cudamemprefetchasync(c_devloc(y_cc), sizeof(y_cc), 0, 0)
3384# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3385 if (istat /= cudasuccess) then
3386# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3387 write (*, "('Error code: ',I0, ': ')") istat
3388# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3389 !write(*,*) cudaGetErrorString(istat)
3390# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3391 end if
3392# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3393 end if
3394# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3395 end block
3396# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3397#endif
3398# 1368 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3399#endif
3400#ifdef MFC_SIMULATION
3401# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3402#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3403# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3404 block
3405# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3406! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
3407# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3408! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
3409# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3410! The cudafor functionality has not changed. But for new users, or users who have needed to
3411# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3412! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
3413# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3414! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
3415# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3416! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3417# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3418#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3419# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3420 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3421# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3422#else
3423# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3424 use cuda_runtime_api
3425# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3426#endif
3427# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3428 integer :: istat
3429# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3430
3431# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3432 if (nv_uvm_pref_gpu) then
3433# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3434 !print*, "Moving dy to GPU => ", SHAPE(dy)
3435# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3436 ! set preferred location GPU
3437# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3438 istat = cudamemadvise(c_devloc(dy), sizeof(dy), cudamemadvisesetpreferredlocation, 0)
3439# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3440 if (istat /= cudasuccess) then
3441# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3442 write (*, "('Error code: ',I0, ': ')") istat
3443# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3444 !write(*,*) cudaGetErrorString(istat)
3445# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3446 end if
3447# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3448 ! set accessed by CPU
3449# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3450 istat = cudamemadvise(c_devloc(dy), sizeof(dy), cudamemadvisesetaccessedby, cudacpudeviceid)
3451# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3452 if (istat /= cudasuccess) then
3453# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3454 write (*, "('Error code: ',I0, ': ')") istat
3455# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3456 !write(*,*) cudaGetErrorString(istat)
3457# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3458 end if
3459# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3460 ! prefetch to GPU - physically populate memory pages
3461# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3462 istat = cudamemprefetchasync(c_devloc(dy), sizeof(dy), 0, 0)
3463# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3464 if (istat /= cudasuccess) then
3465# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3466 write (*, "('Error code: ',I0, ': ')") istat
3467# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3468 !write(*,*) cudaGetErrorString(istat)
3469# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3470 end if
3471# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3472 end if
3473# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3474 end block
3475# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3476#endif
3477# 1369 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3478#endif
3479
3480 if (p == 0) return;
3481#ifdef MFC_DEBUG
3482# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3483 block
3484# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3485 use iso_fortran_env, only: output_unit
3486# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3487
3488# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3489 print *, 'm_global_parameters.fpp:1372: ', '@:ALLOCATE(z_cb(-1 - buff_size:p + buff_size))'
3490# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3491
3492# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3493 call flush (output_unit)
3494# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3495 end block
3496# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3497#endif
3498# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3499 allocate (z_cb(-1 - buff_size:p + buff_size))
3500# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3501
3502# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3503
3504# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3505#if defined(MFC_OpenACC)
3506# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3507!$acc enter data create(z_cb)
3508# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3509#elif defined(MFC_OpenMP)
3510# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3511!$omp target enter data map(always,alloc:z_cb)
3512# 1372 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3513#endif
3514#ifdef MFC_DEBUG
3515# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3516 block
3517# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3518 use iso_fortran_env, only: output_unit
3519# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3520
3521# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3522 print *, 'm_global_parameters.fpp:1373: ', '@:ALLOCATE(z_cc(-buff_size:p + buff_size))'
3523# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3524
3525# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3526 call flush (output_unit)
3527# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3528 end block
3529# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3530#endif
3531# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3532 allocate (z_cc(-buff_size:p + buff_size))
3533# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3534
3535# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3536
3537# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3538#if defined(MFC_OpenACC)
3539# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3540!$acc enter data create(z_cc)
3541# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3542#elif defined(MFC_OpenMP)
3543# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3544!$omp target enter data map(always,alloc:z_cc)
3545# 1373 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3546#endif
3547#ifdef MFC_DEBUG
3548# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3549 block
3550# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3551 use iso_fortran_env, only: output_unit
3552# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3553
3554# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3555 print *, 'm_global_parameters.fpp:1374: ', '@:ALLOCATE(dz(-buff_size:p + buff_size))'
3556# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3557
3558# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3559 call flush (output_unit)
3560# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3561 end block
3562# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3563#endif
3564# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3565 allocate (dz(-buff_size:p + buff_size))
3566# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3567
3568# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3569
3570# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3571#if defined(MFC_OpenACC)
3572# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3573!$acc enter data create(dz)
3574# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3575#elif defined(MFC_OpenMP)
3576# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3577!$omp target enter data map(always,alloc:dz)
3578# 1374 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3579#endif
3580#ifdef MFC_SIMULATION
3581# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3582#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3583# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3584 block
3585# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3586! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
3587# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3588! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
3589# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3590! The cudafor functionality has not changed. But for new users, or users who have needed to
3591# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3592! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
3593# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3594! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
3595# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3596! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3597# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3598#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3599# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3600 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3601# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3602#else
3603# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3604 use cuda_runtime_api
3605# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3606#endif
3607# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3608 integer :: istat
3609# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3610
3611# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3612 if (nv_uvm_pref_gpu) then
3613# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3614 !print*, "Moving z_cb to GPU => ", SHAPE(z_cb)
3615# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3616 ! set preferred location GPU
3617# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3618 istat = cudamemadvise(c_devloc(z_cb), sizeof(z_cb), cudamemadvisesetpreferredlocation, 0)
3619# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3620 if (istat /= cudasuccess) then
3621# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3622 write (*, "('Error code: ',I0, ': ')") istat
3623# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3624 !write(*,*) cudaGetErrorString(istat)
3625# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3626 end if
3627# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3628 ! set accessed by CPU
3629# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3630 istat = cudamemadvise(c_devloc(z_cb), sizeof(z_cb), cudamemadvisesetaccessedby, cudacpudeviceid)
3631# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3632 if (istat /= cudasuccess) then
3633# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3634 write (*, "('Error code: ',I0, ': ')") istat
3635# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3636 !write(*,*) cudaGetErrorString(istat)
3637# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3638 end if
3639# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3640 ! prefetch to GPU - physically populate memory pages
3641# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3642 istat = cudamemprefetchasync(c_devloc(z_cb), sizeof(z_cb), 0, 0)
3643# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3644 if (istat /= cudasuccess) then
3645# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3646 write (*, "('Error code: ',I0, ': ')") istat
3647# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3648 !write(*,*) cudaGetErrorString(istat)
3649# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3650 end if
3651# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3652 end if
3653# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3654 end block
3655# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3656#endif
3657# 1375 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3658#endif
3659#ifdef MFC_SIMULATION
3660# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3661#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3662# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3663 block
3664# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3665! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
3666# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3667! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
3668# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3669! The cudafor functionality has not changed. But for new users, or users who have needed to
3670# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3671! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
3672# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3673! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
3674# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3675! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3676# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3677#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3678# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3679 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3680# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3681#else
3682# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3683 use cuda_runtime_api
3684# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3685#endif
3686# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3687 integer :: istat
3688# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3689
3690# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3691 if (nv_uvm_pref_gpu) then
3692# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3693 !print*, "Moving z_cc to GPU => ", SHAPE(z_cc)
3694# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3695 ! set preferred location GPU
3696# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3697 istat = cudamemadvise(c_devloc(z_cc), sizeof(z_cc), cudamemadvisesetpreferredlocation, 0)
3698# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3699 if (istat /= cudasuccess) then
3700# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3701 write (*, "('Error code: ',I0, ': ')") istat
3702# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3703 !write(*,*) cudaGetErrorString(istat)
3704# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3705 end if
3706# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3707 ! set accessed by CPU
3708# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3709 istat = cudamemadvise(c_devloc(z_cc), sizeof(z_cc), cudamemadvisesetaccessedby, cudacpudeviceid)
3710# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3711 if (istat /= cudasuccess) then
3712# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3713 write (*, "('Error code: ',I0, ': ')") istat
3714# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3715 !write(*,*) cudaGetErrorString(istat)
3716# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3717 end if
3718# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3719 ! prefetch to GPU - physically populate memory pages
3720# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3721 istat = cudamemprefetchasync(c_devloc(z_cc), sizeof(z_cc), 0, 0)
3722# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3723 if (istat /= cudasuccess) then
3724# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3725 write (*, "('Error code: ',I0, ': ')") istat
3726# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3727 !write(*,*) cudaGetErrorString(istat)
3728# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3729 end if
3730# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3731 end if
3732# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3733 end block
3734# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3735#endif
3736# 1376 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3737#endif
3738#ifdef MFC_SIMULATION
3739# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3740#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
3741# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3742 block
3743# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3744! Beginning in the 25.3 release, the structure of the cudafor module has been changed slightly.
3745# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3746! The module now includes, or “uses” 3 submodules: cuda_runtime_api, gpu_reductions, and sort.
3747# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3748! The cudafor functionality has not changed. But for new users, or users who have needed to
3749# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3750! work-around name conflicts in the module, it may be better to use cuda_runtime_api to expose
3751# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3752! interfaces to the CUDA runtime calls described in Chapter 4 of this guide.
3753# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3754! https://docs.nvidia.com/hpc-sdk/compilers/cuda-fortran-prog-guide/index.html#fortran-host-modules
3755# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3756#if __NVCOMPILER_MAJOR__ < 25 || (__NVCOMPILER_MAJOR__ == 25 && __NVCOMPILER_MINOR__ < 3)
3757# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3758 use cudafor, gpu_sum => sum, gpu_maxval => maxval, gpu_minval => minval
3759# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3760#else
3761# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3762 use cuda_runtime_api
3763# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3764#endif
3765# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3766 integer :: istat
3767# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3768
3769# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3770 if (nv_uvm_pref_gpu) then
3771# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3772 !print*, "Moving dz to GPU => ", SHAPE(dz)
3773# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3774 ! set preferred location GPU
3775# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3776 istat = cudamemadvise(c_devloc(dz), sizeof(dz), cudamemadvisesetpreferredlocation, 0)
3777# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3778 if (istat /= cudasuccess) then
3779# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3780 write (*, "('Error code: ',I0, ': ')") istat
3781# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3782 !write(*,*) cudaGetErrorString(istat)
3783# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3784 end if
3785# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3786 ! set accessed by CPU
3787# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3788 istat = cudamemadvise(c_devloc(dz), sizeof(dz), cudamemadvisesetaccessedby, cudacpudeviceid)
3789# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3790 if (istat /= cudasuccess) then
3791# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3792 write (*, "('Error code: ',I0, ': ')") istat
3793# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3794 !write(*,*) cudaGetErrorString(istat)
3795# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3796 end if
3797# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3798 ! prefetch to GPU - physically populate memory pages
3799# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3800 istat = cudamemprefetchasync(c_devloc(dz), sizeof(dz), 0, 0)
3801# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3802 if (istat /= cudasuccess) then
3803# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3804 write (*, "('Error code: ',I0, ': ')") istat
3805# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3806 !write(*,*) cudaGetErrorString(istat)
3807# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3808 end if
3809# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3810 end if
3811# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3812 end block
3813# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3814#endif
3815# 1377 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3816#endif
3817
3819
3820 !> Initializes parallel infrastructure
3822
3823#ifdef MFC_MPI
3824 integer :: ierr !< Generic flag used to identify and report MPI errors
3825#endif
3826
3827# 1389 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3828 num_dims = 1 + min(1, n) + min(1, p)
3829
3830 if (mhd) then
3831 num_vels = 3
3832 else
3834 end if
3835# 1397 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3836
3837 allocate (proc_coords(1:num_dims))
3838
3839 if (parallel_io .neqv. .true.) return
3840
3841#ifdef MFC_MPI
3842
3843 ! Option for Lustre file system (Darter/Comet/Stampede)
3844 write (mpiiofs, '(A)') '/lustre_'
3845 mpiiofs = trim(mpiiofs)
3846
3847 call mpi_info_create(mpi_info_int, ierr)
3848 call mpi_info_set(mpi_info_int, 'romio_ds_write', 'disable', ierr)
3849
3850 ! Option for UNIX file system (Hooke/Thomson)
3851 ! WRITE(mpiiofs, '(A)') '/ufs_'
3852 ! mpiiofs = TRIM(mpiiofs)
3853 ! mpi_info_int = MPI_INFO_NULL
3854
3855 allocate (start_idx(1:num_dims))
3856
3857#endif
3858
3859 end subroutine s_initialize_parallel_io
3860
3861 !> Module deallocation and/or disassociation procedures
3863
3864 integer :: i
3865
3866 ! Deallocating the variables bookkeeping the indexes of any viscous
3867 ! fluids and any pairs of fluids whose interfaces supported effects
3868 ! of surface tension
3869 if (viscous) then
3870#ifdef MFC_DEBUG
3871# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3872 block
3873# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3874 use iso_fortran_env, only: output_unit
3875# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3876
3877# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3878 print *, 'm_global_parameters.fpp:1431: ', '@:DEALLOCATE(Re_idx)'
3879# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3880
3881# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3882 call flush (output_unit)
3883# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3884 end block
3885# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3886#endif
3887# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3888
3889# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3890#if defined(MFC_OpenACC)
3891# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3892!$acc exit data delete(Re_idx)
3893# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3894#elif defined(MFC_OpenMP)
3895# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3896!$omp target exit data map(release:Re_idx)
3897# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3898#endif
3899# 1431 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3900 deallocate (re_idx)
3901 end if
3902
3903 deallocate (proc_coords)
3904 if (parallel_io) then
3905 deallocate (start_idx)
3906
3907 if (bubbles_lagrange) then
3908 do i = 1, sys_size + 1
3909 mpi_io_data%var(i)%sf => null()
3910 end do
3911 else
3912 do i = 1, sys_size
3913 mpi_io_data%var(i)%sf => null()
3914 end do
3915 end if
3916
3917 deallocate (mpi_io_data%var)
3918 deallocate (mpi_io_data%view)
3919 end if
3920
3921 if (ib) mpi_io_ib_data%var%sf => null()
3922
3923 ! Deallocating grid variables for the x-, y- and z-directions
3924#ifdef MFC_DEBUG
3925# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3926 block
3927# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3928 use iso_fortran_env, only: output_unit
3929# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3930
3931# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3932 print *, 'm_global_parameters.fpp:1455: ', '@:DEALLOCATE(x_cb, x_cc, dx)'
3933# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3934
3935# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3936 call flush (output_unit)
3937# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3938 end block
3939# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3940#endif
3941# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3942
3943# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3944#if defined(MFC_OpenACC)
3945# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3946!$acc exit data delete(x_cb, x_cc, dx)
3947# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3948#elif defined(MFC_OpenMP)
3949# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3950!$omp target exit data map(release:x_cb, x_cc, dx)
3951# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3952#endif
3953# 1455 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3954 deallocate (x_cb, x_cc, dx)
3955
3956 if (n == 0) return;
3957#ifdef MFC_DEBUG
3958# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3959 block
3960# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3961 use iso_fortran_env, only: output_unit
3962# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3963
3964# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3965 print *, 'm_global_parameters.fpp:1458: ', '@:DEALLOCATE(y_cb, y_cc, dy)'
3966# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3967
3968# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3969 call flush (output_unit)
3970# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3971 end block
3972# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3973#endif
3974# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3975
3976# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3977#if defined(MFC_OpenACC)
3978# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3979!$acc exit data delete(y_cb, y_cc, dy)
3980# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3981#elif defined(MFC_OpenMP)
3982# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3983!$omp target exit data map(release:y_cb, y_cc, dy)
3984# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3985#endif
3986# 1458 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3987 deallocate (y_cb, y_cc, dy)
3988
3989 if (p == 0) return;
3990#ifdef MFC_DEBUG
3991# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3992 block
3993# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3994 use iso_fortran_env, only: output_unit
3995# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3996
3997# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
3998 print *, 'm_global_parameters.fpp:1461: ', '@:DEALLOCATE(z_cb, z_cc, dz)'
3999# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4000
4001# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4002 call flush (output_unit)
4003# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4004 end block
4005# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4006#endif
4007# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4008
4009# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4010#if defined(MFC_OpenACC)
4011# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4012!$acc exit data delete(z_cb, z_cc, dz)
4013# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4014#elif defined(MFC_OpenMP)
4015# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4016!$omp target exit data map(release:z_cb, z_cc, dz)
4017# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4018#endif
4019# 1461 "/home/runner/work/MFC/MFC/src/simulation/m_global_parameters.fpp"
4020 deallocate (z_cb, z_cc, dz)
4021
4023
4024end module m_global_parameters
integer, intent(in) k
integer, intent(in) j
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer weno_num_stencils
Number of stencils for WENO reconstruction (only different from weno_polyn for TENO(>5)).
real(wp) mytime
Current simulation time.
logical null_weights
Null undesired WENO weights.
logical bubbles_euler
Bubbles euler on/off.
integer nmomsp
Number of moments required by ensemble-averaging.
type(mpi_io_levelset_norm_var), public mpi_io_levelsetnorm_data
integer, dimension(2) re_size
logical bulk_stress
Bulk stresses.
real(wp) cont_damage_s
Exponent s for continuum damage modeling.
type(int_bounds_info) xi_idx
Indexes of first and last reference map eqns.
integer wave_speeds
Wave speeds estimation method.
logical cont_damage
Continuum damage modeling.
logical igr
Use information geometric regularization.
integer, dimension(3, 2) shear_bc_flip_indices
Indices of shear stress components to reflect for boundary conditions. Size: (1:3,...
logical hypoelasticity
hypoelasticity modeling
impure subroutine s_assign_default_values_to_user_inputs
Assigns default values to the user inputs before reading them in. This enables for an easier consiste...
impure subroutine s_finalize_global_parameters_module
Module deallocation and/or disassociation procedures.
integer thermal
Thermal behavior. 1 = adiabatic, 2 = isotherm, 3 = transfer.
integer, parameter nmom
Number of carried moments per R0 location.
integer avg_state
Average state evaluation method.
real(wp), dimension(:), allocatable im_trans_c
type(int_bounds_info), dimension(1:3) idwint
real(wp), dimension(:), allocatable, target z_cb
integer recon_type
Reconstruction Type.
logical igr_pres_lim
Limit to positive pressures for IGR.
logical, parameter chemistry
Chemistry modeling.
logical acoustic_source
Acoustic source switch.
type(ib_patch_parameters), dimension(num_patches_max) patch_ib
type(int_bounds_info) mom_idx
Indexes of first & last momentum eqns.
real(wp), dimension(:), allocatable pb0
integer num_fluids
number of fluids in the simulation
logical polydisperse
Polydisperse bubbles.
real(wp), dimension(:), allocatable im_trans_t
type(bubbles_lagrange_parameters) lag_params
Lagrange bubbles' parameters.
integer weno_polyn
Degree of the WENO polynomials (polyn).
type(int_bounds_info) stress_idx
Indexes of first and last shear stress eqns.
integer proc_rank
Rank of the local processor.
real(wp), dimension(:), allocatable re_trans_t
real(wp) hyper_cleaning_tau
Hyperbolic cleaning tau.
logical mixture_err
Mixture properties correction.
logical adap_dt
Adaptive step size control.
logical weno_re_flux
WENO reconstruct velocity gradients for viscous stress tensor.
real(wp) hyper_cleaning_speed
Hyperbolic cleaning wave speed (c_h).
integer t_step_print
Number of time-steps between printouts.
integer n_idx
Index of number density.
type(mpi_io_ib_var), public mpi_io_ib_data
logical dummy
AMDFlang workaround: keep a dummy logical to avoid a compiler case-optimization bug when a parameter+...
real(wp) poly_sigma
log normal sigma for polydisperse PDF
integer, dimension(:), allocatable proc_coords
Processor coordinates in MPI_CART_COMM.
character(len=name_len) mpiiofs
integer, dimension(:), allocatable start_idx
Starting cell-center index of local processor in global grid.
type(vec3_dt), dimension(num_probes_max) probe
real(wp), dimension(3) accel_bf
integer sys_size
Number of unknowns in system of eqns.
real(wp), dimension(:), allocatable weight
Simpson quadrature weights.
integer gamma_idx
Index of specific heat ratio func. eqn.
real(wp), dimension(:), allocatable k_v
integer muscl_order
Order of the MUSCL reconstruction.
integer nmomtot
Total number of carried moments moments/transport equations.
logical alt_soundspeed
Alternate mixture sound speed.
real(wp) ptgalpha_eps
trigger parameter for the pTg relaxation procedure, phase change model
integer, dimension(3) dir_idx
integer relax_model
Relaxation model.
integer t_step_old
Existing IC/grid folder.
type(int_bounds_info) cont_idx
Indexes of first & last continuity eqns.
logical viscous
Viscous effects.
integer fd_number
The finite-difference number is given by MAX(1, fd_order/2). Essentially, it is a measure of the half...
type(mpi_io_levelset_var), public mpi_io_levelset_data
logical run_time_info
Run-time output flag.
type(int_bounds_info) b_idx
Indexes of first and last magnetic field eqns.
integer tensor_size
Number of elements in the full tensor plus one.
real(wp) wenoz_q
Power constant for WENO-Z.
integer riemann_solver
Riemann solver algorithm.
type(int_bounds_info), dimension(1:3) idwbuff
logical int_comp
THINC interface compression.
real(wp) re_inv
Inverse Reynolds number.
real(wp) ic_eps
THINC Epsilon to compress on surface cells.
integer model_eqns
Multicomponent flow model.
integer buff_size
The number of cells that are necessary to be able to store enough boundary conditions data to march t...
integer precision
Precision of output files.
logical hyperelasticity
hyperelasticity modeling
real(wp), dimension(:), allocatable ps_inf
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Database of the physical parameters of each of the fluids that is present in the flow....
integer, dimension(3) dir_idx_tau
type(vec3_dt), dimension(:), allocatable airfoil_grid_u
integer num_dims
Number of spatial dimensions.
integer shear_bc_flip_num
Number of shear stress components to reflect for boundary conditions.
real(wp), dimension(:), allocatable cvs
real(wp) alf_factor
alpha factor for IGR
real(wp), dimension(:), allocatable r0
Bubble sizes.
impure subroutine s_initialize_global_parameters_module
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
integer pi_inf_idx
Index of liquid stiffness func. eqn.
real(wp), dimension(:), allocatable, target y_cc
real(wp), dimension(:), allocatable k_g
type(pres_field), dimension(:), allocatable pb_ts
type(pres_field), dimension(:), allocatable mv_ts
type(chemistry_parameters) chem_params
real(wp), dimension(:), allocatable qvps
integer fd_order
The order of the finite-difference (fd) approximations of the first-order derivatives that need to be...
logical bubbles_lagrange
Lagrangian subgrid bubble model switch.
real(wp), dimension(:, :, :), allocatable ptil
Pressure modification.
integer num_vels
Number of velocity components (different from num_dims for mhd).
real(wp) ca
Cavitation number.
real(wp) alpha_bar
Damage rate factor for continuum damage modeling.
logical polytropic
Polytropic switch.
integer, dimension(:, :), allocatable re_idx
logical bf_z
body force toggle in three directions amplitude, frequency, and phase shift sinusoid in each directio...
logical mp_weno
Monotonicity preserving (MP) WENO.
integer hyper_model
hyperelasticity solver algorithm
real(wp), dimension(:), allocatable, target z_cc
logical relax
activate phase change
logical qbmm
Quadrature moment method.
type(bub_bounds_info) bub_idx
Indexes of first & last bubble variable eqns.
integer damage_idx
Index of damage state variable (D) for continuum damage model.
real(wp) pi_fac
Factor for artificial pi_inf.
logical hyper_cleaning
Hyperbolic cleaning for MHD for divB=0.
type(int_bounds_info) internalenergies_idx
Indexes of first & last internal energy eqns.
integer adap_dt_max_iters
Maximum number of iterations.
real(wp) ic_beta
THINC Sharpness Parameter.
real(wp) bx0
Constant magnetic field in the x-direction (1D).
integer b_size
Number of elements in the symmetric b tensor, plus one.
integer num_source
Number of acoustic sources.
real(wp), dimension(:), allocatable qvs
real(wp), dimension(:), allocatable pi_infs
real(wp), dimension(:, :), allocatable, public mpi_io_data_lag_bubbles
logical adv_n
Solve the number density equation and compute alpha from number density.
integer num_procs
Number of processors.
character(len=path_len) case_dir
Case folder location.
real(wp) weno_eps
Binding for the WENO nonlinear weights.
type(vec3_dt), dimension(:), allocatable airfoil_grid_l
type(scalar_field), dimension(:, :, :), allocatable mom_3d
type(int_bounds_info) adv_idx
Indexes of first & last advection eqns.
integer weno_order
Order of the WENO reconstruction.
real(wp), dimension(3) dir_flg
logical mhd
Magnetohydrodynamics.
real(wp), dimension(:), allocatable, target x_cc
integer, dimension(3) shear_indices
Indices of the stress components that represent shear stress.
type(acoustic_parameters), dimension(num_probes_max) acoustic
Acoustic source parameters.
real(wp) tau_star
Stress threshold for continuum damage modeling.
logical parallel_io
Format of the data files.
type(integral_parameters), dimension(num_probes_max) integral
real(wp), dimension(:), allocatable, target y_cb
real(wp) adap_dt_tol
Tolerance to control adaptive step size.
integer e_idx
Index of energy equation.
type(scalar_field), dimension(:), allocatable mom_sp
type(cell_num_bounds) cells_bounds
logical down_sample
down sample the output files
type(mpi_io_airfoil_ib_var), public mpi_io_airfoil_ib_data
real(wp), dimension(:), allocatable mass_g0
logical file_per_process
shared file or not when using parallel io
real(wp) palpha_eps
trigger parameter for the p relaxation procedure, phase change model
integer num_igr_warm_start_iters
number of warm start iterations for elliptic solve
logical elasticity
elasticity modeling, true for hyper or hypo
integer nb
Number of eq. bubble sizes.
type(mpi_io_var), public mpi_io_data
integer c_idx
Index of color function.
impure subroutine s_initialize_parallel_io
Initializes parallel infrastructure.
logical wenojs
WENO-JS (default).
logical mpp_lim
Mixture physical parameters (MPP) limits.
integer num_igr_iters
number of iterations for elliptic solve
real(wp) teno_ct
Smoothness threshold for TENO.
real(wp), dimension(:), allocatable omegan
integer low_mach
Low Mach number fix to HLLC Riemann solver.
integer igr_order
Reconstruction order for IGR.
integer psi_idx
Index of hyperbolic cleaning state variable for MHD.
integer muscl_polyn
Degree of the MUSCL polynomials (polyn)i.
logical teno
TENO (Targeted ENO).
real(wp), dimension(:), allocatable re_trans_c
real(wp), dimension(:), allocatable, target dy
real(wp) dt
Size of the time-step.
type(subgrid_bubble_physical_parameters) bub_pp
logical shear_stress
Shear stresses.
integer time_stepper
Time-stepper algorithm.
type(int_bounds_info) species_idx
Indexes of first & last concentration eqns.
logical relativity
Relativity (only for MHD).
real(wp), dimension(:), allocatable gammas
integer bubble_model
Gilmore or Keller–Miksis bubble model.
real(wp), dimension(:), allocatable gs_min
real(wp) finaltime
Final simulation time.
real(wp), dimension(:), allocatable, target dz
real(wp), dimension(:), allocatable, target dx
logical mapped_weno
WENO-M (WENO with mapping of nonlinear weights).
real(wp), dimension(:), allocatable pe_t
integer alf_idx
Index of void fraction.
integer igr_iter_solver
IGR elliptic solver.
real(wp), dimension(:), allocatable mass_v0
integer muscl_lim
MUSCL Limiter.
real(wp), dimension(:), allocatable, target x_cb
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
elemental subroutine, public s_update_cell_bounds(bounds, m, n, p)
Updates the min and max number of cells in each set of axes.
Derived type adding beginning (beg) and end bounds info as attributes.
bounds for the bubble dynamic variables
Max and min number of cells in a direction of each combination of x-,y-, and z-.
Integer bounds for variables.
Derived type annexing integral regions.
Derived type annexing the physical parameters (PP) of the fluids. These include the specific heat rat...
Derived type for bubble variables pb and mv at quadrature nodes (qbmm).
Derived type annexing a scalar field (SF).
Derived type annexing the physical parameters required for sub-grid bubble models.
Generic 3-component vector (e.g., spatial coordinates or field components) Named _dt (derived types: ...