MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_global_parameters_common.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
2!>
3!! @file
4!! @brief Contains module m_global_parameters_common
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/common/m_global_parameters_common.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/common/m_global_parameters_common.fpp" 2
332
333!> @brief Shared global parameters and equation-index setup for all three executables. Each per-target m_global_parameters uses this
334!! module (default-public, so all symbols re-export to downstream consumers via two-hop use-association).
336
337#ifdef MFC_MPI
338 use mpi
339#endif
340
342 use m_thermochem, only: num_species
345
346 implicit none
347
348 ! All namelist-bound scalar and array declarations (per-target, regenerated at build time by the ninja custom command)
349# 1 "/home/runner/work/MFC/MFC/build/include/pre_process/generated_decls.fpp" 1
350! AUTO-GENERATED - do not edit directly. Regenerate: cmake reconfigure
351!
352real(wp) :: bx0
353real(wp) :: ca
354real(wp) :: r0ref
355real(wp) :: re_inv
356real(wp) :: web
357real(wp) :: a_x
358real(wp) :: a_y
359real(wp) :: a_z
360logical :: adv_n
363character(LEN=path_len) :: case_dir
364logical :: cfl_adap_dt
365logical :: cfl_const_dt
366logical :: cont_damage
367logical :: cyl_coord
368integer :: dist_type
369logical :: down_sample
372logical :: fft_wrt
374real(wp), dimension(num_fluids_max) :: fluid_rho
378logical :: ib
379logical :: igr
380integer :: igr_order
381integer :: loops_x
382integer :: loops_y
383integer :: loops_z
384integer :: m
385logical :: mhd
391integer :: model_eqns
392logical :: mpp_lim
393integer :: muscl_order
394integer :: n
395integer :: n_start
396integer :: n_start_old
397integer :: nb
399integer :: num_fluids
400integer :: num_ibs
401integer :: num_patches
403logical :: old_grid
404logical :: old_ic
405integer :: p
406real(wp) :: palpha_eps
407logical :: parallel_io
408logical :: perturb_flow
411logical :: perturb_sph
413real(wp) :: pi_fac
414real(wp) :: poly_sigma
415logical :: polydisperse
416logical :: polytropic
417logical :: pre_stress
418integer :: precision
419real(wp) :: pref
420real(wp) :: ptgalpha_eps
421logical :: qbmm
422integer :: recon_type
423logical :: relativity
424logical :: relax
425integer :: relax_model
426real(wp) :: rhorv
427real(wp) :: rhoref
428real(wp) :: sigr
429real(wp) :: sigv
430real(wp) :: sigma
432logical :: stretch_x
433logical :: stretch_y
434logical :: stretch_z
436integer :: t_step_old
437integer :: t_step_start
438integer :: thermal
439logical :: viscous
440integer :: weno_order
441real(wp) :: x_a
442real(wp) :: x_b
443real(wp) :: y_a
444real(wp) :: y_b
445real(wp) :: z_a
446real(wp) :: z_b
447type(physical_parameters), dimension(num_fluids_max) :: fluid_pp !< Per-fluid stiffened-gas EOS parameters, Reynolds numbers, and shear modulus
448type(subgrid_bubble_physical_parameters) :: bub_pp !< Subgrid bubble physical parameters
449type(ic_patch_parameters), dimension(num_patches_max) :: patch_icpp !< IC patch parameters
450type(bc_patch_parameters), dimension(num_bc_patches_max) :: patch_bc !< Boundary condition patch parameters
451type(ib_patch_parameters), dimension(num_ib_patches_max_namelist) :: patch_ib !< Immersed boundary patch parameters
452type(ib_airfoil_parameters), dimension(num_ib_airfoils_max) :: ib_airfoil !< Per-airfoil NACA user inputs
453type(ib_stl_parameters), dimension(num_stl_models_max) :: stl_models !< Per-STL model parameters
455# 25 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp" 2
456
457 ! Case-optimization declarations: parameters (under MFC_CASE_OPTIMIZATION) or plain variables for
458 ! num_dims, num_vels, weno_polyn, muscl_polyn, weno_num_stencils, wenojs, igr, etc.
459# 1 "/home/runner/work/MFC/MFC/build/include/pre_process/generated_case_opt_decls.fpp" 1
460! AUTO-GENERATED - do not edit directly. Regenerate: cmake reconfigure
461!
462! (no case-optimization declarations for this target)
463# 29 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp" 2
464
465 ! For pre_process and post_process: num_dims and num_vels are declared manually here
466 ! (sim gets them from generated_case_opt_decls.fpp above)
467#ifndef MFC_SIMULATION
468 integer :: num_dims !< Number of spatial dimensions
469 integer :: num_vels !< Number of velocity components (different from num_dims for mhd)
470#endif
471
472 ! For pre_process: weno_polyn and muscl_polyn are declared manually here
473 ! (sim gets them from generated_case_opt_decls.fpp; post does not use them)
474#ifdef MFC_PRE_PROCESS
475 integer :: weno_polyn !< Degree of the WENO polynomials
476 integer :: muscl_polyn !< Degree of the MUSCL polynomials
477#endif
478
479 !> @name Annotations of the structure of the state and flux vectors in terms of the size and configuration of the system of
480 !! equations
481 !> @{
482 integer :: sys_size !< Number of unknowns in system of equations
483 type(eqn_idx_info) :: eqn_idx !< All conserved-variable equation index ranges and scalars
484 integer :: b_size !< Number of elements in the symmetric b tensor, plus one
485 integer :: tensor_size !< Number of elements in the full tensor plus one
486 !> @}
487
488 !> @name Chemistry modeling (Fypp compile-time constant; same value in all targets)
489 !> @{
490 logical, parameter :: chemistry = .false.
491 !> @}
492
493 !> @name Elasticity and shear stress state (identical across all three executables)
494 !> @{
495 logical :: elasticity !< elasticity modeling, true for hyper or hypo
496 integer :: shear_num !< Number of shear stress components
497 integer, dimension(3) :: shear_indices !< Indices of the stress components that represent shear stress
498 integer :: shear_bc_flip_num !< Number of shear stress components to reflect for boundary conditions
499 integer, dimension(3, 2) :: shear_bc_flip_indices !< Shear stress BC reflection indices (1:3, 1:shear_BC_flip_num)
500 !> @}
501
502#ifdef MFC_SIMULATION
503
504# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
505#if defined(MFC_OpenACC)
506# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
507!$acc declare create(sys_size, eqn_idx, b_size, tensor_size)
508# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
509#elif defined(MFC_OpenMP)
510# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
511!$omp declare target (sys_size, eqn_idx, b_size, tensor_size)
512# 68 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
513#endif
514
515# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
516#if defined(MFC_OpenACC)
517# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
518!$acc declare create(shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
519# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
520#elif defined(MFC_OpenMP)
521# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
522!$omp declare target (shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices)
523# 69 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
524#endif
525 ! Device residency for namelist/case-opt state declared above via the generated
526 ! includes: declare directives must live in the declaring module (Cray ftn rejects
527 ! declare-target on use-associated names), so these moved here from simulation.
528
529# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
530#if defined(MFC_OpenACC)
531# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
532!$acc declare create(cyl_coord)
533# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
534#elif defined(MFC_OpenMP)
535# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
536!$omp declare target (cyl_coord)
537# 73 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
538#endif
539
540# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
541#if defined(MFC_OpenACC)
542# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
543!$acc declare create(dt, m, n, p)
544# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
545#elif defined(MFC_OpenMP)
546# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
547!$omp declare target (dt, m, n, p)
548# 74 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
549#endif
550
551# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
552#if defined(MFC_OpenACC)
553# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
554!$acc declare create(cfl_target)
555# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
556#elif defined(MFC_OpenMP)
557# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
558!$omp declare target (cfl_target)
559# 75 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
560#endif
561
562# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
563#if defined(MFC_OpenACC)
564# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
565!$acc declare create(int_comp, ic_eps, ic_beta)
566# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
567#elif defined(MFC_OpenMP)
568# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
569!$omp declare target (int_comp, ic_eps, ic_beta)
570# 76 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
571#endif
572
573# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
574#if defined(MFC_OpenACC)
575# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
576!$acc declare create(muscl_eps)
577# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
578#elif defined(MFC_OpenMP)
579# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
580!$omp declare target (muscl_eps)
581# 77 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
582#endif
583
584# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
585#if defined(MFC_OpenACC)
586# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
587!$acc declare create(mpp_lim, model_eqns, mixture_err, alt_soundspeed)
588# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
589#elif defined(MFC_OpenMP)
590# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
591!$omp declare target (mpp_lim, model_eqns, mixture_err, alt_soundspeed)
592# 78 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
593#endif
594
595# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
596#if defined(MFC_OpenACC)
597# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
598!$acc declare create(avg_state, mp_weno, weno_eps, teno_CT, hypoelasticity)
599# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
600#elif defined(MFC_OpenMP)
601# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
602!$omp declare target (avg_state, mp_weno, weno_eps, teno_CT, hypoelasticity)
603# 79 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
604#endif
605
606# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
607#if defined(MFC_OpenACC)
608# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
609!$acc declare create(hyperelasticity, elasticity, low_Mach)
610# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
611#elif defined(MFC_OpenMP)
612# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
613!$omp declare target (hyperelasticity, elasticity, low_Mach)
614# 80 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
615#endif
616
617# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
618#if defined(MFC_OpenACC)
619# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
620!$acc declare create(cont_damage, hyper_cleaning)
621# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
622#elif defined(MFC_OpenMP)
623# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
624!$omp declare target (cont_damage, hyper_cleaning)
625# 81 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
626#endif
627
628# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
629#if defined(MFC_OpenACC)
630# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
631!$acc declare create(relax, relax_model, palpha_eps, ptgalpha_eps)
632# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
633#elif defined(MFC_OpenMP)
634# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
635!$omp declare target (relax, relax_model, palpha_eps, ptgalpha_eps)
636# 82 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
637#endif
638
639# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
640#if defined(MFC_OpenACC)
641# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
642!$acc declare create(down_sample)
643# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
644#elif defined(MFC_OpenMP)
645# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
646!$omp declare target (down_sample)
647# 83 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
648#endif
649
650# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
651#if defined(MFC_OpenACC)
652# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
653!$acc declare create(fd_order)
654# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
655#elif defined(MFC_OpenMP)
656# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
657!$omp declare target (fd_order)
658# 84 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
659#endif
660
661# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
662#if defined(MFC_OpenACC)
663# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
664!$acc declare create(rhoref, pref)
665# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
666#elif defined(MFC_OpenMP)
667# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
668!$omp declare target (rhoref, pref)
669# 85 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
670#endif
671
672# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
673#if defined(MFC_OpenACC)
674# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
675!$acc declare create(ib, num_ibs)
676# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
677#elif defined(MFC_OpenMP)
678# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
679!$omp declare target (ib, num_ibs)
680# 86 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
681#endif
682
683# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
684#if defined(MFC_OpenACC)
685# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
686!$acc declare create(ib_coefficient_of_friction)
687# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
688#elif defined(MFC_OpenMP)
689# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
690!$omp declare target (ib_coefficient_of_friction)
691# 87 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
692#endif
693
694# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
695#if defined(MFC_OpenACC)
696# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
697!$acc declare create(Ca, Web, Re_inv)
698# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
699#elif defined(MFC_OpenMP)
700# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
701!$omp declare target (Ca, Web, Re_inv)
702# 88 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
703#endif
704
705# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
706#if defined(MFC_OpenACC)
707# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
708!$acc declare create(bubbles_euler, polytropic, polydisperse)
709# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
710#elif defined(MFC_OpenMP)
711# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
712!$omp declare target (bubbles_euler, polytropic, polydisperse)
713# 89 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
714#endif
715
716# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
717#if defined(MFC_OpenACC)
718# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
719!$acc declare create(adv_n, adap_dt, adap_dt_tol, adap_dt_max_iters)
720# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
721#elif defined(MFC_OpenMP)
722# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
723!$omp declare target (adv_n, adap_dt, adap_dt_tol, adap_dt_max_iters)
724# 90 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
725#endif
726
727# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
728#if defined(MFC_OpenACC)
729# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
730!$acc declare create(bubble_model, thermal)
731# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
732#elif defined(MFC_OpenMP)
733# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
734!$omp declare target (bubble_model, thermal)
735# 91 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
736#endif
737
738# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
739#if defined(MFC_OpenACC)
740# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
741!$acc declare create(poly_sigma)
742# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
743#elif defined(MFC_OpenMP)
744# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
745!$omp declare target (poly_sigma)
746# 92 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
747#endif
748
749# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
750#if defined(MFC_OpenACC)
751# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
752!$acc declare create(qbmm, pi_fac)
753# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
754#elif defined(MFC_OpenMP)
755# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
756!$omp declare target (qbmm, pi_fac)
757# 93 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
758#endif
759
760# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
761#if defined(MFC_OpenACC)
762# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
763!$acc declare create(R0ref)
764# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
765#elif defined(MFC_OpenMP)
766# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
767!$omp declare target (R0ref)
768# 94 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
769#endif
770
771# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
772#if defined(MFC_OpenACC)
773# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
774!$acc declare create(acoustic_source, num_source)
775# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
776#elif defined(MFC_OpenMP)
777# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
778!$omp declare target (acoustic_source, num_source)
779# 95 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
780#endif
781
782# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
783#if defined(MFC_OpenACC)
784# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
785!$acc declare create(sigma, surface_tension)
786# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
787#elif defined(MFC_OpenMP)
788# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
789!$omp declare target (sigma, surface_tension)
790# 96 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
791#endif
792
793# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
794#if defined(MFC_OpenACC)
795# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
796!$acc declare create(bubbles_lagrange)
797# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
798#elif defined(MFC_OpenMP)
799# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
800!$omp declare target (bubbles_lagrange)
801# 97 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
802#endif
803
804# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
805#if defined(MFC_OpenACC)
806# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
807!$acc declare create(Bx0)
808# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
809#elif defined(MFC_OpenMP)
810# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
811!$omp declare target (Bx0)
812# 98 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
813#endif
814
815# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
816#if defined(MFC_OpenACC)
817# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
818!$acc declare create(tau_star, cont_damage_s, alpha_bar)
819# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
820#elif defined(MFC_OpenMP)
821# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
822!$omp declare target (tau_star, cont_damage_s, alpha_bar)
823# 99 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
824#endif
825
826# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
827#if defined(MFC_OpenACC)
828# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
829!$acc declare create(hyper_cleaning_speed, hyper_cleaning_tau)
830# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
831#elif defined(MFC_OpenMP)
832# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
833!$omp declare target (hyper_cleaning_speed, hyper_cleaning_tau)
834# 100 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
835#endif
836# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
837
838# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
839#if defined(MFC_OpenACC)
840# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
841!$acc declare create(num_dims, num_vels, weno_polyn, weno_order)
842# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
843#elif defined(MFC_OpenMP)
844# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
845!$omp declare target (num_dims, num_vels, weno_polyn, weno_order)
846# 102 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
847#endif
848
849# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
850#if defined(MFC_OpenACC)
851# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
852!$acc declare create(weno_num_stencils, num_fluids, wenojs)
853# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
854#elif defined(MFC_OpenMP)
855# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
856!$omp declare target (weno_num_stencils, num_fluids, wenojs)
857# 103 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
858#endif
859
860# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
861#if defined(MFC_OpenACC)
862# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
863!$acc declare create(mapped_weno, wenoz, teno, wenoz_q, mhd, relativity)
864# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
865#elif defined(MFC_OpenMP)
866# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
867!$omp declare target (mapped_weno, wenoz, teno, wenoz_q, mhd, relativity)
868# 104 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
869#endif
870
871# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
872#if defined(MFC_OpenACC)
873# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
874!$acc declare create(igr_iter_solver, igr_order, viscous, igr_pres_lim, igr)
875# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
876#elif defined(MFC_OpenMP)
877# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
878!$omp declare target (igr_iter_solver, igr_order, viscous, igr_pres_lim, igr)
879# 105 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
880#endif
881
882# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
883#if defined(MFC_OpenACC)
884# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
885!$acc declare create(recon_type, muscl_order, muscl_polyn, muscl_lim)
886# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
887#elif defined(MFC_OpenMP)
888# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
889!$omp declare target (recon_type, muscl_order, muscl_polyn, muscl_lim)
890# 106 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
891#endif
892# 108 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
893#endif
894
895 !> @name Processor coordinates and parallel-IO addressing (identical declaration across all three targets)
896 !> @{
897 integer, allocatable, dimension(:) :: proc_coords !< Processor coordinates in MPI_CART_COMM
898 integer, allocatable, dimension(:) :: start_idx !< Starting cell-center index of local processor in global grid
899 integer :: num_procs_x = 1 !< Number of MPI ranks in x-direction
900 integer :: num_procs_y = 1 !< Number of MPI ranks in y-direction
901 integer :: num_procs_z = 1 !< Number of MPI ranks in z-direction
902 !> @}
903
904 !> @name MPI info for parallel IO with Lustre file systems (identical across all three targets)
905 !> @{
906 character(len=name_len) :: mpiiofs
907 integer :: mpi_info_int
908 !> @}
909
910contains
911
912 !> Initialize equation-index state (eqn_idx, sys_size, b_size, tensor_size) from the namelist parameters. This is the shared
913 !! skeleton: it covers the model_eqns dispatch, all eqn_idx field assignments, and the elasticity/surface-tension/chemistry
914 !! extensions.
915 !!
916 !! @param nmom_in Number of carried moments per R0 location (per-target: pre/post pass an
917 !! integer variable; sim passes its integer parameter nmom = 6). Used only in the 5eq
918 !! qbmm bubble-index calculation (eqn_idx%bub%end = eqn_idx%adv%end + nb_in*nmom_in).
919 !!
920 !! Per-target callers are responsible for the following after this call:
921 !! - qbmm_idx allocations and fills (diverge between pre vs sim/post)
922 !! - sim-only: gam = bub_pp%gam_g, nmomsp/nmomtot, Re_idx allocation, GPU_UPDATE calls
923 !! - post-only: beta_idx increment (bubbles_lagrange path), offset/grid allocations
924 impure subroutine s_initialize_eqn_idx(nmom_in, nb_in)
925
926 integer, intent(in) :: nmom_in
927 integer, intent(in) :: nb_in
928
929 ! Gamma/Pi_inf Model
930
932 ! Annotating structure of the state and flux vectors belonging to the system of
933 ! equations defined by the selected number of spatial dimensions and the gamma/pi_inf model
934 eqn_idx%cont%beg = 1
935 eqn_idx%cont%end = eqn_idx%cont%beg
936 eqn_idx%mom%beg = eqn_idx%cont%end + 1
937 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
938 eqn_idx%E = eqn_idx%mom%end + 1
939 eqn_idx%adv%beg = eqn_idx%E + 1
940 eqn_idx%adv%end = eqn_idx%adv%beg + 1
941 eqn_idx%gamma = eqn_idx%adv%beg
942 eqn_idx%pi_inf = eqn_idx%adv%end
943 sys_size = eqn_idx%adv%end
944
945 ! Volume Fraction Model (5-equation model)
946 else if (model_eqns == model_eqns_5eq) then
947 ! Annotating structure of the state and flux vectors belonging to the system of
948 ! equations defined by the selected number of spatial dimensions and the volume fraction model
949 eqn_idx%cont%beg = 1
950 eqn_idx%cont%end = num_fluids
951 eqn_idx%mom%beg = eqn_idx%cont%end + 1
952 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
953 eqn_idx%E = eqn_idx%mom%end + 1
954
955 if (igr) then
956 ! IGR: volume fractions after energy (N-1 for N fluids; skipped when num_fluids=1)
957 eqn_idx%adv%beg = eqn_idx%E + 1
958 eqn_idx%adv%end = eqn_idx%E + num_fluids - 1
959 else
960 ! WENO/MUSCL + Riemann tracks a total of (N) volume fractions for N fluids
961 eqn_idx%adv%beg = eqn_idx%E + 1
962 eqn_idx%adv%end = eqn_idx%E + num_fluids
963 end if
964
965 sys_size = eqn_idx%adv%end
966
967 if (bubbles_euler) then
968 eqn_idx%alf = eqn_idx%adv%end
969 else
970 eqn_idx%alf = 1
971 end if
972
973 if (bubbles_euler) then
974 eqn_idx%bub%beg = sys_size + 1
975 if (qbmm) then
976 eqn_idx%bub%end = eqn_idx%adv%end + nb_in*nmom_in
977 else
978 if (.not. polytropic) then
979 eqn_idx%bub%end = sys_size + 4*nb_in
980 else
981 eqn_idx%bub%end = sys_size + 2*nb_in
982 end if
983 end if
984 sys_size = eqn_idx%bub%end
985
986 if (adv_n) then
987 eqn_idx%n = eqn_idx%bub%end + 1
988 sys_size = eqn_idx%n
989 end if
990 end if
991
992 if (mhd) then
993 eqn_idx%B%beg = sys_size + 1
994 if (n == 0) then
995 eqn_idx%B%end = sys_size + 2 ! 1D: By, Bz
996 else
997 eqn_idx%B%end = sys_size + 3 ! 2D/3D: Bx, By, Bz
998 end if
999 sys_size = eqn_idx%B%end
1000 end if
1001
1002 ! Volume Fraction Model (6-equation model)
1003 else if (model_eqns == model_eqns_6eq) then
1004 ! Annotating structure of the state and flux vectors belonging to the system of
1005 ! equations defined by the selected number of spatial dimensions and the volume fraction model
1006 eqn_idx%cont%beg = 1
1007 eqn_idx%cont%end = num_fluids
1008 eqn_idx%mom%beg = eqn_idx%cont%end + 1
1009 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
1010 eqn_idx%E = eqn_idx%mom%end + 1
1011 eqn_idx%adv%beg = eqn_idx%E + 1
1012 eqn_idx%adv%end = eqn_idx%E + num_fluids
1013#ifdef MFC_SIMULATION
1014 eqn_idx%alf = eqn_idx%adv%end
1015#endif
1016 eqn_idx%int_en%beg = eqn_idx%adv%end + 1
1017 eqn_idx%int_en%end = eqn_idx%adv%end + num_fluids
1018 sys_size = eqn_idx%int_en%end
1019 else if (model_eqns == model_eqns_4eq) then
1020 ! 4-equation model with subgrid bubbles
1021 eqn_idx%cont%beg = 1
1022 eqn_idx%cont%end = 1
1023 eqn_idx%mom%beg = eqn_idx%cont%end + 1
1024 eqn_idx%mom%end = eqn_idx%cont%end + num_vels
1025 eqn_idx%E = eqn_idx%mom%end + 1
1026 eqn_idx%adv%beg = eqn_idx%E + 1
1027 eqn_idx%adv%end = eqn_idx%adv%beg
1028 eqn_idx%alf = eqn_idx%adv%end
1029 sys_size = eqn_idx%adv%end
1030
1031 if (bubbles_euler) then
1032 eqn_idx%bub%beg = sys_size + 1
1033 eqn_idx%bub%end = sys_size + 2*nb_in
1034 if (.not. polytropic) then
1035 eqn_idx%bub%end = sys_size + 4*nb_in
1036 end if
1037 sys_size = eqn_idx%bub%end
1038 end if
1039 end if
1040
1042 if (hypoelasticity .or. hyperelasticity) then
1043 elasticity = .true.
1044 eqn_idx%stress%beg = sys_size + 1
1045 eqn_idx%stress%end = sys_size + (num_dims*(num_dims + 1))/2
1046 if (cyl_coord) eqn_idx%stress%end = eqn_idx%stress%end + 1
1047 ! number of stresses is 1 in 1D, 3 in 2D, 4 in 2D-Axisym, 6 in 3D
1048 sys_size = eqn_idx%stress%end
1049
1050 ! shear stress index is 2 for 2D and 2,4,5 for 3D
1051 if (num_dims == 1) then
1052 shear_num = 0
1053 else if (num_dims == 2) then
1054 shear_num = 1
1055 shear_indices(1) = eqn_idx%stress%beg - 1 + 2
1058 ! Both x-dir and y-dir: flip tau_xy only
1059 else if (num_dims == 3) then
1060 shear_num = 3
1061 shear_indices(1:3) = eqn_idx%stress%beg - 1 + (/2, 4, 5/)
1063 shear_bc_flip_indices(1,1:2) = shear_indices((/1, 2/))
1064 shear_bc_flip_indices(2,1:2) = shear_indices((/1, 3/))
1065 shear_bc_flip_indices(3,1:2) = shear_indices((/2, 3/))
1066 ! x-dir: flip tau_xy and tau_xz; y-dir: flip tau_xy and tau_yz; z-dir: flip tau_xz and tau_yz
1067 end if
1068 end if
1069
1070 if (hyperelasticity) then
1071 ! number of entries in the symmetric b tensor plus the jacobian
1072 b_size = (num_dims*(num_dims + 1))/2 + 1
1073 tensor_size = num_dims**2 + 1
1074 eqn_idx%xi%beg = sys_size + 1
1075 eqn_idx%xi%end = sys_size + num_dims
1076 ! adding equations for the xi field and the elastic energy
1077 sys_size = eqn_idx%xi%end + 1
1078 end if
1079
1080 if (surface_tension) then
1081 eqn_idx%c = sys_size + 1
1082 sys_size = eqn_idx%c
1083 end if
1084
1085 if (cont_damage) then
1086 eqn_idx%damage = sys_size + 1
1087 sys_size = eqn_idx%damage
1088 end if
1089
1090 if (hyper_cleaning) then
1091 eqn_idx%psi = sys_size + 1
1092 sys_size = eqn_idx%psi
1093 end if
1094 end if
1095
1096 if (chemistry) then
1097 eqn_idx%species%beg = sys_size + 1
1098 eqn_idx%species%end = sys_size + num_species
1099 sys_size = eqn_idx%species%end
1100 end if
1101
1102 end subroutine s_initialize_eqn_idx
1103
1104 !> Configure MPI parallel I/O settings and allocate processor coordinate arrays. Shared across all three executables;
1105 !! num_dims/num_vels are computed here for pre/post unconditionally and for sim only when not case-optimized (in which case they
1106 !! are compile-time parameters). Callers must have already populated n and p (grid dimensions).
1108
1109#ifdef MFC_MPI
1110 integer :: ierr !< Generic flag used to identify and report MPI errors
1111#endif
1112
1113#ifdef MFC_SIMULATION
1114 ! Under case-optimization, num_dims and num_vels are compile-time parameters; skip assignment.
1115# 331 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
1116 num_dims = 1 + min(1, n) + min(1, p)
1117
1118 if (mhd) then
1119 num_vels = 3
1120 else
1122 end if
1123# 339 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
1124#else
1125 num_dims = 1 + min(1, n) + min(1, p)
1126
1127 if (mhd) then
1128 num_vels = 3
1129 else
1131 end if
1132#endif
1133
1134 allocate (proc_coords(1:num_dims))
1135
1136 if (parallel_io .neqv. .true.) return
1137
1138#ifdef MFC_MPI
1139 ! Option for Lustre file system (Darter/Comet/Stampede)
1140 write (mpiiofs, '(A)') '/lustre_'
1141 mpiiofs = trim(mpiiofs)
1142 call mpi_info_create(mpi_info_int, ierr)
1143 call mpi_info_set(mpi_info_int, 'romio_ds_write', 'disable', ierr)
1144
1145 ! Option for UNIX file system (Hooke/Thomson) WRITE(mpiiofs, '(A)') '/ufs_' mpiiofs = TRIM(mpiiofs) mpi_info_int =
1146 ! MPI_INFO_NULL
1147
1148 allocate (start_idx(1:num_dims))
1149#endif
1150
1151 end subroutine s_initialize_parallel_io_common
1152
1153 !> Shared finalize core: deallocate proc_coords and start_idx. Per-target finalize routines call this first, then handle their
1154 !! own extras (qbmm_idx, grid arrays, MPI_IO_DATA null/dealloc - those reference per-target typed variables and stay
1155 !! per-target).
1157
1158 deallocate (proc_coords)
1159
1160#ifdef MFC_MPI
1161 if (parallel_io) then
1162 deallocate (start_idx)
1163 end if
1164#endif
1165
1167
1168 !> Assign default values to the user-input parameters that are shared across all three executables (pre_process, simulation,
1169 !! post_process). Per-target defaults (bc_io, cfl_dt, precision, nb, chem_params, bub_pp scalar companions, fluid_pp loop, patch
1170 !! arrays, output flags) remain in the per-target s_assign_default_values_to_user_inputs routines, which call this subroutine
1171 !! first, then call s_update_cell_bounds(cells_bounds, m, n, p) (cells_bounds is per-target), then apply their own assignments.
1173
1174 ! Logistics
1175 case_dir = '.'
1176
1177 ! Computational domain parameters (m/n/p set here; caller must call s_update_cell_bounds after)
1178 m = dflt_int; n = 0; p = 0
1179
1180 cyl_coord = .false.
1181
1182 ! CFL adaptive time-stepping flags
1183 cfl_adap_dt = .false.
1184 cfl_const_dt = .false.
1185
1186 ! Time-stepping bookkeeping
1189
1190 ! Simulation algorithm
1192 relax = .false.
1194 hypoelasticity = .false.
1195 hyperelasticity = .false.
1196 elasticity = .false.
1199 cont_damage = .false.
1200 hyper_cleaning = .false.
1201
1202 ! Case-optimization params: under case-opt these are compile-time constants in sim (skip assignment); in pre/post
1203 ! MFC_CASE_OPTIMIZATION is always False so the block always executes there.
1204# 420 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
1209 igr = .false.
1211 mhd = .false.
1212 relativity = .false.
1213# 429 "/home/runner/work/MFC/MFC/src/common/m_global_parameters_common.fpp"
1214
1215 ! Tait EOS
1217 pref = dflt_real
1218
1219 ! Bubble modeling flags and parameters
1221 bubbles_euler = .false.
1222 polydisperse = .false.
1224 qbmm = .false.
1225 surface_tension = .false.
1226 adv_n = .false.
1228 bubbles_lagrange = .false.
1229
1230 ! Immersed boundaries
1231 ib = .false.
1233
1234 ! MHD (background field)
1235 bx0 = dflt_real
1236
1237 ! Output and I/O options
1238 parallel_io = .false.
1239 file_per_process = .false.
1240 down_sample = .false.
1241 fft_wrt = .false.
1242
1243 end subroutine s_assign_common_defaults
1244
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter model_eqns_4eq
integer, parameter model_eqns_5eq
integer, parameter name_len
Maximum name length.
integer, parameter dflt_int
Default integer value.
real(wp), parameter dflt_real
Default real value.
integer, parameter recon_type_muscl
integer, parameter recon_type_weno
integer, parameter model_eqns_6eq
integer, parameter model_eqns_gamma_law
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.
integer, dimension(:), allocatable start_idx
Starting cell-center index of local processor in global grid.
impure subroutine s_finalize_global_parameters_common
Shared finalize core: deallocate proc_coords and start_idx. Per-target finalize routines call this fi...
type(ic_patch_parameters), dimension(num_patches_max) patch_icpp
IC patch parameters.
type(subgrid_bubble_physical_parameters) bub_pp
Subgrid bubble physical parameters.
integer shear_num
Number of shear stress components.
integer sys_size
Number of unknowns in system of equations.
integer num_procs_y
Number of MPI ranks in y-direction.
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Per-fluid stiffened-gas EOS parameters, Reynolds numbers, and shear modulus.
integer shear_bc_flip_num
Number of shear stress components to reflect for boundary conditions.
integer tensor_size
Number of elements in the full tensor plus one.
logical elasticity
elasticity modeling, true for hyper or hypo
type(bc_patch_parameters), dimension(num_bc_patches_max) patch_bc
Boundary condition patch parameters.
integer, dimension(:), allocatable proc_coords
Processor coordinates in MPI_CART_COMM.
integer num_procs_x
Number of MPI ranks in x-direction.
integer num_dims
Number of spatial dimensions.
integer num_vels
Number of velocity components (different from num_dims for mhd).
type(eqn_idx_info) eqn_idx
All conserved-variable equation index ranges and scalars.
integer num_procs_z
Number of MPI ranks in z-direction.
integer, dimension(3, 2) shear_bc_flip_indices
Shear stress BC reflection indices (1:3, 1:shear_BC_flip_num).
real(wp), dimension(num_fluids_max) fluid_rho
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.
impure subroutine s_initialize_parallel_io_common
Configure MPI parallel I/O settings and allocate processor coordinate arrays. Shared across all three...
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_...
integer b_size
Number of elements in the symmetric b tensor, plus one.
integer, dimension(3) shear_indices
Indices of the stress components that represent shear stress.
All conserved-variable equation indices, computed at startup from model_eqns and enabled features....
User-input parameters for a NACA 4-digit airfoil (namelist-safe: scalars only).
User-input parameters for an STL/OBJ immersed boundary model (namelist-safe: scalars + fixed arrays).
Derived type adding initial condition (ic) patch parameters as attributes NOTE: The requirements for ...
Derived type annexing the physical parameters (PP) of the fluids. These include the specific heat rat...
Derived type annexing the physical parameters required for sub-grid bubble models.