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