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) = bub_idx%rs(l)
509 vs(l) = bub_idx%vs(l)
510 if (.not. polytropic) then
511 ps(l) = bub_idx%ps(l)
512 ms(l) = bub_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(alf_idx)%sf(j, k, l) = (4._wp*pi*nr3bar)/(3._wp*q_cons_vf(n_idx)%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(contxe + idir)%sf(j + 1, k, &
899 & l) - q_prim_vf(contxe + 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(contxe + idir)%sf(j, k + 1, &
941 & l) - q_prim_vf(contxe + 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(contxe + idir)%sf(j, k, &
982 & l + 1) - q_prim_vf(contxe + 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 real(wp) :: my_divu
1021 integer :: i, j, k, l, q, ii !< Loop variables
1022 integer :: adap_dt_stop_max, adap_dt_stop !< Fail-safe exit if max iteration count reached
1023 integer :: dmbub_id !< Dummy variables for unified subgrid bubble subroutines
1024 real(wp) :: dmmass_v, dmmass_n, dmbeta_c, dmbeta_t, dmcson
1025
1026
1027# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1028
1029# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1030#if defined(MFC_OpenACC)
1031# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1032!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, q)
1033# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1034#elif defined(MFC_OpenMP)
1035# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1036
1037# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1038
1039# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1040
1041# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1042!$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)
1043# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1044#endif
1045 do l = 0, p
1046 do k = 0, n
1047 do j = 0, m
1048 bub_adv_src(j, k, l) = 0._wp
1049
1050
1051# 172 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1052#if defined(MFC_OpenACC)
1053# 172 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1054!$acc loop seq
1055# 172 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1056#elif defined(MFC_OpenMP)
1057# 172 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1058
1059# 172 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1060#endif
1061 do q = 1, nb
1062 bub_r_src(j, k, l, q) = 0._wp
1063 bub_v_src(j, k, l, q) = 0._wp
1064 bub_p_src(j, k, l, q) = 0._wp
1065 bub_m_src(j, k, l, q) = 0._wp
1066 end do
1067 end do
1068 end do
1069 end do
1070
1071# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1072#if defined(MFC_OpenACC)
1073# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1074!$acc end parallel loop
1075# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1076#elif defined(MFC_OpenMP)
1077# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1078
1079# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1080!$omp end target teams loop
1081# 182 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1082#endif
1083
1084 adap_dt_stop_max = 0
1085
1086# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1087
1088# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1089#if defined(MFC_OpenACC)
1090# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1091!$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, my_divu) reduction(MAX:adap_dt_stop_max) copy(adap_dt_stop_max)
1092# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1093#elif defined(MFC_OpenMP)
1094# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1095
1096# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1097
1098# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1099
1100# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1101!$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, my_divu) reduction(MAX:adap_dt_stop_max) map(tofrom:adap_dt_stop_max)
1102# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1103#endif
1104# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1105 do l = 0, p
1106 do k = 0, n
1107 do j = 0, m
1108 if (adv_n) then
1109 nbub = q_prim_vf(n_idx)%sf(j, k, l)
1110 else
1111
1112# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1113#if defined(MFC_OpenACC)
1114# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1115!$acc loop seq
1116# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1117#elif defined(MFC_OpenMP)
1118# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1119
1120# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1121#endif
1122 do q = 1, nb
1123 rtmp(q) = q_prim_vf(rs(q))%sf(j, k, l)
1124 vtmp(q) = q_prim_vf(vs(q))%sf(j, k, l)
1125 end do
1126
1127 r3 = 0._wp
1128
1129
1130# 202 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1131#if defined(MFC_OpenACC)
1132# 202 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1133!$acc loop seq
1134# 202 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1135#elif defined(MFC_OpenMP)
1136# 202 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1137
1138# 202 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1139#endif
1140 do q = 1, nb
1141 r3 = r3 + weight(q)*rtmp(q)**3._wp
1142 end do
1143
1144 nbub = (3._wp/(4._wp*pi))*q_prim_vf(alf_idx)%sf(j, k, l)/r3
1145 end if
1146
1147 if (.not. adap_dt) then
1148 r2vav = 0._wp
1149
1150
1151# 213 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1152#if defined(MFC_OpenACC)
1153# 213 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1154!$acc loop seq
1155# 213 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1156#elif defined(MFC_OpenMP)
1157# 213 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1158
1159# 213 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1160#endif
1161 do q = 1, nb
1162 r2vav = r2vav + weight(q)*rtmp(q)**2._wp*vtmp(q)
1163 end do
1164
1165 bub_adv_src(j, k, l) = 4._wp*pi*nbub*r2vav
1166 end if
1167
1168
1169# 221 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1170#if defined(MFC_OpenACC)
1171# 221 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1172!$acc loop seq
1173# 221 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1174#elif defined(MFC_OpenMP)
1175# 221 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1176
1177# 221 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1178#endif
1179 do q = 1, nb
1180
1181# 223 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1182#if defined(MFC_OpenACC)
1183# 223 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1184!$acc loop seq
1185# 223 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1186#elif defined(MFC_OpenMP)
1187# 223 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1188
1189# 223 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1190#endif
1191 do ii = 1, num_fluids
1192 myalpha_rho(ii) = q_cons_vf(ii)%sf(j, k, l)
1193 myalpha(ii) = q_cons_vf(advxb + ii - 1)%sf(j, k, l)
1194 end do
1195
1196 if (num_fluids == 1) then
1197 myrho = myalpha_rho(1)
1198 n_tait = gammas(1)
1199 b_tait = pi_infs(1)/pi_fac
1200 else
1201 myrho = 0._wp
1202 n_tait = 0._wp
1203 b_tait = 0._wp
1204
1205
1206# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1207#if defined(MFC_OpenACC)
1208# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1209!$acc loop seq
1210# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1211#elif defined(MFC_OpenMP)
1212# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1213
1214# 238 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1215#endif
1216 do ii = 1, num_fluids
1217 myrho = myrho + myalpha_rho(ii)
1218 n_tait = n_tait + myalpha(ii)*gammas(ii)
1219 b_tait = b_tait + myalpha(ii)*pi_infs(ii)/pi_fac
1220 end do
1221 end if
1222
1223 n_tait = 1._wp/n_tait + 1._wp ! make this the usual little 'gamma'
1224 b_tait = b_tait*(n_tait - 1)/n_tait ! make this the usual pi_inf
1225
1226 myp = q_prim_vf(e_idx)%sf(j, k, l)
1227 alf = q_prim_vf(alf_idx)%sf(j, k, l)
1228 myr = q_prim_vf(rs(q))%sf(j, k, l)
1229 myv = q_prim_vf(vs(q))%sf(j, k, l)
1230
1231 if (alf < small_alf) then
1232 bub_adv_src(j, k, l) = 0._wp
1233 bub_r_src(j, k, l, q) = 0._wp
1234 bub_v_src(j, k, l, q) = 0._wp
1235 if (.not. polytropic) then
1236 bub_p_src(j, k, l, q) = 0._wp
1237 bub_m_src(j, k, l, q) = 0._wp
1238 end if
1239 else
1240 if (.not. polytropic) then
1241 pb_local = q_prim_vf(ps(q))%sf(j, k, l)
1242 mv_local = q_prim_vf(ms(q))%sf(j, k, l)
1243 call s_bwproperty(pb_local, q, chi_vw, k_mw, rho_mw)
1244 call s_vflux(myr, myv, pb_local, mv_local, q, vflux)
1245 pbdot = f_bpres_dot(vflux, myr, myv, pb_local, mv_local, q)
1246 bub_p_src(j, k, l, q) = nbub*pbdot
1247 bub_m_src(j, k, l, q) = nbub*vflux*4._wp*pi*(myr**2._wp)
1248 else
1249 pb_local = 0._wp; mv_local = 0._wp; vflux = 0._wp; pbdot = 0._wp
1250 end if
1251
1252 ! Adaptive time stepping
1253 if (adap_dt) then
1254 adap_dt_stop = 0
1255
1256 call s_advance_step(myrho, myp, myr, myv, r0(q), pb_local, pbdot, alf, n_tait, b_tait, &
1257 & bub_adv_src(j, k, l), divu_in%sf(j, k, l), dmbub_id, dmmass_v, dmmass_n, &
1258 & dmbeta_c, dmbeta_t, dmcson, adap_dt_stop)
1259
1260 q_cons_vf(rs(q))%sf(j, k, l) = nbub*myr
1261 q_cons_vf(vs(q))%sf(j, k, l) = nbub*myv
1262
1263 adap_dt_stop_max = max(adap_dt_stop_max, adap_dt_stop)
1264 else
1265 rddot = f_rddot(myrho, myp, myr, myv, r0(q), pb_local, pbdot, alf, n_tait, b_tait, bub_adv_src(j, &
1266 & k, l), divu_in%sf(j, k, l), dmcson)
1267 bub_v_src(j, k, l, q) = nbub*rddot
1268 bub_r_src(j, k, l, q) = q_cons_vf(vs(q))%sf(j, k, l)
1269 end if
1270 end if
1271 end do
1272 end do
1273 end do
1274 end do
1275
1276# 298 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1277#if defined(MFC_OpenACC)
1278# 298 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1279!$acc end parallel loop
1280# 298 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1281#elif defined(MFC_OpenMP)
1282# 298 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1283
1284# 298 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1285!$omp end target teams loop
1286# 298 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1287#endif
1288
1289 if (adap_dt .and. adap_dt_stop_max > 0) call s_mpi_abort("Adaptive time stepping failed to converge.")
1290
1291 if (.not. adap_dt) then
1292
1293# 303 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1294
1295# 303 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1296#if defined(MFC_OpenACC)
1297# 303 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1298!$acc parallel loop collapse(3) gang vector default(present) private(i, k, l, q)
1299# 303 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1300#elif defined(MFC_OpenMP)
1301# 303 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1302
1303# 303 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1304
1305# 303 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1306
1307# 303 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1308!$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)
1309# 303 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1310#endif
1311 do l = 0, p
1312 do q = 0, n
1313 do i = 0, m
1314 rhs_vf(alf_idx)%sf(i, q, l) = rhs_vf(alf_idx)%sf(i, q, l) + bub_adv_src(i, q, l)
1315 if (num_fluids > 1) rhs_vf(advxb)%sf(i, q, l) = rhs_vf(advxb)%sf(i, q, 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).