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