1# 1 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
2# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
8# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
11# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
12# 2 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp" 2
13# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
14# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
15# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
16# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
18# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
19# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
30# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
31# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
32# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
34# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
54# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
55# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
56# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
70# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
71# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
72# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
74# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
75# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
77# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
79# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
81# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
83# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
85# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
87# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
89# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
91# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
93# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
95# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 95 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 100 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 105 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 110 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 115 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 120 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 125 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 130 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 135 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 165 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 219 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 233 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 258 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 269 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145# 271 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146# 282 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148# 332 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
150# 342 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
152# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
154# 361 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
156# 378 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
158# 388 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
160# 395 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
162# 401 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
164# 407 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
166# 413 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
168# 419 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
170# 425 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
172# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
173# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
174# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
175# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
177# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
179# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
181# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
183# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
185# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
186# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
189# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
190# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
191# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
193# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
194# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
196# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
198# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
200# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
202# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
204# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
206# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
208# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
210# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
212# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
214# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
254# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
256# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
258# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
260# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
262# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
264# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
266# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
268# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
270# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
273# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
279# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
282# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
285# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
288# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
291# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
294# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
297# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
300# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
303# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
306# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
309# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
312# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
315# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
318# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
321# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
324# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
327# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
329# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
330# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
332# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
334# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
339# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
342# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
345# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
348# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
351# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
354# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
356# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
358# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
360# 3 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp" 2
372 use ieee_arithmetic !< for checking nan
389# 30 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
391# 30 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
393# 30 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
395# 30 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
397# 30 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
399# 30 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
401# 30 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
403# 31 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
404 real(wp),
intent(in) :: vftmp
405 real(wp),
dimension(nb),
intent(in) :: rtmp
406 real(wp),
intent(out) :: ntmp
407 real(wp),
dimension(nb),
intent(in) :: weights
410 r3 = dot_product(weights, rtmp**3._wp)
411 ntmp = (3._wp/(4._wp*
pi))*vftmp/r3
419# 45 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
421# 45 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
423# 45 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
425# 45 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
427# 45 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
429# 45 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
431# 45 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
433# 46 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
434 real(wp),
intent(in) :: vftmp
435 real(wp),
dimension(nb),
intent(in) :: nrtmp
436 real(wp),
intent(out) :: ntmp
437 real(wp),
dimension(nb),
intent(in) :: weights
440 nr3 = dot_product(weights, nrtmp**3._wp)
441 ntmp = sqrt((4._wp*
pi/3._wp)*nr3/vftmp)
448 real(wp),
dimension(:,:),
intent(in) :: a
449 real(wp),
optional,
intent(in) :: div
451 integer :: local_m, local_n
457 if (
present(div))
then
463 print *, local_m, local_n
467 write (*, fmt=
"(F12.4)", advance=
"no") a(i,
j)/c
469 write (*, fmt=
"(A1)")
" "
471 write (*, fmt=
"(A1)")
" "
479 if (bubbles_euler)
then
481# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
483# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
484 use iso_fortran_env,
only: output_unit
485# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
487# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
488 print *,
'm_helper.fpp:92: ',
'@:ALLOCATE(weight(nb), R0(nb))'
489# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
491# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
492 call flush (output_unit)
493# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
495# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
497# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
499# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
501# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
503# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
505# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
506#if defined(MFC_OpenACC)
507# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
509# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
510#elif defined(MFC_OpenMP)
511# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
513# 92 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
515# 93 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
516 if (.not. polytropic)
then
518# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
520# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
521 use iso_fortran_env,
only: output_unit
522# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
524# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
525 print *,
'm_helper.fpp:94: ',
'@:ALLOCATE(pb0(nb), Pe_T(nb), k_g(nb), k_v(nb), mass_g0(nb), mass_v0(nb))'
526# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
528# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
529 call flush (output_unit)
530# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
532# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
534# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
535 allocate (pb0(nb), pe_t(nb), k_g(nb), k_v(nb), mass_g0(nb), mass_v0(nb))
536# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
538# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
540# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
542# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
544# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
546# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
548# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
550# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
551#if defined(MFC_OpenACC)
552# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
554# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
555#elif defined(MFC_OpenMP)
556# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
558# 94 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
560# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
562# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
564# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
565 use iso_fortran_env,
only: output_unit
566# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
568# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
569 print *,
'm_helper.fpp:95: ',
'@:ALLOCATE(Re_trans_T(nb), Re_trans_c(nb), Im_trans_T(nb), Im_trans_c(nb))'
570# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
572# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
573 call flush (output_unit)
574# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
576# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
578# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
579 allocate (re_trans_t(nb), re_trans_c(nb), im_trans_t(nb), im_trans_c(nb))
580# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
582# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
584# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
586# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
588# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
590# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
591#if defined(MFC_OpenACC)
592# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
594# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
595#elif defined(MFC_OpenMP)
596# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
598# 95 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
600# 96 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
603# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
605# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
606 use iso_fortran_env,
only: output_unit
607# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
609# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
610 print *,
'm_helper.fpp:97: ',
'@:ALLOCATE(pb0(nb))'
611# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
613# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
614 call flush (output_unit)
615# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
617# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
619# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
621# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
623# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
625# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
626#if defined(MFC_OpenACC)
627# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
629# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
630#elif defined(MFC_OpenMP)
631# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
633# 97 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
635# 98 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
641 else if (nb == 1)
then
645 stop
'Invalid value of nb'
658 r0ref = bub_pp%R0ref; p0ref = bub_pp%p0ref
659 rho0ref = bub_pp%rho0ref
660 ss = bub_pp%ss; pv = bub_pp%pv; vd = bub_pp%vd
661 mu_l = bub_pp%mu_l; mu_v = bub_pp%mu_v; mu_g = bub_pp%mu_g
662 gam_v = bub_pp%gam_v; gam_g = bub_pp%gam_g
663 if (.not. polytropic)
then
664 if (bubbles_euler)
then
665 m_v = bub_pp%M_v; m_g = bub_pp%M_g
666 k_v = bub_pp%k_v; k_g = bub_pp%k_g
668 r_v = bub_pp%R_v; r_g = bub_pp%R_g
671 if (bubbles_lagrange)
then
672 cp_v = bub_pp%cp_v; cp_g = bub_pp%cp_g
673 k_vl = bub_pp%k_v; k_gl = bub_pp%k_g
677 if (bubbles_euler .and. (.not. polytropic))
then
678 if (thermal == 2)
then
688 if (.not. f_is_default(bub_pp%ss)) web = 1._wp/ss
689 if (.not. f_is_default(bub_pp%mu_l)) re_inv = mu_l
690 if (.not. polytropic) pe_c = 1._wp/vd
692 if (bubbles_euler)
then
694 if (.not. polytropic)
then
698 if (qbmm .and. polytropic)
then
700 if (.not. f_is_default(web))
then
701 pb0 = pb0 + 2._wp/web/r0
712 real(wp),
dimension(nb) :: chi_vw0, cp_m0, k_m0, rho_m0, x_vw, omegan
713 real(wp),
parameter :: k_poly = 1._wp
716 phi_vg = (1._wp + sqrt(mu_v/mu_g)*(m_g/m_v)**(0.25_wp))**2/(sqrt(8._wp)*sqrt(1._wp + m_v/m_g))
717 phi_gv = (1._wp + sqrt(mu_g/mu_v)*(m_v/m_g)**(0.25_wp))**2/(sqrt(8._wp)*sqrt(1._wp + m_g/m_v))
720 pb0 = eu + 2._wp/web/r0
723 chi_vw0 = 1._wp/(1._wp + r_v/r_g*(pb0/pv - 1._wp))
726 cp_m0 = chi_vw0*r_v*gam_v/(gam_v - 1._wp) + (1._wp - chi_vw0)*r_g*gam_g/(gam_g - 1._wp)
729 x_vw = m_g*chi_vw0/(m_v + (m_g - m_v)*chi_vw0)
732 k_m0 = x_vw*k_v/(x_vw + (1._wp - x_vw)*phi_vg) + (1._wp - x_vw)*k_g/(x_vw*phi_gv + 1._wp - x_vw)
733 k_g(:) = k_g(:)/k_m0(:)
734 k_v(:) = k_v(:)/k_m0(:)
737 rho_m0 = pv/(chi_vw0*r_v*tw)
740 mass_g0(:) = (4._wp*pi/3._wp)*(pb0(:) - pv)/(r_g*tw)*r0(:)**3
741 mass_v0(:) = (4._wp*pi/3._wp)*pv/(r_v*tw)*r0(:)**3
744 pe_t(:) = rho_m0*cp_m0(:)/k_m0(:)
747 omegan(:) = sqrt(3._wp*k_poly*ca + 2._wp*(3._wp*k_poly - 1._wp)/(web*r0))/r0/sqrt(rho0ref)
749 call s_transcoeff(omegan(ir)*r0(ir), pe_t(ir)*r0(ir), re_trans_t(ir), im_trans_t(ir))
750 call s_transcoeff(omegan(ir)*r0(ir), pe_c*r0(ir), re_trans_c(ir), im_trans_c(ir))
759 real(wp),
intent(in) :: omega, peclet
760 real(wp),
intent(out) :: re_trans, im_trans
761 complex(wp) :: imag, trans, c1, c2, c3
763 imag = (0._wp, 1._wp)
765 c1 = imag*omega*peclet
767 c3 = (exp(c2) - exp(-c2))/(exp(c2) + exp(-c2))
768 trans = ((c2/c3 - 1._wp)**(-1) - 3._wp/c1)**(-1)
771 im_trans = aimag(trans)
778 integer,
intent(in) :: i
779 character(len=*),
intent(inout) :: res
781 write (res,
'(I0)') i
789 real(wp),
dimension(:),
intent(inout) :: local_weight
790 real(wp),
dimension(:),
intent(inout) :: local_r0
792 real(wp) :: r0mn, r0mx, dphi, tmp, sd
793 real(wp),
dimension(nb) :: phi
796 r0mn = 0.8_wp*exp(-2.8_wp*sd)
797 r0mx = 0.2_wp*exp(9.5_wp*sd) + 1._wp
801 phi(ir) = log(r0mn) + (ir - 1._wp)*log(r0mx/r0mn)/(nb - 1._wp)
802 local_r0(ir) = exp(phi(ir))
805# 268 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
806 dphi = phi(2) - phi(1)
807# 270 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
812 tmp = exp(-0.5_wp*(phi(ir)/sd)**2)/sqrt(2._wp*pi)/sd
813 if (mod(ir, 2) == 0)
then
814 local_weight(ir) = tmp*4._wp*dphi/3._wp
816 local_weight(ir) = tmp*2._wp*dphi/3._wp
819 tmp = exp(-0.5_wp*(phi(1)/sd)**2)/sqrt(2._wp*pi)/sd
820 local_weight(1) = tmp*dphi/3._wp
821 tmp = exp(-0.5_wp*(phi(nb)/sd)**2)/sqrt(2._wp*pi)/sd
822 local_weight(nb) = tmp*dphi/3._wp
830# 291 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
832# 291 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
834# 291 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
836# 291 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
838# 291 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
840# 291 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
842# 291 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
844# 292 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
846 real(wp),
dimension(3),
intent(in) :: a, b
847 real(wp),
dimension(3) :: c
849 c(1) = a(2)*b(3) - a(3)*b(2)
850 c(2) = a(3)*b(1) - a(1)*b(3)
851 c(3) = a(1)*b(2) - a(2)*b(1)
859# 305 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
861# 305 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
863# 305 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
865# 305 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
867# 305 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
869# 305 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
871# 305 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
873# 306 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
874 real(wp),
intent(in) :: theta, eta
876 real(wp),
dimension(3) :: vec
879 zeta = acos(2._wp*eta - 1._wp)
880 vec(1) = sin(zeta)*cos(xi)
881 vec(2) = sin(zeta)*sin(xi)
890# 321 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
892# 321 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
894# 321 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
896# 321 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
898# 321 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
900# 321 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
902# 321 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
904# 322 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
905 integer,
intent(inout) :: seed
906 real(wp),
intent(out) :: var
908 seed = mod(
modmul(seed), modulus)
909 var = seed/real(modulus, wp)
917# 333 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
919# 333 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
921# 333 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
923# 333 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
925# 333 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
927# 333 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
929# 333 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
931# 334 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
932 integer,
intent(in) :: a
936 x = (multiplier/real(modulus, wp))*a + (increment/real(modulus, wp))
937 y = nint((x - floor(x))*decimal_trim)/decimal_trim
938 val = nint(y*modulus)
947 integer,
parameter :: int64_kind = selected_int_kind(18)
948 real(wp),
intent(out) :: var
949 integer(kind=int64_kind),
intent(inout) :: state
950 integer(kind=int64_kind) :: z
952 state = iand(state + 2654435769_int64_kind, 4294967295_int64_kind)
953 z =
f_mulmod32(ieor(state, ishft(state, -16)), 2246822507_int64_kind)
954 z =
f_mulmod32(ieor(z, ishft(z, -13)), 3266489909_int64_kind)
955 z = ieor(z, ishft(z, -16))
956 var = real(z, wp)/4294967296._wp
963 integer,
parameter :: int64_kind = selected_int_kind(18)
964 integer(kind=int64_kind),
intent(in) :: a, b
965 integer(kind=int64_kind) :: c
967 c = iand(a*iand(b, 65535_int64_kind) + iand(a*ishft(b, -16), 65535_int64_kind)*65536_int64_kind, 4294967295_int64_kind)
975# 376 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
977# 376 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
979# 376 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
981# 376 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
983# 376 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
985# 376 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
987# 376 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
989# 377 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
990 real(wp),
intent(in) :: a(3), b(3)
991 real(wp),
intent(out) :: c(3)
993 c(1) = a(2)*b(3) - a(3)*b(2)
994 c(2) = a(3)*b(1) - a(1)*b(3)
995 c(3) = a(1)*b(2) - a(2)*b(1)
1002 real(wp),
intent(inout) :: lhs, rhs
1014 integer,
dimension(:),
intent(inout) :: keys, vals
1015 integer,
intent(in) :: n
1016 integer :: i,
j, key, val
1019 key = keys(i); val = vals(i)
1023 if (keys(
j - 1) <= key)
exit
1027 keys(
j + 1:i) = keys(
j:i - 1)
1028 vals(
j + 1:i) = vals(
j:i - 1)
1029 keys(
j) = key; vals(
j) = val
1037 type(ic_model_parameters),
intent(in) :: param
1038 real(wp),
dimension(1:3),
optional,
intent(in) :: center
1039 real(wp),
dimension(1:4,1:4) :: sc, rz, rx, ry, tr, t_back, t_to_origin, out_matrix
1041 sc = transpose(reshape([param%scale(1), 0._wp, 0._wp, 0._wp, 0._wp, param%scale(2), 0._wp, 0._wp, 0._wp, 0._wp, &
1042 & param%scale(3), 0._wp, 0._wp, 0._wp, 0._wp, 1._wp], shape(sc)))
1044 rz = transpose(reshape([cos(param%rotate(3)), -sin(param%rotate(3)), 0._wp, 0._wp, sin(param%rotate(3)), &
1045 & cos(param%rotate(3)), 0._wp, 0._wp, 0._wp, 0._wp, 1._wp, 0._wp, 0._wp, 0._wp, 0._wp, 1._wp], shape(rz)))
1047 rx = transpose(reshape([1._wp, 0._wp, 0._wp, 0._wp, 0._wp, cos(param%rotate(1)), -sin(param%rotate(1)), 0._wp, 0._wp, &
1048 & sin(param%rotate(1)), cos(param%rotate(1)), 0._wp, 0._wp, 0._wp, 0._wp, 1._wp], shape(rx)))
1050 ry = transpose(reshape([cos(param%rotate(2)), 0._wp, sin(param%rotate(2)), 0._wp, 0._wp, 1._wp, 0._wp, 0._wp, &
1051 & -sin(param%rotate(2)), 0._wp, cos(param%rotate(2)), 0._wp, 0._wp, 0._wp, 0._wp, 1._wp], shape(ry)))
1053 tr = transpose(reshape([1._wp, 0._wp, 0._wp, param%translate(1), 0._wp, 1._wp, 0._wp, param%translate(2), 0._wp, 0._wp, &
1054 & 1._wp, param%translate(3), 0._wp, 0._wp, 0._wp, 1._wp], shape(tr)))
1056 if (
present(center))
then
1058 t_to_origin = transpose(reshape([1._wp, 0._wp, 0._wp, -center(1), 0._wp, 1._wp, 0._wp, -center(2), 0._wp, 0._wp, &
1059 & 1._wp, -center(3), 0._wp, 0._wp, 0._wp, 1._wp], shape(tr)))
1062 t_back = transpose(reshape([1._wp, 0._wp, 0._wp, center(1), 0._wp, 1._wp, 0._wp, center(2), 0._wp, 0._wp, 1._wp, &
1063 & center(3), 0._wp, 0._wp, 0._wp, 1._wp], shape(tr)))
1065 out_matrix = matmul(tr, matmul(t_back, matmul(ry, matmul(rx, matmul(rz, matmul(sc, t_to_origin))))))
1067 out_matrix = matmul(ry, matmul(rx, rz))
1075 real(wp),
dimension(1:3),
intent(inout) :: vec
1076 real(wp),
dimension(1:4,1:4),
intent(in) :: matrix
1077 real(wp),
dimension(1:4) :: tmp
1079 tmp = matmul(matrix, [vec(1), vec(2), vec(3), 1._wp])
1087 type(t_triangle),
intent(inout) :: triangle
1088 real(wp),
dimension(1:4,1:4),
intent(in) :: matrix, matrix_n
1102 type(t_model),
intent(inout) :: model
1103 real(wp),
dimension(1:4,1:4),
intent(in) :: matrix, matrix_n
1106 do i = 1,
size(model%trs)
1115 type(t_model),
intent(in) :: model
1116 type(t_bbox) :: bbox
1119 if (
size(model%trs) == 0)
then
1125 bbox%min = model%trs(1)%v(1,:)
1126 bbox%max = model%trs(1)%v(1,:)
1128 do i = 1,
size(model%trs)
1130 bbox%min = min(bbox%min, model%trs(i)%v(
j,:))
1131 bbox%max = max(bbox%max, model%trs(i)%v(
j,:))
1138 elemental function f_xor(lhs, rhs)
result(res)
1140 logical,
intent(in) :: lhs, rhs
1143 res = (lhs .and. .not. rhs) .or. (.not. lhs .and. rhs)
1150 logical,
intent(in) :: predicate
1165 integer,
intent(in) ::
l, m
1166 real(wp),
intent(in) :: theta, phi
1167 real(wp) :: y, x, prefac
1179 else if (m > 0)
then
1195 integer,
intent(in) ::
l, m_order
1196 real(wp),
intent(in) :: x
1197 real(wp) :: result_p
1198 real(wp) :: one_minus_x2
1202 if (
l < 0 .or. m_order < 0 .or. m_order >
l)
then
1207 if (m_order <= 0 .and.
l <= 0)
then
1209 else if (
l == 1 .and. m_order <= 0)
then
1211 else if (
l == 1 .and. m_order == 1)
then
1212 one_minus_x2 = max(0._wp, 1._wp - x**2)
1213 result_p = -sqrt(one_minus_x2)
1214 else if (m_order ==
l)
then
1216 one_minus_x2 = max(0._wp, 1._wp - x**2)
1218 else if (m_order ==
l - 1)
then
1222 & m_order))/(
l - m_order)
1230 integer,
intent(in) :: n_in
1231 integer,
parameter :: int64_kind = selected_int_kind(18)
1232 integer(kind=int64_kind) :: r_result
1235 r_result = product((/(i, i=n_in, 1, -2)/))
1242 integer,
intent(in) :: n_in
1243 integer,
parameter :: int64_kind = selected_int_kind(18)
1244 integer(kind=int64_kind) :: r_result
1247 r_result = product((/(i, i=n_in, 1, -1)/))
1255 real(wp),
intent(in) :: x, eps
1266 real(wp),
intent(in) :: x, eps
1276 real(wp),
intent(in) :: x
1288 subroutine s_downsample_data(q_cons_vf, q_cons_temp, m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds)
1290 type(scalar_field),
dimension(sys_size),
intent(inout) ::
q_cons_vf, q_cons_temp
1293 integer :: i,
j,
k,
l
1294 integer :: ix, iy, iz, x_id, y_id, z_id
1295 integer,
intent(inout) :: m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds
1297 m_ds = int((m + 1)/3) - 1
1298 n_ds = int((n + 1)/3) - 1
1299 p_ds = int((p + 1)/3) - 1
1301 m_glb_ds = int((m_glb + 1)/3) - 1
1302 n_glb_ds = int((n_glb + 1)/3) - 1
1303 p_glb_ds = int((p_glb + 1)/3) - 1
1312 q_cons_temp(i)%sf(
j,
k,
l) = 0
1317 q_cons_temp(i)%sf(
j,
k,
l) = q_cons_temp(i)%sf(
j,
k, &
1318 &
l) + (1._wp/27._wp)*
q_cons_vf(i)%sf(x_id + ix, y_id + iy, z_id + iz)
1332 type(scalar_field),
intent(inout),
dimension(sys_size) ::
q_cons_vf, q_cons_temp
1333 integer :: i,
j,
k,
l
1334 integer :: ix, iy, iz
1335 integer :: x_id, y_id, z_id
1336 real(wp),
dimension(4) :: temp
1346 x_id =
j - int(3*ix) - 1
1347 y_id =
k - int(3*iy) - 1
1348 z_id =
l - int(3*iz) - 1
1350 temp(1) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy, iz) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy, iz)
1351 temp(2) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy + y_id, iz) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, &
1353 temp(3) = (2._wp/3._wp)*temp(1) + (1._wp/3._wp)*temp(2)
1355 temp(1) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy, iz + z_id) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, &
1357 temp(2) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy + y_id, &
1358 & iz + z_id) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy + y_id, iz + z_id)
1359 temp(4) = (2._wp/3._wp)*temp(1) + (1._wp/3._wp)*temp(2)
1361 q_cons_vf(i)%sf(
j,
k,
l) = (2._wp/3._wp)*temp(3) + (1._wp/3._wp)*temp(4)
1378# 764 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1380# 764 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1382# 764 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1384# 764 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1386# 764 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1388# 764 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1390# 764 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1392# 765 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1394 real(wp),
dimension(3),
intent(in) :: location
1395 type(bounds_info),
dimension(3),
intent(in) :: glb_bounds_in
1396 logical :: owns_location
1397 real(wp),
dimension(3) :: projected_location
1399 owns_location = .true.
1402 if (num_procs > 1)
then
1403 projected_location(:) = location(:)
1406# 779 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1407 if (num_dims >= 1)
then
1408# 780 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1409 if (ib_bc_x%beg /= bc_periodic)
then
1410# 781 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1412 if (location(1) < glb_bounds_in(1)%beg)
then
1413# 783 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1414 projected_location(1) = glb_bounds_in(1)%beg
1415# 784 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1416 else if (glb_bounds_in(1)%end < location(1))
then
1417# 785 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1418 projected_location(1) = glb_bounds_in(1)%end - 1.0e-10_wp
1419# 786 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1422 owns_location = owns_location .and. x_cb(-1) <= projected_location(1) &
1423# 789 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1424 & .and. projected_location(1) < x_cb(m)
1425# 790 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1427# 779 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1428 if (num_dims >= 2)
then
1429# 780 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1430 if (ib_bc_y%beg /= bc_periodic)
then
1431# 781 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1433 if (location(2) < glb_bounds_in(2)%beg)
then
1434# 783 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1435 projected_location(2) = glb_bounds_in(2)%beg
1436# 784 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1437 else if (glb_bounds_in(2)%end < location(2))
then
1438# 785 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1439 projected_location(2) = glb_bounds_in(2)%end - 1.0e-10_wp
1440# 786 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1443 owns_location = owns_location .and. y_cb(-1) <= projected_location(2) &
1444# 789 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1445 & .and. projected_location(2) < y_cb(n)
1446# 790 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1448# 779 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1449 if (num_dims >= 3)
then
1450# 780 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1451 if (ib_bc_z%beg /= bc_periodic)
then
1452# 781 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1454 if (location(3) < glb_bounds_in(3)%beg)
then
1455# 783 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1456 projected_location(3) = glb_bounds_in(3)%beg
1457# 784 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1458 else if (glb_bounds_in(3)%end < location(3))
then
1459# 785 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1460 projected_location(3) = glb_bounds_in(3)%end - 1.0e-10_wp
1461# 786 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1464 owns_location = owns_location .and. z_cb(-1) <= projected_location(3) &
1465# 789 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1466 & .and. projected_location(3) < z_cb(p)
1467# 790 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
1469# 792 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
Compile-time constant parameters: default values, tolerances, and physical constants.
real(wp), parameter pi
Pi.
integer, parameter bc_periodic
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Defines global parameters for the computational domain, simulation algorithm, and initial conditions.
real(wp), dimension(:), allocatable weight
real(wp), dimension(:), allocatable r0
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
subroutine, public s_comp_n_from_prim(vftmp, rtmp, ntmp, weights)
Computes the bubble number density n from the primitive variables.
subroutine, public s_cross_product(a, b, c)
Compute the cross product c = a x b of two 3D vectors.
integer function, public modmul(a)
Compute a modular multiplication step for the linear congruential pseudo-random number generator.
impure subroutine, public s_initialize_nonpoly()
Initializes non-polydisperse bubble modeling.
recursive real(wp) function, public associated_legendre(x, l, m_order)
Associated Legendre polynomial P_l^m(x) (Ferrers function, Condon-Shortley phase)....
subroutine, public s_transform_triangle(triangle, matrix, matrix_n)
Transform a triangle by a matrix, one vertex at a time.
real(wp) function, dimension(3), public f_unit_vector(theta, eta)
Generate a unit vector uniformly distributed on the sphere from two random parameters.
logical function, public f_local_rank_owns_location(location, glb_bounds_in)
True if location falls within this rank's own subdomain (a strict partition - each location is owned ...
real(wp) function, public f_cut_on(x, eps)
Calculate a smooth cut-on function that is zero for x values smaller than zero and goes to one,...
subroutine, public s_transform_model(model, matrix, matrix_n)
Transform a model by a matrix, one triangle at a time.
type(t_bbox) function, public f_create_bbox(model)
Create a bounding box for a model.
real(wp) function f_gx(x)
Helper function for f_cut_on and f_cut_off.
subroutine, public s_simpson(local_weight, local_r0)
Compute the Simpson weights for quadrature.
elemental integer(kind=int64_kind) function, public double_factorial(n_in)
Calculate the double factorial of an integer.
impure subroutine s_initialize_bubble_vars()
Set bubble physical parameters and nondimensional numbers from the input configuration.
elemental integer(kind=int64_kind) function, public factorial(n_in)
Calculate the factorial of an integer.
subroutine, public s_upsample_data(q_cons_vf, q_cons_temp)
Upsample conservative variable fields from a coarsened grid back to the original resolution using int...
real(wp) function, dimension(1:4, 1:4), public f_create_transform_matrix(param, center)
Create a transformation matrix.
pure integer(kind=int64_kind) function f_mulmod32(a, b)
a*b mod 2^32 for a, b in [0, 2^32), split into 16-bit halves of b so no intermediate exceeds 2^49
real(wp) function, public f_cut_off(x, eps)
Calculate a smooth cut-off function that is one for x values smaller than zero and goes to zero,...
subroutine, public s_transform_vec(vec, matrix)
Transform a vector by a matrix.
impure subroutine, public s_initialize_bubbles_model()
Initialize bubble model arrays for Euler or Lagrangian bubbles with polytropic or non-polytropic gas.
subroutine, public s_prng_splitmix32(var, state)
Uniform draw in [0, 1) (1 only via single-precision rounding) from a 32-bit SplitMix-style generator ...
impure subroutine, public s_print_2d_array(a, div)
Print a 2D real array to standard output, optionally dividing each element by a given scalar.
elemental subroutine, public s_transcoeff(omega, peclet, re_trans, im_trans)
Computes the transfer coefficient for the non-polytropic bubble compression process.
subroutine, public s_prng(var, seed)
Generate a pseudo-random number between 0 and 1 using a linear congruential generator.
pure real(wp) function, dimension(3), public f_cross(a, b)
Compute the cross product of two vectors.
subroutine, public s_downsample_data(q_cons_vf, q_cons_temp, m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds)
Downsample conservative variable fields by a factor of 3 in each direction using volume averaging.
elemental logical function, public f_xor(lhs, rhs)
Perform XOR on lhs and rhs.
pure subroutine, public s_sort_int_key_value(keys, vals, n)
Sort the key-value pair by the key.
subroutine, public s_comp_n_from_cons(vftmp, nrtmp, ntmp, weights)
Compute the bubble number density from the conservative void fraction and weighted bubble radii.
real(wp) function, public real_ylm(theta, phi, l, m)
Real spherical harmonic Y_lm(theta, phi). theta = polar angle from +z (acos(z/r)),...
elemental integer function, public f_logical_to_int(predicate)
Convert a logical to 1 or 0.
elemental subroutine, public s_int_to_str(i, res)
Convert an integer to its trimmed string representation.
elemental subroutine, public s_swap(lhs, rhs)
Swap two real numbers.