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