1# 1 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
12# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
15# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp" 2
17# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
18# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
19# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
20# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
34# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
36# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 167 "/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# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
61# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
69# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
71# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
73# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
75# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
77# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
150# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
152# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
154# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
155# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
156# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
157# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
173# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
175# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
177# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
179# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
181# 167 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
183# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
185# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
187# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
189# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
191# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
193# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
195# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
197# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
199# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
201# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
203# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
205# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
207# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
233# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
235# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
237# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
239# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
241# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
244# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
280# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
283# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
286# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
298# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
300# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
303# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
305# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
310# 55 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
313# 75 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316# 83 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
319# 107 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
322# 123 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
325# 148 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
327# 154 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
329# 161 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
331# 7 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp" 2
352 real(wp),
parameter ::
pcr = 4.94e7_wp
353 real(wp),
parameter ::
tcr = 385.05_wp + 273.15_wp
355 real(wp),
parameter ::
mixm = 1.0e-8_wp
356 integer,
parameter ::
lp = 1
357 integer,
parameter ::
vp = 2
368 if (.not. (.false.))
then
369# 43 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
370 call s_mpi_abort(
"m_phase_change.fpp:43: " //
"Assertion failed: .false.. " &
371# 43 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
372 & //
"s_relaxation_solver called but it currently does nothing")
373# 43 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
389 real(wp) :: rhoe, dyne, rhos
390 real(wp) :: rho,
rm, m1, m2,
mct
394# 66 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
395 real(wp),
dimension(num_fluids) :: p_infpt, sk, hk, gk, ek, rhok
396# 68 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
400 integer :: i,
j,
k,
l
412# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
414# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
415#if defined(MFC_OpenACC)
416# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
418# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
419#elif defined(MFC_OpenMP)
420# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
422# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
424# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
426# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
428# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
430# 82 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
432# 84 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
436 rho = 0.0_wp; tvf = 0.0_wp
438# 88 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
439#if defined(MFC_OpenACC)
440# 88 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
442# 88 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
443#elif defined(MFC_OpenMP)
444# 88 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
446# 88 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
450 rho = rho +
q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(
j,
k,
l)
453 tvf = tvf +
q_cons_vf(i + eqn_idx%adv%beg - 1)%sf(
j,
k,
l)
472# 112 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
473#if defined(MFC_OpenACC)
474# 112 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
476# 112 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
477#elif defined(MFC_OpenMP)
478# 112 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
480# 112 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
482 do i = eqn_idx%mom%beg, eqn_idx%mom%end
496 if ((relax_model == 6) .and. ((
q_cons_vf(
lp + eqn_idx%cont%beg - 1)%sf(
j,
k, &
514# 144 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
515#if defined(MFC_OpenACC)
516# 144 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
518# 144 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
519#elif defined(MFC_OpenMP)
520# 144 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
522# 144 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
526 sk(i) = cvs(i)*log((ts**gs_min(i))/((ps + ps_inf(i))**(gs_min(i) - 1.0_wp))) + qvps(i)
529 hk(i) = gs_min(i)*cvs(i)*ts + qvs(i)
532 gk(i) = hk(i) - ts*sk(i)
535 rhok(i) = (ps + ps_inf(i))/((gs_min(i) - 1)*cvs(i)*ts)
538 ek(i) = (ps + gs_min(i)*ps_inf(i))/(ps + ps_inf(i))*cvs(i)*ts + qvs(i)
544# 164 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
545#if defined(MFC_OpenACC)
546# 164 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
548# 164 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
549#elif defined(MFC_OpenMP)
550# 164 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
552# 164 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
565 rhos = rhos +
q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(
j,
k,
l)*sk(i)
571# 181 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
572#if defined(MFC_OpenACC)
573# 181 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
575# 181 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
576#elif defined(MFC_OpenMP)
577# 181 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
579# 181 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
581# 181 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
591# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
593# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
595# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
597# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
599# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
601# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
603# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
605# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
607# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
609# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
611# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
613# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
615# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
617# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
619# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
621# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
623# 189 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
627 integer,
intent(in) :: j, k, l, MFL
628 real(wp),
intent(out) :: pS
629 real(wp),
dimension(1:),
intent(out) :: p_infpT
630 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_cons_vf
631 real(wp),
intent(in) :: rhoe
632 real(wp),
intent(out) :: TS
633 real(wp) :: gp, gpp, hp, pO, mCP, mQ
634 real(wp) :: p_infpT_sum
637 mcp = 0.0_wp; mq = 0.0_wp; p_infpt_sum = 0._wp
639# 203 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
640#if defined(MFC_OpenACC)
641# 203 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
643# 203 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
644#elif defined(MFC_OpenMP)
645# 203 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
647# 203 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
650 p_infpt(i) = ps_inf(i)
651 p_infpt_sum = p_infpt_sum + abs(p_infpt(i))
655# 209 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
656#if defined(MFC_OpenACC)
657# 209 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
659# 209 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
660#elif defined(MFC_OpenMP)
661# 209 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
663# 209 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
667 mcp = mcp + q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, l)*cvs(i)*gs_min(i)
670 mq = mq + q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, l)*qvs(i)
673# 226 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
676 if ((rhoe - mq - minval(p_infpt)) < 0.0_wp)
then
677 if ((mfl == 0) .or. (mfl == 1))
then
700 do while ((abs(ps - po) > palpha_eps) .and. (abs(ps - po) > (palpha_eps/1.e4_wp)*abs(po)) .or. (ns == 0))
710 gpp = 0.0_wp; gp = 0.0_wp; hp = 0.0_wp
712# 263 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
713#if defined(MFC_OpenACC)
714# 263 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
716# 263 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
717#elif defined(MFC_OpenMP)
718# 263 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
720# 263 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
723 gp = gp + (gs_min(i) - 1.0_wp)*q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, &
724 & l)*cvs(i)*(rhoe + ps - mq)/(mcp*(ps + p_infpt(i)))
726 gpp = gpp + (gs_min(i) - 1.0_wp)*q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, &
727 & l)*cvs(i)*(p_infpt(i) - rhoe + mq)/(mcp*(ps + p_infpt(i))**2)
730 hp = 1.0_wp/(rhoe + ps - mq) + 1.0_wp/(ps + minval(p_infpt))
733 ps = po + ((1.0_wp - gp)/gpp)/(1.0_wp - (1.0_wp - gp + abs(1.0_wp - gp))/(2.0_wp*gpp)*hp)
737 ts = (rhoe + ps - mq)/mcp
744 subroutine s_compute_ptg_residual(ml, mT, pS, j, k, l, q_cons_vf, rhoe, R2D, TS, mCP, mQ, mCVGP, mCVGP2, mCPD)
747# 288 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
749# 288 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
751# 288 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
753# 288 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
755# 288 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
757# 288 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
759# 288 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
762 real(wp),
intent(in) :: ml, mT, pS, rhoe
763 integer,
intent(in) :: j, k, l
764 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_cons_vf
765 real(wp),
dimension(2),
intent(out) :: R2D
766 real(wp),
intent(out) :: TS, mCP, mQ, mCVGP, mCVGP2, mCPD
771 mcp = ml*cvs(
lp)*gs_min(
lp) + (mt - ml)*cvs(
vp)*gs_min(
vp)
772 mq = ml*qvs(
lp) + (mt - ml)*qvs(
vp)
773 mcvgp = 0.0_wp; mcvgp2 = 0.0_wp; mcpd = 0.0_wp; mqd = 0.0_wp
775# 302 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
776#if defined(MFC_OpenACC)
777# 302 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
779# 302 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
780#elif defined(MFC_OpenMP)
781# 302 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
783# 302 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
786 if ((i /=
lp) .and. (i /=
vp))
then
787 mcp = mcp + q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, l)*cvs(i)*gs_min(i)
788 mq = mq + q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, l)*qvs(i)
789 mcvgp = mcvgp + q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, l)*cvs(i)*(gs_min(i) - 1)/(ps + ps_inf(i))
790 mcvgp2 = mcvgp2 + q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, l)*cvs(i)*(gs_min(i) - 1)/((ps + ps_inf(i))**2)
791 mqd = mqd + q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, l)*qvs(i)
792 mcpd = mcpd + q_cons_vf(i + eqn_idx%cont%beg - 1)%sf(j, k, l)*cvs(i)*gs_min(i)
796 ts = 1.0_wp/(mt*cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp)) + ml*(cvs(
lp)*(gs_min(
lp) - 1)/(ps + ps_inf(
lp)) - cvs(
vp) &
797 & *(gs_min(
vp) - 1)/(ps + ps_inf(
vp))) + mcvgp)
800 r2d(1) = ts*((cvs(
lp)*gs_min(
lp) - cvs(
vp)*gs_min(
vp))*(1 - log(ts)) - (qvps(
lp) - qvps(
vp)) + cvs(
lp)*(gs_min(
lp) - 1) &
801 & *log(ps + ps_inf(
lp)) - cvs(
vp)*(gs_min(
vp) - 1)*log(ps + ps_inf(
vp))) + qvs(
lp) - qvs(
vp)
804 r2d(2) = rhoe + ps + ml*(qvs(
vp) - qvs(
lp)) - mt*qvs(
vp) - mqd + (ml*(gs_min(
vp)*cvs(
vp) - gs_min(
lp)*cvs(
lp)) &
805 & - mt*gs_min(
vp)*cvs(
vp) - mcpd)/(ml*(cvs(
lp)*(gs_min(
lp) - 1)/(ps + ps_inf(
lp)) - cvs(
vp)*(gs_min(
vp) - 1)/(ps &
806 & + ps_inf(
vp))) + mt*cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp)) + mcvgp)
818# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
820# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
822# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
824# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
826# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
828# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
830# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
832# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
834# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
836# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
838# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
840# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
842# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
844# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
846# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
848# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
850# 335 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
853 integer,
intent(in) :: j, k, l
854 real(wp),
intent(inout) :: pS
855 real(wp),
intent(in) :: rhoe
856 type(
scalar_field),
dimension(sys_size),
intent(inout) :: q_cons_vf
857 real(wp),
intent(inout) :: TS
858 real(wp),
dimension(2, 2) :: Jac, InvJac
859 real(wp),
dimension(2) :: R2D, R2D_try, DeltamP
860 real(wp) :: mCP, mCPD, mCVGP, mCVGP2, mQ
861 real(wp) :: ml, ml_try, mT, pS_try, pmin, lambda, resnorm, resnorm_try
862 real(wp) :: dFdT, dTdm, dTdp, detJ
866 mt = q_cons_vf(
lp + eqn_idx%cont%beg - 1)%sf(j, k, l) + q_cons_vf(
vp + eqn_idx%cont%beg - 1)%sf(j, k, l)
867 ml = q_cons_vf(
lp + eqn_idx%cont%beg - 1)%sf(j, k, l)
870 if (((ps < 0.0_wp) .and. ((q_cons_vf(
lp + eqn_idx%cont%beg - 1)%sf(j, k, l) + q_cons_vf(
vp + eqn_idx%cont%beg - 1)%sf(j, &
872 & l)) > ((rhoe - gs_min(
lp)*ps_inf(
lp)/(gs_min(
lp) - 1))/qvs(
lp)))) .or. ((ps >= 0.0_wp) .and. (ps < 1.0e-1_wp)))
then
877 pmin = -min(ps_inf(
lp), ps_inf(
vp)) + 1.0_wp
879 call s_compute_ptg_residual(ml, mt, ps, j, k, l, q_cons_vf, rhoe, r2d, ts, mcp, mq, mcvgp, mcvgp2, mcpd)
880 resnorm = sqrt(r2d(1)**2 + r2d(2)**2)
884 if ((resnorm <= ptgalpha_eps) .or. (resnorm <= (ptgalpha_eps/1.e6_wp)*rhoe))
exit
887 dfdt = -(cvs(
lp)*gs_min(
lp) - cvs(
vp)*gs_min(
vp))*log(ts) - (qvps(
lp) - qvps(
vp)) + cvs(
lp)*(gs_min(
lp) - 1)*log(ps &
888 & + ps_inf(
lp)) - cvs(
vp)*(gs_min(
vp) - 1)*log(ps + ps_inf(
vp))
889 dtdm = -(cvs(
lp)*(gs_min(
lp) - 1)/(ps + ps_inf(
lp)) - cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp)))*ts**2
890 dtdp = (mt*cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp))**2 + ml*(cvs(
lp)*(gs_min(
lp) - 1)/(ps + ps_inf(
lp))**2 - cvs(
vp) &
891 & *(gs_min(
vp) - 1)/(ps + ps_inf(
vp))**2) + mcvgp2)*ts**2
893 jac(1, 1) = dfdt*dtdm
894 jac(1, 2) = dfdt*dtdp + ts*(cvs(
lp)*(gs_min(
lp) - 1)/(ps + ps_inf(
lp)) - cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp)))
896 & 1) = qvs(
vp) - qvs(
lp) + (cvs(
vp)*gs_min(
vp) - cvs(
lp)*gs_min(
lp))/(ml*(cvs(
lp)*(gs_min(
lp) - 1)/(ps &
897 & + ps_inf(
lp)) - cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp))) + mt*cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp)) &
898 & + mcvgp) - (ml*(cvs(
vp)*gs_min(
vp) - cvs(
lp)*gs_min(
lp)) - mt*cvs(
vp)*gs_min(
vp) - mcpd)*(cvs(
lp)*(gs_min(
lp) &
899 & - 1)/(ps + ps_inf(
lp)) - cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp)))/((ml*(cvs(
lp)*(gs_min(
lp) - 1)/(ps &
900 & + ps_inf(
lp)) - cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp))) + mt*cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp)) &
903 & 2) = 1 + (ml*(cvs(
vp)*gs_min(
vp) - cvs(
lp)*gs_min(
lp)) - mt*cvs(
vp)*gs_min(
vp) - mcpd)*(ml*(cvs(
lp)*(gs_min(
lp) &
904 & - 1)/(ps + ps_inf(
lp))**2 - cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp))**2) + mt*cvs(
vp)*(gs_min(
vp) - 1)/(ps &
905 & + ps_inf(
vp))**2 + mcvgp2)/(ml*(cvs(
lp)*(gs_min(
lp) - 1)/(ps + ps_inf(
lp)) - cvs(
vp)*(gs_min(
vp) - 1)/(ps &
906 & + ps_inf(
vp))) + mt*cvs(
vp)*(gs_min(
vp) - 1)/(ps + ps_inf(
vp)) + mcvgp)**2
908 detj = jac(1, 1)*jac(2, 2) - jac(1, 2)*jac(2, 1)
910 if (detj == 0.0_wp)
exit
912 invjac(1, 1) = jac(2, 2)/detj
913 invjac(1, 2) = -jac(1, 2)/detj
914 invjac(2, 1) = -jac(2, 1)/detj
915 invjac(2, 2) = jac(1, 1)/detj
917 deltamp(1) = -(invjac(1, 1)*r2d(1) + invjac(1, 2)*r2d(2))
918 deltamp(2) = -(invjac(2, 1)*r2d(1) + invjac(2, 2)*r2d(2))
924 ml_try = min(max(ml + lambda*deltamp(1), 0.0_wp), mt)
925 ps_try = max(ps + lambda*deltamp(2), pmin)
926 call s_compute_ptg_residual(ml_try, mt, ps_try, j, k, l, q_cons_vf, rhoe, r2d_try, ts, mcp, mq, mcvgp, mcvgp2, mcpd)
927 resnorm_try = sqrt(r2d_try(1)**2 + r2d_try(2)**2)
928 if ((resnorm_try < resnorm) .or. (ls ==
ptg_ls_max))
exit
929 lambda = 0.5_wp*lambda
933 ml = ml_try; ps = ps_try; r2d = r2d_try; resnorm = resnorm_try
937 q_cons_vf(
lp + eqn_idx%cont%beg - 1)%sf(j, k, l) = ml
938 q_cons_vf(
vp + eqn_idx%cont%beg - 1)%sf(j, k, l) = mt - ml
940 ts = (rhoe + ps - mq)/mcp
946 subroutine s_correct_partial_densities(MCT, q_cons_vf, rM, j, k, l)
949# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
951# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
953# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
955# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
957# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
959# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
961# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
963# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
965# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
967# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
969# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
971# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
973# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
975# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
977# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
979# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
981# 432 "/home/runner/work/MFC/MFC/src/common/m_phase_change.fpp"
986 real(wp),
intent(out) ::
mct
988 real(wp),
intent(inout) ::
rm
989 integer,
intent(in) ::
j,
k,
l
991 if (
rm < 0.0_wp)
then
1006 if (
q_cons_vf(
lp + eqn_idx%cont%beg - 1)%sf(
j,
k,
l) < 0.0_wp)
then
1010 else if (
q_cons_vf(
vp + eqn_idx%cont%beg - 1)%sf(
j,
k,
l) < 0.0_wp)
then
1016 end subroutine s_correct_partial_densities
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
real(wp), intent(inout) rm
real(wp), intent(out) mct
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter model_eqns_6eq
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...
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Phase transition relaxation solvers for liquid-vapor flows with cavitation and boiling.
impure subroutine, public s_finalize_relaxation_solver_module
Finalize the phase change module.
subroutine, public s_infinite_relaxation_k(q_cons_vf)
Apply pT- or pTg-equilibrium relaxation with mass depletion based on the incoming state conditions.
integer, parameter vp
index for the vapor phase of the reacting fluid
integer, parameter lp
index for the liquid phase of the reacting fluid
subroutine s_infinite_pt_relaxation_k(j, k, l, mfl, ps, p_infpt, q_cons_vf, rhoe, ts)
Apply pT-equilibrium relaxation for N fluids.
impure subroutine, public s_relaxation_solver(q_cons_vf)
Dispatch to the correct relaxation solver. Replaces the procedure pointer, which CCE is breaking on.
real(wp), parameter tcr
Critical temperature of water [K].
subroutine s_compute_ptg_residual(ml, mt, ps, j, k, l, q_cons_vf, rhoe, r2d, ts, mcp, mq, mcvgp, mcvgp2, mcpd)
Evaluate the pTg-equilibrium residual R2D and temperature TS at a trial state (ml,...
integer, parameter ptg_ls_max
max backtracking-line-search halvings in the pTg solver
integer, parameter max_iter
max Newton iterations before accepting the last iterate
impure subroutine, public s_initialize_phasechange_module
Initialize the phase change module (no module-level state to set up; the pT/pTg relaxation solvers ar...
real(wp), parameter mixm
Mixture mass fraction threshold for triggering phase change.
subroutine s_infinite_ptg_relaxation_k(j, k, l, ps, rhoe, q_cons_vf, ts)
Apply pTg-equilibrium relaxation: a damped (backtracking line search) Newton solve for the reacting l...
real(wp), parameter pcr
Critical pressure of water [Pa].
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
Derived type annexing a scalar field (SF).