MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_bubbles_EE.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
2!>
3!! @file
4!! @brief Contains module @ref m_bubbles_ee "m_bubbles_EE"
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
7# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
8# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
9# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
10# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
11# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
12# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
13# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
14
15# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
16# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
18
19# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20
21# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22
23# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24
25# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26
27# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28
29# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30
31# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32! New line at end of file is required for FYPP
33# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
34# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
35# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
36# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47
48# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49
50# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51
52# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53
54# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55
56# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57
58# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59! New line at end of file is required for FYPP
60# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
61
62# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
63# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
64# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
65# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
66# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
67
68# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
69
70# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
71
72# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
73
74# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75
76# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77
78# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79
80# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81
82# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83
84# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85
86# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87
88# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89
90# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91
92# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93
94# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95
96# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97
98# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99
100# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101
102# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103
104# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105
106# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107
108# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109
110# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111
112# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136
137# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138! New line at end of file is required for FYPP
139# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
140# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
141# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
142# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
144# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
145# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
146# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
147
148# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
151
152# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153
154# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155
156# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157
158# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159
160# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161
162# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163
164# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165! New line at end of file is required for FYPP
166# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
167
168# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
169
170# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
171
172# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
173
174# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
175
176# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
177
178# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
179
180# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
181
182# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
183
184# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
185
186# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
187
188# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
189
190# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
191
192# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
193
194# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
195
196# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
197
198# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
199
200# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
201
202# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
203
204# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
205
206# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
207
208# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209
210# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211
212# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213
214# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215
216# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217
218# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219
220# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221
222# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223! New line at end of file is required for FYPP
224# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
225
226! GPU parallel region (scalar reductions, maxval/minval)
227# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
228
229! GPU parallel loop over threads (most common GPU macro)
230# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
231
232! Required closing for GPU_PARALLEL_LOOP
233# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
234
235! Mark routine for device compilation
236# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
237
238! Declare device-resident data
239# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
240
241! Inner loop within a GPU parallel region
242# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
243
244! Scoped GPU data region
245# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246
247! Host code with device pointers (for MPI with GPU buffers)
248# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
249
250! Allocate device memory (unscoped)
251# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252
253! Free device memory
254# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
255
256! Atomic operation on device
257# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258
259! End atomic capture block
260# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
261
262! Copy data between host and device
263# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264
265! Synchronization barrier
266# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
267
268! Import GPU library module (openacc or omp_lib)
269# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
270
271! Emit code only for AMD compiler
272# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
273
274! Emit code for non-Cray compilers
275# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276
277! Emit code only for Cray compiler
278# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
279
280! Emit code for non-NVIDIA compilers
281# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
282
283# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
285! New line at end of file is required for FYPP
286# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
287
288# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289
290! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
291! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
292! example see misc/nvidia_uvm/bind.sh. NVIDIA unified memory page placement hint
293# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
294
295! Allocate and create GPU device memory
296# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
297
298! Free GPU device memory and deallocate
299# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
300
301! Cray-specific GPU pointer setup for vector fields
302# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
303
304! Cray-specific GPU pointer setup for scalar fields
305# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
306
307! Cray-specific GPU pointer setup for acoustic source spatials
308# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
309
310# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311
312# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
313! New line at end of file is required for FYPP
314# 6 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp" 2
315
316!> @brief Computes ensemble-averaged (Euler--Euler) bubble source terms for radius, velocity, pressure, and mass transfer
318
321 use m_mpi_proxy
323 use m_bubbles
324
325 implicit none
326
327 real(wp), allocatable, dimension(:,:,:) :: bub_adv_src
328 real(wp), allocatable, dimension(:,:,:,:) :: bub_r_src, bub_v_src, bub_p_src, bub_m_src
329
330# 20 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
331#if defined(MFC_OpenACC)
332# 20 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
333!$acc declare create(bub_adv_src, bub_r_src, bub_v_src, bub_p_src, bub_m_src)
334# 20 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
335#elif defined(MFC_OpenMP)
336# 20 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
337!$omp declare target (bub_adv_src, bub_r_src, bub_v_src, bub_p_src, bub_m_src)
338# 20 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
339#endif
340
341 type(scalar_field) :: divu !< matrix for div(u)
342
343# 23 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
344#if defined(MFC_OpenACC)
345# 23 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
346!$acc declare create(divu)
347# 23 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
348#elif defined(MFC_OpenMP)
349# 23 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
350!$omp declare target (divu)
351# 23 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
352#endif
353
354 integer, allocatable, dimension(:) :: rs, vs, ms, ps
355
356# 26 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
357#if defined(MFC_OpenACC)
358# 26 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
359!$acc declare create(rs, vs, ms, ps)
360# 26 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
361#elif defined(MFC_OpenMP)
362# 26 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
363!$omp declare target (rs, vs, ms, ps)
364# 26 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
365#endif
366
367contains
368
369 !> Initialize the Euler-Euler bubble module
371
372 integer :: l
373
374#ifdef MFC_DEBUG
375# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
376 block
377# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
378 use iso_fortran_env, only: output_unit
379# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
380
381# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
382 print *, 'm_bubbles_EE.fpp:35: ', '@:ALLOCATE(rs(1:nb))'
383# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
384
385# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
386 call flush (output_unit)
387# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
388 end block
389# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
390#endif
391# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
392 allocate (rs(1:nb))
393# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
394
395# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
396
397# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
398#if defined(MFC_OpenACC)
399# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
400!$acc enter data create(rs)
401# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
402#elif defined(MFC_OpenMP)
403# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
404!$omp target enter data map(always,alloc:rs)
405# 35 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
406#endif
407#ifdef MFC_DEBUG
408# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
409 block
410# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
411 use iso_fortran_env, only: output_unit
412# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
413
414# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
415 print *, 'm_bubbles_EE.fpp:36: ', '@:ALLOCATE(vs(1:nb))'
416# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
417
418# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
419 call flush (output_unit)
420# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
421 end block
422# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
423#endif
424# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
425 allocate (vs(1:nb))
426# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
427
428# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
429
430# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
431#if defined(MFC_OpenACC)
432# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
433!$acc enter data create(vs)
434# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
435#elif defined(MFC_OpenMP)
436# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
437!$omp target enter data map(always,alloc:vs)
438# 36 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
439#endif
440#ifdef MFC_DEBUG
441# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
442 block
443# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
444 use iso_fortran_env, only: output_unit
445# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
446
447# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
448 print *, 'm_bubbles_EE.fpp:37: ', '@:ALLOCATE(ps(1:nb))'
449# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
450
451# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
452 call flush (output_unit)
453# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
454 end block
455# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
456#endif
457# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
458 allocate (ps(1:nb))
459# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
460
461# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
462
463# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
464#if defined(MFC_OpenACC)
465# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
466!$acc enter data create(ps)
467# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
468#elif defined(MFC_OpenMP)
469# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
470!$omp target enter data map(always,alloc:ps)
471# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
472#endif
473#ifdef MFC_DEBUG
474# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
475 block
476# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
477 use iso_fortran_env, only: output_unit
478# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
479
480# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
481 print *, 'm_bubbles_EE.fpp:38: ', '@:ALLOCATE(ms(1:nb))'
482# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
483
484# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
485 call flush (output_unit)
486# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
487 end block
488# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
489#endif
490# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
491 allocate (ms(1:nb))
492# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
493
494# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
495
496# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
497#if defined(MFC_OpenACC)
498# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
499!$acc enter data create(ms)
500# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
501#elif defined(MFC_OpenMP)
502# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
503!$omp target enter data map(always,alloc:ms)
504# 38 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
505#endif
506
507 do l = 1, nb
508 rs(l) = qbmm_idx%rs(l)
509 vs(l) = qbmm_idx%vs(l)
510 if (.not. polytropic) then
511 ps(l) = qbmm_idx%ps(l)
512 ms(l) = qbmm_idx%ms(l)
513 else
514 ps(l) = rs(l)
515 ms(l) = rs(l)
516 end if
517 end do
518
519
520# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
521#if defined(MFC_OpenACC)
522# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
523!$acc update device(rs, vs)
524# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
525#elif defined(MFC_OpenMP)
526# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
527!$omp target update to(rs, vs)
528# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
529#endif
530
531# 53 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
532#if defined(MFC_OpenACC)
533# 53 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
534!$acc update device(ps, ms)
535# 53 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
536#elif defined(MFC_OpenMP)
537# 53 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
538!$omp target update to(ps, ms)
539# 53 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
540#endif
541
542#ifdef MFC_DEBUG
543# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
544 block
545# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
546 use iso_fortran_env, only: output_unit
547# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
548
549# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
550 print *, 'm_bubbles_EE.fpp:55: ', '@:ALLOCATE(divu%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
551# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
552
553# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
554 call flush (output_unit)
555# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
556 end block
557# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
558#endif
559# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
560 allocate (divu%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
561# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
562
563# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
564
565# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
566#if defined(MFC_OpenACC)
567# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
568!$acc enter data create(divu%sf)
569# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
570#elif defined(MFC_OpenMP)
571# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
572!$omp target enter data map(always,alloc:divu%sf)
573# 55 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
574#endif
575#ifdef _CRAYFTN
576# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
577 block
578# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
579#ifdef MFC_DEBUG
580# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
581 block
582# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
583 use iso_fortran_env, only: output_unit
584# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
585
586# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
587 print *, 'm_bubbles_EE.fpp:56: ', '@:ACC_SETUP_SFs(divu)'
588# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
589
590# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
591 call flush (output_unit)
592# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
593 end block
594# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
595#endif
596# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
597
598# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
599
600# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
601#if defined(MFC_OpenACC)
602# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
603!$acc enter data copyin(divu)
604# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
605#elif defined(MFC_OpenMP)
606# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
607!$omp target enter data map(to:divu)
608# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
609#endif
610# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
611 if (associated(divu%sf)) then
612# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
613
614# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
615#if defined(MFC_OpenACC)
616# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
617!$acc enter data copyin(divu%sf)
618# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
619#elif defined(MFC_OpenMP)
620# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
621!$omp target enter data map(to:divu%sf)
622# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
623#endif
624# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
625 end if
626# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
627 end block
628# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
629#endif
630
631#ifdef MFC_DEBUG
632# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
633 block
634# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
635 use iso_fortran_env, only: output_unit
636# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
637
638# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
639 print *, 'm_bubbles_EE.fpp:58: ', '@:ALLOCATE(bub_adv_src(0:m, 0:n, 0:p))'
640# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
641
642# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
643 call flush (output_unit)
644# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
645 end block
646# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
647#endif
648# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
649 allocate (bub_adv_src(0:m, 0:n, 0:p))
650# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
651
652# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
653
654# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
655#if defined(MFC_OpenACC)
656# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
657!$acc enter data create(bub_adv_src)
658# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
659#elif defined(MFC_OpenMP)
660# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
661!$omp target enter data map(always,alloc:bub_adv_src)
662# 58 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
663#endif
664#ifdef MFC_DEBUG
665# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
666 block
667# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
668 use iso_fortran_env, only: output_unit
669# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
670
671# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
672 print *, 'm_bubbles_EE.fpp:59: ', '@:ALLOCATE(bub_r_src(0:m, 0:n, 0:p, 1:nb))'
673# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
674
675# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
676 call flush (output_unit)
677# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
678 end block
679# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
680#endif
681# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
682 allocate (bub_r_src(0:m, 0:n, 0:p, 1:nb))
683# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
684
685# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
686
687# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
688#if defined(MFC_OpenACC)
689# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
690!$acc enter data create(bub_r_src)
691# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
692#elif defined(MFC_OpenMP)
693# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
694!$omp target enter data map(always,alloc:bub_r_src)
695# 59 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
696#endif
697#ifdef MFC_DEBUG
698# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
699 block
700# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
701 use iso_fortran_env, only: output_unit
702# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
703
704# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
705 print *, 'm_bubbles_EE.fpp:60: ', '@:ALLOCATE(bub_v_src(0:m, 0:n, 0:p, 1:nb))'
706# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
707
708# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
709 call flush (output_unit)
710# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
711 end block
712# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
713#endif
714# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
715 allocate (bub_v_src(0:m, 0:n, 0:p, 1:nb))
716# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
717
718# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
719
720# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
721#if defined(MFC_OpenACC)
722# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
723!$acc enter data create(bub_v_src)
724# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
725#elif defined(MFC_OpenMP)
726# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
727!$omp target enter data map(always,alloc:bub_v_src)
728# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
729#endif
730#ifdef MFC_DEBUG
731# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
732 block
733# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
734 use iso_fortran_env, only: output_unit
735# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
736
737# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
738 print *, 'm_bubbles_EE.fpp:61: ', '@:ALLOCATE(bub_p_src(0:m, 0:n, 0:p, 1:nb))'
739# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
740
741# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
742 call flush (output_unit)
743# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
744 end block
745# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
746#endif
747# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
748 allocate (bub_p_src(0:m, 0:n, 0:p, 1:nb))
749# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
750
751# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
752
753# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
754#if defined(MFC_OpenACC)
755# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
756!$acc enter data create(bub_p_src)
757# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
758#elif defined(MFC_OpenMP)
759# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
760!$omp target enter data map(always,alloc:bub_p_src)
761# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
762#endif
763#ifdef MFC_DEBUG
764# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
765 block
766# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
767 use iso_fortran_env, only: output_unit
768# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
769
770# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
771 print *, 'm_bubbles_EE.fpp:62: ', '@:ALLOCATE(bub_m_src(0:m, 0:n, 0:p, 1:nb))'
772# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
773
774# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
775 call flush (output_unit)
776# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
777 end block
778# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
779#endif
780# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
781 allocate (bub_m_src(0:m, 0:n, 0:p, 1:nb))
782# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
783
784# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
785
786# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
787#if defined(MFC_OpenACC)
788# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
789!$acc enter data create(bub_m_src)
790# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
791#elif defined(MFC_OpenMP)
792# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
793!$omp target enter data map(always,alloc:bub_m_src)
794# 62 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
795#endif
796
797 if (adap_dt .and. f_is_default(adap_dt_tol)) adap_dt_tol = dflt_adap_dt_tol
798
799 end subroutine s_initialize_bubbles_ee_module
800
801 !> Compute the bubble volume fraction alpha from the bubble number density
802 subroutine s_comp_alpha_from_n(q_cons_vf)
803
804 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
805 real(wp) :: nR3bar
806 integer(wp) :: i, j, k, l
807
808
809# 75 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
810
811# 75 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
812#if defined(MFC_OpenACC)
813# 75 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
814!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k, l, nR3bar)
815# 75 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
816#elif defined(MFC_OpenMP)
817# 75 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
818
819# 75 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
820
821# 75 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
822
823# 75 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
824!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l, nR3bar)
825# 75 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
826#endif
827 do l = 0, p
828 do k = 0, n
829 do j = 0, m
830 nr3bar = 0._wp
831
832# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
833#if defined(MFC_OpenACC)
834# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
835!$acc loop seq
836# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
837#elif defined(MFC_OpenMP)
838# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
839
840# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
841#endif
842 do i = 1, nb
843 nr3bar = nr3bar + weight(i)*(q_cons_vf(rs(i))%sf(j, k, l))**3._wp
844 end do
845 q_cons_vf(eqn_idx%alf)%sf(j, k, l) = (4._wp*pi*nr3bar)/(3._wp*q_cons_vf(eqn_idx%n)%sf(j, k, l)**2._wp)
846 end do
847 end do
848 end do
849
850# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
851#if defined(MFC_OpenACC)
852# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
853!$acc end parallel loop
854# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
855#elif defined(MFC_OpenMP)
856# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
857
858# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
859!$omp end target teams loop
860# 88 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
861#endif
862
863 end subroutine s_comp_alpha_from_n
864
865 !> Compute the right-hand side for Euler-Euler bubble transport
866 subroutine s_compute_bubbles_ee_rhs(idir, q_prim_vf, divu_in)
867
868 integer, intent(in) :: idir
869 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
870 type(scalar_field), intent(inout) :: divu_in !< matrix for div(u)
871 integer :: j, k, l
872
873 if (idir == 1) then
874 if (.not. qbmm) then
875
876# 102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
877
878# 102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
879#if defined(MFC_OpenACC)
880# 102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
881!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
882# 102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
883#elif defined(MFC_OpenMP)
884# 102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
885
886# 102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
887
888# 102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
889
890# 102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
891!$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)
892# 102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
893#endif
894 do l = 0, p
895 do k = 0, n
896 do j = 0, m
897 divu_in%sf(j, k, l) = 0._wp
898 divu_in%sf(j, k, l) = 5.e-1_wp/dx(j)*(q_prim_vf(eqn_idx%cont%end + idir)%sf(j + 1, k, &
899 & l) - q_prim_vf(eqn_idx%cont%end + idir)%sf(j - 1, k, l))
900 end do
901 end do
902 end do
903
904# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
905#if defined(MFC_OpenACC)
906# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
907!$acc end parallel loop
908# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
909#elif defined(MFC_OpenMP)
910# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
911
912# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
913!$omp end target teams loop
914# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
915#endif
916 end if
917 else if (idir == 2) then
918
919# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
920
921# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
922#if defined(MFC_OpenACC)
923# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
924!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
925# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
926#elif defined(MFC_OpenMP)
927# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
928
929# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
930
931# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
932
933# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
934!$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)
935# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
936#endif
937 do l = 0, p
938 do k = 0, n
939 do j = 0, m
940 divu_in%sf(j, k, l) = divu_in%sf(j, k, l) + 5.e-1_wp/dy(k)*(q_prim_vf(eqn_idx%cont%end + idir)%sf(j, &
941 & k + 1, l) - q_prim_vf(eqn_idx%cont%end + idir)%sf(j, k - 1, l))
942 end do
943 end do
944 end do
945
946# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
947#if defined(MFC_OpenACC)
948# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
949!$acc end parallel loop
950# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
951#elif defined(MFC_OpenMP)
952# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
953
954# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
955!$omp end target teams loop
956# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
957#endif
958 else if (idir == 3) then
959
960# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
961
962# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
963#if defined(MFC_OpenACC)
964# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
965!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
966# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
967#elif defined(MFC_OpenMP)
968# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
969
970# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
971
972# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
973
974# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
975!$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)
976# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
977#endif
978 do l = 0, p
979 do k = 0, n
980 do j = 0, m
981 divu_in%sf(j, k, l) = divu_in%sf(j, k, l) + 5.e-1_wp/dz(l)*(q_prim_vf(eqn_idx%cont%end + idir)%sf(j, k, &
982 & l + 1) - q_prim_vf(eqn_idx%cont%end + idir)%sf(j, k, l - 1))
983 end do
984 end do
985 end do
986
987# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
988#if defined(MFC_OpenACC)
989# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
990!$acc end parallel loop
991# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
992#elif defined(MFC_OpenMP)
993# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
994
995# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
996!$omp end target teams loop
997# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
998#endif
999 end if
1000
1001 end subroutine s_compute_bubbles_ee_rhs
1002
1003 !> Compute the Euler-Euler bubble source terms
1004 impure subroutine s_compute_bubble_ee_source(q_cons_vf, q_prim_vf, rhs_vf, divu_in)
1005
1006 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1007 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
1008 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
1009 type(scalar_field), intent(in) :: divu_in !< matrix for div(u)
1010 real(wp) :: rddot
1011 real(wp) :: pb_local, mv_local, vflux, pbdot
1012 real(wp) :: n_tait, b_tait
1013
1014# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1015 real(wp), dimension(nb) :: rtmp, vtmp
1016 real(wp), dimension(num_fluids) :: myalpha, myalpha_rho
1017# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1018 real(wp) :: myr, myv, alf, myp, myrho, r2vav, r3
1019 real(wp) :: nbub !< Bubble number density
1020 integer :: i, j, k, l, q, ii !< Loop variables
1021 integer :: adap_dt_stop_max, adap_dt_stop !< Fail-safe exit if max iteration count reached
1022 integer :: dmbub_id !< Dummy variables for unified subgrid bubble subroutines
1023 real(wp) :: dmmass_v, dmmass_n, dmbeta_c, dmbeta_t, dmcson
1024
1025
1026# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1027
1028# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1029#if defined(MFC_OpenACC)
1030# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1031!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, q)
1032# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1033#elif defined(MFC_OpenMP)
1034# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1035
1036# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1037
1038# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1039
1040# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1041!$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, q)
1042# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1043#endif
1044 do l = 0, p
1045 do k = 0, n
1046 do j = 0, m
1047 bub_adv_src(j, k, l) = 0._wp
1048
1049
1050# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1051#if defined(MFC_OpenACC)
1052# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1053!$acc loop seq
1054# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1055#elif defined(MFC_OpenMP)
1056# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1057
1058# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1059#endif
1060 do q = 1, nb
1061 bub_r_src(j, k, l, q) = 0._wp
1062 bub_v_src(j, k, l, q) = 0._wp
1063 bub_p_src(j, k, l, q) = 0._wp
1064 bub_m_src(j, k, l, q) = 0._wp
1065 end do
1066 end do
1067 end do
1068 end do
1069
1070# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1071#if defined(MFC_OpenACC)
1072# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1073!$acc end parallel loop
1074# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1075#elif defined(MFC_OpenMP)
1076# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1077
1078# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1079!$omp end target teams loop
1080# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1081#endif
1082
1083 adap_dt_stop_max = 0
1084
1085# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1086
1087# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1088#if defined(MFC_OpenACC)
1089# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1090!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, Rtmp, Vtmp, myalpha_rho, myalpha, myR, myV, alf, myP, myRho, R2Vav, R3, nbub, pb_local, mv_local, vflux, pbdot, rddot, n_tait, B_tait) reduction(MAX:adap_dt_stop_max) copy(adap_dt_stop_max)
1091# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1092#elif defined(MFC_OpenMP)
1093# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1094
1095# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1096
1097# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1098
1099# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1100!$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, Rtmp, Vtmp, myalpha_rho, myalpha, myR, myV, alf, myP, myRho, R2Vav, R3, nbub, pb_local, mv_local, vflux, pbdot, rddot, n_tait, B_tait) reduction(MAX:adap_dt_stop_max) map(tofrom:adap_dt_stop_max)
1101# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1102#endif
1103# 187 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1104 do l = 0, p
1105 do k = 0, n
1106 do j = 0, m
1107 if (adv_n) then
1108 nbub = q_prim_vf(eqn_idx%n)%sf(j, k, l)
1109 else
1110
1111# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1112#if defined(MFC_OpenACC)
1113# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1114!$acc loop seq
1115# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1116#elif defined(MFC_OpenMP)
1117# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1118
1119# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1120#endif
1121 do q = 1, nb
1122 rtmp(q) = q_prim_vf(rs(q))%sf(j, k, l)
1123 vtmp(q) = q_prim_vf(vs(q))%sf(j, k, l)
1124 end do
1125
1126 r3 = 0._wp
1127
1128
1129# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1130#if defined(MFC_OpenACC)
1131# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1132!$acc loop seq
1133# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1134#elif defined(MFC_OpenMP)
1135# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1136
1137# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1138#endif
1139 do q = 1, nb
1140 r3 = r3 + weight(q)*rtmp(q)**3._wp
1141 end do
1142
1143 nbub = (3._wp/(4._wp*pi))*q_prim_vf(eqn_idx%alf)%sf(j, k, l)/r3
1144 end if
1145
1146 if (.not. adap_dt) then
1147 r2vav = 0._wp
1148
1149
1150# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1151#if defined(MFC_OpenACC)
1152# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1153!$acc loop seq
1154# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1155#elif defined(MFC_OpenMP)
1156# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1157
1158# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1159#endif
1160 do q = 1, nb
1161 r2vav = r2vav + weight(q)*rtmp(q)**2._wp*vtmp(q)
1162 end do
1163
1164 bub_adv_src(j, k, l) = 4._wp*pi*nbub*r2vav
1165 end if
1166
1167
1168# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1169#if defined(MFC_OpenACC)
1170# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1171!$acc loop seq
1172# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1173#elif defined(MFC_OpenMP)
1174# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1175
1176# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1177#endif
1178 do q = 1, nb
1179
1180# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1181#if defined(MFC_OpenACC)
1182# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1183!$acc loop seq
1184# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1185#elif defined(MFC_OpenMP)
1186# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1187
1188# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1189#endif
1190 do ii = 1, num_fluids
1191 myalpha_rho(ii) = q_cons_vf(ii)%sf(j, k, l)
1192 myalpha(ii) = q_cons_vf(eqn_idx%adv%beg + ii - 1)%sf(j, k, l)
1193 end do
1194
1195 if (num_fluids == 1) then
1196 myrho = myalpha_rho(1)
1197 n_tait = gammas(1)
1198 b_tait = pi_infs(1)/pi_fac
1199 else
1200 myrho = 0._wp
1201 n_tait = 0._wp
1202 b_tait = 0._wp
1203
1204
1205# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1206#if defined(MFC_OpenACC)
1207# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1208!$acc loop seq
1209# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1210#elif defined(MFC_OpenMP)
1211# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1212
1213# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1214#endif
1215 do ii = 1, num_fluids
1216 myrho = myrho + myalpha_rho(ii)
1217 n_tait = n_tait + myalpha(ii)*gammas(ii)
1218 b_tait = b_tait + myalpha(ii)*pi_infs(ii)/pi_fac
1219 end do
1220 end if
1221
1222 n_tait = 1._wp/n_tait + 1._wp ! make this the usual little 'gamma'
1223 b_tait = b_tait*(n_tait - 1)/n_tait ! make this the usual pi_inf
1224
1225 myp = q_prim_vf(eqn_idx%E)%sf(j, k, l)
1226 alf = q_prim_vf(eqn_idx%alf)%sf(j, k, l)
1227 myr = q_prim_vf(rs(q))%sf(j, k, l)
1228 myv = q_prim_vf(vs(q))%sf(j, k, l)
1229
1230 if (alf < small_alf) then
1231 bub_adv_src(j, k, l) = 0._wp
1232 bub_r_src(j, k, l, q) = 0._wp
1233 bub_v_src(j, k, l, q) = 0._wp
1234 if (.not. polytropic) then
1235 bub_p_src(j, k, l, q) = 0._wp
1236 bub_m_src(j, k, l, q) = 0._wp
1237 end if
1238 else
1239 if (.not. polytropic) then
1240 pb_local = q_prim_vf(ps(q))%sf(j, k, l)
1241 mv_local = q_prim_vf(ms(q))%sf(j, k, l)
1242 call s_bwproperty(pb_local, q, chi_vw, k_mw, rho_mw)
1243 call s_vflux(myr, myv, pb_local, mv_local, q, vflux)
1244 pbdot = f_bpres_dot(vflux, myr, myv, pb_local, mv_local, q)
1245 bub_p_src(j, k, l, q) = nbub*pbdot
1246 bub_m_src(j, k, l, q) = nbub*vflux*4._wp*pi*(myr**2._wp)
1247 else
1248 pb_local = 0._wp; mv_local = 0._wp; vflux = 0._wp; pbdot = 0._wp
1249 end if
1250
1251 ! Adaptive time stepping
1252 if (adap_dt) then
1253 adap_dt_stop = 0
1254
1255 call s_advance_step(myrho, myp, myr, myv, r0(q), pb_local, pbdot, alf, n_tait, b_tait, &
1256 & bub_adv_src(j, k, l), divu_in%sf(j, k, l), dmbub_id, dmmass_v, dmmass_n, &
1257 & dmbeta_c, dmbeta_t, dmcson, adap_dt_stop)
1258
1259 q_cons_vf(rs(q))%sf(j, k, l) = nbub*myr
1260 q_cons_vf(vs(q))%sf(j, k, l) = nbub*myv
1261
1262 adap_dt_stop_max = max(adap_dt_stop_max, adap_dt_stop)
1263 else
1264 rddot = f_rddot(myrho, myp, myr, myv, r0(q), pb_local, pbdot, alf, n_tait, b_tait, bub_adv_src(j, &
1265 & k, l), divu_in%sf(j, k, l), dmcson)
1266 bub_v_src(j, k, l, q) = nbub*rddot
1267 bub_r_src(j, k, l, q) = q_cons_vf(vs(q))%sf(j, k, l)
1268 end if
1269 end if
1270 end do
1271 end do
1272 end do
1273 end do
1274
1275# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1276#if defined(MFC_OpenACC)
1277# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1278!$acc end parallel loop
1279# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1280#elif defined(MFC_OpenMP)
1281# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1282
1283# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1284!$omp end target teams loop
1285# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1286#endif
1287
1288 if (adap_dt .and. adap_dt_stop_max > 0) call s_mpi_abort("Adaptive time stepping failed to converge.")
1289
1290 if (.not. adap_dt) then
1291
1292# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1293
1294# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1295#if defined(MFC_OpenACC)
1296# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1297!$acc parallel loop collapse(3) gang vector default(present) private(i, k, l, q)
1298# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1299#elif defined(MFC_OpenMP)
1300# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1301
1302# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1303
1304# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1305
1306# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1307!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, k, l, q)
1308# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1309#endif
1310 do l = 0, p
1311 do q = 0, n
1312 do i = 0, m
1313 rhs_vf(eqn_idx%alf)%sf(i, q, l) = rhs_vf(eqn_idx%alf)%sf(i, q, l) + bub_adv_src(i, q, l)
1314 if (num_fluids > 1) rhs_vf(eqn_idx%adv%beg)%sf(i, q, l) = rhs_vf(eqn_idx%adv%beg)%sf(i, q, &
1315 & l) - bub_adv_src(i, q, l)
1316
1317# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1318#if defined(MFC_OpenACC)
1319# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1320!$acc loop seq
1321# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1322#elif defined(MFC_OpenMP)
1323# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1324
1325# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1326#endif
1327 do k = 1, nb
1328 rhs_vf(rs(k))%sf(i, q, l) = rhs_vf(rs(k))%sf(i, q, l) + bub_r_src(i, q, l, k)
1329 rhs_vf(vs(k))%sf(i, q, l) = rhs_vf(vs(k))%sf(i, q, l) + bub_v_src(i, q, l, k)
1330 if (polytropic .neqv. .true.) then
1331 rhs_vf(ps(k))%sf(i, q, l) = rhs_vf(ps(k))%sf(i, q, l) + bub_p_src(i, q, l, k)
1332 rhs_vf(ms(k))%sf(i, q, l) = rhs_vf(ms(k))%sf(i, q, l) + bub_m_src(i, q, l, k)
1333 end if
1334 end do
1335 end do
1336 end do
1337 end do
1338
1339# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1340#if defined(MFC_OpenACC)
1341# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1342!$acc end parallel loop
1343# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1344#elif defined(MFC_OpenMP)
1345# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1346
1347# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1348!$omp end target teams loop
1349# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1350#endif
1351 end if
1352
1353 end subroutine s_compute_bubble_ee_source
1354
1355end module m_bubbles_ee
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
integer, intent(in) k
integer, intent(in) j
integer, intent(in) l
Computes ensemble-averaged (Euler–Euler) bubble source terms for radius, velocity,...
subroutine s_comp_alpha_from_n(q_cons_vf)
Compute the bubble volume fraction alpha from the bubble number density.
integer, dimension(:), allocatable ms
real(wp), dimension(:,:,:), allocatable bub_adv_src
real(wp), dimension(:,:,:,:), allocatable bub_v_src
subroutine s_compute_bubbles_ee_rhs(idir, q_prim_vf, divu_in)
Compute the right-hand side for Euler-Euler bubble transport.
integer, dimension(:), allocatable vs
impure subroutine s_compute_bubble_ee_source(q_cons_vf, q_prim_vf, rhs_vf, divu_in)
Compute the Euler-Euler bubble source terms.
real(wp), dimension(:,:,:,:), allocatable bub_m_src
real(wp), dimension(:,:,:,:), allocatable bub_p_src
impure subroutine s_initialize_bubbles_ee_module
Initialize the Euler-Euler bubble module.
integer, dimension(:), allocatable ps
real(wp), dimension(:,:,:,:), allocatable bub_r_src
type(scalar_field) divu
matrix for div(u)
integer, dimension(:), allocatable rs
Shared bubble-dynamics procedures (radial acceleration, wall pressure, sound speed) for ensemble- and...
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 nb
Number of eq. bubble sizes.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
Derived type annexing a scalar field (SF).