1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.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# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
34# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
35# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
36# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
62# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
63# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
64# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
65# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
66# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
68# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
70# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
140# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
141# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
142# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
144# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
145# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
146# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
148# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
168# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
170# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
172# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
174# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
176# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
178# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
226# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
228# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
230# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
232# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
234# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
236# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
238# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
240# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
267# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
269# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
275# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
277# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
279# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
281# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
283# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
285# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
287# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
291# 6 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp" 2
300 use m_mpi_proxy !< message passing interface (mpi) module proxy
312# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
313#if defined(MFC_OpenACC)
314# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
316# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
317#elif defined(MFC_OpenMP)
318# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
320# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
339 elemental function f_rddot(fRho, fP, fR, fV, fR0, fpb, fpbdot, alf, fntait, fBtait, f_bub_adv_src, f_divu, fCson)
341# 44 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
343# 44 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
345# 44 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
347# 44 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
349# 44 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
351# 44 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
353# 44 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
355 real(wp),
intent(in) :: frho, fp, fr, fv, fr0, fpb, fpbdot, alf
356 real(wp),
intent(in) :: fntait, fbtait, f_bub_adv_src, f_divu
357 real(wp),
intent(in) :: fcson
359 real(wp) :: fcpbw, fcpinf, fcpinf_dot, fh, fhdot, c_gas, c_liquid
365 fcpbw =
f_cpbw(fr0, fr, fv, fpb)
366 fh =
f_h(fcpbw, fcpinf, fntait, fbtait)
367 c_gas =
f_cgas(fcpinf, fntait, fbtait, fh)
368 fcpinf_dot =
f_cpinfdot(frho, fp, alf, fntait, fbtait, f_bub_adv_src, f_divu)
369 fhdot =
f_hdot(fcpbw, fcpinf, fcpinf_dot, fntait, fbtait, fr, fv, fr0, fpbdot)
376 c_liquid = sqrt(fntait*(fp + fbtait)/(frho*(1._wp - alf)))
397 elemental function f_cpbw(fR0, fR, fV, fpb)
399# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
401# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
403# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
405# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
407# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
409# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
411# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
413 real(wp),
intent(in) :: fr0, fr, fv, fpb
430 elemental function f_h(fCpbw, fCpinf, fntait, fBtait)
432# 107 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
434# 107 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
436# 107 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
438# 107 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
440# 107 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
442# 107 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
444# 107 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
446 real(wp),
intent(in) :: fcpbw, fcpinf, fntait, fbtait
448 real(wp) :: tmp1, tmp2, tmp3
451 tmp1 = (fntait - 1._wp)/fntait
452 tmp2 = (fcpbw/(1._wp + fbtait) + 1._wp)**tmp1
453 tmp3 = (fcpinf/(1._wp + fbtait) + 1._wp)**tmp1
455 f_h = (tmp2 - tmp3)*fntait*(1._wp + fbtait)/(fntait - 1._wp)
464 elemental function f_cgas(fCpinf, fntait, fBtait, fH)
466# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
468# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
470# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
472# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
474# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
476# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
478# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
480 real(wp),
intent(in) :: fcpinf, fntait, fbtait, fh
486 tmp = (fcpinf/(1._wp + fbtait) + 1._wp)**((fntait - 1._wp)/fntait)
487 tmp = fntait*(1._wp + fbtait)*tmp
489 f_cgas = sqrt(tmp + (fntait - 1._wp)*fh)
501 elemental function f_cpinfdot(fRho, fP, falf, fntait, fBtait, advsrc, divu)
503# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
505# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
507# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
509# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
511# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
513# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
515# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
517 real(wp),
intent(in) :: frho, fp, falf, fntait, fbtait, advsrc, divu
519 real(wp) :: c2_liquid
525 c2_liquid = fntait*(fp + fbtait)/frho
527 c2_liquid = fntait*(fp + fbtait)/(frho*(1._wp - falf))
545 elemental function f_hdot(fCpbw, fCpinf, fCpinf_dot, fntait, fBtait, fR, fV, fR0, fpbdot)
547# 180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
549# 180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
551# 180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
553# 180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
555# 180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
557# 180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
559# 180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
561 real(wp),
intent(in) :: fcpbw, fcpinf, fcpinf_dot, fntait, fbtait
562 real(wp),
intent(in) :: fr, fv, fr0, fpbdot
564 real(wp) :: tmp1, tmp2
568 tmp1 = (fr0/fr)**(3._wp*
gam)
569 tmp1 = -3._wp*
gam*(
ca + 2._wp/
web/fr0)*tmp1*fv/fr
573 tmp2 = (2._wp/
web + 4._wp*
re_inv*fv)*fv/(fr**2._wp)
576 (fcpbw/(1._wp + fbtait) + 1._wp)**(-1._wp/fntait)*(tmp1 + tmp2) &
577 - (fcpinf/(1._wp + fbtait) + 1._wp)**(-1._wp/fntait)*fcpinf_dot
596# 215 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
598# 215 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
600# 215 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
602# 215 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
604# 215 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
606# 215 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
608# 215 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
610 real(wp),
intent(in) :: fcp, frho, fr, fv, fcpbw
618 f_rddot_rp = (-1.5_wp*(fv**2._wp) + (fcpbw - fcp)/frho)/fr
631 elemental function f_rddot_g(fCpbw, fR, fV, fH, fHdot, fcgas, fntait, fBtait)
633# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
635# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
637# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
639# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
641# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
643# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
645# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
647 real(wp),
intent(in) :: fcpbw, fr, fv, fh, fhdot
648 real(wp),
intent(in) :: fcgas, fntait, fbtait
650 real(wp) :: tmp1, tmp2, tmp3
654 tmp2 = 1._wp + 4._wp*
re_inv/fcgas/fr*(fcpbw/(1._wp + fbtait) + 1._wp) &
656 tmp3 = 1.5_wp*fv**2._wp*(tmp1/3._wp - 1._wp) + fh*(1._wp + tmp1) &
657 + fr*fhdot*(1._wp - tmp1)/fcgas
659 f_rddot_g = tmp3/(fr*(1._wp - tmp1)*tmp2)
670# 261 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
672# 261 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
674# 261 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
676# 261 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
678# 261 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
680# 261 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
682# 261 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
684 real(wp),
intent(in) :: fr0, fr, fv, fpb
690 (2._wp/(
web*fr0))*((fr0/fr)**(3._wp*
gam))
709 elemental function f_rddot_km(fpbdot, fCp, fCpbw, fRho, fR, fV, fR0, fC)
711# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
713# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
715# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
717# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
719# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
721# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
723# 288 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
725 real(wp),
intent(in) :: fpbdot, fcp, fcpbw
726 real(wp),
intent(in) :: frho, fr, fv, fr0, fc
728 real(wp) :: tmp1, tmp2, cdot_star
731 cdot_star = -3._wp*
gam*
ca*((fr0/fr)**(3._wp*
gam))*fv/fr
733 3._wp*
gam*(2._wp/(
web*fr0))*((fr0/fr)**(3._wp*
gam))*fv/fr
742 tmp2 = 1.5_wp*(fv**2._wp)*(tmp1/3._wp - 1._wp) + &
743 (1._wp + tmp1)*(fcpbw - fcp)/frho + &
744 cdot_star*fr/(frho*fc)
757 elemental subroutine s_bwproperty(pb_in, iR0, chi_vw_out, k_mw_out, rho_mw_out)
759# 322 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
761# 322 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
763# 322 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
765# 322 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
767# 322 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
769# 322 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
771# 322 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
773 real(wp),
intent(in) :: pb_in
774 integer,
intent(in) :: ir0
775 real(wp),
intent(out) :: chi_vw_out
776 real(wp),
intent(out) :: k_mw_out
777 real(wp),
intent(out) :: rho_mw_out
781 chi_vw_out = 1._wp/(1._wp +
r_v/
r_g*(pb_in/
pv - 1._wp))
784 k_mw_out = x_vw*
k_v(ir0)/(x_vw + (1._wp - x_vw)*
phi_vg) &
785 + (1._wp - x_vw)*
k_g(ir0)/(x_vw*
phi_gv + 1._wp - x_vw)
787 rho_mw_out =
pv/(chi_vw_out*
r_v*
tw)
802 elemental subroutine s_vflux(fR, fV, fpb, fmass_v, iR0, vflux, fmass_g, fbeta_c, fR_m, fgamma_m)
804# 353 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
806# 353 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
808# 353 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
810# 353 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
812# 353 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
814# 353 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
816# 353 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
818 real(wp),
intent(in) :: fr
819 real(wp),
intent(in) :: fv
820 real(wp),
intent(in) :: fpb
821 real(wp),
intent(in) :: fmass_v
822 integer,
intent(in) :: ir0
823 real(wp),
intent(out) :: vflux
824 real(wp),
intent(in),
optional :: fmass_g, fbeta_c
825 real(wp),
intent(out),
optional :: fr_m, fgamma_m
828 real(wp) :: rho_mw_lag
836 conc_v = fmass_v/(fmass_v + fmass_g)
838 conc_v = 1._wp/(1._wp + (
r_v/
r_g)*(fpb/
pv - 1._wp))
840 fr_m = (fmass_g*
r_g + fmass_v*
r_v)
841 fgamma_m = conc_v*
gam_v + (1._wp - conc_v)*
gam_g
844 chi_bar = fmass_v/(fmass_v + fmass_g)
845 grad_chi = (chi_bar - conc_v)
846 rho_mw_lag = (fmass_g + fmass_v)/(4._wp/3._wp*pi*fr**3._wp)
849 vflux = -fbeta_c*rho_mw_lag*grad_chi/(1._wp - conc_v)/fr
852 chi_bar = fmass_v/(fmass_v +
mass_g0(ir0))
874 elemental function f_bpres_dot(fvflux, fR, fV, fpb, fmass_v, iR0, fbeta_t, fR_m, fgamma_m)
876# 411 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
878# 411 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
880# 411 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
882# 411 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
884# 411 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
886# 411 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
888# 411 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
890 real(wp),
intent(in) :: fvflux
891 real(wp),
intent(in) :: fr
892 real(wp),
intent(in) :: fv
893 real(wp),
intent(in) :: fpb
894 real(wp),
intent(in) :: fmass_v
895 integer,
intent(in) :: ir0
896 real(wp),
intent(in),
optional :: fbeta_t, fr_m, fgamma_m
905 t_bar = fpb*(4._wp/3._wp*pi*fr**3._wp)/fr_m
906 grad_t = -fbeta_t*(t_bar -
tw)
907 heatflux = (fgamma_m - 1._wp)/fgamma_m*grad_t/fr
945 fntait, fBtait, f_bub_adv_src, f_divu, &
946 bub_id, fmass_v, fmass_g, fbeta_c, &
947 fbeta_t, fCson, adap_dt_stop)
949# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
951# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
953# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
955# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
957# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
959# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
961# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
963# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
965# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
967# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
969# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
971# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
973# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
975# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
977# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
979# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
981# 470 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
983# 472 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
985 real(wp),
intent(inout) :: fR, fV, fpb, fmass_v
986 real(wp),
intent(in) :: fRho, fP, fR0, fpbdot, alf
987 real(wp),
intent(in) :: fntait, fBtait, f_bub_adv_src, f_divu
988 integer,
intent(in) :: bub_id
989 real(wp),
intent(in) :: fmass_g, fbeta_c, fbeta_t, fCson
990 integer,
intent(inout) :: adap_dt_stop
992 real(wp),
dimension(5) :: err
995 real(wp),
dimension(4) :: myR_tmp1, myV_tmp1, myR_tmp2, myV_tmp2
996 real(wp),
dimension(4) :: myPb_tmp1, myMv_tmp1, myPb_tmp2, myMv_tmp2
997 real(wp) :: fR2, fV2, fpb2, fmass_v2
998 integer :: iter_count
1001 fntait, fbtait, f_bub_adv_src, f_divu, fcson, h0)
1009 if (t_new + h > 0.5_wp*
dt)
then
1010 h = 0.5_wp*
dt - t_new
1016 iter_count = iter_count + 1
1020 frho, fp, fr, fv, fr0, fpb, fpbdot, alf, &
1021 fntait, fbtait, f_bub_adv_src, f_divu, &
1022 bub_id, fmass_v, fmass_g, fbeta_c, &
1023 fbeta_t, fcson, h, &
1024 myr_tmp1, myv_tmp1, mypb_tmp1, mymv_tmp1)
1032 frho, fp, fr, fv, fr0, fpb, fpbdot, alf, &
1033 fntait, fbtait, f_bub_adv_src, f_divu, &
1034 bub_id, fmass_v, fmass_g, fbeta_c, &
1035 fbeta_t, fcson, 0.5_wp*h, &
1036 myr_tmp2, myv_tmp2, mypb_tmp2, mymv_tmp2)
1042 fr2 = myr_tmp2(4); fv2 = myv_tmp2(4)
1043 fpb2 = mypb_tmp2(4); fmass_v2 = mymv_tmp2(4)
1046 frho, fp, fr2, fv2, fr0, fpb2, fpbdot, alf, &
1047 fntait, fbtait, f_bub_adv_src, f_divu, &
1048 bub_id, fmass_v2, fmass_g, fbeta_c, &
1049 fbeta_t, fcson, 0.5_wp*h, &
1050 myr_tmp2, myv_tmp2, mypb_tmp2, mymv_tmp2)
1056 err(4) = abs((myr_tmp1(4) - myr_tmp2(4))/myr_tmp1(4))
1057 err(5) = abs((myv_tmp1(4) - myv_tmp2(4))/myv_tmp1(4))
1058 if (abs(myv_tmp1(4)) < verysmall) err(5) = 0._wp
1067 (err(5) <=
adap_dt_tol) .and. myr_tmp1(4) > 0._wp)
then
1079 fmass_v = mymv_tmp1(4)
1083 h = h*min(2._wp, max(0.5_wp, (
adap_dt_tol/err(1))**(1._wp/3._wp)))
1123 fntait, fBtait, f_bub_adv_src, f_divu, &
1126# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1128# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1130# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1132# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1134# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1136# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1138# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1140# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1142# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1144# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1146# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1148# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1150# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1152# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1154# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1156# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1158# 613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1160# 615 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1162 real(wp),
intent(IN) :: fRho, fP, fR, fV, fR0, fpb, fpbdot, alf
1163 real(wp),
intent(IN) :: fntait, fBtait, f_bub_adv_src, f_divu
1164 real(wp),
intent(IN) :: fCson
1165 real(wp),
intent(OUT) :: h
1167 real(wp),
dimension(2) :: h_size
1168 real(wp),
dimension(3) :: d_norms
1169 real(wp),
dimension(2) :: myR_tmp, myV_tmp, myA_tmp
1175 mya_tmp(1) =
f_rddot(frho, fp, myr_tmp(1), myv_tmp(1), fr0, &
1176 fpb, fpbdot, alf, fntait, fbtait, &
1177 f_bub_adv_src, f_divu, &
1181 d_norms(1) = sqrt((myr_tmp(1)**2._wp + myv_tmp(1)**2._wp)/2._wp)
1182 d_norms(2) = sqrt((myv_tmp(1)**2._wp + mya_tmp(1)**2._wp)/2._wp)
1183 if (d_norms(1) < threshold_first_guess .or. d_norms(2) < threshold_first_guess)
then
1184 h_size(1) = small_guess
1186 h_size(1) = scale_guess*(d_norms(1)/d_norms(2))
1190 myr_tmp(2) = myr_tmp(1) + h_size(1)*myv_tmp(1)
1191 myv_tmp(2) = myv_tmp(1) + h_size(1)*mya_tmp(1)
1192 mya_tmp(2) =
f_rddot(frho, fp, myr_tmp(2), myv_tmp(2), fr0, &
1193 fpb, fpbdot, alf, fntait, fbtait, &
1194 f_bub_adv_src, f_divu, &
1198 d_norms(3) = sqrt(((myv_tmp(2) - myv_tmp(1))**2._wp + (mya_tmp(2) - mya_tmp(1))**2._wp)/2._wp)/h_size(1)
1202 if (max(d_norms(2), d_norms(3)) < threshold_second_guess)
then
1203 h_size(2) = max(small_guess, h_size(1)*scale_first_guess)
1205 h_size(2) = (scale_guess/max(d_norms(2), d_norms(3)))**(1._wp/3._wp)
1208 h = min(h_size(1)/scale_guess, h_size(2))
1239 fntait, fBtait, f_bub_adv_src, f_divu, &
1240 bub_id, fmass_v, fmass_g, fbeta_c, &
1241 fbeta_t, fCson, h, &
1242 myR_tmp, myV_tmp, myPb_tmp, myMv_tmp)
1244# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1246# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1248# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1250# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1252# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1254# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1256# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1258# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1260# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1262# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1264# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1266# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1268# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1270# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1272# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1274# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1276# 697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1278# 699 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1280 real(wp),
intent(OUT) :: err
1281 real(wp),
intent(IN) :: fRho, fP, fR, fV, fR0, fpb, fpbdot, alf
1282 real(wp),
intent(IN) :: fntait, fBtait, f_bub_adv_src, f_divu, h
1283 integer,
intent(IN) :: bub_id
1284 real(wp),
intent(IN) :: fmass_v, fmass_g, fbeta_c, fbeta_t, fCson
1285 real(wp),
dimension(4),
intent(OUT) :: myR_tmp, myV_tmp, myPb_tmp, myMv_tmp
1287 real(wp),
dimension(4) :: myA_tmp, mydPbdt_tmp, mydMvdt_tmp
1288 real(wp) :: err_R, err_V
1291 mydpbdt_tmp(1:4) = fpbdot
1298 mymv_tmp(1) = fmass_v
1299 call s_advance_el(myr_tmp(1), myv_tmp(1), mypb_tmp(1), mymv_tmp(1), bub_id, &
1300 fmass_g, fbeta_c, fbeta_t, mydpbdt_tmp(1), mydmvdt_tmp(1))
1302 mya_tmp(1) =
f_rddot(frho, fp, myr_tmp(1), myv_tmp(1), fr0, &
1303 mypb_tmp(1), mydpbdt_tmp(1), alf, fntait, fbtait, &
1304 f_bub_adv_src, f_divu, &
1308 myr_tmp(2) = myr_tmp(1) + h*myv_tmp(1)
1309 if (myr_tmp(2) < 0._wp)
then
1312 myv_tmp(2) = myv_tmp(1) + h*mya_tmp(1)
1314 mypb_tmp(2) = mypb_tmp(1) + h*mydpbdt_tmp(1)
1315 mymv_tmp(2) = mymv_tmp(1) + h*mydmvdt_tmp(1)
1316 call s_advance_el(myr_tmp(2), myv_tmp(2), mypb_tmp(2), mymv_tmp(2), &
1317 bub_id, fmass_g, fbeta_c, fbeta_t, mydpbdt_tmp(2), mydmvdt_tmp(2))
1319 mya_tmp(2) =
f_rddot(frho, fp, myr_tmp(2), myv_tmp(2), fr0, &
1320 mypb_tmp(2), mydpbdt_tmp(2), alf, fntait, fbtait, &
1321 f_bub_adv_src, f_divu, &
1325 myr_tmp(3) = myr_tmp(1) + (h/4._wp)*(myv_tmp(1) + myv_tmp(2))
1326 if (myr_tmp(3) < 0._wp)
then
1329 myv_tmp(3) = myv_tmp(1) + (h/4._wp)*(mya_tmp(1) + mya_tmp(2))
1331 mypb_tmp(3) = mypb_tmp(1) + (h/4._wp)*(mydpbdt_tmp(1) + mydpbdt_tmp(2))
1332 mymv_tmp(3) = mymv_tmp(1) + (h/4._wp)*(mydmvdt_tmp(1) + mydmvdt_tmp(2))
1333 call s_advance_el(myr_tmp(3), myv_tmp(3), mypb_tmp(3), mymv_tmp(3), &
1334 bub_id, fmass_g, fbeta_c, fbeta_t, mydpbdt_tmp(3), mydmvdt_tmp(3))
1336 mya_tmp(3) =
f_rddot(frho, fp, myr_tmp(3), myv_tmp(3), fr0, &
1337 mypb_tmp(3), mydpbdt_tmp(3), alf, fntait, fbtait, &
1338 f_bub_adv_src, f_divu, &
1342 myr_tmp(4) = myr_tmp(1) + (h/6._wp)*(myv_tmp(1) + myv_tmp(2) + 4._wp*myv_tmp(3))
1343 if (myr_tmp(4) < 0._wp)
then
1346 myv_tmp(4) = myv_tmp(1) + (h/6._wp)*(mya_tmp(1) + mya_tmp(2) + 4._wp*mya_tmp(3))
1348 mypb_tmp(4) = mypb_tmp(1) + (h/6._wp)*(mydpbdt_tmp(1) + mydpbdt_tmp(2) + 4._wp*mydpbdt_tmp(3))
1349 mymv_tmp(4) = mymv_tmp(1) + (h/6._wp)*(mydmvdt_tmp(1) + mydmvdt_tmp(2) + 4._wp*mydmvdt_tmp(3))
1350 call s_advance_el(myr_tmp(4), myv_tmp(4), mypb_tmp(4), mymv_tmp(4), &
1351 bub_id, fmass_g, fbeta_c, fbeta_t, mydpbdt_tmp(4), mydmvdt_tmp(4))
1353 mya_tmp(4) =
f_rddot(frho, fp, myr_tmp(4), myv_tmp(4), fr0, &
1354 mypb_tmp(4), mydpbdt_tmp(4), alf, fntait, fbtait, &
1355 f_bub_adv_src, f_divu, &
1359 err_r = (-5._wp*h/24._wp)*(myv_tmp(2) + myv_tmp(3) - 2._wp*myv_tmp(4)) &
1360 /max(abs(myr_tmp(1)), abs(myr_tmp(4)))
1361 err_v = (-5._wp*h/24._wp)*(mya_tmp(2) + mya_tmp(3) - 2._wp*mya_tmp(4)) &
1362 /max(abs(myv_tmp(1)), abs(myv_tmp(4)))
1364 if (max(abs(myv_tmp(1)), abs(myv_tmp(4))) < 1.e-12_wp)
then
1371 err = sqrt((err_r**2._wp + err_v**2._wp)/2._wp)
1386 elemental subroutine s_advance_el(fR_tmp, fV_tmp, fPb_tmp, fMv_tmp, bub_id, &
1387 fmass_g, fbeta_c, fbeta_t, fdPbdt_tmp, advance_EL)
1389# 808 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1391# 808 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1393# 808 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1395# 808 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1397# 808 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1399# 808 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1401# 808 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1403 real(wp),
intent(IN) :: fr_tmp, fv_tmp, fpb_tmp, fmv_tmp
1404 real(wp),
intent(IN) :: fmass_g, fbeta_c, fbeta_t
1405 integer,
intent(IN) :: bub_id
1406 real(wp),
intent(INOUT) :: fdpbdt_tmp
1407 real(wp),
intent(out) :: advance_el
1408 real(wp) :: fvapflux, myr_m, mygamma_m
1410 call s_vflux(fr_tmp, fv_tmp, fpb_tmp, fmv_tmp, bub_id, fvapflux, fmass_g, fbeta_c, myr_m, mygamma_m)
1411 fdpbdt_tmp =
f_bpres_dot(fvapflux, fr_tmp, fv_tmp, fpb_tmp, fmv_tmp, bub_id, fbeta_t, myr_m, mygamma_m)
1412 advance_el = 4._wp*pi*fr_tmp**2._wp*fvapflux
Shared bubble-dynamics procedures (radial acceleration, wall pressure, sound speed) for ensemble- and...
elemental real(wp) function f_cpinfdot(frho, fp, falf, fntait, fbtait, advsrc, divu)
Function that computes the time derivative of the driving pressure.
elemental real(wp) function f_cpbw(fr0, fr, fv, fpb)
Function that computes that bubble wall pressure for Gilmore bubbles.
elemental real(wp) function f_h(fcpbw, fcpinf, fntait, fbtait)
Function that computes the bubble enthalpy.
subroutine s_advance_step(frho, fp, fr, fv, fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, bub_id, fmass_v, fmass_g, fbeta_c, fbeta_t, fcson, adap_dt_stop)
Adaptive time stepping routine for subgrid bubbles (See Heirer, E. Hairer S.P.Nørsett G....
subroutine s_initial_substep_h(frho, fp, fr, fv, fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, fcson, h)
Choose the initial time step size for the adaptive time stepping routine (See Heirer,...
elemental subroutine s_bwproperty(pb_in, ir0, chi_vw_out, k_mw_out, rho_mw_out)
Subroutine that computes bubble wall properties for vapor bubbles.
real(wp) k_mw
Bubble wall properties (Ando 2010).
elemental real(wp) function f_rddot(frho, fp, fr, fv, fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, fcson)
Function that computes the bubble radial acceleration based on bubble models.
elemental real(wp) function f_rddot_g(fcpbw, fr, fv, fh, fhdot, fcgas, fntait, fbtait)
Function that computes the bubble radial acceleration.
elemental real(wp) function f_cpbw_km(fr0, fr, fv, fpb)
Function that computes the bubble wall pressure for Keller–Miksis bubbles.
elemental real(wp) function f_rddot_km(fpbdot, fcp, fcpbw, frho, fr, fv, fr0, fc)
Function that computes the bubble radial acceleration for Keller–Miksis bubbles.
real(wp) rho_mw
Bubble wall properties (Ando 2010).
elemental subroutine s_advance_el(fr_tmp, fv_tmp, fpb_tmp, fmv_tmp, bub_id, fmass_g, fbeta_c, fbeta_t, fdpbdt_tmp, advance_el)
Changes of pressure and vapor mass in the lagrange bubbles.
elemental subroutine s_vflux(fr, fv, fpb, fmass_v, ir0, vflux, fmass_g, fbeta_c, fr_m, fgamma_m)
Function that computes the vapour flux.
elemental real(wp) function f_cgas(fcpinf, fntait, fbtait, fh)
Function that computes the sound speed for the bubble.
elemental real(wp) function f_hdot(fcpbw, fcpinf, fcpinf_dot, fntait, fbtait, fr, fv, fr0, fpbdot)
Function that computes the time derivative of the enthalpy.
subroutine s_advance_substep(err, frho, fp, fr, fv, fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, bub_id, fmass_v, fmass_g, fbeta_c, fbeta_t, fcson, h, myr_tmp, myv_tmp, mypb_tmp, mymv_tmp)
Integrate bubble variables over the given time step size, h, using a third-order accurate embedded Ru...
real(wp) chi_vw
Bubble wall properties (Ando 2010).
elemental real(wp) function f_bpres_dot(fvflux, fr, fv, fpb, fmass_v, ir0, fbeta_t, fr_m, fgamma_m)
Function that computes the time derivative of the internal bubble pressure.
elemental real(wp) function f_rddot_rp(fcp, frho, fr, fv, fcpbw)
Function that computes the bubble radial acceleration for Rayleigh-Plesset bubbles.
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
real(wp) web
Weber number.
logical bubbles_euler
Bubbles euler on/off.
integer thermal
Thermal behavior. 1 = adiabatic, 2 = isotherm, 3 = transfer.
real(wp), dimension(:), allocatable pb0
type(bubbles_lagrange_parameters) lag_params
Lagrange bubbles' parameters.
real(wp), dimension(:), allocatable re_trans_t
real(wp), dimension(:), allocatable k_v
real(wp) re_inv
Inverse Reynolds number.
real(wp), dimension(:), allocatable r0
Bubble sizes.
real(wp), dimension(:), allocatable k_g
logical bubbles_lagrange
Lagrangian subgrid bubble model switch.
real(wp) ca
Cavitation number.
logical polytropic
Polytropic switch.
integer adap_dt_max_iters
Maximum number of iterations.
real(wp) adap_dt_tol
Tolerance to control adaptive step size.
real(wp), dimension(:), allocatable mass_g0
logical mpp_lim
Mixture physical parameters (MPP) limits.
real(wp), dimension(:), allocatable re_trans_c
real(wp) dt
Size of the time-step.
integer bubble_model
Gilmore or Keller–Miksis bubble model.
real(wp), dimension(:), allocatable pe_t
real(wp), dimension(:), allocatable mass_v0
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
logical elemental function, public f_approx_equal(a, b, tol_input)
This procedure checks if two floating point numbers of wp are within tolerance.
logical elemental function, public f_is_default(var)
Checks if a real(wp) variable is of default value.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.