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