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# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
11# 14 "/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# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
34# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
36# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
41# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
42# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
43# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
61# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
69# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
70# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
71# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
73# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
147# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
148# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
149# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
151# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
173# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
175# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
177# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
179# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
181# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
183# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
185# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
187# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
189# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
191# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
193# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
195# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
197# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
199# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
201# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
203# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
205# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
207# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
233# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
235# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
237# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239# 76 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
241# 91 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
243# 102 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245# 115 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
249# 154 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 165 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253# 176 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
255# 186 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 197 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259# 208 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
261# 218 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 224 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 230 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
267# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271# 244 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 245 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
276# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
282# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
284# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
286# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
288# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
290# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
292# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
294# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
296# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
298# 3 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp" 2
311 use ieee_arithmetic !< for checking nan
352# 55 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
354# 55 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
356# 55 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
358# 55 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
360# 55 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
362# 55 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
364# 55 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
366 real(wp),
intent(in) :: vftmp
367 real(wp),
dimension(nb),
intent(in) :: rtmp
368 real(wp),
intent(out) :: ntmp
369 real(wp),
dimension(nb),
intent(in) :: weights
373 r3 = dot_product(weights, rtmp**3._wp)
374 ntmp = (3._wp/(4._wp*pi))*vftmp/r3
381# 70 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
383# 70 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
385# 70 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
387# 70 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
389# 70 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
391# 70 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
393# 70 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
395 real(wp),
intent(in) :: vftmp
396 real(wp),
dimension(nb),
intent(in) :: nrtmp
397 real(wp),
intent(out) :: ntmp
398 real(wp),
dimension(nb),
intent(in) :: weights
402 nr3 = dot_product(weights, nrtmp**3._wp)
403 ntmp = sqrt((4._wp*pi/3._wp)*nr3/vftmp)
410 real(wp),
dimension(:, :),
intent(in) :: a
411 real(wp),
optional,
intent(in) :: div
414 integer :: local_m, local_n
420 if (
present(div))
then
426 print *, local_m, local_n
430 write (*, fmt=
"(F12.4)", advance=
"no") a(i,
j)/c
432 write (*, fmt=
"(A1)")
" "
434 write (*, fmt=
"(A1)")
" "
447# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
449# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
450 use iso_fortran_env,
only: output_unit
451# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
453# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
454 print *,
'm_helper.fpp:122: ',
'@:ALLOCATE(weight(nb), R0(nb))'
455# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
457# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
458 call flush (output_unit)
459# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
461# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
463# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
465# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
467# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
469# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
471# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
472#if defined(MFC_OpenACC)
473# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
475# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
476#elif defined(MFC_OpenMP)
477# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
479# 122 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
483# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
485# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
486 use iso_fortran_env,
only: output_unit
487# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
489# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
490 print *,
'm_helper.fpp:124: ',
'@:ALLOCATE(pb0(nb), Pe_T(nb), k_g(nb), k_v(nb), mass_g0(nb), mass_v0(nb))'
491# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
493# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
494 call flush (output_unit)
495# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
497# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
499# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
500 allocate (pb0(nb), pe_t(nb), k_g(nb), k_v(nb), mass_g0(nb), mass_v0(nb))
501# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
503# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
505# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
507# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
509# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
511# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
513# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
515# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
516#if defined(MFC_OpenACC)
517# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
519# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
520#elif defined(MFC_OpenMP)
521# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
523# 124 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
526# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
528# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
529 use iso_fortran_env,
only: output_unit
530# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
532# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
533 print *,
'm_helper.fpp:125: ',
'@:ALLOCATE(Re_trans_T(nb), Re_trans_c(nb), Im_trans_T(nb), Im_trans_c(nb))'
534# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
536# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
537 call flush (output_unit)
538# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
540# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
542# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
543 allocate (re_trans_t(nb), re_trans_c(nb), im_trans_t(nb), im_trans_c(nb))
544# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
546# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
548# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
550# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
552# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
554# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
555#if defined(MFC_OpenACC)
556# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
558# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
559#elif defined(MFC_OpenMP)
560# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
562# 125 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
566# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
568# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
569 use iso_fortran_env,
only: output_unit
570# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
572# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
573 print *,
'm_helper.fpp:127: ',
'@:ALLOCATE(pb0(nb))'
574# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
576# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
577 call flush (output_unit)
578# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
580# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
582# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
584# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
586# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
588# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
589#if defined(MFC_OpenACC)
590# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
592# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
593#elif defined(MFC_OpenMP)
594# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
596# 127 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
603 else if (nb == 1)
then
607 stop
'Invalid value of nb'
620 r0ref = bub_pp%R0ref; p0ref = bub_pp%p0ref
621 rho0ref = bub_pp%rho0ref;
622 ss = bub_pp%ss; pv = bub_pp%pv; vd = bub_pp%vd
623 mu_l = bub_pp%mu_l; mu_v = bub_pp%mu_v; mu_g = bub_pp%mu_g
624 gam_v = bub_pp%gam_v; gam_g = bub_pp%gam_g
625 if (.not. polytropic)
then
626 if (bubbles_euler)
then
627 m_v = bub_pp%M_v; m_g = bub_pp%M_g
628 k_v = bub_pp%k_v; k_g = bub_pp%k_g
630 r_v = bub_pp%R_v; r_g = bub_pp%R_g
633 if (bubbles_lagrange)
then
634 cp_v = bub_pp%cp_v; cp_g = bub_pp%cp_g
635 k_vl = bub_pp%k_v; k_gl = bub_pp%k_g
639 if (bubbles_euler .and. (.not. polytropic))
then
640 if (thermal == 2)
then
650 if (.not. f_is_default(bub_pp%ss)) web = 1._wp/ss
651 if (.not. f_is_default(bub_pp%mu_l)) re_inv = mu_l
652 if (.not. polytropic) pe_c = 1._wp/vd
654 if (bubbles_euler)
then
656 if (.not. polytropic)
then
660 if (qbmm .and. polytropic)
then
662 if (.not. f_is_default(web))
then
663 pb0 = pb0 + 2._wp/web/r0
673 real(wp),
dimension(nb) :: chi_vw0, cp_m0, k_m0, rho_m0, x_vw, omegan, rhol0
675 real(wp),
parameter :: k_poly = 1._wp
679 phi_vg = (1._wp + sqrt(mu_v/mu_g)*(m_g/m_v)**(0.25_wp))**2 &
680 /(sqrt(8._wp)*sqrt(1._wp + m_v/m_g))
681 phi_gv = (1._wp + sqrt(mu_g/mu_v)*(m_v/m_g)**(0.25_wp))**2 &
682 /(sqrt(8._wp)*sqrt(1._wp + m_g/m_v))
685 pb0 = eu + 2._wp/web/r0
688 chi_vw0 = 1._wp/(1._wp + r_v/r_g*(pb0/pv - 1._wp))
691 cp_m0 = chi_vw0*r_v*gam_v/(gam_v - 1._wp) &
692 + (1._wp - chi_vw0)*r_g*gam_g/(gam_g - 1._wp)
695 x_vw = m_g*chi_vw0/(m_v + (m_g - m_v)*chi_vw0)
698 k_m0 = x_vw*k_v/(x_vw + (1._wp - x_vw)*phi_vg) &
699 + (1._wp - x_vw)*k_g/(x_vw*phi_gv + 1._wp - x_vw)
700 k_g(:) = k_g(:)/k_m0(:)
701 k_v(:) = k_v(:)/k_m0(:)
704 rho_m0 = pv/(chi_vw0*r_v*tw)
707 mass_g0(:) = (4._wp*pi/3._wp)*(pb0(:) - pv)/(r_g*tw)*r0(:)**3
708 mass_v0(:) = (4._wp*pi/3._wp)*pv/(r_v*tw)*r0(:)**3
711 pe_t(:) = rho_m0*cp_m0(:)/k_m0(:)
714 omegan(:) = sqrt(3._wp*k_poly*ca + 2._wp*(3._wp*k_poly - 1._wp)/(web*r0))/r0/sqrt(rho0ref)
717 re_trans_t(ir), im_trans_t(ir))
719 re_trans_c(ir), im_trans_c(ir))
732 real(wp),
intent(in) :: omega, peclet
733 real(wp),
intent(out) :: re_trans, im_trans
735 complex(wp) :: imag, trans, c1, c2, c3
737 imag = (0._wp, 1._wp)
739 c1 = imag*omega*peclet
741 c3 = (exp(c2) - exp(-c2))/(exp(c2) + exp(-c2))
742 trans = ((c2/c3 - 1._wp)**(-1) - 3._wp/c1)**(-1)
745 im_trans = aimag(trans)
752 integer,
intent(in) :: i
753 character(len=*),
intent(inout) :: res
755 write (res,
'(I0)') i
762 real(wp),
dimension(:),
intent(inout) :: local_weight
763 real(wp),
dimension(:),
intent(inout) :: local_r0
765 real(wp) :: r0mn, r0mx, dphi, tmp, sd
766 real(wp),
dimension(nb) :: phi
769 r0mn = 0.8_wp*exp(-2.8_wp*sd)
770 r0mx = 0.2_wp*exp(9.5_wp*sd) + 1._wp
774 phi(ir) = log(r0mn) &
775 + (ir - 1._wp)*log(r0mx/r0mn)/(nb - 1._wp)
776 local_r0(ir) = exp(phi(ir))
779# 310 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
780 dphi = phi(2) - phi(1)
781# 312 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
786 tmp = exp(-0.5_wp*(phi(ir)/sd)**2)/sqrt(2._wp*pi)/sd
787 if (mod(ir, 2) == 0)
then
788 local_weight(ir) = tmp*4._wp*dphi/3._wp
790 local_weight(ir) = tmp*2._wp*dphi/3._wp
793 tmp = exp(-0.5_wp*(phi(1)/sd)**2)/sqrt(2._wp*pi)/sd
794 local_weight(1) = tmp*dphi/3._wp
795 tmp = exp(-0.5_wp*(phi(nb)/sd)**2)/sqrt(2._wp*pi)/sd
796 local_weight(nb) = tmp*dphi/3._wp
807# 336 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
809# 336 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
811# 336 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
813# 336 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
815# 336 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
817# 336 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
819# 336 "/home/runner/work/MFC/MFC/src/common/m_helper.fpp"
822 real(wp),
dimension(3),
intent(in) :: a, b
823 real(wp),
dimension(3) :: c
825 c(1) = a(2)*b(3) - a(3)*b(2)
826 c(2) = a(3)*b(1) - a(1)*b(3)
827 c(3) = a(1)*b(2) - a(2)*b(1)
835 real(wp),
intent(inout) :: lhs, rhs
849 type(ic_model_parameters),
intent(in) :: param
850 real(wp),
dimension(1:3),
optional,
intent(in) :: center
851 real(wp),
dimension(1:4, 1:4) :: sc, rz, rx, ry, tr, t_back, t_to_origin, out_matrix
853 sc = transpose(reshape([ &
854 param%scale(1), 0._wp, 0._wp, 0._wp, &
855 0._wp, param%scale(2), 0._wp, 0._wp, &
856 0._wp, 0._wp, param%scale(3), 0._wp, &
857 0._wp, 0._wp, 0._wp, 1._wp], shape(sc)))
859 rz = transpose(reshape([ &
860 cos(param%rotate(3)), -sin(param%rotate(3)), 0._wp, 0._wp, &
861 sin(param%rotate(3)), cos(param%rotate(3)), 0._wp, 0._wp, &
862 0._wp, 0._wp, 1._wp, 0._wp, &
863 0._wp, 0._wp, 0._wp, 1._wp], shape(rz)))
865 rx = transpose(reshape([ &
866 1._wp, 0._wp, 0._wp, 0._wp, &
867 0._wp, cos(param%rotate(1)), -sin(param%rotate(1)), 0._wp, &
868 0._wp, sin(param%rotate(1)), cos(param%rotate(1)), 0._wp, &
869 0._wp, 0._wp, 0._wp, 1._wp], shape(rx)))
871 ry = transpose(reshape([ &
872 cos(param%rotate(2)), 0._wp, sin(param%rotate(2)), 0._wp, &
873 0._wp, 1._wp, 0._wp, 0._wp, &
874 -sin(param%rotate(2)), 0._wp, cos(param%rotate(2)), 0._wp, &
875 0._wp, 0._wp, 0._wp, 1._wp], shape(ry)))
877 tr = transpose(reshape([ &
878 1._wp, 0._wp, 0._wp, param%translate(1), &
879 0._wp, 1._wp, 0._wp, param%translate(2), &
880 0._wp, 0._wp, 1._wp, param%translate(3), &
881 0._wp, 0._wp, 0._wp, 1._wp], shape(tr)))
883 if (
present(center))
then
885 t_to_origin = transpose(reshape([ &
886 1._wp, 0._wp, 0._wp, -center(1), &
887 0._wp, 1._wp, 0._wp, -center(2), &
888 0._wp, 0._wp, 1._wp, -center(3), &
889 0._wp, 0._wp, 0._wp, 1._wp], shape(tr)))
892 t_back = transpose(reshape([ &
893 1._wp, 0._wp, 0._wp, center(1), &
894 0._wp, 1._wp, 0._wp, center(2), &
895 0._wp, 0._wp, 1._wp, center(3), &
896 0._wp, 0._wp, 0._wp, 1._wp], shape(tr)))
898 out_matrix = matmul(tr, matmul(t_back, matmul(ry, matmul(rx, matmul(rz, matmul(sc, t_to_origin))))))
900 out_matrix = matmul(ry, matmul(rx, rz))
910 real(wp),
dimension(1:3),
intent(inout) :: vec
911 real(wp),
dimension(1:4, 1:4),
intent(in) :: matrix
913 real(wp),
dimension(1:4) :: tmp
915 tmp = matmul(matrix, [vec(1), vec(2), vec(3), 1._wp])
926 type(t_triangle),
intent(inout) :: triangle
927 real(wp),
dimension(1:4, 1:4),
intent(in) :: matrix, matrix_n
945 type(t_model),
intent(inout) :: model
946 real(wp),
dimension(1:4, 1:4),
intent(in) :: matrix, matrix_n
950 do i = 1,
size(model%trs)
961 type(t_model),
intent(in) :: model
966 if (
size(model%trs) == 0)
then
972 bbox%min = model%trs(1)%v(1, :)
973 bbox%max = model%trs(1)%v(1, :)
975 do i = 1,
size(model%trs)
977 bbox%min = min(bbox%min, model%trs(i)%v(
j, :))
978 bbox%max = max(bbox%max, model%trs(i)%v(
j, :))
988 elemental function f_xor(lhs, rhs)
result(res)
990 logical,
intent(in) :: lhs, rhs
993 res = (lhs .and. .not. rhs) .or. (.not. lhs .and. rhs)
1001 logical,
intent(in) :: predicate
1017 integer,
intent(in) ::
l
1018 real(wp),
intent(in) :: x
1019 real(wp) :: result_p
1023 else if (
l == 1)
then
1039 integer,
intent(in) ::
l, m_order
1040 real(wp),
intent(in) :: x, phi
1041 real(wp) :: y, prefactor, local_pi
1043 local_pi = acos(-1._wp)
1045 if (m_order == 0)
then
1047 elseif (m_order > 0)
then
1048 y = (-1._wp)**m_order*sqrt(2._wp)*prefactor*
associated_legendre(x,
l, m_order)*cos(m_order*phi);
1061 integer,
intent(in) ::
l, m_order
1062 real(wp),
intent(in) :: x
1063 real(wp) :: result_p
1065 if (m_order <= 0 .and.
l <= 0)
then
1067 elseif (
l == 1 .and. m_order <= 0)
then
1069 elseif (
l == 1 .and. m_order == 1)
then
1070 result_p = -(1 - x**2)**(1._wp/2._wp);
1071 elseif (m_order ==
l)
then
1073 elseif (m_order ==
l - 1)
then
1086 integer,
intent(in) :: n_in
1087 integer,
parameter :: int64_kind = selected_int_kind(18)
1088 integer(kind=int64_kind) :: r_result
1091 r_result = product((/(i, i=n_in, 1, -2)/))
1100 integer,
intent(in) :: n_in
1101 integer,
parameter :: int64_kind = selected_int_kind(18)
1102 integer(kind=int64_kind) :: r_result
1106 r_result = product((/(i, i=n_in, 1, -1)/))
1118 real(wp),
intent(in) :: x, eps
1133 real(wp),
intent(in) :: x, eps
1145 real(wp),
intent(in) :: x
1157 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)
1159 type(scalar_field),
dimension(sys_size),
intent(inout) ::
q_cons_vf, q_cons_temp
1162 integer :: i,
j,
k,
l
1163 integer :: ix, iy, iz, x_id, y_id, z_id
1164 integer,
intent(inout) :: m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds
1166 m_ds = int((m + 1)/3) - 1
1167 n_ds = int((n + 1)/3) - 1
1168 p_ds = int((p + 1)/3) - 1
1170 m_glb_ds = int((m_glb + 1)/3) - 1
1171 n_glb_ds = int((n_glb + 1)/3) - 1
1172 p_glb_ds = int((p_glb + 1)/3) - 1
1181 q_cons_temp(i)%sf(
j,
k,
l) = 0
1186 q_cons_temp(i)%sf(
j,
k,
l) = q_cons_temp(i)%sf(
j,
k,
l) &
1187 + (1._wp/27._wp)*
q_cons_vf(i)%sf(x_id + ix, y_id + iy, z_id + iz)
1201 type(scalar_field),
intent(inout),
dimension(sys_size) ::
q_cons_vf, q_cons_temp
1202 integer :: i,
j,
k,
l
1203 integer :: ix, iy, iz
1204 integer :: x_id, y_id, z_id
1205 real(wp),
dimension(4) :: temp
1216 x_id =
j - int(3*ix) - 1
1217 y_id =
k - int(3*iy) - 1
1218 z_id =
l - int(3*iz) - 1
1220 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)
1221 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, iy + y_id, iz)
1222 temp(3) = (2._wp/3._wp)*temp(1) + (1._wp/3._wp)*temp(2)
1224 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, iy, iz + z_id)
1225 temp(2) = (2._wp/3._wp)*q_cons_temp(i)%sf(ix, iy + y_id, iz + z_id) + (1._wp/3._wp)*q_cons_temp(i)%sf(ix + x_id, iy + y_id, iz + z_id)
1226 temp(4) = (2._wp/3._wp)*temp(1) + (1._wp/3._wp)*temp(2)
1228 q_cons_vf(i)%sf(
j,
k,
l) = (2._wp/3._wp)*temp(3) + (1._wp/3._wp)*temp(4)
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the post-process: domain geometry, equation of state, and output database setti...
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.
impure subroutine, public s_initialize_nonpoly()
Initializes non-polydisperse bubble modeling.
recursive real(wp) function, public associated_legendre(x, l, m_order)
This function generates the associated legendre polynomials evaluated at x with inputs l and m.
recursive real(wp) function, public spherical_harmonic_func(x, phi, l, m_order)
This function calculates the spherical harmonic function evaluated at x and phi.
subroutine, public s_transform_triangle(triangle, matrix, matrix_n)
This procedure transforms a triangle by a matrix, one vertex at a time.
real(wp) function, public f_cut_on(x, eps)
This function calculates a smooth cut-on function that is zero for x values smaller than zero and goe...
subroutine, public s_transform_model(model, matrix, matrix_n)
This procedure transforms a model by a matrix, one triangle at a time.
type(t_bbox) function, public f_create_bbox(model)
This procedure creates a bounding box for a model.
real(wp) function f_gx(x)
This function is a helper function for the functions f_cut_on and f_cut_off.
subroutine, public s_simpson(local_weight, local_r0)
Computes the Simpson weights for quadrature.
elemental integer(kind=int64_kind) function, public double_factorial(n_in)
This function calculates the double factorial value of an integer.
impure subroutine s_initialize_bubble_vars()
elemental integer(kind=int64_kind) function, public factorial(n_in)
The following function calculates the factorial value of an integer.
subroutine, public s_upsample_data(q_cons_vf, q_cons_temp)
Upsamples conservative variable fields from a coarsened grid back to the original resolution using in...
recursive real(wp) function, public unassociated_legendre(x, l)
This function generates the unassociated legendre poynomials.
real(wp) function, public f_cut_off(x, eps)
This function calculates a smooth cut-off function that is one for x values smaller than zero and goe...
subroutine, public s_transform_vec(vec, matrix)
This procedure transforms a vector by a matrix.
impure subroutine, public s_initialize_bubbles_model()
bubbles_euler + polytropic bubbles_euler + non-polytropic bubbles_lagrange + non-polytropic
impure subroutine, public s_print_2d_array(a, div)
Prints 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.
pure real(wp) function, dimension(3), public f_cross(a, b)
This procedure computes 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)
Downsamples conservative variable fields by a factor of 3 in each direction using volume averaging.
elemental logical function, public f_xor(lhs, rhs)
This procedure performs xor on lhs and rhs.
subroutine, public s_comp_n_from_cons(vftmp, nrtmp, ntmp, weights)
Computes the bubble number density from the conservative void fraction and weighted bubble radii.
real(wp) function, dimension(1:4, 1:4), public f_create_transform_matrix(param, center)
This procedure creates a transformation matrix.
elemental integer function, public f_logical_to_int(predicate)
This procedure converts logical to 1 or 0.
elemental subroutine, public s_int_to_str(i, res)
Converts an integer to its trimmed string representation.
elemental subroutine, public s_swap(lhs, rhs)
This procedure swaps two real numbers.