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# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
23# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
24# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
25# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
27# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
34# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
36# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
47# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
48# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
49# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
63# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
64# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
65# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
67# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
76# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
78# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
84# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
86# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
88# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 95 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 100 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 105 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 110 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118# 115 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120# 120 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122# 125 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 130 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126# 135 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 165 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 219 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132# 233 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 258 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 269 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138# 271 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 282 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 332 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 342 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147# 361 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149# 378 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151# 388 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153# 395 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155# 401 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157# 407 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159# 413 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161# 419 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
163# 425 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
165# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
166# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
167# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
168# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
175# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
179# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
182# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
183# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
184# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
186# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
187# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
189# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
191# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
193# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
195# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
197# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
199# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
201# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
203# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
205# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
207# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
233# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
235# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
237# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
239# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
241# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
243# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
245# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
247# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
249# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
251# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
253# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
255# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
257# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
259# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
261# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
263# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
266# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
305# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
308# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
311# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
314# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
317# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
320# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
322# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
323# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
325# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
327# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
332# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
335# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
338# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
341# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
344# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
347# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
349# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
351# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
353# 6 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp" 2
371 function f_rddot(fRho, fP, fR, fV, fR0, fpb, fpbdot, alf, fntait, fBtait, f_bub_adv_src, f_divu, fCson)
374# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
376# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
378# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
380# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
382# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
384# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
386# 25 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
388# 26 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
389 real(wp),
intent(in) :: frho, fp, fr, fv, fr0, fpb, fpbdot, alf
390 real(wp),
intent(in) :: fntait, fbtait, f_bub_adv_src, f_divu
391 real(wp),
intent(in) :: fcson
392 real(wp) :: fcpbw, fcpinf, fcpinf_dot, fh, fhdot, c_gas, c_liquid
398 fcpbw =
f_cpbw(fr0, fr, fv, fpb)
399 fh =
f_h(fcpbw, fcpinf, fntait, fbtait)
400 c_gas =
f_cgas(fcpinf, fntait, fbtait, fh)
401 fcpinf_dot =
f_cpinfdot(frho, fp, alf, fntait, fbtait, f_bub_adv_src, f_divu)
402 fhdot =
f_hdot(fcpbw, fcpinf, fcpinf_dot, fntait, fbtait, fr, fv, fr0, fpbdot)
408 if (bubbles_euler)
then
409 c_liquid = sqrt(fntait*(fp + fbtait)/(frho*(1._wp - alf)))
429# 65 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
431# 65 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
433# 65 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
435# 65 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
437# 65 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
439# 65 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
441# 65 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
443# 66 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
444 real(wp),
intent(in) :: fr0, fr, fv, fpb
448 f_cpbw = (ca + 2._wp/web/fr0)*((fr0/fr)**(3._wp*
gam)) - ca - 4._wp*re_inv*fv/fr - 2._wp/(fr*web)
450 f_cpbw = fpb - 1._wp - 4._wp*re_inv*fv/fr - 2._wp/(fr*web)
456 function f_h(fCpbw, fCpinf, fntait, fBtait)
459# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
461# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
463# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
465# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
467# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
469# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
471# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
473# 81 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
474 real(wp),
intent(in) :: fcpbw, fcpinf, fntait, fbtait
475 real(wp) :: tmp1, tmp2, tmp3
478 tmp1 = (fntait - 1._wp)/fntait
479 tmp2 = (fcpbw/(1._wp + fbtait) + 1._wp)**tmp1
480 tmp3 = (fcpinf/(1._wp + fbtait) + 1._wp)**tmp1
482 f_h = (tmp2 - tmp3)*fntait*(1._wp + fbtait)/(fntait - 1._wp)
487 function f_cgas(fCpinf, fntait, fBtait, fH)
490# 96 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
492# 96 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
494# 96 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
496# 96 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
498# 96 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
500# 96 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
502# 96 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
504# 97 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
505 real(wp),
intent(in) :: fcpinf, fntait, fbtait, fh
510 tmp = (fcpinf/(1._wp + fbtait) + 1._wp)**((fntait - 1._wp)/fntait)
511 tmp = fntait*(1._wp + fbtait)*tmp
513 f_cgas = sqrt(tmp + (fntait - 1._wp)*fh)
518 function f_cpinfdot(fRho, fP, falf, fntait, fBtait, advsrc, divu)
521# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
523# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
525# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
527# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
529# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
531# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
533# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
535# 113 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
536 real(wp),
intent(in) :: frho, fp, falf, fntait, fbtait, advsrc, divu
537 real(wp) :: c2_liquid
542 c2_liquid = fntait*(fp + fbtait)/frho
544 c2_liquid = fntait*(fp + fbtait)/(frho*(1._wp - falf))
553 function f_hdot(fCpbw, fCpinf, fCpinf_dot, fntait, fBtait, fR, fV, fR0, fpbdot)
556# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
558# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
560# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
562# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
564# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
566# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
568# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
570# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
571 real(wp),
intent(in) :: fcpbw, fcpinf, fcpinf_dot, fntait, fbtait
572 real(wp),
intent(in) :: fr, fv, fr0, fpbdot
573 real(wp) :: tmp1, tmp2
577 tmp1 = (fr0/fr)**(3._wp*
gam)
578 tmp1 = -3._wp*
gam*(ca + 2._wp/web/fr0)*tmp1*fv/fr
582 tmp2 = (2._wp/web + 4._wp*re_inv*fv)*fv/(fr**2._wp)
584 f_hdot = (fcpbw/(1._wp + fbtait) + 1._wp)**(-1._wp/fntait)*(tmp1 + tmp2) - (fcpinf/(1._wp + fbtait) + 1._wp) &
585 & **(-1._wp/fntait)*fcpinf_dot
593# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
595# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
597# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
599# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
601# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
603# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
605# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
607# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
608 real(wp),
intent(in) :: fcp, frho, fr, fv, fcpbw
611 f_rddot_rp = (-1.5_wp*(fv**2._wp) + (fcpbw - fcp)/frho)/fr
616 function f_rddot_g(fCpbw, fR, fV, fH, fHdot, fcgas, fntait, fBtait)
619# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
621# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
623# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
625# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
627# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
629# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
631# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
633# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
634 real(wp),
intent(in) :: fcpbw, fr, fv, fh, fhdot
635 real(wp),
intent(in) :: fcgas, fntait, fbtait
636 real(wp) :: tmp1, tmp2, tmp3
640 tmp2 = 1._wp + 4._wp*re_inv/fcgas/fr*(fcpbw/(1._wp + fbtait) + 1._wp)**(-1._wp/fntait)
641 tmp3 = 1.5_wp*fv**2._wp*(tmp1/3._wp - 1._wp) + fh*(1._wp + tmp1) + fr*fhdot*(1._wp - tmp1)/fcgas
643 f_rddot_g = tmp3/(fr*(1._wp - tmp1)*tmp2)
651# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
653# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
655# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
657# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
659# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
661# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
663# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
665# 183 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
666 real(wp),
intent(in) :: fr0, fr, fv, fpb
682 function f_rddot_km(fpbdot, fCp, fCpbw, fRho, fR, fV, fR0, fC)
685# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
687# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
689# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
691# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
693# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
695# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
697# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
699# 202 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
700 real(wp),
intent(in) :: fpbdot, fcp, fcpbw
701 real(wp),
intent(in) :: frho, fr, fv, fr0, fc
702 real(wp) :: tmp1, tmp2, cdot_star
705 cdot_star = -3._wp*
gam*ca*((fr0/fr)**(3._wp*
gam))*fv/fr
706 if (.not.
f_is_default(web)) cdot_star = cdot_star - 3._wp*
gam*(2._wp/(web*fr0))*((fr0/fr)**(3._wp*
gam))*fv/fr
711 if (.not.
f_is_default(web)) cdot_star = cdot_star + (2._wp/web)*fv/(fr**2._wp)
712 if (.not.
f_is_default(re_inv)) cdot_star = cdot_star + 4._wp*re_inv*((fv/fr)**2._wp)
715 tmp2 = 1.5_wp*(fv**2._wp)*(tmp1/3._wp - 1._wp) + (1._wp + tmp1)*(fcpbw - fcp)/frho + cdot_star*fr/(frho*fc)
720 f_rddot_km = tmp2/(fr*(1._wp - tmp1) + 4._wp*re_inv/(frho*fc))
729# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
731# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
733# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
735# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
737# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
739# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
741# 230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
743# 231 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
744 real(wp),
intent(in) :: pb_in
745 integer,
intent(in) :: iR0
746 real(wp),
intent(out) :: chi_vw_out
747 real(wp),
intent(out) :: k_mw_out
748 real(wp),
intent(out) :: rho_mw_out
752 chi_vw_out = 1._wp/(1._wp +
r_v/
r_g*(pb_in/
pv - 1._wp))
755 k_mw_out = x_vw*
k_v(ir0)/(x_vw + (1._wp - x_vw)*
phi_vg) + (1._wp - x_vw)*
k_g(ir0)/(x_vw*
phi_gv + 1._wp - x_vw)
757 rho_mw_out =
pv/(chi_vw_out*
r_v*
tw)
762 subroutine s_vflux(fR, fV, fpb, fmass_v, iR0, vflux, fmass_g, fbeta_c, fR_m, fgamma_m, fchi_vw, frho_mw)
765# 251 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
767# 251 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
769# 251 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
771# 251 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
773# 251 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
775# 251 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
777# 251 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
779# 252 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
780 real(wp),
intent(in) :: fR
781 real(wp),
intent(in) :: fV
782 real(wp),
intent(in) :: fpb
783 real(wp),
intent(in) :: fmass_v
784 integer,
intent(in) :: iR0
785 real(wp),
intent(out) :: vflux
786 real(wp),
intent(in),
optional :: fmass_g, fbeta_c
787 real(wp),
intent(out),
optional :: fR_m, fgamma_m
788 real(wp),
intent(in),
optional :: fchi_vw, frho_mw
790 real(wp) :: rho_mw_lag
794 if (thermal == 3)
then
796 if (bubbles_lagrange)
then
798 conc_v = fmass_v/(fmass_v + fmass_g)
799 if (lag_params%massTransfer_model)
then
800 conc_v = 1._wp/(1._wp + (
r_v/
r_g)*(fpb/
pv - 1._wp))
802 fr_m = (fmass_g*
r_g + fmass_v*
r_v)
803 fgamma_m = conc_v*
gam_v + (1._wp - conc_v)*
gam_g
806 chi_bar = fmass_v/(fmass_v + fmass_g)
807 grad_chi = (chi_bar - conc_v)
808 rho_mw_lag = (fmass_g + fmass_v)/(4._wp/3._wp*
pi*fr**3._wp)
810 if (lag_params%massTransfer_model)
then
811 vflux = -fbeta_c*rho_mw_lag*grad_chi/(1._wp - conc_v)/fr
814 chi_bar = fmass_v/(fmass_v +
mass_g0(ir0))
815 grad_chi = -
re_trans_c(ir0)*(chi_bar - fchi_vw)
816 vflux = frho_mw*grad_chi/
pe_c/(1._wp - fchi_vw)/fr
826 function f_bpres_dot(fvflux, fR, fV, fpb, fmass_v, iR0, fbeta_t, fR_m, fgamma_m, fk_mw)
829# 300 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
831# 300 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
833# 300 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
835# 300 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
837# 300 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
839# 300 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
841# 300 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
843# 301 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
844 real(wp),
intent(in) :: fvflux
845 real(wp),
intent(in) :: fr
846 real(wp),
intent(in) :: fv
847 real(wp),
intent(in) :: fpb
848 real(wp),
intent(in) :: fmass_v
849 integer,
intent(in) :: ir0
850 real(wp),
intent(in),
optional :: fbeta_t, fr_m, fgamma_m
851 real(wp),
intent(in),
optional :: fk_mw
857 if (thermal == 3)
then
858 if (bubbles_lagrange)
then
859 t_bar = fpb*(4._wp/3._wp*
pi*fr**3._wp)/fr_m
860 grad_t = -fbeta_t*(t_bar -
tw)
861 heatflux = (fgamma_m - 1._wp)/fgamma_m*grad_t/fr
876 function f_advance_step(fRho, fP, fR, fV, fR0, fpb, fpbdot, alf, fntait, fBtait, f_bub_adv_src, f_divu, bub_id, fmass_v, &
877 & fmass_g, fbeta_c, fbeta_t, fCson, fRe, fPos, fVel, cell, q_prim_vf)
result(adap_dt_stop)
879# 335 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
881# 335 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
883# 335 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
885# 335 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
887# 335 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
889# 335 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
891# 335 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
893# 336 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
895 real(wp),
intent(inout) :: fr, fv, fpb, fmass_v
896 real(wp),
intent(in) :: frho, fp, fr0, fpbdot, alf
897 real(wp),
intent(in) :: fntait, fbtait, f_bub_adv_src, f_divu
898 integer,
intent(in) :: bub_id
899 real(wp),
intent(in) :: fmass_g, fbeta_c, fbeta_t, fcson
900 real(wp),
intent(inout),
dimension(3),
optional :: fpos, fvel
901 real(wp),
intent(in),
optional :: fre
902 integer,
intent(in),
dimension(3),
optional :: cell
903 type(
scalar_field),
intent(in),
dimension(sys_size),
optional :: q_prim_vf
904 real(wp),
dimension(5) :: err
908 real(wp),
dimension(4) :: myr_tmp1, myv_tmp1, myr_tmp2, myv_tmp2
909 real(wp),
dimension(4) :: mypb_tmp1, mymv_tmp1, mypb_tmp2, mymv_tmp2
910 real(wp) :: fr2, fv2, fpb2, fmass_v2, f_btemp
911 real(wp),
dimension(3) :: vtemp, atemp
912 integer :: adap_dt_stop
913 integer ::
l, iter_count
915 call s_initial_substep_h(frho, fp, fr, fv, fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, fcson, h0)
923 if (t_new + h > 0.5_wp*dt)
then
924 h = 0.5_wp*dt - t_new
928 do while (iter_count < adap_dt_max_iters)
929 iter_count = iter_count + 1
932 call s_advance_substep(err(1), frho, fp, fr, fv, fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, &
933 & bub_id, fmass_v, fmass_g, fbeta_c, fbeta_t, fcson, h, myr_tmp1, myv_tmp1, mypb_tmp1, &
935 if (err(1) > adap_dt_tol)
then
941 call s_advance_substep(err(2), frho, fp, fr, fv, fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, &
942 & bub_id, fmass_v, fmass_g, fbeta_c, fbeta_t, fcson, 0.5_wp*h, myr_tmp2, myv_tmp2, &
943 & mypb_tmp2, mymv_tmp2)
944 if (err(2) > adap_dt_tol)
then
949 fr2 = myr_tmp2(4); fv2 = myv_tmp2(4)
950 fpb2 = mypb_tmp2(4); fmass_v2 = mymv_tmp2(4)
952 call s_advance_substep(err(3), frho, fp, fr2, fv2, fr0, fpb2, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, &
953 & bub_id, fmass_v2, fmass_g, fbeta_c, fbeta_t, fcson, 0.5_wp*h, myr_tmp2, myv_tmp2, &
954 & mypb_tmp2, mymv_tmp2)
955 if (err(3) > adap_dt_tol)
then
960 err(4) = abs((myr_tmp1(4) - myr_tmp2(4))/myr_tmp1(4))
961 err(5) = abs((myv_tmp1(4) - myv_tmp2(4))/myv_tmp1(4))
962 if (abs(myv_tmp1(4)) <
verysmall) err(5) = 0._wp
966 if ((err(1) <= adap_dt_tol) .and. (err(2) <= adap_dt_tol) .and. (err(3) <= adap_dt_tol) .and. (err(4) &
967 & <= adap_dt_tol) .and. (err(5) <= adap_dt_tol) .and. myr_tmp1(4) > 0._wp)
then
975 if (bubbles_lagrange)
then
978 fmass_v = mymv_tmp1(4)
983 if (fd_order > 1)
then
986 vtemp(
l) = q_prim_vf(eqn_idx%mom%beg +
l - 1)%sf(cell(1), cell(2), cell(3))
991 fpos(
l) = fpos(
l) + h*vtemp(
l)
995 f_btemp =
f_get_bubble_force(fpos(
l), fr, fv, fvel(
l), fmass_g, fmass_v, fre, frho, cell,
l, &
997 atemp(
l) = f_btemp/(fmass_g + fmass_v)
1000 fvel(
l) = fvel(
l) + h*atemp(
l)
1001 fpos(
l) = fpos(
l) + h*fvel(
l)
1007 h = h*min(2._wp, max(0.5_wp, (adap_dt_tol/err(1))**(1._wp/3._wp)))
1012 if (err(2) <= adap_dt_tol)
then
1021 if (
f_approx_equal(t_new, 0.5_wp*dt) .or. iter_count >= adap_dt_max_iters)
exit
1024 if (iter_count >= adap_dt_max_iters) adap_dt_stop = 1
1030 subroutine s_initial_substep_h(fRho, fP, fR, fV, fR0, fpb, fpbdot, alf, fntait, fBtait, f_bub_adv_src, f_divu, fCson, h)
1033# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1035# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1037# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1039# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1041# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1043# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1045# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1047# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1049# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1051# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1053# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1055# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1057# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1059# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1061# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1063# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1065# 474 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1067# 475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1069 real(wp),
intent(in) :: fRho, fP, fR, fV, fR0, fpb, fpbdot, alf
1070 real(wp),
intent(in) :: fntait, fBtait, f_bub_adv_src, f_divu
1071 real(wp),
intent(in) :: fCson
1072 real(wp),
intent(out) :: h
1073 real(wp),
dimension(2) :: h_size
1074 real(wp),
dimension(3) :: d_norms
1075 real(wp),
dimension(2) :: myR_tmp, myV_tmp, myA_tmp
1079 mya_tmp(1) =
f_rddot(frho, fp, myr_tmp(1), myv_tmp(1), fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, fcson)
1082 d_norms(1) = sqrt((myr_tmp(1)**2._wp + myv_tmp(1)**2._wp)/2._wp)
1083 d_norms(2) = sqrt((myv_tmp(1)**2._wp + mya_tmp(1)**2._wp)/2._wp)
1091 myr_tmp(2) = myr_tmp(1) + h_size(1)*myv_tmp(1)
1092 myv_tmp(2) = myv_tmp(1) + h_size(1)*mya_tmp(1)
1093 mya_tmp(2) =
f_rddot(frho, fp, myr_tmp(2), myv_tmp(2), fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, fcson)
1096 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)
1102 h_size(2) = (
scale_guess/max(d_norms(2), d_norms(3)))**(1._wp/3._wp)
1110 subroutine s_advance_substep(err, fRho, fP, fR, fV, fR0, fpb, fpbdot, alf, fntait, fBtait, f_bub_adv_src, f_divu, bub_id, &
1111 & fmass_v, fmass_g, fbeta_c, fbeta_t, fCson, h, myR_tmp, myV_tmp, myPb_tmp, myMv_tmp)
1113# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1115# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1117# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1119# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1121# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1123# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1125# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1127# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1129# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1131# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1133# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1135# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1137# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1139# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1141# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1143# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1145# 519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1147# 520 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1149 real(wp),
intent(out) :: err
1150 real(wp),
intent(in) :: fRho, fP, fR, fV, fR0, fpb, fpbdot, alf
1151 real(wp),
intent(in) :: fntait, fBtait, f_bub_adv_src, f_divu, h
1152 integer,
intent(in) :: bub_id
1153 real(wp),
intent(in) :: fmass_v, fmass_g, fbeta_c, fbeta_t, fCson
1154 real(wp),
dimension(4),
intent(out) :: myR_tmp, myV_tmp, myPb_tmp, myMv_tmp
1155 real(wp),
dimension(4) :: myA_tmp, mydPbdt_tmp, mydMvdt_tmp
1156 real(wp) :: err_R, err_V
1159 mydpbdt_tmp(1:4) = fpbdot
1164 if (bubbles_lagrange)
then
1166 mymv_tmp(1) = fmass_v
1167 call s_advance_el(myr_tmp(1), myv_tmp(1), mypb_tmp(1), mymv_tmp(1), bub_id, fmass_g, fbeta_c, fbeta_t, &
1168 & mydpbdt_tmp(1), mydmvdt_tmp(1))
1170 mya_tmp(1) =
f_rddot(frho, fp, myr_tmp(1), myv_tmp(1), fr0, mypb_tmp(1), mydpbdt_tmp(1), alf, fntait, fbtait, &
1171 & f_bub_adv_src, f_divu, fcson)
1174 myr_tmp(2) = myr_tmp(1) + h*myv_tmp(1)
1175 if (myr_tmp(2) < 0._wp)
then
1176 err = adap_dt_tol + 1._wp;
return
1178 myv_tmp(2) = myv_tmp(1) + h*mya_tmp(1)
1179 if (bubbles_lagrange)
then
1180 mypb_tmp(2) = mypb_tmp(1) + h*mydpbdt_tmp(1)
1181 mymv_tmp(2) = mymv_tmp(1) + h*mydmvdt_tmp(1)
1182 call s_advance_el(myr_tmp(2), myv_tmp(2), mypb_tmp(2), mymv_tmp(2), bub_id, fmass_g, fbeta_c, fbeta_t, &
1183 & mydpbdt_tmp(2), mydmvdt_tmp(2))
1185 mya_tmp(2) =
f_rddot(frho, fp, myr_tmp(2), myv_tmp(2), fr0, mypb_tmp(2), mydpbdt_tmp(2), alf, fntait, fbtait, &
1186 & f_bub_adv_src, f_divu, fcson)
1189 myr_tmp(3) = myr_tmp(1) + (h/4._wp)*(myv_tmp(1) + myv_tmp(2))
1190 if (myr_tmp(3) < 0._wp)
then
1191 err = adap_dt_tol + 1._wp;
return
1193 myv_tmp(3) = myv_tmp(1) + (h/4._wp)*(mya_tmp(1) + mya_tmp(2))
1194 if (bubbles_lagrange)
then
1195 mypb_tmp(3) = mypb_tmp(1) + (h/4._wp)*(mydpbdt_tmp(1) + mydpbdt_tmp(2))
1196 mymv_tmp(3) = mymv_tmp(1) + (h/4._wp)*(mydmvdt_tmp(1) + mydmvdt_tmp(2))
1197 call s_advance_el(myr_tmp(3), myv_tmp(3), mypb_tmp(3), mymv_tmp(3), bub_id, fmass_g, fbeta_c, fbeta_t, &
1198 & mydpbdt_tmp(3), mydmvdt_tmp(3))
1200 mya_tmp(3) =
f_rddot(frho, fp, myr_tmp(3), myv_tmp(3), fr0, mypb_tmp(3), mydpbdt_tmp(3), alf, fntait, fbtait, &
1201 & f_bub_adv_src, f_divu, fcson)
1204 myr_tmp(4) = myr_tmp(1) + (h/6._wp)*(myv_tmp(1) + myv_tmp(2) + 4._wp*myv_tmp(3))
1205 if (myr_tmp(4) < 0._wp)
then
1206 err = adap_dt_tol + 1._wp;
return
1208 myv_tmp(4) = myv_tmp(1) + (h/6._wp)*(mya_tmp(1) + mya_tmp(2) + 4._wp*mya_tmp(3))
1209 if (bubbles_lagrange)
then
1210 mypb_tmp(4) = mypb_tmp(1) + (h/6._wp)*(mydpbdt_tmp(1) + mydpbdt_tmp(2) + 4._wp*mydpbdt_tmp(3))
1211 mymv_tmp(4) = mymv_tmp(1) + (h/6._wp)*(mydmvdt_tmp(1) + mydmvdt_tmp(2) + 4._wp*mydmvdt_tmp(3))
1212 call s_advance_el(myr_tmp(4), myv_tmp(4), mypb_tmp(4), mymv_tmp(4), bub_id, fmass_g, fbeta_c, fbeta_t, &
1213 & mydpbdt_tmp(4), mydmvdt_tmp(4))
1215 mya_tmp(4) =
f_rddot(frho, fp, myr_tmp(4), myv_tmp(4), fr0, mypb_tmp(4), mydpbdt_tmp(4), alf, fntait, fbtait, &
1216 & f_bub_adv_src, f_divu, fcson)
1219 err_r = (-5._wp*h/24._wp)*(myv_tmp(2) + myv_tmp(3) - 2._wp*myv_tmp(4))/max(abs(myr_tmp(1)), abs(myr_tmp(4)))
1220 err_v = (-5._wp*h/24._wp)*(mya_tmp(2) + mya_tmp(3) - 2._wp*mya_tmp(4))/max(abs(myv_tmp(1)), abs(myv_tmp(4)))
1222 if (max(abs(myv_tmp(1)), abs(myv_tmp(4))) < 1.e-12_wp)
then
1229 err = sqrt((err_r**2._wp + err_v**2._wp)/2._wp)
1234 subroutine s_advance_el(fR_tmp, fV_tmp, fPb_tmp, fMv_tmp, bub_id, fmass_g, fbeta_c, fbeta_t, fdPbdt_tmp, advance_EL)
1237# 608 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1239# 608 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1241# 608 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1243# 608 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1245# 608 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1247# 608 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1249# 608 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1251# 609 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles.fpp"
1252 real(wp),
intent(in) :: fR_tmp, fV_tmp, fPb_tmp, fMv_tmp
1253 real(wp),
intent(in) :: fmass_g, fbeta_c, fbeta_t
1254 integer,
intent(in) :: bub_id
1255 real(wp),
intent(inout) :: fdPbdt_tmp
1256 real(wp),
intent(out) :: advance_EL
1257 real(wp) :: fVapFlux, myR_m, mygamma_m
1259 call s_vflux(fr_tmp, fv_tmp, fpb_tmp, fmv_tmp, bub_id, fvapflux, fmass_g, fbeta_c, myr_m, mygamma_m)
1260 fdpbdt_tmp =
f_bpres_dot(fvapflux, fr_tmp, fv_tmp, fpb_tmp, fmv_tmp, bub_id, fbeta_t, myr_m, mygamma_m)
1261 advance_el = 4._wp*
pi*fr_tmp**2._wp*fvapflux
Kernel functions (Gaussian, delta) that smear Lagrangian bubble effects onto the Eulerian grid.
real(wp) function f_get_bubble_force(pos, rad, rdot, vel, mg, mv, re, rho, cell, i, q_prim_vf)
real(wp) function f_interpolate_velocity(pos, cell, i, q_prim_vf)
Bubble-dynamics procedures for ensemble- and volume-averaged model.
real(wp) function f_rddot_rp(fcp, frho, fr, fv, fcpbw)
Rayleigh-Plesset bubble radial acceleration.
subroutine s_bwproperty(pb_in, ir0, chi_vw_out, k_mw_out, rho_mw_out)
Compute bubble wall properties for vapor bubbles.
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,...
real(wp) function f_hdot(fcpbw, fcpinf, fcpinf_dot, fntait, fbtait, fr, fv, fr0, fpbdot)
Enthalpy derivative for Gilmore bubble model, Gilmore (1952).
integer function f_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, fre, fpos, fvel, cell, q_prim_vf)
Adaptive time stepping routine for subgrid bubbles (See Heirer, E. Hairer S.P.Norsett G....
real(wp) function f_cpbw_km(fr0, fr, fv, fpb)
Keller-Miksis bubble wall pressure.
real(wp) function f_rddot_g(fcpbw, fr, fv, fh, fhdot, fcgas, fntait, fbtait)
Compute the Gilmore bubble radial acceleration.
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.
real(wp) function f_rddot(frho, fp, fr, fv, fr0, fpb, fpbdot, alf, fntait, fbtait, f_bub_adv_src, f_divu, fcson)
Compute the bubble radial acceleration based on the selected bubble model.
real(wp) function f_cgas(fcpinf, fntait, fbtait, fh)
Compute the sound speed for the bubble.
subroutine s_vflux(fr, fv, fpb, fmass_v, ir0, vflux, fmass_g, fbeta_c, fr_m, fgamma_m, fchi_vw, frho_mw)
Compute the vapour flux.
real(wp) function f_cpbw(fr0, fr, fv, fpb)
Bubble wall pressure: stiffened gas with Laplace pressure and viscous stress.
real(wp) function f_bpres_dot(fvflux, fr, fv, fpb, fmass_v, ir0, fbeta_t, fr_m, fgamma_m, fk_mw)
Compute the time derivative of the internal bubble pressure.
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) function f_rddot_km(fpbdot, fcp, fcpbw, frho, fr, fv, fr0, fc)
Keller-Miksis bubble radial acceleration.
real(wp) function f_h(fcpbw, fcpinf, fntait, fbtait)
Compute the bubble enthalpy.
real(wp) function f_cpinfdot(frho, fp, falf, fntait, fbtait, advsrc, divu)
Compute the time derivative of the driving pressure.
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter bubble_model_gilmore
real(wp), parameter scale_first_guess
Scale factor for initial step size.
real(wp), parameter threshold_second_guess
Threshold for refined step size estimate.
real(wp), parameter pi
Pi.
real(wp), parameter small_guess
Minimum initial step size.
integer, parameter bubble_model_rayleigh_plesset
real(wp), parameter threshold_first_guess
Threshold for initial step size estimate.
integer, parameter bubble_model_keller_miksis
real(wp), parameter verysmall
Very small number.
real(wp), parameter scale_guess
Scale factor for step size adjustment.
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), dimension(:), allocatable pb0
real(wp), dimension(:), allocatable re_trans_t
real(wp), dimension(:), allocatable k_v
real(wp), dimension(:), allocatable r0
Bubble sizes.
real(wp), dimension(:), allocatable k_g
real(wp), dimension(:), allocatable mass_g0
real(wp), dimension(:), allocatable re_trans_c
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)
Check if two floating point numbers of wp are within tolerance.
logical elemental function, public f_is_default(var)
Check if a real(wp) variable is of default value.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
Derived type annexing a scalar field (SF).