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