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