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