1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
6# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
7# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
8# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
9# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
10# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
11# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
12# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
13# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
15# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
16# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
19# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
36# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
37# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
38# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
66# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
67# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
68# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
69# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
70# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
144# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
145# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
146# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
147# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
148# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
174# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
176# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
178# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
233# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
236# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
294# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299# 55 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
302# 75 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305# 83 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308# 107 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311# 123 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314# 148 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316# 154 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
318# 161 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320# 6 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp" 2
321# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
327# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
330# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
331# 7 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp" 2
370 if (chemistry .and. chem_params%reaction_substeps < 0)
then
371# 45 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
372 call s_prohibit_abort(.and.
"chemistry chem_params%reaction_substeps < 0",
"chem_params%reaction_substeps must be >= 0 (0 = reaction source in the flow RHS; > 0 = operator-split sub-stepping)")
373# 45 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
375# 47 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
377 if (chemistry .and. igr .and. chem_params%reaction_substeps > 0)
then
378# 48 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
379 call s_prohibit_abort(.and..and.
"chemistry igr chem_params%reaction_substeps > 0",
"operator-split reaction sub-stepping (reaction_substeps > 0) is not supported with igr: the reactor reads the post-flow (rho, e, T) state, which the IGR update path does not guarantee")
380# 48 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
382# 50 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
384 if (chemistry .and. chem_params%adap_substeps .and. chem_params%reaction_substeps < 1)
then
385# 51 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
386 call s_prohibit_abort(.and..and.
"chemistry chem_params%adap_substeps chem_params%reaction_substeps < 1",
"chem_params%adap_substeps requires reaction_substeps >= 1 (the operator-split floor)")
387# 51 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
389# 53 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
391 if (chemistry .and. chem_params%adap_substeps .and. chem_params%reaction_substeps_max < chem_params%reaction_substeps)
then
392# 54 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
393 call s_prohibit_abort(.and..and.
"chemistry chem_params%adap_substeps chem_params%reaction_substeps_max < chem_params%reaction_substeps",
"chem_params%reaction_substeps_max must be >= reaction_substeps when adap_substeps = T")
394# 54 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
396# 57 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
401 if (chemistry .and. (bubbles_euler .or. qbmm))
then
402# 61 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
403 call s_prohibit_abort(.and..or.
"chemistry (bubbles_euler qbmm)",
"chemistry is not currently supported with Euler bubbles (bubbles_euler/qbmm)")
404# 61 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
406# 63 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
408 if (ib_state_wrt .and. .not. ib)
then
409# 64 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
410 call s_prohibit_abort(.and..not.
"ib_state_wrt ib",
"ib_state_wrt requires ib to be enabled")
411# 64 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
413 if (many_ib_patch_parallelism .and. .not. ib)
then
414# 65 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
415 call s_prohibit_abort(.and..not.
"many_ib_patch_parallelism ib",
"many_ib_patch_parallelism requires ib to be enabled")
416# 65 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
419 if (bf_spatial_support .and. (n == 0 .or. p /= 0))
then
420# 67 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
421 call s_prohibit_abort(.and..or.
"bf_spatial_support (n == 0 p /= 0)",
"bf_spatial_support is implemented for 2D only (it forces mom%beg and mom%beg+1)")
422# 67 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
424# 69 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
428 if (reactive_burn .and. num_fluids /= 2)
then
429# 72 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
430 call s_prohibit_abort(.and.
"reactive_burn num_fluids /= 2",
"reactive_burn requires num_fluids = 2 (reactant then product)")
431# 72 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
433 if (reactive_burn .and. .not.
f_approx_equal(fluid_pp(1)%gamma, fluid_pp(2)%gamma))
then
434# 73 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
435 call s_prohibit_abort(.and..not.
"reactive_burn f_approx_equal(fluid_pp(1)%gamma, fluid_pp(2)%gamma)",
"reactive_burn requires fluid_pp(1)%gamma == fluid_pp(2)%gamma (reactant and product share the EOS)")
436# 73 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
438# 75 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
439 if (reactive_burn .and. .not.
f_approx_equal(fluid_pp(1)%pi_inf, fluid_pp(2)%pi_inf))
then
440# 75 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
441 call s_prohibit_abort(.and..not.
"reactive_burn f_approx_equal(fluid_pp(1)%pi_inf, fluid_pp(2)%pi_inf)",
"reactive_burn requires fluid_pp(1)%pi_inf == fluid_pp(2)%pi_inf (reactant and product share the EOS)")
442# 75 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
444# 77 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
445 if (reactive_burn .and. fluid_pp(1)%qv <= fluid_pp(2)%qv)
then
446# 77 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
447 call s_prohibit_abort(.and.
"reactive_burn fluid_pp(1)%qv <= fluid_pp(2)%qv",
"reactive_burn requires fluid_pp(1)%qv > fluid_pp(2)%qv (reactant releases energy on conversion to product)")
448# 77 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
450# 79 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
451 if (reactive_burn .and. rburn%pref <= 0._wp)
then
452# 79 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
453 call s_prohibit_abort(.and.
"reactive_burn rburn%pref <= 0._wp",
"reactive_burn requires rburn%pref > 0 (it normalizes the pressure drive (p - rburn%pign)/rburn%pref and is used as a divisor)")
454# 79 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
456# 81 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
460 if (reactive_burn .and. rburn%k <= 0._wp)
then
461# 84 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
462 call s_prohibit_abort(.and.
"reactive_burn rburn%k <= 0._wp",
"reactive_burn requires rburn%k > 0 (rate coefficient [1/s]; unset defaults to a negative sentinel that runs the reaction backward)")
463# 84 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
465# 86 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
467# 86 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
468 call s_prohibit_abort(.and.
"reactive_burn f_is_default(rburn%pign)",
"reactive_burn requires rburn%pign to be set (ignition pressure threshold [Pa]; unset defaults to a negative sentinel, so the reactant ignites everywhere from t = 0)")
469# 86 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
471# 88 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
472 if (reactive_burn .and. rburn%n < 0._wp)
then
473# 88 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
474 call s_prohibit_abort(.and.
"reactive_burn rburn%n < 0._wp",
"reactive_burn requires rburn%n >= 0 (pressure-drive exponent; unset defaults to a negative sentinel, so drive**n overflows to Inf and the field goes NaN)")
475# 88 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
477# 90 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
478 if (reactive_burn .and. model_eqns /= 2 .and. model_eqns /= 3)
then
479# 90 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
480 call s_prohibit_abort(.and..and.
"reactive_burn model_eqns /= 2 model_eqns /= 3",
"reactive_burn requires model_eqns = 2 or 3 (the 5-equation pressure-equilibrium or 6-equation multi-fluid model)")
481# 90 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
483# 92 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
484 if (reactive_burn .and. rburn%ta < 0._wp)
then
485# 92 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
486 call s_prohibit_abort(.and.
"reactive_burn rburn%ta < 0._wp",
"reactive_burn requires rburn%ta >= 0 (activation temperature [K]; 0 disables the Arrhenius factor)")
487# 92 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
489# 94 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
490 if (reactive_burn .and. rburn%ta > 0._wp .and. fluid_pp(1)%cv <= 0._wp)
then
491# 94 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
492 call s_prohibit_abort(.and..and.
"reactive_burn rburn%ta > 0._wp fluid_pp(1)%cv <= 0._wp",
"reactive_burn with rburn%ta > 0 requires fluid_pp(1)%cv > 0 (the reactant temperature T = (p + pi_inf)/((gamma - 1) cv rho) needs a physical heat capacity; cv = 0 silently disables the Arrhenius factor)")
493# 94 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
495# 96 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
497 if (ib .and. chemistry)
then
501 if (num_particle_clouds > 0)
then
505 if (synthetic_turbulence)
then
514#if !defined(MFC_OpenACC) && !(defined(__PGI) || defined(_CRAYFTN))
516# 115 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
517 call s_prohibit_abort(
"rdma_mpi",
"Unsupported value of rdma_mpi for the current compiler")
518# 115 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
527 character(len=5) :: numstr
531# 126 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
532 call s_prohibit_abort(
"m + 1 < num_stcls_min*weno_order",
"m must be greater than or equal to (num_stcls_min*weno_order - 1), whose value is " // trim(numstr))
533# 126 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
535# 128 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
537# 128 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
538 call s_prohibit_abort(
"n + 1 < min(1, n)*num_stcls_min*weno_order",
"For 2D simulation, n must be greater than or equal to (num_stcls_min*weno_order - 1), whose value is " // trim(numstr))
539# 128 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
541# 131 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
543# 131 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
544 call s_prohibit_abort(
"p + 1 < min(1, p)*num_stcls_min*weno_order",
"For 3D simulation, p must be greater than or equal to (num_stcls_min*weno_order - 1), whose value is " // trim(numstr))
545# 131 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
547# 134 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
554 character(len=5) :: numstr
558# 143 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
559 call s_prohibit_abort(
"m + 1 < num_stcls_min*muscl_order",
"m must be greater than or equal to (num_stcls_min*muscl_order - 1), whose value is " // trim(numstr))
560# 143 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
562# 145 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
564# 145 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
565 call s_prohibit_abort(
"n + 1 < min(1, n)*num_stcls_min*muscl_order",
"For 2D simulation, n must be greater than or equal to (num_stcls_min*muscl_order - 1), whose value is " // trim(numstr))
566# 145 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
568# 148 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
570# 148 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
571 call s_prohibit_abort(
"p + 1 < min(1, p)*num_stcls_min*muscl_order",
"For 3D simulation, p must be greater than or equal to (num_stcls_min*muscl_order - 1), whose value is " // trim(numstr))
572# 148 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
574# 151 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
576# 151 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
577 call s_prohibit_abort(.and.
"muscl_order == muscl_order_first_order int_comp > 0",
"int_comp requires muscl_order >= 2 (muscl_order=1 leaves the reconstruction workspace uninitialised)")
578# 151 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
580# 153 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
589# 160 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
590 call s_prohibit_abort(
"dt <= 0",
"")
591# 160 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
600#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
601 if (nv_uvm_igr_temps_on_gpu > 3 .or. nv_uvm_igr_temps_on_gpu < 0)
then
602# 169 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
603 call s_prohibit_abort(.or.
"nv_uvm_igr_temps_on_gpu > 3 nv_uvm_igr_temps_on_gpu < 0",
"nv_uvm_igr_temps_on_gpu must be in the range [0, 3]")
604# 169 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
606# 171 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
607 if (nv_uvm_igr_temps_on_gpu == 3 .and. igr_iter_solver == 2)
then
608# 171 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
609 call s_prohibit_abort(.and.
"nv_uvm_igr_temps_on_gpu == 3 igr_iter_solver == 2",
"nv_uvm_igr_temps_on_gpu must be in the range [0, 2] for igr_iter_solver == 2")
610# 171 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
612# 173 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
619 if ((riemann_solver ==
riemann_solver_hll) .and. hll_u_interface .and. cyl_coord .and. p > 0)
then
620# 179 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
621 call s_prohibit_abort(.and..and..and.
"(riemann_solver == riemann_solver_hll) hll_u_interface cyl_coord p > 0",
"HLL Method 2 is not supported for 3D cylindrical geometry")
622# 179 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
624# 181 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
625 if (alt_soundspeed .and. riemann_solver ==
riemann_solver_hll .and. (.not. hll_u_interface) .and. cyl_coord .and. p == 0)
then
626# 181 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
627 call s_prohibit_abort(.and..and..not..and..and.
"alt_soundspeed riemann_solver == riemann_solver_hll ( hll_u_interface) cyl_coord p == 0",
"alt_soundspeed with HLL Method 1 is not supported for 2D axisymmetric geometry")
628# 181 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
630# 183 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
631 if (alt_soundspeed .and. riemann_solver ==
riemann_solver_hll .and. cyl_coord .and. p > 0)
then
632# 183 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
633 call s_prohibit_abort(.and..and..and.
"alt_soundspeed riemann_solver == riemann_solver_hll cyl_coord p > 0",
"alt_soundspeed with HLL is not currently supported for 3D cylindrical geometry")
634# 183 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
636# 185 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
638# 185 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
639 call s_prohibit_abort(.and.
"hll_u_interface riemann_solver /= riemann_solver_hll",
"hll_u_interface requires the HLL Riemann solver (riemann_solver = 1)")
640# 185 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
642# 187 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
643 if (hll_u_interface .and. mhd)
then
644# 187 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
645 call s_prohibit_abort(.and.
"hll_u_interface mhd",
"HLL Method 2 does not support MHD (the MHD path zeroes the shared interface-velocity trace)")
646# 187 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
648# 189 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
649 if (surface_tension .and. riemann_solver ==
riemann_solver_hll .and. (.not. hll_u_interface))
then
650# 189 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
651 call s_prohibit_abort(.and..and..not.
"surface_tension riemann_solver == riemann_solver_hll ( hll_u_interface)",
"surface_tension requires a shared interface-velocity representation (HLL Method 2 or HLLC)")
652# 189 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
654# 191 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
656# 191 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
657 call s_prohibit_abort(.and.
"surface_tension riemann_solver == riemann_solver_lax_friedrichs",
"surface_tension requires a shared interface-velocity representation (HLL Method 2 or HLLC)")
658# 191 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
660# 193 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
666 if (hypoelasticity .and. cyl_coord .and. p > 0)
then
667# 198 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
668 call s_prohibit_abort(.and..and.
"hypoelasticity cyl_coord p > 0",
"3D cylindrical hypoelasticity is not supported")
669# 198 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
674# 201 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
675 call s_prohibit_abort(.and.
"hypoelasticity model_eqns /= model_eqns_5eq",
"hypoelasticity requires model_eqns = 2")
676# 201 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
679# 202 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
680 call s_prohibit_abort(.and..and..and.
"hypoelasticity riemann_solver /= riemann_solver_hll riemann_solver /= riemann_solver_hllc riemann_solver /= riemann_solver_hlld",
"hypoelasticity requires HLL (1), HLLC (2), or HLLD (4) Riemann solver")
681# 202 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
683# 205 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
685# 205 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
686 call s_prohibit_abort(.and..and.
"hypoelasticity riemann_solver == riemann_solver_hlld n == 0",
"HLLD hypoelasticity requires at least 2D (n must be > 0)")
687# 205 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
689# 207 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
691# 207 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
692 call s_prohibit_abort(.and..and.
"hypoelasticity riemann_solver == riemann_solver_hlld num_fluids /= 2",
"HLLD hypoelasticity currently requires exactly 2 fluid components")
693# 207 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
695# 209 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
696 if (hypoelasticity .and. mhd)
then
697# 209 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
698 call s_prohibit_abort(.and.
"hypoelasticity mhd",
"MHD and hypoelasticity cannot be enabled together")
699# 209 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
701 if (hypoelasticity .and. bubbles_euler)
then
702# 210 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
703 call s_prohibit_abort(.and.
"hypoelasticity bubbles_euler",
"Hypoelasticity does not support Euler-Euler bubbles")
704# 210 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
707# 211 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
708 call s_prohibit_abort(.and..and.
"hypoelasticity riemann_solver == riemann_solver_hlld viscous",
"HLLD hypoelasticity does not support viscous effects (the dual-pass omits the viscous source term)")
709# 211 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
711# 213 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
713# 213 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
714 call s_prohibit_abort(.and..and.
"hypoelasticity riemann_solver == riemann_solver_hlld surface_tension",
"HLLD hypoelasticity does not support surface tension (the dual-pass omits the surface-tension source term)")
715# 213 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
717# 215 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
719# 215 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
720 call s_prohibit_abort(.and..and.
"hypoelasticity riemann_solver == riemann_solver_hlld cont_damage",
"HLLD hypoelasticity does not support continuum damage (the dual-pass does not damage-scale the shear modulus)")
721# 215 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
723# 217 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
725# 217 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
726 call s_prohibit_abort(.and..and.
"hypoelasticity riemann_solver == riemann_solver_hlld chemistry",
"HLLD hypoelasticity does not support chemistry")
727# 217 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
729# 219 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
730 if (riemann_solver ==
riemann_solver_hlld .and. (.not. mhd) .and. (.not. hypoelasticity))
then
731# 219 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
732 call s_prohibit_abort(.and..not..and..not.
"riemann_solver == riemann_solver_hlld ( mhd) ( hypoelasticity)",
"HLLD is only available for MHD or hypoelasticity")
733# 219 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
735# 221 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
738 if (riemann_hypo_adc .and. .not. hypoelasticity)
then
739# 223 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
740 call s_prohibit_abort(.and..not.
"riemann_hypo_ADC hypoelasticity",
"riemann_hypo_ADC requires hypoelasticity = T")
741# 223 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
744# 224 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
745 call s_prohibit_abort(.and..and.
"riemann_hypo_ADC riemann_solver /= riemann_solver_hllc riemann_solver /= riemann_solver_hlld",
"riemann_hypo_ADC only applies to hypo HLLC/HLLD")
746# 224 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
748# 226 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
749 if (riemann_hypo_adc .and. (bubbles_euler .or. surface_tension .or. chemistry .or. cont_damage))
then
750# 226 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
751 call s_prohibit_abort(.and..or..or..or.
"riemann_hypo_ADC (bubbles_euler surface_tension chemistry cont_damage)",
"riemann_hypo_ADC does not support bubbles, surface tension, chemistry, or continuum damage (the ADC HLL blend omits their flux components)")
752# 226 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
754# 228 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
755 if (hypo_hll_interface_rhs .and. .not. hypoelasticity)
then
756# 228 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
757 call s_prohibit_abort(.and..not.
"hypo_hll_interface_rhs hypoelasticity",
"hypo_hll_interface_rhs requires hypoelasticity = T")
758# 228 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
761# 229 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
762 call s_prohibit_abort(.and.
"hypo_hll_interface_rhs riemann_solver /= riemann_solver_hll",
"hypo_hll_interface_rhs requires HLL Riemann solver (riemann_solver = 1)")
763# 229 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
765# 231 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
766 if (alt_soundspeed .and. riemann_solver ==
riemann_solver_hlld .and. .not. hypoelasticity)
then
767# 231 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
768 call s_prohibit_abort(.and..and..not.
"alt_soundspeed riemann_solver == riemann_solver_hlld hypoelasticity",
"alt_soundspeed with HLLD requires hypoelasticity = T")
769# 231 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
771# 233 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
772 if (alt_soundspeed .and. num_fluids /= 2)
then
773# 233 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
774 call s_prohibit_abort(.and.
"alt_soundspeed num_fluids /= 2",
"alt_soundspeed requires exactly 2 fluid components (the Kapila K coefficient is a two-fluid closure)")
775# 233 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
777# 235 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
778 if (cont_damage .and. alt_soundspeed)
then
779# 235 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
780 call s_prohibit_abort(.and.
"cont_damage alt_soundspeed",
"Continuum damage does not support alt_soundspeed")
781# 235 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
783 if (hypoelasticity .and. igr)
then
784# 236 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
785 call s_prohibit_abort(.and.
"hypoelasticity igr",
"Hypoelasticity is not compatible with IGR")
786# 236 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
788 if (hypoelasticity .and. fd_order /= 1 .and. fd_order /= 2 .and. fd_order /= 4)
then
789# 237 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
790 call s_prohibit_abort(.and..and..and.
"hypoelasticity fd_order /= 1 fd_order /= 2 fd_order /= 4",
"hypoelasticity requires fd_order to be set to 1, 2, or 4 (the finite-difference coefficients are initialized unconditionally)")
791# 237 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
793# 239 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
795# 239 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
796 call s_prohibit_abort(.and.
"hypoelasticity wave_speeds == wave_speeds_pressure",
"Pressure-based wave speeds (wave_speeds = 2) omit the elastic longitudinal speed and are not supported with hypoelasticity")
797# 239 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
799# 241 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
801# 241 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
802 call s_prohibit_abort(.and.
"riemann_solver == riemann_solver_hlld wave_speeds == wave_speeds_pressure",
"HLLD uses its own direct wave-speed estimates; wave_speeds = 2 is not supported")
803# 241 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
805# 243 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
807# 243 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
808 call s_prohibit_abort(.and.
"riemann_solver == riemann_solver_hlld low_Mach > 0",
"low_Mach corrections are not implemented for HLLD")
809# 243 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
811 if (riemann_hypo_adc .and. low_mach > 0)
then
812# 244 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
813 call s_prohibit_abort(.and.
"riemann_hypo_ADC low_Mach > 0",
"riemann_hypo_ADC does not support low_Mach (the ADC HLL reference flux uses pre-correction velocities)")
814# 244 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
816# 246 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
817 if (riemann_hypo_adc .and. adc_kappa <= 0._wp)
then
818# 246 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
819 call s_prohibit_abort(.and.
"riemann_hypo_ADC ADC_kappa <= 0._wp",
"ADC_kappa must be positive")
820# 246 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
822 if (hypoelasticity .and. (cfl_const_dt .or. cfl_adap_dt))
then
823# 247 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
824 call s_prohibit_abort(.and..or.
"hypoelasticity (cfl_const_dt cfl_adap_dt)",
"Automatic CFL time stepping uses the acoustic sound speed only and does not bound the elastic characteristic speed; set dt explicitly for hypoelastic runs")
825# 247 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
827# 249 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
839 if (patch_ib(i)%inj_species > num_species)
then
840# 260 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
841 call s_prohibit_abort(
"patch_ib(i)%inj_species > num_species",
"patch_ib inj_species must be <= num_species (it indexes the image-point species mass fractions; an out-of-range value writes out of bounds)")
842# 260 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
844# 262 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
853 character(len=5) :: idxstr
855 do i = 1, num_particle_clouds
857 if (particle_cloud(i)%packing_method ==
dflt_int)
then
858# 274 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
859 call s_prohibit_abort(
"particle_cloud(i)%packing_method == dflt_int",
"particle_cloud("//trim(idxstr) //
")%packing_method must be specified (1 = rejection sampling, 2 = lattice)")
860# 274 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
862# 277 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
863 if (particle_cloud(i)%packing_method /= 1 .and. particle_cloud(i)%packing_method /= 2)
then
864# 277 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
865 call s_prohibit_abort(.and.
"particle_cloud(i)%packing_method /= 1 particle_cloud(i)%packing_method /= 2",
"particle_cloud("//trim(idxstr) //
")%packing_method must be 1 (rejection sampling) or 2 (lattice)")
866# 277 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
868# 279 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
878 character(len=5) :: idxstr
880 if (num_turbulent_sources <= 0)
then
881# 290 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
882 call s_prohibit_abort(
"num_turbulent_sources <= 0",
"num_turbulent_sources must be > 0 when synthetic_turbulence is enabled")
883# 290 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
886 do i = 1, num_turbulent_sources
890# 295 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
891 call s_prohibit_abort(
"f_is_default(turb_pos(i, d))",
"turb_pos("//trim(idxstr) //
",:) must be specified for all num_dims when synthetic_turbulence is enabled")
892# 295 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
894# 298 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
896# 298 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
897 call s_prohibit_abort(.or.
"f_is_default(synth_L(i, d)) synth_L(i, d) <= 0._wp",
"synth_L("//trim(idxstr)//
",:) must be positive for all num_dims when synthetic_turbulence is enabled")
898# 298 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
900# 300 "/home/runner/work/MFC/MFC/src/simulation/m_checker.fpp"
Validates simulation input parameters for consistency and supported configurations.
impure subroutine s_check_inputs_hypo_branch
impure subroutine, public s_check_inputs
Checks compatibility of parameters in the input file. Used by the simulation stage.
impure subroutine s_check_inputs_time_stepping
Checks constraints on time stepping parameters.
impure subroutine s_check_inputs_particle_clouds
Checks that each active particle cloud has a valid packing_method specified.
impure subroutine s_check_inputs_ib_injection
Validates that each burning immersed-boundary patch injects a species index within the mechanism....
impure subroutine s_check_inputs_hll_non_conservative
impure subroutine s_check_inputs_weno
Checks constraints on WENO scheme parameters.
impure subroutine s_check_inputs_synthetic_turbulence
Checks that each active synthetic-turbulence forcing zone has a fully specified position and a positi...
impure subroutine s_check_inputs_muscl
Validate that the grid resolution is sufficient for the MUSCL reconstruction order.
impure subroutine s_check_inputs_compilers
Checks constraints on compiler options.
impure subroutine s_check_inputs_nvidia_uvm
Validate NVIDIA unified virtual memory configuration parameters.
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter model_eqns_5eq
integer, parameter dflt_int
Default integer value.
integer, parameter num_stcls_min
Minimum # of stencils.
integer, parameter riemann_solver_hll
integer, parameter riemann_solver_hlld
integer, parameter recon_type_muscl
integer, parameter riemann_solver_hllc
integer, parameter muscl_order_first_order
integer, parameter wave_speeds_pressure
integer, parameter riemann_solver_lax_friedrichs
integer, parameter recon_type_weno
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
real(wp), dimension(num_turb_sources_max, 3) turb_pos
real(wp), dimension(num_turb_sources_max, 3) synth_l
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
logical elemental function, public f_approx_equal(a, b, tol_input)
Check if two floating point numbers of wp are within tolerance.
logical elemental function, public f_is_default(var)
Check if a real(wp) variable is of default value.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
elemental subroutine, public s_int_to_str(i, res)
Convert an integer to its trimmed string representation.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.