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