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# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244
245# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246
247# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250
251# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252
253# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256
257# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258
259# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262
263# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264
265# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268
269# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
270
271# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274
275# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277! New line at end of file is required for FYPP
278# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
279
280# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
281
282! Caution:
283! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
284! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
285! For an example see misc/nvidia_uvm/bind.sh.
286# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
287
288# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289
290# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
291
292# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
293
294# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
295
296# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
297
298# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299
300# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
301! New line at end of file is required for FYPP
302# 7 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp" 2
303
304!> @brief Pressure relaxation for the six-equation multi-component model via Newton--Raphson equilibration and volume-fraction correction
306
307 use m_derived_types !< definitions of the derived types
308 use m_global_parameters !< definitions of the global parameters
309
310 implicit none
311
312 private; public :: s_pressure_relaxation_procedure, &
315
316 real(wp), allocatable, dimension(:, :) :: res_pr
317
318# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
319#if defined(MFC_OpenACC)
320# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
321!$acc declare create(Res_pr)
322# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
323#elif defined(MFC_OpenMP)
324# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
325!$omp declare target (Res_pr)
326# 21 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
327#endif
328
329contains
330
331 !> Initialize the pressure relaxation module
333
334 integer :: i, j
335
336 if (viscous) then
337#ifdef MFC_DEBUG
338# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
339 block
340# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
341 use iso_fortran_env, only: output_unit
342# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
343
344# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
345 print *, 'm_pressure_relaxation.fpp:31: ', '@:ALLOCATE(Res_pr(1:2, 1:Re_size_max))'
346# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
347
348# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
349 call flush (output_unit)
350# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
351 end block
352# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
353#endif
354# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
355 allocate (res_pr(1:2, 1:re_size_max))
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
360# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
361#if defined(MFC_OpenACC)
362# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
363!$acc enter data create(Res_pr)
364# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
365#elif defined(MFC_OpenMP)
366# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
367!$omp target enter data map(always,alloc:Res_pr)
368# 31 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
369#endif
370 do i = 1, 2
371 do j = 1, re_size(i)
372 res_pr(i, j) = fluid_pp(re_idx(i, j))%Re(i)
373 end do
374 end do
375
376# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
377#if defined(MFC_OpenACC)
378# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
379!$acc update device(Res_pr, Re_idx, Re_size)
380# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
381#elif defined(MFC_OpenMP)
382# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
383!$omp target update to(Res_pr, Re_idx, Re_size)
384# 37 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
385#endif
386 end if
387
389
390 !> Finalize the pressure relaxation module
392
393 if (viscous) then
394#ifdef MFC_DEBUG
395# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
396 block
397# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
398 use iso_fortran_env, only: output_unit
399# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
400
401# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
402 print *, 'm_pressure_relaxation.fpp:46: ', '@:DEALLOCATE(Res_pr)'
403# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
404
405# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
406 call flush (output_unit)
407# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
408 end block
409# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
410#endif
411# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
412
413# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
414#if defined(MFC_OpenACC)
415# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
416!$acc exit data delete(Res_pr)
417# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
418#elif defined(MFC_OpenMP)
419# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
420!$omp target exit data map(release:Res_pr)
421# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
422#endif
423# 46 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
424 deallocate (res_pr)
425 end if
426
428
429 !> The main pressure relaxation procedure
430 !! @param q_cons_vf Cell-average conservative variables
432
433 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
434 integer :: j, k, l
435
436
437# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
438
439# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
440#if defined(MFC_OpenACC)
441# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
442!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
443# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
444#elif defined(MFC_OpenMP)
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
451# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
452!$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)
453# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
454#endif
455# 58 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
456
457 do l = 0, p
458 do k = 0, n
459 do j = 0, m
461 end do
462 end do
463 end do
464
465# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
466
467# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
468#if defined(MFC_OpenACC)
469# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
470!$acc end parallel loop
471# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
472#elif defined(MFC_OpenMP)
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
477# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
478!$omp end target teams loop
479# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
480#endif
481# 66 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
482
483
485
486 !> Process pressure relaxation for a single cell
487 subroutine s_relax_cell_pressure(q_cons_vf, j, k, l)
488
489# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
490#if MFC_OpenACC
491# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
492!$acc routine seq
493# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
494#elif MFC_OpenMP
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
499# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
500!$omp declare target device_type(any)
501# 72 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
502#endif
503
504 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
505 integer, intent(in) :: j, k, l
506
507 ! Volume fraction correction
508 if (mpp_lim) call s_correct_volume_fractions(q_cons_vf, j, k, l)
509
510 ! Pressure equilibration
511 if (s_needs_pressure_relaxation(q_cons_vf, j, k, l)) then
512 call s_equilibrate_pressure(q_cons_vf, j, k, l)
513 end if
514
515 ! Internal energy correction
516 call s_correct_internal_energies(q_cons_vf, j, k, l)
517
518 end subroutine s_relax_cell_pressure
519
520 !> Check if pressure relaxation is needed for this cell
521 logical function s_needs_pressure_relaxation(q_cons_vf, j, k, l)
522
523# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
524#if MFC_OpenACC
525# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
526!$acc routine seq
527# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
528#elif MFC_OpenMP
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
533# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
534!$omp declare target device_type(any)
535# 92 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
536#endif
537
538 type(scalar_field), dimension(sys_size), intent(in) :: q_cons_vf
539 integer, intent(in) :: j, k, l
540 integer :: i
541
543
544# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
545#if defined(MFC_OpenACC)
546# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
547!$acc loop seq
548# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
549#elif defined(MFC_OpenMP)
550# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
551
552# 99 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
553#endif
554 do i = 1, num_fluids
555 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > (1._wp - sgm_eps)) then
557 end if
558 end do
559
560 end function s_needs_pressure_relaxation
561
562 !> Correct volume fractions to physical bounds
563 subroutine s_correct_volume_fractions(q_cons_vf, j, k, l)
564
565# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
566#if MFC_OpenACC
567# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
568!$acc routine seq
569# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
570#elif MFC_OpenMP
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
575# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
576!$omp declare target device_type(any)
577# 110 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
578#endif
579
580 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
581 integer, intent(in) :: j, k, l
582 real(wp) :: sum_alpha
583 integer :: i
584
585 sum_alpha = 0._wp
586
587# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
588#if defined(MFC_OpenACC)
589# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
590!$acc loop seq
591# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
592#elif defined(MFC_OpenMP)
593# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
594
595# 118 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
596#endif
597 do i = 1, num_fluids
598 if ((q_cons_vf(i + contxb - 1)%sf(j, k, l) < 0._wp) .or. &
599 (q_cons_vf(i + advxb - 1)%sf(j, k, l) < 0._wp)) then
600 q_cons_vf(i + contxb - 1)%sf(j, k, l) = 0._wp
601 q_cons_vf(i + advxb - 1)%sf(j, k, l) = 0._wp
602 q_cons_vf(i + intxb - 1)%sf(j, k, l) = 0._wp
603 end if
604 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > 1._wp) &
605 q_cons_vf(i + advxb - 1)%sf(j, k, l) = 1._wp
606 sum_alpha = sum_alpha + q_cons_vf(i + advxb - 1)%sf(j, k, l)
607 end do
608
609
610# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
611#if defined(MFC_OpenACC)
612# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
613!$acc loop seq
614# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
615#elif defined(MFC_OpenMP)
616# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
617
618# 131 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
619#endif
620 do i = 1, num_fluids
621 q_cons_vf(i + advxb - 1)%sf(j, k, l) = q_cons_vf(i + advxb - 1)%sf(j, k, l)/sum_alpha
622 end do
623
624 end subroutine s_correct_volume_fractions
625
626 !> Main pressure equilibration using Newton-Raphson
627 subroutine s_equilibrate_pressure(q_cons_vf, j, k, l)
628
629# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
630#if MFC_OpenACC
631# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
632!$acc routine seq
633# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
634#elif MFC_OpenMP
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
639# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
640!$omp declare target device_type(any)
641# 140 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
642#endif
643
644 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
645 integer, intent(in) :: j, k, l
646
647 real(wp) :: pres_relax, f_pres, df_pres
648# 149 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
649 real(wp), dimension(num_fluids) :: pres_K_init, rho_K_s
650# 151 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
651 integer, parameter :: MAX_ITER = 50
652 real(wp), parameter :: TOLERANCE = 1.e-10_wp
653 integer :: iter, i
654
655 ! Initialize pressures
656 pres_relax = 0._wp
657
658# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
659#if defined(MFC_OpenACC)
660# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
661!$acc loop seq
662# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
663#elif defined(MFC_OpenMP)
664# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
665
666# 157 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
667#endif
668 do i = 1, num_fluids
669 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > sgm_eps) then
670 pres_k_init(i) = (q_cons_vf(i + intxb - 1)%sf(j, k, l)/ &
671 q_cons_vf(i + advxb - 1)%sf(j, k, l) - pi_infs(i))/gammas(i)
672 if (pres_k_init(i) <= -(1._wp - 1.e-8_wp)*ps_inf(i) + 1.e-8_wp) &
673 pres_k_init(i) = -(1._wp - 1.e-8_wp)*ps_inf(i) + 1.e-8_wp
674 else
675 pres_k_init(i) = 0._wp
676 end if
677 pres_relax = pres_relax + q_cons_vf(i + advxb - 1)%sf(j, k, l)*pres_k_init(i)
678 end do
679
680 ! Newton-Raphson iteration
681 f_pres = 1.e-9_wp
682 df_pres = 1.e9_wp
683
684# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
685#if defined(MFC_OpenACC)
686# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
687!$acc loop seq
688# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
689#elif defined(MFC_OpenMP)
690# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
691
692# 173 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
693#endif
694 do iter = 0, max_iter - 1
695 if (abs(f_pres) > tolerance) then
696 pres_relax = pres_relax - f_pres/df_pres
697
698 ! Enforce pressure bounds
699 do i = 1, num_fluids
700 if (pres_relax <= -(1._wp - 1.e-8_wp)*ps_inf(i) + 1.e-8_wp) &
701 pres_relax = -(1._wp - 1.e-8_wp)*ps_inf(i) + 1.e-8_wp
702 end do
703
704 ! Newton-Raphson step
705 f_pres = -1._wp
706 df_pres = 0._wp
707
708# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
709#if defined(MFC_OpenACC)
710# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
711!$acc loop seq
712# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
713#elif defined(MFC_OpenMP)
714# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
715
716# 187 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
717#endif
718 do i = 1, num_fluids
719 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > sgm_eps) then
720 rho_k_s(i) = q_cons_vf(i + contxb - 1)%sf(j, k, l)/ &
721 max(q_cons_vf(i + advxb - 1)%sf(j, k, l), sgm_eps) &
722 *((pres_relax + ps_inf(i))/(pres_k_init(i) + &
723 ps_inf(i)))**(1._wp/gs_min(i))
724 f_pres = f_pres + q_cons_vf(i + contxb - 1)%sf(j, k, l)/rho_k_s(i)
725 df_pres = df_pres - q_cons_vf(i + contxb - 1)%sf(j, k, l) &
726 /(gs_min(i)*rho_k_s(i)*(pres_relax + ps_inf(i)))
727 end if
728 end do
729 end if
730 end do
731
732 ! Update volume fractions
733
734# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
735#if defined(MFC_OpenACC)
736# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
737!$acc loop seq
738# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
739#elif defined(MFC_OpenMP)
740# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
741
742# 203 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
743#endif
744 do i = 1, num_fluids
745 if (q_cons_vf(i + advxb - 1)%sf(j, k, l) > sgm_eps) &
746 q_cons_vf(i + advxb - 1)%sf(j, k, l) = q_cons_vf(i + contxb - 1)%sf(j, k, l)/rho_k_s(i)
747 end do
748
749 end subroutine s_equilibrate_pressure
750
751 !> Correct internal energies using equilibrated pressure
752 subroutine s_correct_internal_energies(q_cons_vf, j, k, l)
753
754# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
755#if MFC_OpenACC
756# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
757!$acc routine seq
758# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
759#elif MFC_OpenMP
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
764# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
765!$omp declare target device_type(any)
766# 213 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
767#endif
768
769 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
770 integer, intent(in) :: j, k, l
771# 220 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
772 real(wp), dimension(num_fluids) :: alpha_rho, alpha
773# 222 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
774 real(wp) :: rho, dyn_pres, gamma, pi_inf, pres_relax, sum_alpha
775 real(wp), dimension(2) :: Re
776 integer :: i, q
777
778
779# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
780#if defined(MFC_OpenACC)
781# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
782!$acc loop seq
783# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
784#elif defined(MFC_OpenMP)
785# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
786
787# 226 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
788#endif
789 do i = 1, num_fluids
790 alpha_rho(i) = q_cons_vf(i)%sf(j, k, l)
791 alpha(i) = q_cons_vf(e_idx + i)%sf(j, k, l)
792 end do
793
794 ! Compute mixture properties (combined bubble and standard logic)
795 rho = 0._wp
796 gamma = 0._wp
797 pi_inf = 0._wp
798
799 if (bubbles_euler) then
800 if (mpp_lim .and. (model_eqns == 2) .and. (num_fluids > 2)) then
801
802# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
803#if defined(MFC_OpenACC)
804# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
805!$acc loop seq
806# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
807#elif defined(MFC_OpenMP)
808# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
809
810# 239 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
811#endif
812 do i = 1, num_fluids
813 rho = rho + alpha_rho(i)
814 gamma = gamma + alpha(i)*gammas(i)
815 pi_inf = pi_inf + alpha(i)*pi_infs(i)
816 end do
817 else if ((model_eqns == 2) .and. (num_fluids > 2)) then
818
819# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
820#if defined(MFC_OpenACC)
821# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
822!$acc loop seq
823# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
824#elif defined(MFC_OpenMP)
825# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
826
827# 246 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
828#endif
829 do i = 1, num_fluids - 1
830 rho = rho + alpha_rho(i)
831 gamma = gamma + alpha(i)*gammas(i)
832 pi_inf = pi_inf + alpha(i)*pi_infs(i)
833 end do
834 else
835 rho = alpha_rho(1)
836 gamma = gammas(1)
837 pi_inf = pi_infs(1)
838 end if
839 else
840 sum_alpha = 0._wp
841 if (mpp_lim) then
842
843# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
844#if defined(MFC_OpenACC)
845# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
846!$acc loop seq
847# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
848#elif defined(MFC_OpenMP)
849# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
850
851# 260 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
852#endif
853 do i = 1, num_fluids
854 alpha_rho(i) = max(0._wp, alpha_rho(i))
855 alpha(i) = min(max(0._wp, alpha(i)), 1._wp)
856 sum_alpha = sum_alpha + alpha(i)
857 end do
858 alpha = alpha/max(sum_alpha, sgm_eps)
859 end if
860
861
862# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
863#if defined(MFC_OpenACC)
864# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
865!$acc loop seq
866# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
867#elif defined(MFC_OpenMP)
868# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
869
870# 269 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
871#endif
872 do i = 1, num_fluids
873 rho = rho + alpha_rho(i)
874 gamma = gamma + alpha(i)*gammas(i)
875 pi_inf = pi_inf + alpha(i)*pi_infs(i)
876 end do
877
878 if (viscous) then
879
880# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
881#if defined(MFC_OpenACC)
882# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
883!$acc loop seq
884# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
885#elif defined(MFC_OpenMP)
886# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
887
888# 277 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
889#endif
890 do i = 1, 2
891 re(i) = dflt_real
892 if (re_size(i) > 0) re(i) = 0._wp
893
894# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
895#if defined(MFC_OpenACC)
896# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
897!$acc loop seq
898# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
899#elif defined(MFC_OpenMP)
900# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
901
902# 281 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
903#endif
904 do q = 1, re_size(i)
905 re(i) = alpha(re_idx(i, q))/res_pr(i, q) + re(i)
906 end do
907 re(i) = 1._wp/max(re(i), sgm_eps)
908 end do
909 end if
910 end if
911
912 ! Compute dynamic pressure and update internal energies
913 dyn_pres = 0._wp
914
915# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
916#if defined(MFC_OpenACC)
917# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
918!$acc loop seq
919# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
920#elif defined(MFC_OpenMP)
921# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
922
923# 292 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
924#endif
925 do i = momxb, momxe
926 dyn_pres = dyn_pres + 5.e-1_wp*q_cons_vf(i)%sf(j, k, l)* &
927 q_cons_vf(i)%sf(j, k, l)/max(rho, sgm_eps)
928 end do
929
930 pres_relax = (q_cons_vf(e_idx)%sf(j, k, l) - dyn_pres - pi_inf)/gamma
931
932
933# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
934#if defined(MFC_OpenACC)
935# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
936!$acc loop seq
937# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
938#elif defined(MFC_OpenMP)
939# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
940
941# 300 "/home/runner/work/MFC/MFC/src/simulation/m_pressure_relaxation.fpp"
942#endif
943 do i = 1, num_fluids
944 q_cons_vf(i + intxb - 1)%sf(j, k, l) = &
945 q_cons_vf(i + advxb - 1)%sf(j, k, l)*(gammas(i)*pres_relax + pi_infs(i))
946 end do
947
948 end subroutine s_correct_internal_energies
949
950end 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.