MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_pressure_relaxation.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
2!>
3!! @file
4!! @brief Contains module m_pressure_relaxation
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
7! This file exists so that Fypp can be run without generating case.fpp files for
8! each target. This is useful when generating documentation, for example. This
9! should also let MFC be built with CMake directly, without invoking mfc.sh.
10
11! For pre-process.
12# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 14 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.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"
25
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"
29
30# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43! New line at end of file is required for FYPP
44# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
45# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
46# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
47# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52
53# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56
57# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70! New line at end of file is required for FYPP
71# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
72
73# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78
79# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80
81# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82
83# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125
126# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149! New line at end of file is required for FYPP
150# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
151# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
152# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
153# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158
159# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162
163# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164
165# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166
167# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176! New line at end of file is required for FYPP
177# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
178
179# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180
181# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182
183# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184
185# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186
187# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234! New line at end of file is required for FYPP
235# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
236
237# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
238
239# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
240
241# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242
243# 76 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244
245# 91 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246
247# 102 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249# 115 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250
251# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252
253# 154 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255# 165 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256
257# 176 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258
259# 187 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261# 198 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262
263# 208 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264
265# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267# 220 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268
269# 226 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
270
271# 232 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273# 234 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274# 235 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275! New line at end of file is required for FYPP
276# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
277
278# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
279
280! Caution:
281! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
282! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
283! For an example see misc/nvidia_uvm/bind.sh.
284# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
285
286# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
287
288# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289
290# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
291
292# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
293
294# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
295
296# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
297
298# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299! New line at end of file is required for FYPP
300# 7 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp" 2
301
302!> @brief Pressure relaxation for the six-equation multi-component model via Newton--Raphson equilibration and volume-fraction correction
304
305 use m_derived_types !< definitions of the derived types
306 use m_global_parameters !< definitions of the global parameters
307
308 implicit none
309
310 private; public :: s_pressure_relaxation_procedure, &
313
314 real(wp), allocatable, dimension(:, :) :: res_pr
315
316# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
317#if defined(MFC_OpenACC)
318# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
319!$acc declare create(Res_pr)
320# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
321#elif defined(MFC_OpenMP)
322# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
323!$omp declare target (Res_pr)
324# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
325#endif
326
327contains
328
329 !> Initialize the pressure relaxation module
331
332 integer :: i, j
333
334 if (viscous) then
335#ifdef MFC_DEBUG
336# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
337 block
338# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
339 use iso_fortran_env, only: output_unit
340# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
341
342# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
343 print *, 'm_pressure_relaxation.fpp:31: ', '@:ALLOCATE(Res_pr(1:2, 1:Re_size_max))'
344# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
345
346# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
347 call flush (output_unit)
348# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
349 end block
350# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
351#endif
352# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
353 allocate (res_pr(1:2, 1:re_size_max))
354# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
355
356# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
357
358# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
359#if defined(MFC_OpenACC)
360# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
361!$acc enter data create(Res_pr)
362# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
363#elif defined(MFC_OpenMP)
364# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
365!$omp target enter data map(always,alloc:Res_pr)
366# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
367#endif
368 do i = 1, 2
369 do j = 1, re_size(i)
370 res_pr(i, j) = fluid_pp(re_idx(i, j))%Re(i)
371 end do
372 end do
373
374# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
375#if defined(MFC_OpenACC)
376# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
377!$acc update device(Res_pr, Re_idx, Re_size)
378# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
379#elif defined(MFC_OpenMP)
380# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
381!$omp target update to(Res_pr, Re_idx, Re_size)
382# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
383#endif
384 end if
385
387
388 !> Finalize the pressure relaxation module
390
391 if (viscous) then
392#ifdef MFC_DEBUG
393# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
394 block
395# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
396 use iso_fortran_env, only: output_unit
397# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
398
399# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
400 print *, 'm_pressure_relaxation.fpp:46: ', '@:DEALLOCATE(Res_pr)'
401# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
402
403# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
404 call flush (output_unit)
405# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
406 end block
407# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
408#endif
409# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
410
411# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
412#if defined(MFC_OpenACC)
413# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
414!$acc exit data delete(Res_pr)
415# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
416#elif defined(MFC_OpenMP)
417# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
418!$omp target exit data map(release:Res_pr)
419# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
420#endif
421# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
422 deallocate (res_pr)
423 end if
424
426
427 !> The main pressure relaxation procedure
428 !! @param q_cons_vf Cell-average conservative variables
430
431 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
432 integer :: j, k, l
433
434
435# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
436
437# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
438#if defined(MFC_OpenACC)
439# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
440!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
441# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
442#elif defined(MFC_OpenMP)
443# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
444
445# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
446
447# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
448
449# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
450!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(j, k, l)
451# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
452#endif
453# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
454
455 do l = 0, p
456 do k = 0, n
457 do j = 0, m
459 end do
460 end do
461 end do
462
463# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
464
465# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
466#if defined(MFC_OpenACC)
467# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
468!$acc end parallel loop
469# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
470#elif defined(MFC_OpenMP)
471# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
472
473# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
474
475# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
476!$omp end target teams loop
477# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
478#endif
479# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
480
481
483
484 !> Process pressure relaxation for a single cell
485 subroutine s_relax_cell_pressure(q_cons_vf, j, k, l)
486
487# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
488#if MFC_OpenACC
489# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
490!$acc routine seq
491# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
492#elif MFC_OpenMP
493# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
494
495# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
496
497# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
498!$omp declare target device_type(any)
499# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
500#endif
501
502 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
503 integer, intent(in) :: j, k, l
504
505 ! Volume fraction correction
506 if (mpp_lim) call s_correct_volume_fractions(q_cons_vf, j, k, l)
507
508 ! Pressure equilibration
509 if (s_needs_pressure_relaxation(q_cons_vf, j, k, l)) then
510 call s_equilibrate_pressure(q_cons_vf, j, k, l)
511 end if
512
513 ! Internal energy correction
514 call s_correct_internal_energies(q_cons_vf, j, k, l)
515
516 end subroutine s_relax_cell_pressure
517
518 !> Check if pressure relaxation is needed for this cell
519 logical function s_needs_pressure_relaxation(q_cons_vf, j, k, l)
520
521# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
522#if MFC_OpenACC
523# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
524!$acc routine seq
525# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
526#elif MFC_OpenMP
527# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
528
529# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
530
531# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
532!$omp declare target device_type(any)
533# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
534#endif
535
536 type(scalar_field), dimension(sys_size), intent(in) :: q_cons_vf
537 integer, intent(in) :: j, k, l
538 integer :: i
539
541
542# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
543#if defined(MFC_OpenACC)
544# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
545!$acc loop seq
546# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
547#elif defined(MFC_OpenMP)
548# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
549
550# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
551#endif
552 do i = 1, num_fluids
553 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > (1._wp - sgm_eps)) then
555 end if
556 end do
557
558 end function s_needs_pressure_relaxation
559
560 !> Correct volume fractions to physical bounds
561 subroutine s_correct_volume_fractions(q_cons_vf, j, k, l)
562
563# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
564#if MFC_OpenACC
565# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
566!$acc routine seq
567# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
568#elif MFC_OpenMP
569# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
570
571# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
572
573# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
574!$omp declare target device_type(any)
575# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
576#endif
577
578 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
579 integer, intent(in) :: j, k, l
580 real(wp) :: sum_alpha
581 integer :: i
582
583 sum_alpha = 0._wp
584
585# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
586#if defined(MFC_OpenACC)
587# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
588!$acc loop seq
589# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
590#elif defined(MFC_OpenMP)
591# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
592
593# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
594#endif
595 do i = 1, num_fluids
596 if ((q_cons_vf(i + contxb - 1)%sf(j, k, l) < 0._wp) .or. &
597 (q_cons_vf(i + advxb - 1)%sf(j, k, l) < 0._wp)) then
598 q_cons_vf(i + contxb - 1)%sf(j, k, l) = 0._wp
599 q_cons_vf(i + advxb - 1)%sf(j, k, l) = 0._wp
600 q_cons_vf(i + intxb - 1)%sf(j, k, l) = 0._wp
601 end if
602 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > 1._wp) &
603 q_cons_vf(i + advxb - 1)%sf(j, k, l) = 1._wp
604 sum_alpha = sum_alpha + q_cons_vf(i + advxb - 1)%sf(j, k, l)
605 end do
606
607
608# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
609#if defined(MFC_OpenACC)
610# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
611!$acc loop seq
612# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
613#elif defined(MFC_OpenMP)
614# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
615
616# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
617#endif
618 do i = 1, num_fluids
619 q_cons_vf(i + advxb - 1)%sf(j, k, l) = q_cons_vf(i + advxb - 1)%sf(j, k, l)/sum_alpha
620 end do
621
622 end subroutine s_correct_volume_fractions
623
624 !> Main pressure equilibration using Newton-Raphson
625 subroutine s_equilibrate_pressure(q_cons_vf, j, k, l)
626
627# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
628#if MFC_OpenACC
629# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
630!$acc routine seq
631# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
632#elif MFC_OpenMP
633# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
634
635# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
636
637# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
638!$omp declare target device_type(any)
639# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
640#endif
641
642 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
643 integer, intent(in) :: j, k, l
644
645 real(wp) :: pres_relax, f_pres, df_pres
646# 149 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
647 real(wp), dimension(num_fluids) :: pres_K_init, rho_K_s
648# 151 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
649 integer, parameter :: MAX_ITER = 50
650 real(wp), parameter :: TOLERANCE = 1.e-10_wp
651 integer :: iter, i
652
653 ! Initialize pressures
654 pres_relax = 0._wp
655
656# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
657#if defined(MFC_OpenACC)
658# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
659!$acc loop seq
660# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
661#elif defined(MFC_OpenMP)
662# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
663
664# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
665#endif
666 do i = 1, num_fluids
667 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > sgm_eps) then
668 pres_k_init(i) = (q_cons_vf(i + intxb - 1)%sf(j, k, l)/ &
669 q_cons_vf(i + advxb - 1)%sf(j, k, l) - pi_infs(i))/gammas(i)
670 if (pres_k_init(i) <= -(1._wp - 1.e-8_wp)*ps_inf(i) + 1.e-8_wp) &
671 pres_k_init(i) = -(1._wp - 1.e-8_wp)*ps_inf(i) + 1.e-8_wp
672 else
673 pres_k_init(i) = 0._wp
674 end if
675 pres_relax = pres_relax + q_cons_vf(i + advxb - 1)%sf(j, k, l)*pres_k_init(i)
676 end do
677
678 ! Newton-Raphson iteration
679 f_pres = 1.e-9_wp
680 df_pres = 1.e9_wp
681
682# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
683#if defined(MFC_OpenACC)
684# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
685!$acc loop seq
686# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
687#elif defined(MFC_OpenMP)
688# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
689
690# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
691#endif
692 do iter = 0, max_iter - 1
693 if (abs(f_pres) > tolerance) then
694 pres_relax = pres_relax - f_pres/df_pres
695
696 ! Enforce pressure bounds
697 do i = 1, num_fluids
698 if (pres_relax <= -(1._wp - 1.e-8_wp)*ps_inf(i) + 1.e-8_wp) &
699 pres_relax = -(1._wp - 1.e-8_wp)*ps_inf(i) + 1.e-8_wp
700 end do
701
702 ! Newton-Raphson step
703 f_pres = -1._wp
704 df_pres = 0._wp
705
706# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
707#if defined(MFC_OpenACC)
708# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
709!$acc loop seq
710# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
711#elif defined(MFC_OpenMP)
712# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
713
714# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
715#endif
716 do i = 1, num_fluids
717 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > sgm_eps) then
718 rho_k_s(i) = q_cons_vf(i + contxb - 1)%sf(j, k, l)/ &
719 max(q_cons_vf(i + advxb - 1)%sf(j, k, l), sgm_eps) &
720 *((pres_relax + ps_inf(i))/(pres_k_init(i) + &
721 ps_inf(i)))**(1._wp/gs_min(i))
722 f_pres = f_pres + q_cons_vf(i + contxb - 1)%sf(j, k, l)/rho_k_s(i)
723 df_pres = df_pres - q_cons_vf(i + contxb - 1)%sf(j, k, l) &
724 /(gs_min(i)*rho_k_s(i)*(pres_relax + ps_inf(i)))
725 end if
726 end do
727 end if
728 end do
729
730 ! Update volume fractions
731
732# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
733#if defined(MFC_OpenACC)
734# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
735!$acc loop seq
736# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
737#elif defined(MFC_OpenMP)
738# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
739
740# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
741#endif
742 do i = 1, num_fluids
743 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > sgm_eps) &
744 q_cons_vf(i + advxb - 1)%sf(j, k, l) = q_cons_vf(i + contxb - 1)%sf(j, k, l)/rho_k_s(i)
745 end do
746
747 end subroutine s_equilibrate_pressure
748
749 !> Correct internal energies using equilibrated pressure
750 subroutine s_correct_internal_energies(q_cons_vf, j, k, l)
751
752# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
753#if MFC_OpenACC
754# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
755!$acc routine seq
756# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
757#elif MFC_OpenMP
758# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
759
760# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
761
762# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
763!$omp declare target device_type(any)
764# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
765#endif
766
767 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
768 integer, intent(in) :: j, k, l
769# 220 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
770 real(wp), dimension(num_fluids) :: alpha_rho, alpha
771# 222 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
772 real(wp) :: rho, dyn_pres, gamma, pi_inf, pres_relax, sum_alpha
773 real(wp), dimension(2) :: Re
774 integer :: i, q
775
776
777# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
778#if defined(MFC_OpenACC)
779# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
780!$acc loop seq
781# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
782#elif defined(MFC_OpenMP)
783# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
784
785# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
786#endif
787 do i = 1, num_fluids
788 alpha_rho(i) = q_cons_vf(i)%sf(j, k, l)
789 alpha(i) = q_cons_vf(e_idx + i)%sf(j, k, l)
790 end do
791
792 ! Compute mixture properties (combined bubble and standard logic)
793 rho = 0._wp
794 gamma = 0._wp
795 pi_inf = 0._wp
796
797 if (bubbles_euler) then
798 if (mpp_lim .and. (model_eqns == 2) .and. (num_fluids > 2)) then
799
800# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
801#if defined(MFC_OpenACC)
802# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
803!$acc loop seq
804# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
805#elif defined(MFC_OpenMP)
806# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
807
808# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
809#endif
810 do i = 1, num_fluids
811 rho = rho + alpha_rho(i)
812 gamma = gamma + alpha(i)*gammas(i)
813 pi_inf = pi_inf + alpha(i)*pi_infs(i)
814 end do
815 else if ((model_eqns == 2) .and. (num_fluids > 2)) then
816
817# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
818#if defined(MFC_OpenACC)
819# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
820!$acc loop seq
821# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
822#elif defined(MFC_OpenMP)
823# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
824
825# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
826#endif
827 do i = 1, num_fluids - 1
828 rho = rho + alpha_rho(i)
829 gamma = gamma + alpha(i)*gammas(i)
830 pi_inf = pi_inf + alpha(i)*pi_infs(i)
831 end do
832 else
833 rho = alpha_rho(1)
834 gamma = gammas(1)
835 pi_inf = pi_infs(1)
836 end if
837 else
838 sum_alpha = 0._wp
839 if (mpp_lim) then
840
841# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
842#if defined(MFC_OpenACC)
843# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
844!$acc loop seq
845# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
846#elif defined(MFC_OpenMP)
847# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
848
849# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
850#endif
851 do i = 1, num_fluids
852 alpha_rho(i) = max(0._wp, alpha_rho(i))
853 alpha(i) = min(max(0._wp, alpha(i)), 1._wp)
854 sum_alpha = sum_alpha + alpha(i)
855 end do
856 alpha = alpha/max(sum_alpha, sgm_eps)
857 end if
858
859
860# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
861#if defined(MFC_OpenACC)
862# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
863!$acc loop seq
864# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
865#elif defined(MFC_OpenMP)
866# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
867
868# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
869#endif
870 do i = 1, num_fluids
871 rho = rho + alpha_rho(i)
872 gamma = gamma + alpha(i)*gammas(i)
873 pi_inf = pi_inf + alpha(i)*pi_infs(i)
874 end do
875
876 if (viscous) then
877
878# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
879#if defined(MFC_OpenACC)
880# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
881!$acc loop seq
882# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
883#elif defined(MFC_OpenMP)
884# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
885
886# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
887#endif
888 do i = 1, 2
889 re(i) = dflt_real
890 if (re_size(i) > 0) re(i) = 0._wp
891
892# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
893#if defined(MFC_OpenACC)
894# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
895!$acc loop seq
896# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
897#elif defined(MFC_OpenMP)
898# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
899
900# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
901#endif
902 do q = 1, re_size(i)
903 re(i) = alpha(re_idx(i, q))/res_pr(i, q) + re(i)
904 end do
905 re(i) = 1._wp/max(re(i), sgm_eps)
906 end do
907 end if
908 end if
909
910 ! Compute dynamic pressure and update internal energies
911 dyn_pres = 0._wp
912
913# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
914#if defined(MFC_OpenACC)
915# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
916!$acc loop seq
917# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
918#elif defined(MFC_OpenMP)
919# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
920
921# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
922#endif
923 do i = momxb, momxe
924 dyn_pres = dyn_pres + 5.e-1_wp*q_cons_vf(i)%sf(j, k, l)* &
925 q_cons_vf(i)%sf(j, k, l)/max(rho, sgm_eps)
926 end do
927
928 pres_relax = (q_cons_vf(e_idx)%sf(j, k, l) - dyn_pres - pi_inf)/gamma
929
930
931# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
932#if defined(MFC_OpenACC)
933# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
934!$acc loop seq
935# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
936#elif defined(MFC_OpenMP)
937# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
938
939# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
940#endif
941 do i = 1, num_fluids
942 q_cons_vf(i + intxb - 1)%sf(j, k, l) = &
943 q_cons_vf(i + advxb - 1)%sf(j, k, l)*(gammas(i)*pres_relax + pi_infs(i))
944 end do
945
946 end subroutine s_correct_internal_energies
947
948end module m_pressure_relaxation
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
integer, intent(in) k
integer, intent(in) j
integer, intent(in) l
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...
integer, dimension(2) re_size
logical viscous
Viscous effects.
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Database of the physical parameters of each of the fluids that is present in the flow....
integer, dimension(:, :), allocatable re_idx
Pressure relaxation for the six-equation multi-component model via Newton–Raphson equilibration and v...
subroutine s_relax_cell_pressure(q_cons_vf, j, k, l)
Process pressure relaxation for a single cell.
impure subroutine, public s_finalize_pressure_relaxation_module
Finalize the pressure relaxation module.
subroutine s_equilibrate_pressure(q_cons_vf, j, k, l)
Main pressure equilibration using Newton-Raphson.
subroutine, public s_pressure_relaxation_procedure(q_cons_vf)
The main pressure relaxation procedure.
logical function s_needs_pressure_relaxation(q_cons_vf, j, k, l)
Check if pressure relaxation is needed for this cell.
real(wp), dimension(:, :), allocatable res_pr
subroutine s_correct_internal_energies(q_cons_vf, j, k, l)
Correct internal energies using equilibrated pressure.
subroutine s_correct_volume_fractions(q_cons_vf, j, k, l)
Correct volume fractions to physical bounds.
impure subroutine, public s_initialize_pressure_relaxation_module
Initialize the pressure relaxation module.