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