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. NVIDIA unified memory page placement hint
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
1022# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1023 real(wp), dimension(nb) :: rtmp, vtmp
1024 real(wp), dimension(num_fluids) :: myalpha, myalpha_rho
1025# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1026 real(wp) :: myr, myv, alf, myp, myrho, r2vav, r3
1027 real(wp) :: nbub !< Bubble number density
1028 integer :: i, j, k, l, q, ii !< Loop variables
1029 integer :: adap_dt_stop_max, adap_dt_stop !< Fail-safe exit if max iteration count reached
1030 integer :: dmbub_id !< Dummy variables for unified subgrid bubble subroutines
1031 real(wp) :: dmmass_v, dmmass_n, dmbeta_c, dmbeta_t, dmcson
1032
1033
1034# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1035
1036# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1037#if defined(MFC_OpenACC)
1038# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1039!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l, q)
1040# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1041#elif defined(MFC_OpenMP)
1042# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1043
1044# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1045
1046# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1047
1048# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1049!$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)
1050# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1051#endif
1052 do l = 0, p
1053 do k = 0, n
1054 do j = 0, m
1055 bub_adv_src(j, k, l) = 0._wp
1056
1057
1058# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1059#if defined(MFC_OpenACC)
1060# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1061!$acc loop seq
1062# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1063#elif defined(MFC_OpenMP)
1064# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1065
1066# 171 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1067#endif
1068 do q = 1, nb
1069 bub_r_src(j, k, l, q) = 0._wp
1070 bub_v_src(j, k, l, q) = 0._wp
1071 bub_p_src(j, k, l, q) = 0._wp
1072 bub_m_src(j, k, l, q) = 0._wp
1073 end do
1074 end do
1075 end do
1076 end do
1077
1078# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1079#if defined(MFC_OpenACC)
1080# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1081!$acc end parallel loop
1082# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1083#elif defined(MFC_OpenMP)
1084# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1085
1086# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1087!$omp end target teams loop
1088# 181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1089#endif
1090
1091 adap_dt_stop_max = 0
1092
1093# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1094
1095# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1096#if defined(MFC_OpenACC)
1097# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1098!$acc parallel loop collapse(3) gang vector default(present) &
1099# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1100!$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) reduction(MAX:adap_dt_stop_max) &
1101# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1102!$acc& copy(adap_dt_stop_max)
1103# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1104#elif defined(MFC_OpenMP)
1105# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1106
1107# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1108
1109# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1110
1111# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1112!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
1113# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1114!$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) reduction(MAX:adap_dt_stop_max) &
1115# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1116!$omp& map(tofrom:adap_dt_stop_max)
1117# 184 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1118#endif
1119# 187 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1120 do l = 0, p
1121 do k = 0, n
1122 do j = 0, m
1123 if (adv_n) then
1124 nbub = q_prim_vf(eqn_idx%n)%sf(j, k, l)
1125 else
1126
1127# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1128#if defined(MFC_OpenACC)
1129# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1130!$acc loop seq
1131# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1132#elif defined(MFC_OpenMP)
1133# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1134
1135# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1136#endif
1137 do q = 1, nb
1138 rtmp(q) = q_prim_vf(rs(q))%sf(j, k, l)
1139 vtmp(q) = q_prim_vf(vs(q))%sf(j, k, l)
1140 end do
1141
1142 r3 = 0._wp
1143
1144
1145# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1146#if defined(MFC_OpenACC)
1147# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1148!$acc loop seq
1149# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1150#elif defined(MFC_OpenMP)
1151# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1152
1153# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1154#endif
1155 do q = 1, nb
1156 r3 = r3 + weight(q)*rtmp(q)**3._wp
1157 end do
1158
1159 nbub = (3._wp/(4._wp*pi))*q_prim_vf(eqn_idx%alf)%sf(j, k, l)/r3
1160 end if
1161
1162 if (.not. adap_dt) then
1163 r2vav = 0._wp
1164
1165
1166# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1167#if defined(MFC_OpenACC)
1168# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1169!$acc loop seq
1170# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1171#elif defined(MFC_OpenMP)
1172# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1173
1174# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1175#endif
1176 do q = 1, nb
1177 r2vav = r2vav + weight(q)*rtmp(q)**2._wp*vtmp(q)
1178 end do
1179
1180 bub_adv_src(j, k, l) = 4._wp*pi*nbub*r2vav
1181 end if
1182
1183
1184# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1185#if defined(MFC_OpenACC)
1186# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1187!$acc loop seq
1188# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1189#elif defined(MFC_OpenMP)
1190# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1191
1192# 220 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1193#endif
1194 do q = 1, nb
1195
1196# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1197#if defined(MFC_OpenACC)
1198# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1199!$acc loop seq
1200# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1201#elif defined(MFC_OpenMP)
1202# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1203
1204# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1205#endif
1206 do ii = 1, num_fluids
1207 myalpha_rho(ii) = q_cons_vf(ii)%sf(j, k, l)
1208 myalpha(ii) = q_cons_vf(eqn_idx%adv%beg + ii - 1)%sf(j, k, l)
1209 end do
1210
1211 if (num_fluids == 1) then
1212 myrho = myalpha_rho(1)
1213 n_tait = gammas(1)
1214 b_tait = pi_infs(1)/pi_fac
1215 else
1216 myrho = 0._wp
1217 n_tait = 0._wp
1218 b_tait = 0._wp
1219
1220
1221# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1222#if defined(MFC_OpenACC)
1223# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1224!$acc loop seq
1225# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1226#elif defined(MFC_OpenMP)
1227# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1228
1229# 237 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1230#endif
1231 do ii = 1, num_fluids
1232 myrho = myrho + myalpha_rho(ii)
1233 n_tait = n_tait + myalpha(ii)*gammas(ii)
1234 b_tait = b_tait + myalpha(ii)*pi_infs(ii)/pi_fac
1235 end do
1236 end if
1237
1238 n_tait = 1._wp/n_tait + 1._wp ! make this the usual little 'gamma'
1239 b_tait = b_tait*(n_tait - 1)/n_tait ! make this the usual pi_inf
1240
1241 myp = q_prim_vf(eqn_idx%E)%sf(j, k, l)
1242 alf = q_prim_vf(eqn_idx%alf)%sf(j, k, l)
1243 myr = q_prim_vf(rs(q))%sf(j, k, l)
1244 myv = q_prim_vf(vs(q))%sf(j, k, l)
1245
1246 if (alf < small_alf) then
1247 bub_adv_src(j, k, l) = 0._wp
1248 bub_r_src(j, k, l, q) = 0._wp
1249 bub_v_src(j, k, l, q) = 0._wp
1250 if (.not. polytropic) then
1251 bub_p_src(j, k, l, q) = 0._wp
1252 bub_m_src(j, k, l, q) = 0._wp
1253 end if
1254 else
1255 if (.not. polytropic) then
1256 pb_local = q_prim_vf(ps(q))%sf(j, k, l)
1257 mv_local = q_prim_vf(ms(q))%sf(j, k, l)
1258 call s_bwproperty(pb_local, q, chi_vw, k_mw, rho_mw)
1259 call s_vflux(myr, myv, pb_local, mv_local, q, vflux)
1260 pbdot = f_bpres_dot(vflux, myr, myv, pb_local, mv_local, q)
1261 bub_p_src(j, k, l, q) = nbub*pbdot
1262 bub_m_src(j, k, l, q) = nbub*vflux*4._wp*pi*(myr**2._wp)
1263 else
1264 pb_local = 0._wp; mv_local = 0._wp; vflux = 0._wp; pbdot = 0._wp
1265 end if
1266
1267 ! Adaptive time stepping
1268 if (adap_dt) then
1269 adap_dt_stop = 0
1270
1271 call s_advance_step(myrho, myp, myr, myv, r0(q), pb_local, pbdot, alf, n_tait, b_tait, &
1272 & bub_adv_src(j, k, l), divu_in%sf(j, k, l), dmbub_id, dmmass_v, dmmass_n, &
1273 & dmbeta_c, dmbeta_t, dmcson, adap_dt_stop)
1274
1275 q_cons_vf(rs(q))%sf(j, k, l) = nbub*myr
1276 q_cons_vf(vs(q))%sf(j, k, l) = nbub*myv
1277
1278 adap_dt_stop_max = max(adap_dt_stop_max, adap_dt_stop)
1279 else
1280 rddot = f_rddot(myrho, myp, myr, myv, r0(q), pb_local, pbdot, alf, n_tait, b_tait, bub_adv_src(j, &
1281 & k, l), divu_in%sf(j, k, l), dmcson)
1282 bub_v_src(j, k, l, q) = nbub*rddot
1283 bub_r_src(j, k, l, q) = q_cons_vf(vs(q))%sf(j, k, l)
1284 end if
1285 end if
1286 end do
1287 end do
1288 end do
1289 end do
1290
1291# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1292#if defined(MFC_OpenACC)
1293# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1294!$acc end parallel loop
1295# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1296#elif defined(MFC_OpenMP)
1297# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1298
1299# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1300!$omp end target teams loop
1301# 297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1302#endif
1303
1304 if (adap_dt .and. adap_dt_stop_max > 0) call s_mpi_abort("Adaptive time stepping failed to converge.")
1305
1306 if (.not. adap_dt) then
1307
1308# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1309
1310# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1311#if defined(MFC_OpenACC)
1312# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1313!$acc parallel loop collapse(3) gang vector default(present) private(i, k, l, q)
1314# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1315#elif defined(MFC_OpenMP)
1316# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1317
1318# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1319
1320# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1321
1322# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1323!$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)
1324# 302 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1325#endif
1326 do l = 0, p
1327 do q = 0, n
1328 do i = 0, m
1329 rhs_vf(eqn_idx%alf)%sf(i, q, l) = rhs_vf(eqn_idx%alf)%sf(i, q, l) + bub_adv_src(i, q, l)
1330 if (num_fluids > 1) rhs_vf(eqn_idx%adv%beg)%sf(i, q, l) = rhs_vf(eqn_idx%adv%beg)%sf(i, q, &
1331 & l) - bub_adv_src(i, q, l)
1332
1333# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1334#if defined(MFC_OpenACC)
1335# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1336!$acc loop seq
1337# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1338#elif defined(MFC_OpenMP)
1339# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1340
1341# 309 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1342#endif
1343 do k = 1, nb
1344 rhs_vf(rs(k))%sf(i, q, l) = rhs_vf(rs(k))%sf(i, q, l) + bub_r_src(i, q, l, k)
1345 rhs_vf(vs(k))%sf(i, q, l) = rhs_vf(vs(k))%sf(i, q, l) + bub_v_src(i, q, l, k)
1346 if (polytropic .neqv. .true.) then
1347 rhs_vf(ps(k))%sf(i, q, l) = rhs_vf(ps(k))%sf(i, q, l) + bub_p_src(i, q, l, k)
1348 rhs_vf(ms(k))%sf(i, q, l) = rhs_vf(ms(k))%sf(i, q, l) + bub_m_src(i, q, l, k)
1349 end if
1350 end do
1351 end do
1352 end do
1353 end do
1354
1355# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1356#if defined(MFC_OpenACC)
1357# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1358!$acc end parallel loop
1359# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1360#elif defined(MFC_OpenMP)
1361# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1362
1363# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1364!$omp end target teams loop
1365# 321 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EE.fpp"
1366#endif
1367 end if
1368
1369 end subroutine s_compute_bubble_ee_source
1370
1371end 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 models.
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).