MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_bubbles_EL.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2!>
3!! @file
4!! @brief Contains module @ref m_bubbles_el "m_bubbles_EL"
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# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
21! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
22! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
23# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
24# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
25# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
26
27# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29
30# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43
44# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45! New line at end of file is required for FYPP
46# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
47# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
48# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
49# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54
55# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
61! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
62! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
63# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
64# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
65# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
66
67# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
69
70# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
71
72# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
73
74# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
75
76# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
77
78# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
79
80# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
81
82# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
83
84# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
85! New line at end of file is required for FYPP
86# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
87
88# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93
94# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95
96# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97
98# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99
100# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101
102# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103
104# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105
106# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107
108# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109
110# 95 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111
112# 100 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113
114# 105 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115
116# 110 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117
118# 115 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119
120# 120 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121
122# 125 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123
124# 130 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125
126# 135 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 165 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 219 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 233 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 258 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 269 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 271 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 282 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140
141# 332 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142
143# 342 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144
145# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146
147# 361 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148
149# 378 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
150
151# 388 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
152
153# 395 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
154
155# 401 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
156
157# 407 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
158
159# 413 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
160
161# 419 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
162
163# 425 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
164! New line at end of file is required for FYPP
165# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
166# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
167# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
168# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
173
174# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
175# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
177
178# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
179# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
180! Default for Fypp runs outside the toolchain (e.g. documentation). Searched last, so the
181! build/include/<target>/thermochem.fpp the toolchain writes from m_thermochem takes precedence.
182# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
183# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
184# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
185
186# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
187# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
188
189# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
190
191# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
192
193# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
194
195# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
196
197# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
198
199# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
200
201# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
202
203# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
204! New line at end of file is required for FYPP
205# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
206
207# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234
235# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236
237# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238
239# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240
241# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242
243# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244
245# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246
247# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248
249# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250
251# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252
253# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
254
255# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
256
257# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
258
259# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
260
261# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
262! New line at end of file is required for FYPP
263# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
264
265! GPU parallel region (scalar reductions, maxval/minval)
266# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
267
268! GPU parallel loop over threads (most common GPU macro)
269# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
270
271! Required closing for GPU_PARALLEL_LOOP
272# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
273
274! Mark routine for device compilation
275# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276
277! Declare device-resident data
278# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
279
280! Inner loop within a GPU parallel region
281# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
282
283! Scoped GPU data region
284# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
285
286! Host code with device pointers (for MPI with GPU buffers)
287# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
288
289! Allocate device memory (unscoped)
290# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
291
292! Free device memory
293# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
294
295! Atomic operation on device
296# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
297
298! End atomic capture block
299# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
300
301! Copy data between host and device
302# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
303
304! Synchronization barrier
305# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
306
307! Import GPU library module (openacc or omp_lib)
308# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
309
310! Emit code only for AMD compiler
311# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
312
313! Emit code for non-Cray compilers
314# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
315
316! Emit code only for Cray compiler
317# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
318
319! Emit code for non-NVIDIA compilers
320# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
321
322# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
323# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
324! New line at end of file is required for FYPP
325# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
326
327# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328
329! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
330! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
331! example see misc/nvidia_uvm/bind.sh.
332# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
333
334! Allocate and create GPU device memory
335# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
336
337! Free GPU device memory and deallocate
338# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
339
340! Cray-specific GPU pointer setup for vector fields
341# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
342
343! Cray-specific GPU pointer setup for scalar fields
344# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
345
346! Cray-specific GPU pointer setup for acoustic source spatials
347# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
348
349# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
350
351# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
352! New line at end of file is required for FYPP
353# 6 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp" 2
354
355!> @brief Tracks Lagrangian bubbles and couples their dynamics to the Eulerian flow via volume averaging
357
359 use m_mpi_proxy
361 use m_bubbles
363 use m_eos
367 use m_sim_helpers
368 use m_helper
369 use m_mpi_common
370 use m_ibm
373
374 implicit none
375
376 ! (nBub)
377 integer, allocatable, dimension(:,:) :: lag_id !< Global and local IDs
378 real(wp), allocatable, dimension(:) :: bub_r0 !< Initial bubble radius
379 real(wp), allocatable, dimension(:) :: rmax_stats !< Maximum radius
380 real(wp), allocatable, dimension(:) :: rmin_stats !< Minimum radius
381
382# 33 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
383#if defined(MFC_OpenACC)
384# 33 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
385!$acc declare create(lag_id, bub_R0, Rmax_stats, Rmin_stats)
386# 33 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
387#elif defined(MFC_OpenMP)
388# 33 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
389!$omp declare target (lag_id, bub_R0, Rmax_stats, Rmin_stats)
390# 33 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
391#endif
392# 34 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
393
394 real(wp), allocatable, dimension(:) :: gas_mg !< Bubble's gas mass
395 real(wp), allocatable, dimension(:) :: gas_betat !< heatflux model (Preston et al., 2007)
396 real(wp), allocatable, dimension(:) :: gas_betac !< massflux model (Preston et al., 2007)
397 real(wp), allocatable, dimension(:) :: bub_dphidt !< subgrid velocity potential (Maeda & Colonius, 2018)
398
399# 39 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
400#if defined(MFC_OpenACC)
401# 39 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
402!$acc declare create(gas_mg, gas_betaT, gas_betaC, bub_dphidt)
403# 39 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
404#elif defined(MFC_OpenMP)
405# 39 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
406!$omp declare target (gas_mg, gas_betaT, gas_betaC, bub_dphidt)
407# 39 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
408#endif
409# 40 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
410
411 ! (nBub, 1 -> actual val or 2 -> temp val)
412 real(wp), allocatable, dimension(:,:) :: gas_p !< Pressure in the bubble
413 real(wp), allocatable, dimension(:,:) :: gas_mv !< Vapor mass in the bubble
414 real(wp), allocatable, dimension(:,:) :: intfc_rad !< Bubble radius
415 real(wp), allocatable, dimension(:,:) :: intfc_vel !< Velocity of the bubble interface
416
417# 46 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
418#if defined(MFC_OpenACC)
419# 46 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
420!$acc declare create(gas_p, gas_mv, intfc_rad, intfc_vel)
421# 46 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
422#elif defined(MFC_OpenMP)
423# 46 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
424!$omp declare target (gas_p, gas_mv, intfc_rad, intfc_vel)
425# 46 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
426#endif
427# 47 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
428 ! (nBub, 1-> x or 2->y or 3 ->z, 1 -> actual or 2 -> temporal val)
429 real(wp), allocatable, dimension(:,:,:) :: mtn_pos !< Bubble's position
430 real(wp), allocatable, dimension(:,:,:) :: mtn_posprev !< Bubble's previous position
431 real(wp), allocatable, dimension(:,:,:) :: mtn_vel !< Bubble's velocity
432 real(wp), allocatable, dimension(:,:,:) :: mtn_s !< Bubble's computational cell position in real format
433
434# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
435#if defined(MFC_OpenACC)
436# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
437!$acc declare create(mtn_pos, mtn_posPrev, mtn_vel, mtn_s)
438# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
439#elif defined(MFC_OpenMP)
440# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
441!$omp declare target (mtn_pos, mtn_posPrev, mtn_vel, mtn_s)
442# 52 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
443#endif
444# 53 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
445 ! (nBub, 1-> x or 2->y or 3 ->z, time-stage)
446 real(wp), allocatable, dimension(:,:) :: intfc_draddt !< Time derivative of bubble's radius
447 real(wp), allocatable, dimension(:,:) :: intfc_dveldt !< Time derivative of bubble's interface velocity
448 real(wp), allocatable, dimension(:,:) :: gas_dpdt !< Time derivative of gas pressure
449 real(wp), allocatable, dimension(:,:) :: gas_dmvdt !< Time derivative of the vapor mass in the bubble
450 real(wp), allocatable, dimension(:,:,:) :: mtn_dposdt !< Time derivative of the bubble's position
451 real(wp), allocatable, dimension(:,:,:) :: mtn_dveldt !< Time derivative of the bubble's velocity
452
453# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
454#if defined(MFC_OpenACC)
455# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
456!$acc declare create(intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt)
457# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
458#elif defined(MFC_OpenMP)
459# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
460!$omp declare target (intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt)
461# 60 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
462#endif
463# 61 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
464
465 integer, private :: lag_num_ts !< Number of time stages in the time-stepping scheme
466
467# 63 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
468#if defined(MFC_OpenACC)
469# 63 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
470!$acc declare create(lag_num_ts)
471# 63 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
472#elif defined(MFC_OpenMP)
473# 63 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
474!$omp declare target (lag_num_ts)
475# 63 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
476#endif
477# 64 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
478
479 real(wp) :: rmax_glb, rmin_glb !< Maximum and minimum bubbe size in the local domain
480 !> Projection of the lagrangian particles in the Eulerian framework
481 type(scalar_field), dimension(:), allocatable :: q_beta
482 type(scalar_field), dimension(:), allocatable :: kahan_comp !< Kahan compensation for q_beta accumulation
483 integer :: q_beta_idx !< Size of the q_beta vector field
484
485
486# 71 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
487#if defined(MFC_OpenACC)
488# 71 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
489!$acc declare create(Rmax_glb, Rmin_glb, q_beta, kahan_comp, q_beta_idx)
490# 71 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
491#elif defined(MFC_OpenMP)
492# 71 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
493!$omp declare target (Rmax_glb, Rmin_glb, q_beta, kahan_comp, q_beta_idx)
494# 71 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
495#endif
496# 72 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
497
498 integer, parameter :: lag_evol_id = 11 ! File id for lag_bubbles_evol_*.dat
499 integer, parameter :: lag_stats_id = 12 ! File id for stats_lag_bubbles_*.dat
500 integer, parameter :: lag_void_id = 13 ! File id for voidfraction.dat
501 integer, allocatable, dimension(:) :: keep_bubble
502 integer, allocatable, dimension(:,:) :: wrap_bubble_loc, wrap_bubble_dir
503
504# 78 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
505#if defined(MFC_OpenACC)
506# 78 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
507!$acc declare create(keep_bubble)
508# 78 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
509#elif defined(MFC_OpenMP)
510# 78 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
511!$omp declare target (keep_bubble)
512# 78 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
513#endif
514# 79 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
515
516# 79 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
517#if defined(MFC_OpenACC)
518# 79 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
519!$acc declare create(wrap_bubble_loc, wrap_bubble_dir)
520# 79 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
521#elif defined(MFC_OpenMP)
522# 79 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
523!$omp declare target (wrap_bubble_loc, wrap_bubble_dir)
524# 79 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
525#endif
526# 80 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
527
528contains
529
530 !> Initializes the lagrangian subgrid bubble solver
531 impure subroutine s_initialize_bubbles_el_module(q_cons_vf, bc_type)
532
533 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
534 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
535 integer :: nbubs_glb, i
536
537 ! Setting number of time-stages for selected time-stepping scheme
538
539 lag_num_ts = time_stepper
540
541 ! Allocate space for the Eulerian fields needed to map the effect of the bubbles
542 if (lag_params%solver_approach == 1) then
543 ! One-way coupling
544 q_beta_idx = 3
545 else if (lag_params%solver_approach == 2) then
546 ! Two-way coupling
547 q_beta_idx = 4
548 if (p == 0) then
549 ! Subgrid noise model for 2D approximation
550 q_beta_idx = 6
551 end if
552 else
553 call s_mpi_abort('Please check the lag_params%solver_approach input')
554 end if
555
556 pcomm_coords(1)%beg = x_cb(-1)
557 pcomm_coords(1)%end = x_cb(m)
558
559# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
560#if defined(MFC_OpenACC)
561# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
562!$acc update device(pcomm_coords(1))
563# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
564#elif defined(MFC_OpenMP)
565# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
566!$omp target update to(pcomm_coords(1))
567# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
568#endif
569# 112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
570 if (n > 0) then
571 pcomm_coords(2)%beg = y_cb(-1)
572 pcomm_coords(2)%end = y_cb(n)
573
574# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
575#if defined(MFC_OpenACC)
576# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
577!$acc update device(pcomm_coords(2))
578# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
579#elif defined(MFC_OpenMP)
580# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
581!$omp target update to(pcomm_coords(2))
582# 115 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
583#endif
584# 116 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
585 if (p > 0) then
586 pcomm_coords(3)%beg = z_cb(-1)
587 pcomm_coords(3)%end = z_cb(p)
588
589# 119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
590#if defined(MFC_OpenACC)
591# 119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
592!$acc update device(pcomm_coords(3))
593# 119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
594#elif defined(MFC_OpenMP)
595# 119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
596!$omp target update to(pcomm_coords(3))
597# 119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
598#endif
599# 120 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
600 end if
601 end if
602
603
604# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
605#if defined(MFC_OpenACC)
606# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
607!$acc update device(lag_num_ts, q_beta_idx)
608# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
609#elif defined(MFC_OpenMP)
610# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
611!$omp target update to(lag_num_ts, q_beta_idx)
612# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
613#endif
614# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
615
616#ifdef MFC_DEBUG
617# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
618 block
619# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
620 use iso_fortran_env, only: output_unit
621# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
622
623# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
624 print *, 'm_bubbles_EL.fpp:125: ', '@:ALLOCATE(q_beta(1:q_beta_idx))'
625# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
626
627# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
628 call flush (output_unit)
629# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
630 end block
631# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
632#endif
633# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
634 allocate (q_beta(1:q_beta_idx))
635# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
636
637# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
638
639# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
640#if defined(MFC_OpenACC)
641# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
642!$acc enter data create(q_beta)
643# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
644#elif defined(MFC_OpenMP)
645# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
646!$omp target enter data map(always,alloc:q_beta)
647# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
648#endif
649# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
650 if (lag_params%kahan_summation) then
651#ifdef MFC_DEBUG
652# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
653 block
654# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
655 use iso_fortran_env, only: output_unit
656# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
657
658# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
659 print *, 'm_bubbles_EL.fpp:127: ', '@:ALLOCATE(kahan_comp(1:q_beta_idx))'
660# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
661
662# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
663 call flush (output_unit)
664# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
665 end block
666# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
667#endif
668# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
669 allocate (kahan_comp(1:q_beta_idx))
670# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
671
672# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
673
674# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
675#if defined(MFC_OpenACC)
676# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
677!$acc enter data create(kahan_comp)
678# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
679#elif defined(MFC_OpenMP)
680# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
681!$omp target enter data map(always,alloc:kahan_comp)
682# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
683#endif
684# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
685 end if
686
687 do i = 1, q_beta_idx
688#ifdef MFC_DEBUG
689# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
690 block
691# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
692 use iso_fortran_env, only: output_unit
693# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
694
695# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
696 print *, 'm_bubbles_EL.fpp:131: ', '@:ALLOCATE(q_beta(i)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
697# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
698
699# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
700 call flush (output_unit)
701# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
702 end block
703# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
704#endif
705# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
706 allocate (q_beta(i)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
707# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
708
709# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
710
711# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
712#if defined(MFC_OpenACC)
713# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
714!$acc enter data create(q_beta(i)%sf)
715# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
716#elif defined(MFC_OpenMP)
717# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
718!$omp target enter data map(always,alloc:q_beta(i)%sf)
719# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
720#endif
721# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
722#ifdef _CRAYFTN
723# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
724 block
725# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
726#ifdef MFC_DEBUG
727# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
728 block
729# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
730 use iso_fortran_env, only: output_unit
731# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
732
733# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
734 print *, 'm_bubbles_EL.fpp:132: ', '@:ACC_SETUP_SFs(q_beta(i))'
735# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
736
737# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
738 call flush (output_unit)
739# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
740 end block
741# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
742#endif
743# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
744
745# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
746
747# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
748#if defined(MFC_OpenACC)
749# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
750!$acc enter data copyin(q_beta(i))
751# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
752#elif defined(MFC_OpenMP)
753# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
754!$omp target enter data map(to:q_beta(i))
755# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
756#endif
757# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
758 if (associated(q_beta(i)%sf)) then
759# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
760
761# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
762#if defined(MFC_OpenACC)
763# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
764!$acc enter data copyin(q_beta(i)%sf)
765# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
766#elif defined(MFC_OpenMP)
767# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
768!$omp target enter data map(to:q_beta(i)%sf)
769# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
770#endif
771# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
772 end if
773# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
774 end block
775# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
776#endif
777# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
778 if (lag_params%kahan_summation) then
779#ifdef MFC_DEBUG
780# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
781 block
782# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
783 use iso_fortran_env, only: output_unit
784# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
785
786# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
787 print *, 'm_bubbles_EL.fpp:134: ', '@:ALLOCATE(kahan_comp(i)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
788# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
789
790# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
791 call flush (output_unit)
792# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
793 end block
794# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
795#endif
796# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
797 allocate (kahan_comp(i)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
798# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
799
800# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
801
802# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
803#if defined(MFC_OpenACC)
804# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
805!$acc enter data create(kahan_comp(i)%sf)
806# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
807#elif defined(MFC_OpenMP)
808# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
809!$omp target enter data map(always,alloc:kahan_comp(i)%sf)
810# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
811#endif
812# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
813#ifdef _CRAYFTN
814# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
815 block
816# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
817#ifdef MFC_DEBUG
818# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
819 block
820# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
821 use iso_fortran_env, only: output_unit
822# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
823
824# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
825 print *, 'm_bubbles_EL.fpp:136: ', '@:ACC_SETUP_SFs(kahan_comp(i))'
826# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
827
828# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
829 call flush (output_unit)
830# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
831 end block
832# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
833#endif
834# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
835
836# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
837
838# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
839#if defined(MFC_OpenACC)
840# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
841!$acc enter data copyin(kahan_comp(i))
842# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
843#elif defined(MFC_OpenMP)
844# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
845!$omp target enter data map(to:kahan_comp(i))
846# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
847#endif
848# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
849 if (associated(kahan_comp(i)%sf)) then
850# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
851
852# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
853#if defined(MFC_OpenACC)
854# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
855!$acc enter data copyin(kahan_comp(i)%sf)
856# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
857#elif defined(MFC_OpenMP)
858# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
859!$omp target enter data map(to:kahan_comp(i)%sf)
860# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
861#endif
862# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
863 end if
864# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
865 end block
866# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
867#endif
868# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
869 end if
870 end do
871
872 ! Allocating space for lagrangian variables
873 nbubs_glb = lag_params%nBubs_glb
874
875#ifdef MFC_DEBUG
876# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
877 block
878# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
879 use iso_fortran_env, only: output_unit
880# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
881
882# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
883 print *, 'm_bubbles_EL.fpp:143: ', '@:ALLOCATE(bub_R0(1:nBubs_glb))'
884# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
885
886# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
887 call flush (output_unit)
888# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
889 end block
890# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
891#endif
892# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
893 allocate (bub_r0(1:nbubs_glb))
894# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
895
896# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
897
898# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
899#if defined(MFC_OpenACC)
900# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
901!$acc enter data create(bub_R0)
902# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
903#elif defined(MFC_OpenMP)
904# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
905!$omp target enter data map(always,alloc:bub_R0)
906# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
907#endif
908# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
909#ifdef MFC_DEBUG
910# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
911 block
912# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
913 use iso_fortran_env, only: output_unit
914# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
915
916# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
917 print *, 'm_bubbles_EL.fpp:144: ', '@:ALLOCATE(Rmax_stats(1:nBubs_glb))'
918# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
919
920# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
921 call flush (output_unit)
922# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
923 end block
924# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
925#endif
926# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
927 allocate (rmax_stats(1:nbubs_glb))
928# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
929
930# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
931
932# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
933#if defined(MFC_OpenACC)
934# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
935!$acc enter data create(Rmax_stats)
936# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
937#elif defined(MFC_OpenMP)
938# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
939!$omp target enter data map(always,alloc:Rmax_stats)
940# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
941#endif
942# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
943#ifdef MFC_DEBUG
944# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
945 block
946# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
947 use iso_fortran_env, only: output_unit
948# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
949
950# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
951 print *, 'm_bubbles_EL.fpp:145: ', '@:ALLOCATE(Rmin_stats(1:nBubs_glb))'
952# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
953
954# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
955 call flush (output_unit)
956# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
957 end block
958# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
959#endif
960# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
961 allocate (rmin_stats(1:nbubs_glb))
962# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
963
964# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
965
966# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
967#if defined(MFC_OpenACC)
968# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
969!$acc enter data create(Rmin_stats)
970# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
971#elif defined(MFC_OpenMP)
972# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
973!$omp target enter data map(always,alloc:Rmin_stats)
974# 145 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
975#endif
976# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
977#ifdef MFC_DEBUG
978# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
979 block
980# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
981 use iso_fortran_env, only: output_unit
982# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
983
984# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
985 print *, 'm_bubbles_EL.fpp:146: ', '@:ALLOCATE(gas_mg(1:nBubs_glb))'
986# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
987
988# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
989 call flush (output_unit)
990# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
991 end block
992# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
993#endif
994# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
995 allocate (gas_mg(1:nbubs_glb))
996# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
997
998# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
999
1000# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1001#if defined(MFC_OpenACC)
1002# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1003!$acc enter data create(gas_mg)
1004# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1005#elif defined(MFC_OpenMP)
1006# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1007!$omp target enter data map(always,alloc:gas_mg)
1008# 146 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1009#endif
1010# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1011#ifdef MFC_DEBUG
1012# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1013 block
1014# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1015 use iso_fortran_env, only: output_unit
1016# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1017
1018# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1019 print *, 'm_bubbles_EL.fpp:147: ', '@:ALLOCATE(gas_betaT(1:nBubs_glb))'
1020# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1021
1022# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1023 call flush (output_unit)
1024# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1025 end block
1026# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1027#endif
1028# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1029 allocate (gas_betat(1:nbubs_glb))
1030# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1031
1032# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1033
1034# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1035#if defined(MFC_OpenACC)
1036# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1037!$acc enter data create(gas_betaT)
1038# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1039#elif defined(MFC_OpenMP)
1040# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1041!$omp target enter data map(always,alloc:gas_betaT)
1042# 147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1043#endif
1044# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1045#ifdef MFC_DEBUG
1046# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1047 block
1048# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1049 use iso_fortran_env, only: output_unit
1050# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1051
1052# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1053 print *, 'm_bubbles_EL.fpp:148: ', '@:ALLOCATE(gas_betaC(1:nBubs_glb))'
1054# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1055
1056# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1057 call flush (output_unit)
1058# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1059 end block
1060# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1061#endif
1062# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1063 allocate (gas_betac(1:nbubs_glb))
1064# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1065
1066# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1067
1068# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1069#if defined(MFC_OpenACC)
1070# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1071!$acc enter data create(gas_betaC)
1072# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1073#elif defined(MFC_OpenMP)
1074# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1075!$omp target enter data map(always,alloc:gas_betaC)
1076# 148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1077#endif
1078# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1079#ifdef MFC_DEBUG
1080# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1081 block
1082# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1083 use iso_fortran_env, only: output_unit
1084# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1085
1086# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1087 print *, 'm_bubbles_EL.fpp:149: ', '@:ALLOCATE(bub_dphidt(1:nBubs_glb))'
1088# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1089
1090# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1091 call flush (output_unit)
1092# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1093 end block
1094# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1095#endif
1096# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1097 allocate (bub_dphidt(1:nbubs_glb))
1098# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1099
1100# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1101
1102# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1103#if defined(MFC_OpenACC)
1104# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1105!$acc enter data create(bub_dphidt)
1106# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1107#elif defined(MFC_OpenMP)
1108# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1109!$omp target enter data map(always,alloc:bub_dphidt)
1110# 149 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1111#endif
1112# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1113#ifdef MFC_DEBUG
1114# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1115 block
1116# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1117 use iso_fortran_env, only: output_unit
1118# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1119
1120# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1121 print *, 'm_bubbles_EL.fpp:150: ', '@:ALLOCATE(lag_id(1:nBubs_glb, 1:2))'
1122# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1123
1124# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1125 call flush (output_unit)
1126# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1127 end block
1128# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1129#endif
1130# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1131 allocate (lag_id(1:nbubs_glb, 1:2))
1132# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1133
1134# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1135
1136# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1137#if defined(MFC_OpenACC)
1138# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1139!$acc enter data create(lag_id)
1140# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1141#elif defined(MFC_OpenMP)
1142# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1143!$omp target enter data map(always,alloc:lag_id)
1144# 150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1145#endif
1146# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1147#ifdef MFC_DEBUG
1148# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1149 block
1150# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1151 use iso_fortran_env, only: output_unit
1152# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1153
1154# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1155 print *, 'm_bubbles_EL.fpp:151: ', '@:ALLOCATE(gas_p(1:nBubs_glb, 1:2))'
1156# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1157
1158# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1159 call flush (output_unit)
1160# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1161 end block
1162# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1163#endif
1164# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1165 allocate (gas_p(1:nbubs_glb, 1:2))
1166# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1167
1168# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1169
1170# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1171#if defined(MFC_OpenACC)
1172# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1173!$acc enter data create(gas_p)
1174# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1175#elif defined(MFC_OpenMP)
1176# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1177!$omp target enter data map(always,alloc:gas_p)
1178# 151 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1179#endif
1180# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1181#ifdef MFC_DEBUG
1182# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1183 block
1184# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1185 use iso_fortran_env, only: output_unit
1186# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1187
1188# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1189 print *, 'm_bubbles_EL.fpp:152: ', '@:ALLOCATE(gas_mv(1:nBubs_glb, 1:2))'
1190# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1191
1192# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1193 call flush (output_unit)
1194# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1195 end block
1196# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1197#endif
1198# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1199 allocate (gas_mv(1:nbubs_glb, 1:2))
1200# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1201
1202# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1203
1204# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1205#if defined(MFC_OpenACC)
1206# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1207!$acc enter data create(gas_mv)
1208# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1209#elif defined(MFC_OpenMP)
1210# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1211!$omp target enter data map(always,alloc:gas_mv)
1212# 152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1213#endif
1214# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1215#ifdef MFC_DEBUG
1216# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1217 block
1218# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1219 use iso_fortran_env, only: output_unit
1220# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1221
1222# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1223 print *, 'm_bubbles_EL.fpp:153: ', '@:ALLOCATE(intfc_rad(1:nBubs_glb, 1:2))'
1224# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1225
1226# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1227 call flush (output_unit)
1228# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1229 end block
1230# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1231#endif
1232# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1233 allocate (intfc_rad(1:nbubs_glb, 1:2))
1234# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1235
1236# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1237
1238# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1239#if defined(MFC_OpenACC)
1240# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1241!$acc enter data create(intfc_rad)
1242# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1243#elif defined(MFC_OpenMP)
1244# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1245!$omp target enter data map(always,alloc:intfc_rad)
1246# 153 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1247#endif
1248# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1249#ifdef MFC_DEBUG
1250# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1251 block
1252# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1253 use iso_fortran_env, only: output_unit
1254# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1255
1256# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1257 print *, 'm_bubbles_EL.fpp:154: ', '@:ALLOCATE(intfc_vel(1:nBubs_glb, 1:2))'
1258# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1259
1260# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1261 call flush (output_unit)
1262# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1263 end block
1264# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1265#endif
1266# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1267 allocate (intfc_vel(1:nbubs_glb, 1:2))
1268# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1269
1270# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1271
1272# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1273#if defined(MFC_OpenACC)
1274# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1275!$acc enter data create(intfc_vel)
1276# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1277#elif defined(MFC_OpenMP)
1278# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1279!$omp target enter data map(always,alloc:intfc_vel)
1280# 154 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1281#endif
1282# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1283#ifdef MFC_DEBUG
1284# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1285 block
1286# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1287 use iso_fortran_env, only: output_unit
1288# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1289
1290# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1291 print *, 'm_bubbles_EL.fpp:155: ', '@:ALLOCATE(mtn_pos(1:nBubs_glb, 1:3, 1:2))'
1292# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1293
1294# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1295 call flush (output_unit)
1296# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1297 end block
1298# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1299#endif
1300# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1301 allocate (mtn_pos(1:nbubs_glb, 1:3, 1:2))
1302# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1303
1304# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1305
1306# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1307#if defined(MFC_OpenACC)
1308# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1309!$acc enter data create(mtn_pos)
1310# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1311#elif defined(MFC_OpenMP)
1312# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1313!$omp target enter data map(always,alloc:mtn_pos)
1314# 155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1315#endif
1316# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1317#ifdef MFC_DEBUG
1318# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1319 block
1320# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1321 use iso_fortran_env, only: output_unit
1322# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1323
1324# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1325 print *, 'm_bubbles_EL.fpp:156: ', '@:ALLOCATE(mtn_posPrev(1:nBubs_glb, 1:3, 1:2))'
1326# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1327
1328# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1329 call flush (output_unit)
1330# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1331 end block
1332# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1333#endif
1334# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1335 allocate (mtn_posprev(1:nbubs_glb, 1:3, 1:2))
1336# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1337
1338# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1339
1340# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1341#if defined(MFC_OpenACC)
1342# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1343!$acc enter data create(mtn_posPrev)
1344# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1345#elif defined(MFC_OpenMP)
1346# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1347!$omp target enter data map(always,alloc:mtn_posPrev)
1348# 156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1349#endif
1350# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1351#ifdef MFC_DEBUG
1352# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1353 block
1354# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1355 use iso_fortran_env, only: output_unit
1356# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1357
1358# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1359 print *, 'm_bubbles_EL.fpp:157: ', '@:ALLOCATE(mtn_vel(1:nBubs_glb, 1:3, 1:2))'
1360# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1361
1362# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1363 call flush (output_unit)
1364# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1365 end block
1366# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1367#endif
1368# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1369 allocate (mtn_vel(1:nbubs_glb, 1:3, 1:2))
1370# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1371
1372# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1373
1374# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1375#if defined(MFC_OpenACC)
1376# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1377!$acc enter data create(mtn_vel)
1378# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1379#elif defined(MFC_OpenMP)
1380# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1381!$omp target enter data map(always,alloc:mtn_vel)
1382# 157 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1383#endif
1384# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1385#ifdef MFC_DEBUG
1386# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1387 block
1388# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1389 use iso_fortran_env, only: output_unit
1390# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1391
1392# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1393 print *, 'm_bubbles_EL.fpp:158: ', '@:ALLOCATE(mtn_s(1:nBubs_glb, 1:3, 1:2))'
1394# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1395
1396# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1397 call flush (output_unit)
1398# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1399 end block
1400# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1401#endif
1402# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1403 allocate (mtn_s(1:nbubs_glb, 1:3, 1:2))
1404# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1405
1406# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1407
1408# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1409#if defined(MFC_OpenACC)
1410# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1411!$acc enter data create(mtn_s)
1412# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1413#elif defined(MFC_OpenMP)
1414# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1415!$omp target enter data map(always,alloc:mtn_s)
1416# 158 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1417#endif
1418# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1419#ifdef MFC_DEBUG
1420# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1421 block
1422# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1423 use iso_fortran_env, only: output_unit
1424# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1425
1426# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1427 print *, 'm_bubbles_EL.fpp:159: ', '@:ALLOCATE(intfc_draddt(1:nBubs_glb, 1:lag_num_ts))'
1428# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1429
1430# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1431 call flush (output_unit)
1432# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1433 end block
1434# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1435#endif
1436# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1437 allocate (intfc_draddt(1:nbubs_glb, 1:lag_num_ts))
1438# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1439
1440# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1441
1442# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1443#if defined(MFC_OpenACC)
1444# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1445!$acc enter data create(intfc_draddt)
1446# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1447#elif defined(MFC_OpenMP)
1448# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1449!$omp target enter data map(always,alloc:intfc_draddt)
1450# 159 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1451#endif
1452# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1453#ifdef MFC_DEBUG
1454# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1455 block
1456# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1457 use iso_fortran_env, only: output_unit
1458# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1459
1460# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1461 print *, 'm_bubbles_EL.fpp:160: ', '@:ALLOCATE(intfc_dveldt(1:nBubs_glb, 1:lag_num_ts))'
1462# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1463
1464# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1465 call flush (output_unit)
1466# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1467 end block
1468# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1469#endif
1470# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1471 allocate (intfc_dveldt(1:nbubs_glb, 1:lag_num_ts))
1472# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1473
1474# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1475
1476# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1477#if defined(MFC_OpenACC)
1478# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1479!$acc enter data create(intfc_dveldt)
1480# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1481#elif defined(MFC_OpenMP)
1482# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1483!$omp target enter data map(always,alloc:intfc_dveldt)
1484# 160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1485#endif
1486# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1487#ifdef MFC_DEBUG
1488# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1489 block
1490# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1491 use iso_fortran_env, only: output_unit
1492# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1493
1494# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1495 print *, 'm_bubbles_EL.fpp:161: ', '@:ALLOCATE(gas_dpdt(1:nBubs_glb, 1:lag_num_ts))'
1496# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1497
1498# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1499 call flush (output_unit)
1500# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1501 end block
1502# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1503#endif
1504# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1505 allocate (gas_dpdt(1:nbubs_glb, 1:lag_num_ts))
1506# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1507
1508# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1509
1510# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1511#if defined(MFC_OpenACC)
1512# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1513!$acc enter data create(gas_dpdt)
1514# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1515#elif defined(MFC_OpenMP)
1516# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1517!$omp target enter data map(always,alloc:gas_dpdt)
1518# 161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1519#endif
1520# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1521#ifdef MFC_DEBUG
1522# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1523 block
1524# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1525 use iso_fortran_env, only: output_unit
1526# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1527
1528# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1529 print *, 'm_bubbles_EL.fpp:162: ', '@:ALLOCATE(gas_dmvdt(1:nBubs_glb, 1:lag_num_ts))'
1530# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1531
1532# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1533 call flush (output_unit)
1534# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1535 end block
1536# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1537#endif
1538# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1539 allocate (gas_dmvdt(1:nbubs_glb, 1:lag_num_ts))
1540# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1541
1542# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1543
1544# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1545#if defined(MFC_OpenACC)
1546# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1547!$acc enter data create(gas_dmvdt)
1548# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1549#elif defined(MFC_OpenMP)
1550# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1551!$omp target enter data map(always,alloc:gas_dmvdt)
1552# 162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1553#endif
1554# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1555#ifdef MFC_DEBUG
1556# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1557 block
1558# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1559 use iso_fortran_env, only: output_unit
1560# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1561
1562# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1563 print *, 'm_bubbles_EL.fpp:163: ', '@:ALLOCATE(mtn_dposdt(1:nBubs_glb, 1:3, 1:lag_num_ts))'
1564# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1565
1566# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1567 call flush (output_unit)
1568# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1569 end block
1570# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1571#endif
1572# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1573 allocate (mtn_dposdt(1:nbubs_glb, 1:3, 1:lag_num_ts))
1574# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1575
1576# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1577
1578# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1579#if defined(MFC_OpenACC)
1580# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1581!$acc enter data create(mtn_dposdt)
1582# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1583#elif defined(MFC_OpenMP)
1584# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1585!$omp target enter data map(always,alloc:mtn_dposdt)
1586# 163 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1587#endif
1588# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1589#ifdef MFC_DEBUG
1590# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1591 block
1592# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1593 use iso_fortran_env, only: output_unit
1594# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1595
1596# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1597 print *, 'm_bubbles_EL.fpp:164: ', '@:ALLOCATE(mtn_dveldt(1:nBubs_glb, 1:3, 1:lag_num_ts))'
1598# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1599
1600# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1601 call flush (output_unit)
1602# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1603 end block
1604# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1605#endif
1606# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1607 allocate (mtn_dveldt(1:nbubs_glb, 1:3, 1:lag_num_ts))
1608# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1609
1610# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1611
1612# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1613#if defined(MFC_OpenACC)
1614# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1615!$acc enter data create(mtn_dveldt)
1616# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1617#elif defined(MFC_OpenMP)
1618# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1619!$omp target enter data map(always,alloc:mtn_dveldt)
1620# 164 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1621#endif
1622# 165 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1623
1624#ifdef MFC_DEBUG
1625# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1626 block
1627# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1628 use iso_fortran_env, only: output_unit
1629# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1630
1631# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1632 print *, 'm_bubbles_EL.fpp:166: ', '@:ALLOCATE(keep_bubble(1:nBubs_glb))'
1633# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1634
1635# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1636 call flush (output_unit)
1637# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1638 end block
1639# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1640#endif
1641# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1642 allocate (keep_bubble(1:nbubs_glb))
1643# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1644
1645# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1646
1647# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1648#if defined(MFC_OpenACC)
1649# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1650!$acc enter data create(keep_bubble)
1651# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1652#elif defined(MFC_OpenMP)
1653# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1654!$omp target enter data map(always,alloc:keep_bubble)
1655# 166 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1656#endif
1657# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1658#ifdef MFC_DEBUG
1659# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1660 block
1661# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1662 use iso_fortran_env, only: output_unit
1663# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1664
1665# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1666 print *, 'm_bubbles_EL.fpp:167: ', '@:ALLOCATE(wrap_bubble_loc(1:nBubs_glb, 1:num_dims), wrap_bubble_dir(1:nBubs_glb, 1:num_dims))'
1667# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1668
1669# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1670 call flush (output_unit)
1671# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1672 end block
1673# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1674#endif
1675# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1676 allocate (wrap_bubble_loc(1:nbubs_glb, 1:num_dims), wrap_bubble_dir(1:nbubs_glb, 1:num_dims))
1677# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1678
1679# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1680
1681# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1682
1683# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1684#if defined(MFC_OpenACC)
1685# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1686!$acc enter data create(wrap_bubble_loc, wrap_bubble_dir)
1687# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1688#elif defined(MFC_OpenMP)
1689# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1690!$omp target enter data map(always,alloc:wrap_bubble_loc, wrap_bubble_dir)
1691# 167 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1692#endif
1693# 168 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1694
1695 if (adap_dt .and. f_is_default(adap_dt_tol)) adap_dt_tol = dflt_adap_dt_tol
1696
1697 if (num_procs > 1) call s_initialize_particles_mpi(lag_num_ts)
1698
1699 ! Starting bubbles
1700 if (lag_params%write_void_evol) call s_open_void_evol
1701 if (lag_params%write_bubbles) call s_open_lag_bubble_evol()
1702 if (lag_params%write_bubbles_stats) call s_open_lag_bubble_stats()
1703
1704 if (lag_params%vel_model > 0) then
1705 moving_lag_bubbles = .true.
1706 lag_pressure_force = lag_params%pressure_force
1707 lag_gravity_force = lag_params%gravity_force
1708 lag_vel_model = lag_params%vel_model
1709 lag_drag_model = lag_params%drag_model
1710 end if
1711
1712# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1713#if defined(MFC_OpenACC)
1714# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1715!$acc update device(moving_lag_bubbles, lag_pressure_force, lag_gravity_force, lag_vel_model, lag_drag_model)
1716# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1717#elif defined(MFC_OpenMP)
1718# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1719!$omp target update to(moving_lag_bubbles, lag_pressure_force, lag_gravity_force, lag_vel_model, lag_drag_model)
1720# 185 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1721#endif
1722# 186 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1723
1724 if (lag_params%vel_model > 0 .and. lag_params%pressure_force) then
1725#ifdef MFC_DEBUG
1726# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1727 block
1728# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1729 use iso_fortran_env, only: output_unit
1730# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1731
1732# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1733 print *, 'm_bubbles_EL.fpp:188: ', '@:ALLOCATE(grad_p_x(0:m, 0:n, 0:p))'
1734# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1735
1736# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1737 call flush (output_unit)
1738# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1739 end block
1740# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1741#endif
1742# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1743 allocate (grad_p_x(0:m, 0:n, 0:p))
1744# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1745
1746# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1747
1748# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1749#if defined(MFC_OpenACC)
1750# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1751!$acc enter data create(grad_p_x)
1752# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1753#elif defined(MFC_OpenMP)
1754# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1755!$omp target enter data map(always,alloc:grad_p_x)
1756# 188 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1757#endif
1758# 189 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1759 ! s_compute_finite_difference_coefficients always extends fd_number beyond the interior on each side
1760#ifdef MFC_DEBUG
1761# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1762 block
1763# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1764 use iso_fortran_env, only: output_unit
1765# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1766
1767# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1768 print *, 'm_bubbles_EL.fpp:190: ', '@:ALLOCATE(fd_coeff_x_pgrad(-fd_number:fd_number,-fd_number:m + fd_number))'
1769# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1770
1771# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1772 call flush (output_unit)
1773# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1774 end block
1775# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1776#endif
1777# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1778 allocate (fd_coeff_x_pgrad(-fd_number:fd_number,-fd_number:m + fd_number))
1779# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1780
1781# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1782
1783# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1784#if defined(MFC_OpenACC)
1785# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1786!$acc enter data create(fd_coeff_x_pgrad)
1787# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1788#elif defined(MFC_OpenMP)
1789# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1790!$omp target enter data map(always,alloc:fd_coeff_x_pgrad)
1791# 190 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1792#endif
1793# 191 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1794 call s_compute_finite_difference_coefficients(m, x_cc, fd_coeff_x_pgrad, buff_size, fd_number, fd_order)
1795
1796# 192 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1797#if defined(MFC_OpenACC)
1798# 192 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1799!$acc update device(fd_coeff_x_pgrad)
1800# 192 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1801#elif defined(MFC_OpenMP)
1802# 192 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1803!$omp target update to(fd_coeff_x_pgrad)
1804# 192 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1805#endif
1806# 193 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1807 if (n > 0) then
1808#ifdef MFC_DEBUG
1809# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1810 block
1811# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1812 use iso_fortran_env, only: output_unit
1813# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1814
1815# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1816 print *, 'm_bubbles_EL.fpp:194: ', '@:ALLOCATE(grad_p_y(0:m, 0:n, 0:p))'
1817# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1818
1819# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1820 call flush (output_unit)
1821# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1822 end block
1823# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1824#endif
1825# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1826 allocate (grad_p_y(0:m, 0:n, 0:p))
1827# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1828
1829# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1830
1831# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1832#if defined(MFC_OpenACC)
1833# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1834!$acc enter data create(grad_p_y)
1835# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1836#elif defined(MFC_OpenMP)
1837# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1838!$omp target enter data map(always,alloc:grad_p_y)
1839# 194 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1840#endif
1841# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1842#ifdef MFC_DEBUG
1843# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1844 block
1845# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1846 use iso_fortran_env, only: output_unit
1847# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1848
1849# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1850 print *, 'm_bubbles_EL.fpp:195: ', '@:ALLOCATE(fd_coeff_y_pgrad(-fd_number:fd_number,-fd_number:n + fd_number))'
1851# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1852
1853# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1854 call flush (output_unit)
1855# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1856 end block
1857# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1858#endif
1859# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1860 allocate (fd_coeff_y_pgrad(-fd_number:fd_number,-fd_number:n + fd_number))
1861# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1862
1863# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1864
1865# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1866#if defined(MFC_OpenACC)
1867# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1868!$acc enter data create(fd_coeff_y_pgrad)
1869# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1870#elif defined(MFC_OpenMP)
1871# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1872!$omp target enter data map(always,alloc:fd_coeff_y_pgrad)
1873# 195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1874#endif
1875# 196 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1876 call s_compute_finite_difference_coefficients(n, y_cc, fd_coeff_y_pgrad, buff_size, fd_number, fd_order)
1877
1878# 197 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1879#if defined(MFC_OpenACC)
1880# 197 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1881!$acc update device(fd_coeff_y_pgrad)
1882# 197 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1883#elif defined(MFC_OpenMP)
1884# 197 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1885!$omp target update to(fd_coeff_y_pgrad)
1886# 197 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1887#endif
1888# 198 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1889 end if
1890 if (p > 0) then
1891#ifdef MFC_DEBUG
1892# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1893 block
1894# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1895 use iso_fortran_env, only: output_unit
1896# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1897
1898# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1899 print *, 'm_bubbles_EL.fpp:200: ', '@:ALLOCATE(grad_p_z(0:m, 0:n, 0:p))'
1900# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1901
1902# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1903 call flush (output_unit)
1904# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1905 end block
1906# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1907#endif
1908# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1909 allocate (grad_p_z(0:m, 0:n, 0:p))
1910# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1911
1912# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1913
1914# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1915#if defined(MFC_OpenACC)
1916# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1917!$acc enter data create(grad_p_z)
1918# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1919#elif defined(MFC_OpenMP)
1920# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1921!$omp target enter data map(always,alloc:grad_p_z)
1922# 200 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1923#endif
1924# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1925#ifdef MFC_DEBUG
1926# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1927 block
1928# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1929 use iso_fortran_env, only: output_unit
1930# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1931
1932# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1933 print *, 'm_bubbles_EL.fpp:201: ', '@:ALLOCATE(fd_coeff_z_pgrad(-fd_number:fd_number,-fd_number:p + fd_number))'
1934# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1935
1936# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1937 call flush (output_unit)
1938# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1939 end block
1940# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1941#endif
1942# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1943 allocate (fd_coeff_z_pgrad(-fd_number:fd_number,-fd_number:p + fd_number))
1944# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1945
1946# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1947
1948# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1949#if defined(MFC_OpenACC)
1950# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1951!$acc enter data create(fd_coeff_z_pgrad)
1952# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1953#elif defined(MFC_OpenMP)
1954# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1955!$omp target enter data map(always,alloc:fd_coeff_z_pgrad)
1956# 201 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1957#endif
1958# 202 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1959 call s_compute_finite_difference_coefficients(p, z_cc, fd_coeff_z_pgrad, buff_size, fd_number, fd_order)
1960
1961# 203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1962#if defined(MFC_OpenACC)
1963# 203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1964!$acc update device(fd_coeff_z_pgrad)
1965# 203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1966#elif defined(MFC_OpenMP)
1967# 203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1968!$omp target update to(fd_coeff_z_pgrad)
1969# 203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1970#endif
1971# 204 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1972 end if
1973 end if
1974
1975#ifdef MFC_DEBUG
1976# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1977 block
1978# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1979 use iso_fortran_env, only: output_unit
1980# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1981
1982# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1983 print *, 'm_bubbles_EL.fpp:207: ', '@:ALLOCATE(cell_list_start(0:m, 0:n, 0:p))'
1984# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1985
1986# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1987 call flush (output_unit)
1988# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1989 end block
1990# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1991#endif
1992# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1993 allocate (cell_list_start(0:m, 0:n, 0:p))
1994# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1995
1996# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1997
1998# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1999#if defined(MFC_OpenACC)
2000# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2001!$acc enter data create(cell_list_start)
2002# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2003#elif defined(MFC_OpenMP)
2004# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2005!$omp target enter data map(always,alloc:cell_list_start)
2006# 207 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2007#endif
2008# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2009#ifdef MFC_DEBUG
2010# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2011 block
2012# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2013 use iso_fortran_env, only: output_unit
2014# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2015
2016# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2017 print *, 'm_bubbles_EL.fpp:208: ', '@:ALLOCATE(cell_list_count(0:m, 0:n, 0:p))'
2018# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2019
2020# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2021 call flush (output_unit)
2022# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2023 end block
2024# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2025#endif
2026# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2027 allocate (cell_list_count(0:m, 0:n, 0:p))
2028# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2029
2030# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2031
2032# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2033#if defined(MFC_OpenACC)
2034# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2035!$acc enter data create(cell_list_count)
2036# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2037#elif defined(MFC_OpenMP)
2038# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2039!$omp target enter data map(always,alloc:cell_list_count)
2040# 208 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2041#endif
2042# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2043#ifdef MFC_DEBUG
2044# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2045 block
2046# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2047 use iso_fortran_env, only: output_unit
2048# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2049
2050# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2051 print *, 'm_bubbles_EL.fpp:209: ', '@:ALLOCATE(cell_list_idx(1:lag_params%nBubs_glb))'
2052# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2053
2054# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2055 call flush (output_unit)
2056# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2057 end block
2058# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2059#endif
2060# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2061 allocate (cell_list_idx(1:lag_params%nBubs_glb))
2062# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2063
2064# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2065
2066# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2067#if defined(MFC_OpenACC)
2068# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2069!$acc enter data create(cell_list_idx)
2070# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2071#elif defined(MFC_OpenMP)
2072# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2073!$omp target enter data map(always,alloc:cell_list_idx)
2074# 209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2075#endif
2076# 210 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2077
2078 call s_read_input_bubbles(q_cons_vf, bc_type)
2079
2080 end subroutine s_initialize_bubbles_el_module
2081
2082 !> Read initial bubble data from input files
2083 impure subroutine s_read_input_bubbles(q_cons_vf, bc_type)
2084
2085 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
2086 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
2087 real(wp), dimension(8) :: inputbubble
2088 real(wp) :: qtime
2089 integer :: id, bub_id, save_count
2090 integer :: i, ios
2091 logical :: file_exist, indomain
2092 integer, dimension(3) :: cell
2093 character(LEN=path_len + 2*name_len) :: path_d_dir
2094
2095 ! Initialize number of particles
2096
2097 bub_id = 0
2098 id = 0
2099
2100 ! Read the input lag_bubble file or restart point
2101 if (cfl_dt) then
2102 save_count = n_start
2103 qtime = n_start*t_save
2104 else
2105 save_count = t_step_start
2106 qtime = t_step_start*dt
2107 end if
2108
2109 if (save_count == 0) then
2110 if (proc_rank == 0) print *, 'Reading lagrange bubbles input file.'
2111 call my_inquire(trim(lag_params%input_path), file_exist)
2112 if (file_exist) then
2113 open (94, file=trim(lag_params%input_path), form='formatted', iostat=ios)
2114 do while (ios == 0)
2115 read (94, *, iostat=ios) (inputbubble(i), i=1, 8)
2116 if (ios /= 0) cycle
2117 indomain = particle_in_domain_physical(inputbubble(1:3))
2118 id = id + 1
2119 if (id > lag_params%nBubs_glb .and. proc_rank == 0) then
2120 call s_mpi_abort("Current number of bubbles is larger than nBubs_glb")
2121 end if
2122 if (indomain) then
2123 bub_id = bub_id + 1
2124 call s_add_bubbles(inputbubble, q_cons_vf, bub_id)
2125 lag_id(bub_id, 1) = id ! global ID
2126 lag_id(bub_id, 2) = bub_id ! local ID
2127 n_el_bubs_loc = bub_id ! local number of bubbles
2128 end if
2129 end do
2130 close (94)
2131 else
2132 call s_mpi_abort("Initialize the lagrange bubbles in " // trim(lag_params%input_path))
2133 end if
2134 else
2135 if (proc_rank == 0) print *, 'Restarting lagrange bubbles at save_count: ', save_count
2136 call s_restart_bubbles(bub_id, save_count)
2137 end if
2138
2139 print *, " Lagrange bubbles running, in proc", proc_rank, "number:", bub_id, "/", id
2140
2141 if (num_procs > 1) then
2142 call s_mpi_reduce_int_sum(n_el_bubs_loc, n_el_bubs_glb)
2143 else
2144 n_el_bubs_glb = n_el_bubs_loc
2145 end if
2146
2147 if (proc_rank == 0) then
2148 if (n_el_bubs_glb == 0) call s_mpi_abort('No bubbles in the domain. Check ' // trim(lag_params%input_path))
2149 end if
2150
2151
2152# 284 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2153#if defined(MFC_OpenACC)
2154# 284 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2155!$acc update device(bubbles_lagrange, lag_params)
2156# 284 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2157#elif defined(MFC_OpenMP)
2158# 284 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2159!$omp target update to(bubbles_lagrange, lag_params)
2160# 284 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2161#endif
2162# 285 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2163
2164
2165# 286 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2166#if defined(MFC_OpenACC)
2167# 286 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2168!$acc update device(lag_id, bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, n_el_bubs_loc)
2169# 286 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2170#elif defined(MFC_OpenMP)
2171# 286 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2172!$omp target update to(lag_id, bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, n_el_bubs_loc)
2173# 286 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2174#endif
2175# 289 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2176
2177 rmax_glb = min(dflt_real, -dflt_real)
2178 rmin_glb = max(dflt_real, -dflt_real)
2179
2180# 292 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2181#if defined(MFC_OpenACC)
2182# 292 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2183!$acc update device(Rmax_glb, Rmin_glb)
2184# 292 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2185#elif defined(MFC_OpenMP)
2186# 292 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2187!$omp target update to(Rmax_glb, Rmin_glb)
2188# 292 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2189#endif
2190# 293 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2191
2192
2193# 294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2194#if defined(MFC_OpenACC)
2195# 294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2196!$acc update device(dx, dy, dz, x_cb, x_cc, y_cb, y_cc, z_cb, z_cc)
2197# 294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2198#elif defined(MFC_OpenMP)
2199# 294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2200!$omp target update to(dx, dy, dz, x_cb, x_cc, y_cb, y_cc, z_cb, z_cc)
2201# 294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2202#endif
2203# 295 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2204
2205 ! Populate temporal variables
2207 call s_smear_voidfraction(bc_type)
2208
2209 if (save_count == 0) then
2210 ! Create ./D directory
2211 if (proc_rank == 0) then
2212 write (path_d_dir, '(A,I0,A,I0)') trim(case_dir) // '/D'
2213 call my_inquire(trim(path_d_dir), file_exist)
2214 if (.not. file_exist) call s_create_directory(trim(path_d_dir))
2215 end if
2216 call s_mpi_barrier()
2217 call s_write_restart_lag_bubbles(save_count) ! Needed for post_processing
2218 if (lag_params%write_void_evol) call s_write_void_evol(qtime)
2219 end if
2220
2221 if (lag_params%write_bubbles) call s_write_lag_bubble_evol(qtime)
2222
2223 end subroutine s_read_input_bubbles
2224
2225 !> Add a new bubble from input data for a fresh start
2226 impure subroutine s_add_bubbles(inputBubble, q_cons_vf, bub_id)
2227
2228 type(scalar_field), dimension(sys_size), intent(in) :: q_cons_vf
2229 real(wp), dimension(8), intent(in) :: inputbubble
2230 integer, intent(in) :: bub_id
2231 integer :: i
2232 real(wp) :: pliq, volparticle, concvap, totalmass, kparticle, cpparticle
2233 real(wp) :: omegan_local, peg, pet, rhol, qv, gamma, pi_inf, dynp
2234 integer, dimension(3) :: cell
2235 real(wp), dimension(2) :: re
2236 real(wp) :: massflag, heatflag, re_trans, im_trans
2237
2238 massflag = 0._wp
2239 heatflag = 0._wp
2240 if (lag_params%massTransfer_model) massflag = 1._wp
2241 if (lag_params%heatTransfer_model) heatflag = 1._wp
2242
2243 bub_r0(bub_id) = inputbubble(7)
2244 rmax_stats(bub_id) = min(dflt_real, -dflt_real)
2245 rmin_stats(bub_id) = max(dflt_real, -dflt_real)
2246 bub_dphidt(bub_id) = 0._wp
2247 intfc_rad(bub_id, 1) = inputbubble(7)
2248 intfc_vel(bub_id, 1) = inputbubble(8)
2249 mtn_pos(bub_id,1:3,1) = inputbubble(1:3)
2250 mtn_posprev(bub_id,1:3,1) = mtn_pos(bub_id,1:3,1)
2251 mtn_vel(bub_id,1:3,1) = inputbubble(4:6)
2252
2253 if (cyl_coord .and. p == 0) then
2254 mtn_pos(bub_id, 2, 1) = sqrt(mtn_pos(bub_id, 2, 1)**2._wp + mtn_pos(bub_id, 3, 1)**2._wp)
2255 ! Storing azimuthal angle (-Pi to Pi)) into the third coordinate variable
2256 mtn_pos(bub_id, 3, 1) = atan2(inputbubble(3), inputbubble(2))
2257 mtn_posprev(bub_id,1:3,1) = mtn_pos(bub_id,1:3,1)
2258 end if
2259
2260 cell = fd_number - buff_size
2261 call s_locate_cell(mtn_pos(bub_id,1:3,1), cell, mtn_s(bub_id,1:3,1))
2262
2263 ! Check if the bubble is located in the ghost cell of a symmetric, or wall boundary
2264 if ((any(bc_x%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, &
2265 & bc_no_slip_wall/)) .and. cell(1) < 0) .or. (any(bc_x%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, &
2266 & bc_no_slip_wall/)) .and. cell(1) > m) .or. (any(bc_y%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, &
2267 & bc_no_slip_wall/)) .and. cell(2) < 0) .or. (any(bc_y%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, &
2268 & bc_no_slip_wall/)) .and. cell(2) > n)) then
2269 call s_mpi_abort("Lagrange bubble is in the ghost cells of a symmetric or wall boundary.")
2270 end if
2271
2272 if (p > 0) then
2273 if ((any(bc_z%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, &
2274 & bc_no_slip_wall/)) .and. cell(3) < 0) .or. (any(bc_z%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, &
2275 & bc_no_slip_wall/)) .and. cell(3) > p)) then
2276 call s_mpi_abort("Lagrange bubble is in the ghost cells of a symmetric or wall boundary.")
2277 end if
2278 end if
2279
2280 call s_convert_to_mixture_variables(q_cons_vf, cell(1), cell(2), cell(3), rhol, gamma, pi_inf, qv, re)
2281 dynp = 0._wp
2282 do i = 1, num_dims
2283 dynp = dynp + 0.5_wp*q_cons_vf(eqn_idx%cont%end + i)%sf(cell(1), cell(2), cell(3))**2/rhol
2284 end do
2285 pliq = f_pressure(q_cons_vf(eqn_idx%E)%sf(cell(1), cell(2), cell(3)) - dynp, gamma, pi_inf, qv)
2286 if (pliq < 0) print *, "Negative pressure", proc_rank, q_cons_vf(eqn_idx%E)%sf(cell(1), cell(2), cell(3)), pi_inf, gamma, &
2287 & pliq, cell, dynp
2288
2289 ! Initial particle pressure
2290 gas_p(bub_id, 1) = pliq + 2._wp*(1._wp/web)/bub_r0(bub_id)
2291
2292 ! Initial particle mass
2293 volparticle = 4._wp/3._wp*pi*bub_r0(bub_id)**3._wp ! volume
2294 gas_mv(bub_id, 1) = pv*volparticle*(1._wp/(r_v*tw))*(massflag) ! vapermass
2295 gas_mg(bub_id) = (gas_p(bub_id, 1) - pv*(massflag))*volparticle*(1._wp/(r_g*tw)) ! gasmass
2296 if (gas_mg(bub_id) <= 0._wp) then
2297 call s_mpi_abort("The initial mass of gas inside the bubble is negative. Check the initial conditions.")
2298 end if
2299 totalmass = gas_mg(bub_id) + gas_mv(bub_id, 1) ! totalmass
2300
2301 ! Bubble natural frequency
2302 concvap = gas_mv(bub_id, 1)/(gas_mv(bub_id, 1) + gas_mg(bub_id))
2303 omegan_local = (3._wp*(gas_p(bub_id, 1) - pv*(massflag)) + 4._wp*(1._wp/web)/bub_r0(bub_id))/rhol
2304 if (pv*(massflag) > gas_p(bub_id, 1)) then
2305 call s_mpi_abort("Lagrange bubble initially located in a region with pressure below the vapor pressure.")
2306 end if
2307 omegan_local = sqrt(omegan_local/bub_r0(bub_id)**2._wp)
2308
2309 cpparticle = concvap*cp_v + (1._wp - concvap)*cp_g
2310 kparticle = concvap*k_vl + (1._wp - concvap)*k_gl
2311
2312 ! Mass and heat transfer coefficients (based on Preston 2007)
2313 pet = totalmass/volparticle*cpparticle*bub_r0(bub_id)**2._wp*omegan_local/kparticle
2314 call s_transcoeff(1._wp, pet, re_trans, im_trans)
2315 gas_betat(bub_id) = re_trans*(heatflag)*kparticle
2316
2317 peg = bub_r0(bub_id)**2._wp*omegan_local/vd
2318 call s_transcoeff(1._wp, peg, re_trans, im_trans)
2319 gas_betac(bub_id) = re_trans*(massflag)*vd
2320
2321 if (gas_mg(bub_id) <= 0._wp) then
2322 call s_mpi_abort("Negative gas mass in the bubble, check if the bubble is in the domain.")
2323 end if
2324
2325 end subroutine s_add_bubbles
2326
2327 !> Restore bubble data from a restart file
2328 impure subroutine s_restart_bubbles(bub_id, save_count)
2329
2330 integer, intent(inout) :: bub_id, save_count
2331 character(LEN=path_len + 2*name_len) :: file_loc
2332 real(wp) :: file_time, file_dt
2333 integer :: file_num_procs, file_tot_part, tot_part
2334
2335#ifdef MFC_MPI
2336 real(wp), dimension(20) :: inputvals
2337 integer, dimension(MPI_STATUS_SIZE) :: status
2338 integer(kind=MPI_OFFSET_KIND) :: disp
2339 integer :: view
2340 integer, dimension(3) :: cell
2341 logical :: indomain, particle_file, file_exist
2342 integer, dimension(2) :: gsizes, lsizes, start_idx_part
2343 integer :: ifile, ierr, tot_data, id
2344 integer :: i
2345 integer, dimension(:), allocatable :: proc_bubble_counts
2346 real(wp), dimension(1:1,1:lag_io_vars) :: dummy
2347
2348 dummy = 0._wp
2349
2350 ! Construct file path
2351 write (file_loc, '(A,I0,A)') 'lag_bubbles_', save_count, '.dat'
2352 file_loc = trim(case_dir) // '/restart_data' // trim(mpiiofs) // trim(file_loc)
2353
2354 ! Check if file exists
2355 inquire (file=trim(file_loc), exist=file_exist)
2356 if (.not. file_exist) then
2357 call s_mpi_abort('Restart file ' // trim(file_loc) // ' does not exist!')
2358 end if
2359
2360 if (.not. parallel_io) return
2361
2362 if (proc_rank == 0) then
2363 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
2364 call s_check_mpi_file_open(ierr, file_loc)
2365
2366 call mpi_file_read(ifile, file_tot_part, 1, mpi_integer, status, ierr)
2367 call mpi_file_read(ifile, file_time, 1, mpi_p, status, ierr)
2368 call mpi_file_read(ifile, file_dt, 1, mpi_p, status, ierr)
2369 call mpi_file_read(ifile, file_num_procs, 1, mpi_integer, status, ierr)
2370
2371 call mpi_file_close(ifile, ierr)
2372 end if
2373
2374 call mpi_bcast(file_tot_part, 1, mpi_integer, 0, mpi_comm_world, ierr)
2375 call mpi_bcast(file_time, 1, mpi_p, 0, mpi_comm_world, ierr)
2376 call mpi_bcast(file_dt, 1, mpi_p, 0, mpi_comm_world, ierr)
2377 call mpi_bcast(file_num_procs, 1, mpi_integer, 0, mpi_comm_world, ierr)
2378
2379 allocate (proc_bubble_counts(file_num_procs))
2380
2381 if (proc_rank == 0) then
2382 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
2383 call s_check_mpi_file_open(ierr, file_loc)
2384
2385 ! Skip to processor counts position
2386 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs), mpi_offset_kind)
2387 call mpi_file_seek(ifile, disp, mpi_seek_set, ierr)
2388 call mpi_file_read(ifile, proc_bubble_counts, file_num_procs, mpi_integer, status, ierr)
2389
2390 call mpi_file_close(ifile, ierr)
2391 end if
2392
2393 call mpi_bcast(proc_bubble_counts, file_num_procs, mpi_integer, 0, mpi_comm_world, ierr)
2394
2395 ! Set time variables from file
2396 mytime = file_time
2397 dt = file_dt
2398
2399 bub_id = proc_bubble_counts(proc_rank + 1)
2400
2401 start_idx_part(1) = 0
2402 do i = 1, proc_rank
2403 start_idx_part(1) = start_idx_part(1) + proc_bubble_counts(i)
2404 end do
2405
2406 start_idx_part(2) = 0
2407 lsizes(1) = bub_id
2408 lsizes(2) = lag_io_vars
2409
2410 gsizes(1) = file_tot_part
2411 gsizes(2) = lag_io_vars
2412
2413 if (bub_id > 0) then
2414 allocate (mpi_io_data_lag_bubbles(bub_id,1:lag_io_vars))
2415
2416 call mpi_type_create_subarray(2, gsizes, lsizes, start_idx_part, mpi_order_fortran, mpi_p, view, ierr)
2417 call mpi_type_commit(view, ierr)
2418
2419 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
2420 call s_check_mpi_file_open(ierr, file_loc)
2421
2422 ! Skip extended header
2423 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs) &
2424 & + file_num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
2425 call mpi_file_set_view(ifile, disp, mpi_p, view, 'native', mpi_info_int, ierr)
2426
2427 call mpi_file_read_all(ifile, mpi_io_data_lag_bubbles, lag_io_vars*bub_id, mpi_p, status, ierr)
2428
2429 call mpi_file_close(ifile, ierr)
2430 call mpi_type_free(view, ierr)
2431
2432 n_el_bubs_loc = bub_id
2433
2434 do i = 1, bub_id
2435 lag_id(i, 1) = int(mpi_io_data_lag_bubbles(i, 1))
2436 mtn_pos(i,1:3,1) = mpi_io_data_lag_bubbles(i,2:4)
2437 mtn_posprev(i,1:3,1) = mpi_io_data_lag_bubbles(i,5:7)
2438 mtn_vel(i,1:3,1) = mpi_io_data_lag_bubbles(i,8:10)
2439 intfc_rad(i, 1) = mpi_io_data_lag_bubbles(i, 11)
2440 intfc_vel(i, 1) = mpi_io_data_lag_bubbles(i, 12)
2441 bub_r0(i) = mpi_io_data_lag_bubbles(i, 13)
2442 rmax_stats(i) = mpi_io_data_lag_bubbles(i, 14)
2443 rmin_stats(i) = mpi_io_data_lag_bubbles(i, 15)
2444 bub_dphidt(i) = mpi_io_data_lag_bubbles(i, 16)
2445 gas_p(i, 1) = mpi_io_data_lag_bubbles(i, 17)
2446 gas_mv(i, 1) = mpi_io_data_lag_bubbles(i, 18)
2447 gas_mg(i) = mpi_io_data_lag_bubbles(i, 19)
2448 gas_betat(i) = mpi_io_data_lag_bubbles(i, 20)
2449 gas_betac(i) = mpi_io_data_lag_bubbles(i, 21)
2450 cell = -buff_size
2451 call s_locate_cell(mtn_pos(i,1:3,1), cell, mtn_s(i,1:3,1))
2452 end do
2453
2454 deallocate (mpi_io_data_lag_bubbles)
2455 else
2456 n_el_bubs_loc = 0
2457
2458 call mpi_type_contiguous(0, mpi_p, view, ierr)
2459 call mpi_type_commit(view, ierr)
2460
2461 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
2462 call s_check_mpi_file_open(ierr, file_loc)
2463
2464 ! Skip extended header
2465 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs) &
2466 & + file_num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
2467 call mpi_file_set_view(ifile, disp, mpi_p, view, 'native', mpi_info_int, ierr)
2468
2469 call mpi_file_read_all(ifile, dummy, 0, mpi_p, status, ierr)
2470
2471 call mpi_file_close(ifile, ierr)
2472 call mpi_type_free(view, ierr)
2473 end if
2474
2475 if (proc_rank == 0) then
2476 write (*, '(A,I0,A,I0)') 'Read ', file_tot_part, ' particles from restart file at t_step = ', save_count
2477 write (*, '(A,E15.7,A,E15.7)') 'Restart time = ', mytime, ', dt = ', dt
2478 end if
2479
2480 deallocate (proc_bubble_counts)
2481#endif
2482
2483 end subroutine s_restart_bubbles
2484
2485 !> Contains the bubble dynamics subroutines.
2486 subroutine s_compute_bubble_el_dynamics(q_prim_vf, bc_type, stage)
2487
2488 type(scalar_field), dimension(sys_size), intent(inout) :: q_prim_vf
2489 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
2490 integer, intent(in) :: stage
2491 real(wp) :: myVapFlux
2492 real(wp) :: preterm1, term2, paux, pint, Romega, term1_fac
2493 real(wp) :: myR_m, mygamma_m, myPb, myMass_n, myMass_v
2494 real(wp) :: myR, myV, myBeta_c, myBeta_t, myR0, myPbdot, myMvdot
2495 real(wp) :: myPinf, aux1, aux2, myCson, myRho
2496 real(wp), dimension(3) :: myPos, myVel
2497 real(wp) :: gamma, pi_inf, qv, f_b, myRe
2498
2499# 593 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2500 real(wp), dimension(num_fluids) :: myalpha_rho, myalpha
2501# 595 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2502 real(wp), dimension(2) :: Re
2503 integer, dimension(3) :: cell
2504 integer :: adap_dt_stop_sum, adap_dt_stop !< Fail-safe exit if max iteration count reached
2505 real(wp) :: dmalf, dmntait, dmBtait, dm_bub_adv_src, dm_divu !< Dummy variables for unified subgrid bubble subroutines
2506 integer :: k, l
2507
2508 ! Subgrid p_inf model based on Maeda and Colonius (2018).
2509 if (lag_params%pressure_corrector) then
2510 call nvtxstartrange("LAGRANGE-BUBBLE-PINF-CORRECTION")
2511 ! Calculate velocity potentials (valid for one bubble per cell)
2512
2513# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2514
2515# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2516#if defined(MFC_OpenACC)
2517# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2518!$acc parallel loop gang vector default(present) private(k, cell, paux, preterm1, term2, Romega, myR0, myR, myV, myPb, pint, term1_fac)
2519# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2520#elif defined(MFC_OpenMP)
2521# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2522
2523# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2524
2525# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2526
2527# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2528!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) &
2529# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2530!$omp& private(k, cell, paux, preterm1, term2, Romega, myR0, myR, myV, myPb, pint, term1_fac)
2531# 605 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2532#endif
2533# 606 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2534 do k = 1, n_el_bubs_loc
2535 call s_get_pinf(k, q_prim_vf, 2, paux, cell, preterm1, term2, romega)
2536 myr0 = bub_r0(k)
2537 myr = intfc_rad(k, 2)
2538 myv = intfc_vel(k, 2)
2539 mypb = gas_p(k, 2)
2540 pint = f_cpbw_km(myr0, myr, myv, mypb)
2541 pint = pint + 0.5_wp*myv**2._wp
2542 if (lag_params%cluster_type == 2) then
2543 bub_dphidt(k) = (paux - pint) + term2
2544 ! Accounting for the potential induced by the bubble averaged over the control volume Note that this is based on
2545 ! the incompressible flow assumption near the bubble.
2546 term1_fac = 3._wp/2._wp*(myr*(romega**2._wp - myr**2._wp))/(romega**3._wp - myr**3._wp)
2547 bub_dphidt(k) = bub_dphidt(k)/(1._wp - term1_fac)
2548 end if
2549 end do
2550
2551# 622 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2552#if defined(MFC_OpenACC)
2553# 622 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2554!$acc end parallel loop
2555# 622 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2556#elif defined(MFC_OpenMP)
2557# 622 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2558
2559# 622 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2560!$omp end target teams loop
2561# 622 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2562#endif
2563# 623 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2564 call nvtxendrange()
2565 end if
2566
2567 ! Precompute cell-centered pressure gradients for translational motion
2568 if (moving_lag_bubbles .and. lag_pressure_force) then
2569 call nvtxstartrange("LAGRANGE-BUBBLE-PRESSURE-GRADIENT")
2570 call s_compute_pressure_gradients(q_prim_vf)
2571 call nvtxendrange()
2572 end if
2573
2574 call nvtxstartrange("LAGRANGE-BUBBLE-DYNAMICS")
2575 ! Radial motion model
2576 adap_dt_stop_sum = 0
2577
2578# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2579
2580# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2581#if defined(MFC_OpenACC)
2582# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2583!$acc parallel loop gang vector default(present) private(k, myalpha_rho, myalpha, Re, cell, myVapFlux, preterm1, term2, paux, pint, Romega, term1_fac, myR_m, mygamma_m, myPb, myMass_n, myMass_v, myR, &
2584# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2585!$acc& myV, myBeta_c, myBeta_t, myR0, myPbdot, myMvdot, myPinf, aux1, aux2, myCson, myRho, gamma, pi_inf, qv, dmalf, dmntait, dmBtait, dm_bub_adv_src, dm_divu, adap_dt_stop, myPos, myVel) &
2586# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2587!$acc& copy(adap_dt_stop_sum) copyin(stage)
2588# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2589#elif defined(MFC_OpenMP)
2590# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2591
2592# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2593
2594# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2595
2596# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2597!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k, myalpha_rho, myalpha, Re, &
2598# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2599!$omp& cell, myVapFlux, preterm1, term2, paux, pint, Romega, term1_fac, myR_m, mygamma_m, myPb, myMass_n, myMass_v, myR, myV, myBeta_c, myBeta_t, myR0, myPbdot, myMvdot, myPinf, aux1, aux2, myCson, &
2600# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2601!$omp& myRho, gamma, pi_inf, qv, dmalf, dmntait, dmBtait, dm_bub_adv_src, dm_divu, adap_dt_stop, myPos, myVel) map(tofrom:adap_dt_stop_sum) map(to:stage)
2602# 636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2603#endif
2604# 640 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2605 do k = 1, n_el_bubs_loc
2606 ! Keller-Miksis model
2607
2608 ! Current bubble state
2609 mypb = gas_p(k, 2)
2610 mymass_n = gas_mg(k)
2611 mymass_v = gas_mv(k, 2)
2612 myr = intfc_rad(k, 2)
2613 myv = intfc_vel(k, 2)
2614 mybeta_c = gas_betac(k)
2615 mybeta_t = gas_betat(k)
2616 myr0 = bub_r0(k)
2617 mypos = mtn_pos(k,:,2)
2618 myvel = mtn_vel(k,:,2)
2619
2620 ! Vapor and heat fluxes
2621 call s_vflux(myr, myv, mypb, mymass_v, k, myvapflux, mymass_n, mybeta_c, myr_m, mygamma_m)
2622 mypbdot = f_bpres_dot(myvapflux, myr, myv, mypb, mymass_v, k, mybeta_t, myr_m, mygamma_m)
2623 mymvdot = 4._wp*pi*myr**2._wp*myvapflux
2624
2625 ! Obtaining driving pressure
2626 call s_get_pinf(k, q_prim_vf, 1, mypinf, cell, aux1, aux2)
2627
2628 ! Obtain liquid density and computing speed of sound from pinf
2629 call s_compute_species_fraction(q_prim_vf, cell(1), cell(2), cell(3), myalpha_rho, myalpha)
2630 call s_convert_species_to_mixture_variables_kernel(myrho, gamma, pi_inf, qv, myalpha, myalpha_rho, re)
2631 mycson = sqrt(f_bulk_modulus(mypinf, gamma, pi_inf)/myrho)
2632
2633 ! Adaptive time stepping
2634 adap_dt_stop = 0
2635
2636 if (adap_dt) then
2637 mtn_posprev(k,:,1) = mypos
2638
2639 myre = re(1)
2640 adap_dt_stop = f_advance_step(myrho, mypinf, myr, myv, myr0, mypb, mypbdot, dmalf, dmntait, dmbtait, &
2641 & dm_bub_adv_src, dm_divu, k, mymass_v, mymass_n, mybeta_c, mybeta_t, mycson, myre, &
2642 & mypos, myvel, cell, q_prim_vf)
2643
2644 ! Update bubble state
2645 intfc_rad(k, 1) = myr
2646 intfc_vel(k, 1) = myv
2647 gas_p(k, 1) = mypb
2648 gas_mv(k, 1) = mymass_v
2649 mtn_pos(k,:,1) = mypos
2650 mtn_vel(k,:,1) = myvel
2651 else
2652 ! Radial acceleration from bubble models
2653 intfc_dveldt(k, stage) = f_rddot(myrho, mypinf, myr, myv, myr0, mypb, mypbdot, dmalf, dmntait, dmbtait, &
2654 & dm_bub_adv_src, dm_divu, mycson)
2655
2656 intfc_draddt(k, stage) = myv
2657 gas_dmvdt(k, stage) = mymvdot
2658 gas_dpdt(k, stage) = mypbdot
2659
2660 if (moving_lag_bubbles) then
2661 do l = 1, num_dims
2662 mtn_dposdt(k, l, stage) = 0._wp
2663 mtn_dveldt(k, l, stage) = 0._wp
2664 select case (lag_vel_model)
2665 case (1)
2666 mtn_dposdt(k, l, stage) = f_interpolate_velocity(mypos(l), cell, l, q_prim_vf)
2667 mtn_dveldt(k, l, stage) = 0._wp
2668 mtn_vel(k, l, 1) = mtn_dposdt(k, l, stage)
2669 case (2)
2670 mtn_dposdt(k, l, stage) = myvel(l)
2671 f_b = f_get_bubble_force(mypos(l), myr, myv, myvel(l), mymass_n, mymass_v, re(1), myrho, cell, l, &
2672 & q_prim_vf)
2673 mtn_dveldt(k, l, stage) = f_b/(mymass_n + mymass_v)
2674 case default
2675 mtn_dposdt(k, l, stage) = 0._wp
2676 mtn_dveldt(k, l, stage) = 0._wp
2677 end select
2678 end do
2679 end if
2680 end if
2681
2682
2683# 717 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2684#if defined(MFC_OpenACC)
2685# 717 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2686!$acc atomic update
2687# 717 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2688#elif defined(MFC_OpenMP)
2689# 717 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2690!$omp atomic update
2691# 717 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2692#endif
2693# 718 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2694 adap_dt_stop_sum = adap_dt_stop_sum + adap_dt_stop
2695 end do
2696
2697# 720 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2698#if defined(MFC_OpenACC)
2699# 720 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2700!$acc end parallel loop
2701# 720 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2702#elif defined(MFC_OpenMP)
2703# 720 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2704
2705# 720 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2706!$omp end target teams loop
2707# 720 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2708#endif
2709# 721 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2710 call nvtxendrange
2711
2712 if (adap_dt .and. adap_dt_stop_sum > 0) call s_mpi_abort("Adaptive time stepping failed to converge.")
2713
2714 if (adap_dt) then
2716 if (moving_lag_bubbles) call s_enforce_el_bubbles_boundary_conditions(q_prim_vf)
2717 call s_smear_voidfraction(bc_type)
2718 end if
2719
2720 end subroutine s_compute_bubble_el_dynamics
2721
2722 !> Compute the Lagrangian bubble source terms and add them to the RHS
2723 subroutine s_compute_bubbles_el_source(q_cons_vf, q_prim_vf, rhs_vf)
2724
2725 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
2726 type(scalar_field), dimension(sys_size), intent(inout) :: q_prim_vf
2727 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
2728 integer :: i, j, k, l
2729
2730 call nvtxstartrange("LAGRANGE-BUBBLE-EL-SOURCE")
2731 ! (q / (1 - beta)) * d(beta)/dt source
2732 if (lag_params%cluster_type >= 4) then
2733
2734# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2735
2736# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2737#if defined(MFC_OpenACC)
2738# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2739!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
2740# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2741#elif defined(MFC_OpenMP)
2742# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2743
2744# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2745
2746# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2747
2748# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2749!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l)
2750# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2751#endif
2752# 745 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2753 do k = idwint(3)%beg, idwint(3)%end
2754 do j = idwint(2)%beg, idwint(2)%end
2755 do i = idwint(1)%beg, idwint(1)%end
2756 do l = 1, eqn_idx%E
2757 if (q_beta(1)%sf(i, j, k) > (1._wp - lag_params%valmaxvoid)) then
2758 rhs_vf(l)%sf(i, j, k) = rhs_vf(l)%sf(i, j, k) + q_cons_vf(l)%sf(i, j, k)*(q_beta(2)%sf(i, j, &
2759 & k) + q_beta(5)%sf(i, j, k))
2760 end if
2761 end do
2762 end do
2763 end do
2764 end do
2765
2766# 757 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2767#if defined(MFC_OpenACC)
2768# 757 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2769!$acc end parallel loop
2770# 757 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2771#elif defined(MFC_OpenMP)
2772# 757 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2773
2774# 757 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2775!$omp end target teams loop
2776# 757 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2777#endif
2778# 758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2779 else
2780
2781# 759 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2782
2783# 759 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2784#if defined(MFC_OpenACC)
2785# 759 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2786!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
2787# 759 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2788#elif defined(MFC_OpenMP)
2789# 759 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2790
2791# 759 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2792
2793# 759 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2794
2795# 759 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2796!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l)
2797# 759 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2798#endif
2799# 760 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2800 do k = idwint(3)%beg, idwint(3)%end
2801 do j = idwint(2)%beg, idwint(2)%end
2802 do i = idwint(1)%beg, idwint(1)%end
2803 do l = 1, eqn_idx%E
2804 if (q_beta(1)%sf(i, j, k) > (1._wp - lag_params%valmaxvoid)) then
2805 rhs_vf(l)%sf(i, j, k) = rhs_vf(l)%sf(i, j, k) + (q_cons_vf(l)%sf(i, j, k)/q_beta(1)%sf(i, j, &
2806 & k))*q_beta(2)%sf(i, j, k)
2807 end if
2808 end do
2809 end do
2810 end do
2811 end do
2812
2813# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2814#if defined(MFC_OpenACC)
2815# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2816!$acc end parallel loop
2817# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2818#elif defined(MFC_OpenMP)
2819# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2820
2821# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2822!$omp end target teams loop
2823# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2824#endif
2825# 773 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2826 end if
2827
2828 do l = 1, num_dims
2829 call s_gradient_dir(q_prim_vf(eqn_idx%E)%sf, q_beta(3)%sf, l)
2830
2831 ! (q / (1 - beta)) * d(beta)/dt source
2832
2833# 779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2834
2835# 779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2836#if defined(MFC_OpenACC)
2837# 779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2838!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
2839# 779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2840#elif defined(MFC_OpenMP)
2841# 779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2842
2843# 779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2844
2845# 779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2846
2847# 779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2848!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k)
2849# 779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2850#endif
2851# 780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2852 do k = idwint(3)%beg, idwint(3)%end
2853 do j = idwint(2)%beg, idwint(2)%end
2854 do i = idwint(1)%beg, idwint(1)%end
2855 if (q_beta(1)%sf(i, j, k) > (1._wp - lag_params%valmaxvoid)) then
2856 rhs_vf(eqn_idx%cont%end + l)%sf(i, j, k) = rhs_vf(eqn_idx%cont%end + l)%sf(i, j, &
2857 & k) - (1._wp - q_beta(1)%sf(i, j, k))/q_beta(1)%sf(i, j, k)*q_beta(3)%sf(i, j, k)
2858 end if
2859 end do
2860 end do
2861 end do
2862
2863# 790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2864#if defined(MFC_OpenACC)
2865# 790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2866!$acc end parallel loop
2867# 790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2868#elif defined(MFC_OpenMP)
2869# 790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2870
2871# 790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2872!$omp end target teams loop
2873# 790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2874#endif
2875# 791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2876
2877 ! source in energy
2878
2879# 793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2880
2881# 793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2882#if defined(MFC_OpenACC)
2883# 793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2884!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
2885# 793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2886#elif defined(MFC_OpenMP)
2887# 793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2888
2889# 793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2890
2891# 793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2892
2893# 793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2894!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k)
2895# 793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2896#endif
2897# 794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2898 do k = idwbuff(3)%beg, idwbuff(3)%end
2899 do j = idwbuff(2)%beg, idwbuff(2)%end
2900 do i = idwbuff(1)%beg, idwbuff(1)%end
2901 q_beta(3)%sf(i, j, k) = q_prim_vf(eqn_idx%E)%sf(i, j, k)*q_prim_vf(eqn_idx%cont%end + l)%sf(i, j, k)
2902 end do
2903 end do
2904 end do
2905
2906# 801 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2907#if defined(MFC_OpenACC)
2908# 801 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2909!$acc end parallel loop
2910# 801 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2911#elif defined(MFC_OpenMP)
2912# 801 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2913
2914# 801 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2915!$omp end target teams loop
2916# 801 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2917#endif
2918# 802 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2919
2920 call s_gradient_dir(q_beta(3)%sf, q_beta(4)%sf, l)
2921
2922 ! (beta / (1 - beta)) * d(Pu)/dl source
2923
2924# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2925
2926# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2927#if defined(MFC_OpenACC)
2928# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2929!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
2930# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2931#elif defined(MFC_OpenMP)
2932# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2933
2934# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2935
2936# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2937
2938# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2939!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k)
2940# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2941#endif
2942# 807 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2943 do k = idwint(3)%beg, idwint(3)%end
2944 do j = idwint(2)%beg, idwint(2)%end
2945 do i = idwint(1)%beg, idwint(1)%end
2946 if (q_beta(1)%sf(i, j, k) > (1._wp - lag_params%valmaxvoid)) then
2947 rhs_vf(eqn_idx%E)%sf(i, j, k) = rhs_vf(eqn_idx%E)%sf(i, j, k) - q_beta(4)%sf(i, j, &
2948 & k)*(1._wp - q_beta(1)%sf(i, j, k))/q_beta(1)%sf(i, j, k)
2949 end if
2950 end do
2951 end do
2952 end do
2953
2954# 817 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2955#if defined(MFC_OpenACC)
2956# 817 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2957!$acc end parallel loop
2958# 817 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2959#elif defined(MFC_OpenMP)
2960# 817 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2961
2962# 817 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2963!$omp end target teams loop
2964# 817 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2965#endif
2966# 818 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2967 end do
2968 call nvtxendrange
2969
2970 end subroutine s_compute_bubbles_el_source
2971
2972 !> Smear the bubble effects onto the Eulerian grid
2973 subroutine s_smear_voidfraction(bc_type)
2974
2975 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
2976 integer :: i, j, k, l
2977
2978 call nvtxstartrange("BUBBLES-LAGRANGE-SMEARING")
2979
2980# 830 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2981
2982# 830 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2983#if defined(MFC_OpenACC)
2984# 830 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2985!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
2986# 830 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2987#elif defined(MFC_OpenMP)
2988# 830 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2989
2990# 830 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2991
2992# 830 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2993
2994# 830 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2995!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k, l)
2996# 830 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2997#endif
2998# 831 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2999 do i = 1, q_beta_idx
3000 do l = idwbuff(3)%beg, idwbuff(3)%end
3001 do k = idwbuff(2)%beg, idwbuff(2)%end
3002 do j = idwbuff(1)%beg, idwbuff(1)%end
3003 q_beta(i)%sf(j, k, l) = 0._wp
3004 if (lag_params%kahan_summation) kahan_comp(i)%sf(j, k, l) = 0._wp
3005 end do
3006 end do
3007 end do
3008 end do
3009
3010# 841 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3011#if defined(MFC_OpenACC)
3012# 841 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3013!$acc end parallel loop
3014# 841 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3015#elif defined(MFC_OpenMP)
3016# 841 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3017
3018# 841 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3019!$omp end target teams loop
3020# 841 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3021#endif
3022# 842 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3023
3024 ! Build cell list before smearing (CPU-side counting sort)
3025 call s_build_cell_list(n_el_bubs_loc, mtn_s)
3026
3027 call s_smoothfunction(n_el_bubs_loc, intfc_rad, intfc_vel, mtn_s, mtn_pos, q_beta, kahan_comp)
3028
3029 call nvtxstartrange("BUBBLES-LAGRANGE-BETA-COMM")
3030 if (lag_params%cluster_type >= 4) then
3031 call s_populate_beta_buffers(q_beta, kahan_comp, bc_type, 3)
3032 else
3033 call s_populate_beta_buffers(q_beta, kahan_comp, bc_type, 2)
3034 end if
3035 call nvtxendrange
3036
3037 ! Store 1-beta
3038
3039# 857 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3040
3041# 857 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3042#if defined(MFC_OpenACC)
3043# 857 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3044!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
3045# 857 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3046#elif defined(MFC_OpenMP)
3047# 857 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3048
3049# 857 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3050
3051# 857 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3052
3053# 857 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3054!$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)
3055# 857 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3056#endif
3057# 858 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3058 do l = idwbuff(3)%beg, idwbuff(3)%end
3059 do k = idwbuff(2)%beg, idwbuff(2)%end
3060 do j = idwbuff(1)%beg, idwbuff(1)%end
3061 q_beta(1)%sf(j, k, l) = 1._wp - q_beta(1)%sf(j, k, l)
3062 ! Limiting void fraction given max value
3063 q_beta(1)%sf(j, k, l) = max(q_beta(1)%sf(j, k, l), 1._wp - lag_params%valmaxvoid)
3064 end do
3065 end do
3066 end do
3067
3068# 867 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3069#if defined(MFC_OpenACC)
3070# 867 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3071!$acc end parallel loop
3072# 867 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3073#elif defined(MFC_OpenMP)
3074# 867 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3075
3076# 867 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3077!$omp end target teams loop
3078# 867 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3079#endif
3080# 868 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3081 call nvtxendrange ! BUBBLES-LAGRANGE-SMEARING
3082
3083 end subroutine s_smear_voidfraction
3084
3085 !> Compute the bubble driving pressure p_inf
3086 subroutine s_get_pinf(bub_id, q_prim_vf, ptype, f_pinfl, cell, preterm1, term2, Romega)
3087
3088
3089# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3090#ifdef _CRAYFTN
3091# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3092#if MFC_OpenACC
3093# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3094!$acc routine seq
3095# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3096#elif MFC_OpenMP
3097# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3098
3099# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3100
3101# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3102!$omp declare target device_type(any)
3103# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3104#else
3105# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3106!DIR$ INLINEALWAYS s_get_pinf
3107# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3108#endif
3109# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3110#elif MFC_OpenACC
3111# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3112!$acc routine seq
3113# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3114#elif MFC_OpenMP
3115# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3116
3117# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3118
3119# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3120!$omp declare target device_type(any)
3121# 875 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3122#endif
3123# 876 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3124
3125 integer, intent(in) :: bub_id, ptype
3126 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
3127 real(wp), intent(out) :: f_pinfl
3128 integer, dimension(3), intent(out) :: cell
3129 real(wp), intent(out), optional :: preterm1, term2, Romega
3130 real(wp), dimension(3) :: scoord, psi_pos, psi_x, psi_y, psi_z
3131 real(wp) :: xi, eta, zeta
3132 real(wp) :: dc, vol, aux
3133 real(wp) :: volgas, term1, Rbeq, denom
3134 real(wp) :: charvol, charpres, charvol2, charpres2
3135 integer, dimension(3) :: cellaux
3136 integer :: i, j, k
3137 integer :: smearGrid, smearGridz
3138
3139 f_pinfl = 0._wp
3140
3141 if (moving_lag_bubbles) then
3142 cell = fd_number - buff_size
3143 call s_locate_cell(mtn_pos(bub_id,1:3,2), cell, mtn_s(bub_id,1:3,2))
3144 scoord = mtn_s(bub_id,1:3,2)
3145 else
3146 scoord = mtn_s(bub_id,1:3,2)
3147 cell(:) = int(scoord(:))
3148
3149# 900 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3150#if defined(MFC_OpenACC)
3151# 900 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3152!$acc loop seq
3153# 900 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3154#elif defined(MFC_OpenMP)
3155# 900 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3156
3157# 900 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3158#endif
3159# 901 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3160 do i = 1, num_dims
3161 if (scoord(i) < 0._wp) cell(i) = cell(i) - 1
3162 end do
3163 end if
3164
3165 if ((lag_params%cluster_type == 1)) then
3166 !> Getting p_cell in terms of only the current cell by interpolation
3167
3168 if (fd_order == 2) then ! Bilinear interpolation
3169 if (p > 0) then
3170 vol = dx(cell(1))*dy(cell(2))*dz(cell(3))
3171 else
3172 if (cyl_coord) then
3173 vol = dx(cell(1))*dy(cell(2))*y_cc(cell(2))*2._wp*pi
3174 else
3175 vol = dx(cell(1))*dy(cell(2))*lag_params%charwidth
3176 end if
3177 end if
3178
3179 !> Obtain bilinear interpolation coefficients, based on the current location of the bubble.
3180 psi_pos(1) = (scoord(1) - real(cell(1)))*dx(cell(1)) + x_cb(cell(1) - 1)
3181 psi_pos(1) = abs((psi_pos(1) - x_cc(cell(1)))/(x_cc(cell(1) + 1) - x_cc(cell(1))))
3182
3183 psi_pos(2) = (scoord(2) - real(cell(2)))*dy(cell(2)) + y_cb(cell(2) - 1)
3184 psi_pos(2) = abs((psi_pos(2) - y_cc(cell(2)))/(y_cc(cell(2) + 1) - y_cc(cell(2))))
3185
3186 if (p > 0) then
3187 psi_pos(3) = (scoord(3) - real(cell(3)))*dz(cell(3)) + z_cb(cell(3) - 1)
3188 psi_pos(3) = abs((psi_pos(3) - z_cc(cell(3)))/(z_cc(cell(3) + 1) - z_cc(cell(3))))
3189 else
3190 psi_pos(3) = 0._wp
3191 end if
3192
3193 ! Calculate bilinear basis functions for each direction For normalized coordinate xi in [0, 1], the two basis
3194 ! functions are: phi_0(xi) = 1 - xi, phi_1(xi) = xi
3195
3196 ! X-direction basis functions
3197 psi_x(1) = 1._wp - psi_pos(1) ! Left basis function
3198 psi_x(2) = psi_pos(1) ! Right basis function
3199
3200 ! Y-direction basis functions
3201 psi_y(1) = 1._wp - psi_pos(2) ! Left basis function
3202 psi_y(2) = psi_pos(2) ! Right basis function
3203
3204 if (p > 0) then
3205 ! Z-direction basis functions
3206 psi_z(1) = 1._wp - psi_pos(3) ! Left basis function
3207 psi_z(2) = psi_pos(3) ! Right basis function
3208 else ! 3D
3209 psi_z(1) = 1._wp
3210 psi_z(2) = 0._wp
3211 end if
3212
3213 !> Perform bilinear interpolation
3214 f_pinfl = 0._wp
3215
3216 if (p == 0) then
3217 do j = 1, 2
3218 do i = 1, 2
3219 f_pinfl = f_pinfl + q_prim_vf(eqn_idx%E)%sf(cell(1) + i - 1, cell(2) + j - 1, cell(3))*psi_x(i)*psi_y(j)
3220 end do
3221 end do
3222 else
3223 do k = 1, 2
3224 do j = 1, 2
3225 do i = 1, 2
3226 f_pinfl = f_pinfl + q_prim_vf(eqn_idx%E)%sf(cell(1) + i - 1, cell(2) + j - 1, &
3227 & cell(3) + k - 1)*psi_x(i)*psi_y(j)*psi_z(k)
3228 end do
3229 end do
3230 end do
3231 end if
3232 else if (fd_order == 4) then ! Biquadratic interpolation
3233 if (p > 0) then
3234 vol = dx(cell(1))*dy(cell(2))*dz(cell(3))
3235 else
3236 if (cyl_coord) then
3237 vol = dx(cell(1))*dy(cell(2))*y_cc(cell(2))*2._wp*pi
3238 else
3239 vol = dx(cell(1))*dy(cell(2))*lag_params%charwidth
3240 end if
3241 end if
3242
3243 !> Obtain biquadratic interpolation coefficients, based on the current location of the bubble.
3244 ! For biquadratic interpolation, we need coefficients for 3 points in each direction
3245 psi_pos(1) = (scoord(1) - real(cell(1)))*dx(cell(1)) + x_cb(cell(1) - 1)
3246 psi_pos(1) = (psi_pos(1) - x_cc(cell(1)))/(x_cc(cell(1) + 1) - x_cc(cell(1)))
3247
3248 psi_pos(2) = (scoord(2) - real(cell(2)))*dy(cell(2)) + y_cb(cell(2) - 1)
3249 psi_pos(2) = (psi_pos(2) - y_cc(cell(2)))/(y_cc(cell(2) + 1) - y_cc(cell(2)))
3250
3251 if (p > 0) then
3252 psi_pos(3) = (scoord(3) - real(cell(3)))*dz(cell(3)) + z_cb(cell(3) - 1)
3253 psi_pos(3) = (psi_pos(3) - z_cc(cell(3)))/(z_cc(cell(3) + 1) - z_cc(cell(3)))
3254 else
3255 psi_pos(3) = 0._wp
3256 end if
3257
3258 ! Calculate biquadratic basis functions for each direction For normalized coordinate xi in [-1, 1], the three basis
3259 ! functions are: phi_0(xi) = xi*(xi-1)/2, phi_1(xi) = (1-xi)*(1+xi), phi_2(xi) = xi*(xi+1)/2
3260
3261 ! X-direction basis functions
3262 xi = 2._wp*psi_pos(1) - 1._wp ! Convert to [-1, 1] range
3263 psi_x(1) = xi*(xi - 1._wp)/2._wp ! Left basis function
3264 psi_x(2) = (1._wp - xi)*(1._wp + xi) ! Center basis function
3265 psi_x(3) = xi*(xi + 1._wp)/2._wp ! Right basis function
3266
3267 ! Y-direction basis functions
3268 eta = 2._wp*psi_pos(2) - 1._wp ! Convert to [-1, 1] range
3269 psi_y(1) = eta*(eta - 1._wp)/2._wp ! Left basis function
3270 psi_y(2) = (1._wp - eta)*(1._wp + eta) ! Center basis function
3271 psi_y(3) = eta*(eta + 1._wp)/2._wp ! Right basis function
3272
3273 if (p > 0) then
3274 ! Z-direction basis functions
3275 zeta = 2._wp*psi_pos(3) - 1._wp ! Convert to [-1, 1] range
3276 psi_z(1) = zeta*(zeta - 1._wp)/2._wp ! Left basis function
3277 psi_z(2) = (1._wp - zeta)*(1._wp + zeta) ! Center basis function
3278 psi_z(3) = zeta*(zeta + 1._wp)/2._wp ! Right basis function
3279 else
3280 psi_z(1) = 0._wp
3281 psi_z(2) = 1._wp
3282 psi_z(3) = 0._wp
3283 end if
3284
3285 !> Perform biquadratic interpolation
3286 f_pinfl = 0._wp
3287
3288 if (p == 0) then ! 2D
3289 do j = 1, 3
3290 do i = 1, 3
3291 f_pinfl = f_pinfl + q_prim_vf(eqn_idx%E)%sf(cell(1) + i - 2, cell(2) + j - 2, cell(3))*psi_x(i)*psi_y(j)
3292 end do
3293 end do
3294 else
3295 do k = 1, 3
3296 do j = 1, 3
3297 do i = 1, 3
3298 f_pinfl = f_pinfl + q_prim_vf(eqn_idx%E)%sf(cell(1) + i - 2, cell(2) + j - 2, &
3299 & cell(3) + k - 2)*psi_x(i)*psi_y(j)*psi_z(k)
3300 end do
3301 end do
3302 end do
3303 end if
3304 end if
3305
3306 ! R_Omega
3307 dc = (3._wp*vol/(4._wp*pi))**(1._wp/3._wp)
3308 else if (lag_params%cluster_type >= 2) then
3309 ! Bubble dynamic closure from Maeda and Colonius (2018)
3310
3311 ! Include the cell that contains the bubble (mapCells+1+mapCells)
3312 smeargrid = mapcells - (-mapcells) + 1
3313 smeargridz = smeargrid
3314 if (p == 0) smeargridz = 1
3315
3316 charvol = 0._wp
3317 charpres = 0._wp
3318 charvol2 = 0._wp
3319 charpres2 = 0._wp
3320 vol = 0._wp
3321
3322
3323# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3324#if defined(MFC_OpenACC)
3325# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3326!$acc loop seq
3327# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3328#elif defined(MFC_OpenMP)
3329# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3330
3331# 1063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3332#endif
3333# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3334 do i = 1, smeargrid
3335
3336# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3337#if defined(MFC_OpenACC)
3338# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3339!$acc loop seq
3340# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3341#elif defined(MFC_OpenMP)
3342# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3343
3344# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3345#endif
3346# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3347 do j = 1, smeargrid
3348
3349# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3350#if defined(MFC_OpenACC)
3351# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3352!$acc loop seq
3353# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3354#elif defined(MFC_OpenMP)
3355# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3356
3357# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3358#endif
3359# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3360 do k = 1, smeargridz
3361 cellaux(1) = cell(1) + i - (mapcells + 1)
3362 cellaux(2) = cell(2) + j - (mapcells + 1)
3363 cellaux(3) = cell(3) + k - (mapcells + 1)
3364 if (p == 0) cellaux(3) = 0
3365
3366 !> Obtaining the cell volume
3367 if (p > 0) then
3368 vol = dx(cellaux(1))*dy(cellaux(2))*dz(cellaux(3))
3369 else
3370 if (cyl_coord) then
3371 vol = dx(cellaux(1))*dy(cellaux(2))*y_cc(cellaux(2))*2._wp*pi
3372 else
3373 vol = dx(cellaux(1))*dy(cellaux(2))*lag_params%charwidth
3374 end if
3375 end if
3376
3377 !> Update values
3378 charvol = charvol + vol
3379 charpres = charpres + q_prim_vf(eqn_idx%E)%sf(cellaux(1), cellaux(2), cellaux(3))*vol
3380 charvol2 = charvol2 + vol*q_beta(1)%sf(cellaux(1), cellaux(2), cellaux(3))
3381 charpres2 = charpres2 + q_prim_vf(eqn_idx%E)%sf(cellaux(1), cellaux(2), &
3382 & cellaux(3))*vol*q_beta(1)%sf(cellaux(1), cellaux(2), cellaux(3))
3383 end do
3384 end do
3385 end do
3386 f_pinfl = charpres2/charvol2
3387 vol = charvol
3388 dc = (3._wp*abs(vol)/(4._wp*pi))**(1._wp/3._wp)
3389 end if
3390
3391 if (lag_params%pressure_corrector) then
3392 ! Valid if only one bubble exists per cell
3393 volgas = intfc_rad(bub_id, 2)**3._wp
3394 denom = intfc_rad(bub_id, 2)**2._wp
3395 term1 = bub_dphidt(bub_id)*intfc_rad(bub_id, 2)**2._wp
3396 term2 = intfc_vel(bub_id, 2)*intfc_rad(bub_id, 2)**2._wp
3397
3398 rbeq = volgas**(1._wp/3._wp) ! surrogate bubble radius
3399 aux = dc**3._wp - rbeq**3._wp
3400 term2 = term2/denom
3401 term2 = 3._wp/2._wp*term2**2._wp*rbeq**3._wp*(1._wp - rbeq/dc)/aux
3402 preterm1 = 3._wp/2._wp*rbeq*(dc**2._wp - rbeq**2._wp)/(aux*denom)
3403
3404 ! Control volume radius
3405 if (ptype == 2) romega = dc
3406
3407 ! Getting p_inf
3408 if (ptype == 1) then
3409 f_pinfl = f_pinfl + preterm1*term1 + term2
3410 end if
3411 end if
3412
3413 end subroutine s_get_pinf
3414
3415 !> Update Lagrangian bubble variables using TVD Runge-Kutta time stepping
3416 impure subroutine s_update_lagrange_tdv_rk(q_prim_vf, bc_type, stage)
3417
3418 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
3419 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
3420 integer, intent(in) :: stage
3421 integer :: k, q
3422
3423 if (time_stepper == time_stepper_rk1) then ! 1st order TVD RK
3424
3425# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3426
3427# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3428#if defined(MFC_OpenACC)
3429# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3430!$acc parallel loop gang vector default(present) private(k)
3431# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3432#elif defined(MFC_OpenMP)
3433# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3434
3435# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3436
3437# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3438
3439# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3440!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
3441# 1132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3442#endif
3443# 1133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3444 do k = 1, n_el_bubs_loc
3445 ! u{1} = u{n} + dt * RHS{n}
3446 intfc_rad(k, 1) = intfc_rad(k, 1) + dt*intfc_draddt(k, 1)
3447 intfc_vel(k, 1) = intfc_vel(k, 1) + dt*intfc_dveldt(k, 1)
3448 gas_p(k, 1) = gas_p(k, 1) + dt*gas_dpdt(k, 1)
3449 gas_mv(k, 1) = gas_mv(k, 1) + dt*gas_dmvdt(k, 1)
3450 if (moving_lag_bubbles) then
3451 do q = 1, num_dims
3452 mtn_posprev(k, q, 1) = mtn_pos(k, q, 1)
3453 mtn_pos(k, q, 1) = mtn_pos(k, q, 1) + dt*mtn_dposdt(k, q, 1)
3454 mtn_vel(k, q, 1) = mtn_vel(k, q, 1) + dt*mtn_dveldt(k, q, 1)
3455 end do
3456 end if
3457 end do
3458
3459# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3460#if defined(MFC_OpenACC)
3461# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3462!$acc end parallel loop
3463# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3464#elif defined(MFC_OpenMP)
3465# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3466
3467# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3468!$omp end target teams loop
3469# 1147 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3470#endif
3471# 1148 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3472
3474 if (moving_lag_bubbles) call s_enforce_el_bubbles_boundary_conditions(q_prim_vf)
3475 call s_smear_voidfraction(bc_type)
3476 if (lag_params%write_void_evol) call s_write_void_evol(mytime)
3477 if (lag_params%write_bubbles_stats) call s_calculate_lag_bubble_stats()
3478 if (lag_params%write_bubbles) then
3479
3480# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3481#if defined(MFC_OpenACC)
3482# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3483!$acc update host(gas_p, gas_mv, intfc_rad, intfc_vel)
3484# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3485#elif defined(MFC_OpenMP)
3486# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3487!$omp target update from(gas_p, gas_mv, intfc_rad, intfc_vel)
3488# 1155 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3489#endif
3490# 1156 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3491 call s_write_lag_bubble_evol(mytime)
3492 end if
3493 else if (time_stepper == time_stepper_rk2) then ! 2nd order TVD RK
3494 if (stage == 1) then
3495
3496# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3497
3498# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3499#if defined(MFC_OpenACC)
3500# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3501!$acc parallel loop gang vector default(present) private(k)
3502# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3503#elif defined(MFC_OpenMP)
3504# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3505
3506# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3507
3508# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3509
3510# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3511!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
3512# 1160 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3513#endif
3514# 1161 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3515 do k = 1, n_el_bubs_loc
3516 ! u{1} = u{n} + dt * RHS{n}
3517 intfc_rad(k, 2) = intfc_rad(k, 1) + dt*intfc_draddt(k, 1)
3518 intfc_vel(k, 2) = intfc_vel(k, 1) + dt*intfc_dveldt(k, 1)
3519 gas_p(k, 2) = gas_p(k, 1) + dt*gas_dpdt(k, 1)
3520 gas_mv(k, 2) = gas_mv(k, 1) + dt*gas_dmvdt(k, 1)
3521 if (moving_lag_bubbles) then
3522 do q = 1, num_dims
3523 mtn_posprev(k, q, 2) = mtn_pos(k, q, 1)
3524 mtn_pos(k, q, 2) = mtn_pos(k, q, 1) + dt*mtn_dposdt(k, q, 1)
3525 mtn_vel(k, q, 2) = mtn_vel(k, q, 1) + dt*mtn_dveldt(k, q, 1)
3526 end do
3527 end if
3528 end do
3529
3530# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3531#if defined(MFC_OpenACC)
3532# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3533!$acc end parallel loop
3534# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3535#elif defined(MFC_OpenMP)
3536# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3537
3538# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3539!$omp end target teams loop
3540# 1175 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3541#endif
3542# 1176 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3543
3544 if (moving_lag_bubbles) call s_enforce_el_bubbles_boundary_conditions(q_prim_vf)
3545 call s_smear_voidfraction(bc_type)
3546 else if (stage == 2) then
3547
3548# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3549
3550# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3551#if defined(MFC_OpenACC)
3552# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3553!$acc parallel loop gang vector default(present) private(k)
3554# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3555#elif defined(MFC_OpenMP)
3556# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3557
3558# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3559
3560# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3561
3562# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3563!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
3564# 1180 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3565#endif
3566# 1181 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3567 do k = 1, n_el_bubs_loc
3568 ! u{1} = u{n} + (1/2) * dt * (RHS{n} + RHS{1})
3569 intfc_rad(k, 1) = intfc_rad(k, 1) + dt*(intfc_draddt(k, 1) + intfc_draddt(k, 2))/2._wp
3570 intfc_vel(k, 1) = intfc_vel(k, 1) + dt*(intfc_dveldt(k, 1) + intfc_dveldt(k, 2))/2._wp
3571 gas_p(k, 1) = gas_p(k, 1) + dt*(gas_dpdt(k, 1) + gas_dpdt(k, 2))/2._wp
3572 gas_mv(k, 1) = gas_mv(k, 1) + dt*(gas_dmvdt(k, 1) + gas_dmvdt(k, 2))/2._wp
3573 if (moving_lag_bubbles) then
3574 do q = 1, num_dims
3575 mtn_posprev(k, q, 1) = mtn_pos(k, q, 2)
3576 mtn_pos(k, q, 1) = mtn_pos(k, q, 1) + dt*(mtn_dposdt(k, q, 1) + mtn_dposdt(k, q, 2))/2._wp
3577 mtn_vel(k, q, 1) = mtn_vel(k, q, 1) + dt*(mtn_dveldt(k, q, 1) + mtn_dveldt(k, q, 2))/2._wp
3578 end do
3579 end if
3580 end do
3581
3582# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3583#if defined(MFC_OpenACC)
3584# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3585!$acc end parallel loop
3586# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3587#elif defined(MFC_OpenMP)
3588# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3589
3590# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3591!$omp end target teams loop
3592# 1195 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3593#endif
3594# 1196 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3595
3597 if (moving_lag_bubbles) call s_enforce_el_bubbles_boundary_conditions(q_prim_vf)
3598 call s_smear_voidfraction(bc_type)
3599 if (lag_params%write_void_evol) call s_write_void_evol(mytime)
3600 if (lag_params%write_bubbles_stats) call s_calculate_lag_bubble_stats()
3601 if (lag_params%write_bubbles) then
3602
3603# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3604#if defined(MFC_OpenACC)
3605# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3606!$acc update host(gas_p, gas_mv, intfc_rad, intfc_vel)
3607# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3608#elif defined(MFC_OpenMP)
3609# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3610!$omp target update from(gas_p, gas_mv, intfc_rad, intfc_vel)
3611# 1203 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3612#endif
3613# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3614 call s_write_lag_bubble_evol(mytime)
3615 end if
3616 end if
3617 else if (time_stepper == time_stepper_rk3) then ! 3rd order TVD RK
3618 if (stage == 1) then
3619
3620# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3621
3622# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3623#if defined(MFC_OpenACC)
3624# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3625!$acc parallel loop gang vector default(present) private(k)
3626# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3627#elif defined(MFC_OpenMP)
3628# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3629
3630# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3631
3632# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3633
3634# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3635!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
3636# 1209 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3637#endif
3638# 1210 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3639 do k = 1, n_el_bubs_loc
3640 ! u{1} = u{n} + dt * RHS{n}
3641 intfc_rad(k, 2) = intfc_rad(k, 1) + dt*intfc_draddt(k, 1)
3642 intfc_vel(k, 2) = intfc_vel(k, 1) + dt*intfc_dveldt(k, 1)
3643 gas_p(k, 2) = gas_p(k, 1) + dt*gas_dpdt(k, 1)
3644 gas_mv(k, 2) = gas_mv(k, 1) + dt*gas_dmvdt(k, 1)
3645 if (moving_lag_bubbles) then
3646 do q = 1, num_dims
3647 mtn_posprev(k, q, 2) = mtn_pos(k, q, 1)
3648 mtn_pos(k, q, 2) = mtn_pos(k, q, 1) + dt*mtn_dposdt(k, q, 1)
3649 mtn_vel(k, q, 2) = mtn_vel(k, q, 1) + dt*mtn_dveldt(k, q, 1)
3650 end do
3651 end if
3652 end do
3653
3654# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3655#if defined(MFC_OpenACC)
3656# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3657!$acc end parallel loop
3658# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3659#elif defined(MFC_OpenMP)
3660# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3661
3662# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3663!$omp end target teams loop
3664# 1224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3665#endif
3666# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3667
3668 if (moving_lag_bubbles) call s_enforce_el_bubbles_boundary_conditions(q_prim_vf)
3669 call s_smear_voidfraction(bc_type)
3670 else if (stage == 2) then
3671
3672# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3673
3674# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3675#if defined(MFC_OpenACC)
3676# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3677!$acc parallel loop gang vector default(present) private(k)
3678# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3679#elif defined(MFC_OpenMP)
3680# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3681
3682# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3683
3684# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3685
3686# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3687!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
3688# 1229 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3689#endif
3690# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3691 do k = 1, n_el_bubs_loc
3692 ! u{2} = u{n} + (1/4) * dt * [RHS{n} + RHS{1}]
3693 intfc_rad(k, 2) = intfc_rad(k, 1) + dt*(intfc_draddt(k, 1) + intfc_draddt(k, 2))/4._wp
3694 intfc_vel(k, 2) = intfc_vel(k, 1) + dt*(intfc_dveldt(k, 1) + intfc_dveldt(k, 2))/4._wp
3695 gas_p(k, 2) = gas_p(k, 1) + dt*(gas_dpdt(k, 1) + gas_dpdt(k, 2))/4._wp
3696 gas_mv(k, 2) = gas_mv(k, 1) + dt*(gas_dmvdt(k, 1) + gas_dmvdt(k, 2))/4._wp
3697 if (moving_lag_bubbles) then
3698 do q = 1, num_dims
3699 mtn_posprev(k, q, 2) = mtn_pos(k, q, 2)
3700 mtn_pos(k, q, 2) = mtn_pos(k, q, 1) + dt*(mtn_dposdt(k, q, 1) + mtn_dposdt(k, q, 2))/4._wp
3701 mtn_vel(k, q, 2) = mtn_vel(k, q, 1) + dt*(mtn_dveldt(k, q, 1) + mtn_dveldt(k, q, 2))/4._wp
3702 end do
3703 end if
3704 end do
3705
3706# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3707#if defined(MFC_OpenACC)
3708# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3709!$acc end parallel loop
3710# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3711#elif defined(MFC_OpenMP)
3712# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3713
3714# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3715!$omp end target teams loop
3716# 1244 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3717#endif
3718# 1245 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3719
3720 if (moving_lag_bubbles) call s_enforce_el_bubbles_boundary_conditions(q_prim_vf)
3721 call s_smear_voidfraction(bc_type)
3722 else if (stage == 3) then
3723
3724# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3725
3726# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3727#if defined(MFC_OpenACC)
3728# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3729!$acc parallel loop gang vector default(present) private(k)
3730# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3731#elif defined(MFC_OpenMP)
3732# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3733
3734# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3735
3736# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3737
3738# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3739!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
3740# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3741#endif
3742# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3743 do k = 1, n_el_bubs_loc
3744 ! u{n+1} = u{n} + (2/3) * dt * [(1/4)* RHS{n} + (1/4)* RHS{1} + RHS{2}]
3745 intfc_rad(k, 1) = intfc_rad(k, 1) + (2._wp/3._wp)*dt*(intfc_draddt(k, 1)/4._wp + intfc_draddt(k, &
3746 & 2)/4._wp + intfc_draddt(k, 3))
3747 intfc_vel(k, 1) = intfc_vel(k, 1) + (2._wp/3._wp)*dt*(intfc_dveldt(k, 1)/4._wp + intfc_dveldt(k, &
3748 & 2)/4._wp + intfc_dveldt(k, 3))
3749 gas_p(k, 1) = gas_p(k, 1) + (2._wp/3._wp)*dt*(gas_dpdt(k, 1)/4._wp + gas_dpdt(k, 2)/4._wp + gas_dpdt(k, 3))
3750 gas_mv(k, 1) = gas_mv(k, 1) + (2._wp/3._wp)*dt*(gas_dmvdt(k, 1)/4._wp + gas_dmvdt(k, 2)/4._wp + gas_dmvdt(k, 3))
3751 if (moving_lag_bubbles) then
3752 do q = 1, num_dims
3753 mtn_posprev(k, q, 1) = mtn_pos(k, q, 2)
3754 mtn_pos(k, q, 1) = mtn_pos(k, q, 1) + (2._wp/3._wp)*dt*(mtn_dposdt(k, q, 1)/4._wp + mtn_dposdt(k, q, &
3755 & 2)/4._wp + mtn_dposdt(k, q, 3))
3756 mtn_vel(k, q, 1) = mtn_vel(k, q, 1) + (2._wp/3._wp)*dt*(mtn_dveldt(k, q, 1)/4._wp + mtn_dveldt(k, q, &
3757 & 2)/4._wp + mtn_dveldt(k, q, 3))
3758 end do
3759 end if
3760 end do
3761
3762# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3763#if defined(MFC_OpenACC)
3764# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3765!$acc end parallel loop
3766# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3767#elif defined(MFC_OpenMP)
3768# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3769
3770# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3771!$omp end target teams loop
3772# 1268 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3773#endif
3774# 1269 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3775
3777 if (moving_lag_bubbles) call s_enforce_el_bubbles_boundary_conditions(q_prim_vf)
3778 call s_smear_voidfraction(bc_type)
3779 if (lag_params%write_void_evol) call s_write_void_evol(mytime)
3780 if (lag_params%write_bubbles_stats) call s_calculate_lag_bubble_stats()
3781 if (lag_params%write_bubbles) then
3782
3783# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3784#if defined(MFC_OpenACC)
3785# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3786!$acc update host(gas_p, gas_mv, gas_mg, intfc_rad, intfc_vel)
3787# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3788#elif defined(MFC_OpenMP)
3789# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3790!$omp target update from(gas_p, gas_mv, gas_mg, intfc_rad, intfc_vel)
3791# 1276 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3792#endif
3793# 1277 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3794 call s_write_lag_bubble_evol(mytime)
3795 end if
3796 end if
3797 end if
3798
3799 end subroutine s_update_lagrange_tdv_rk
3800
3801 impure subroutine s_enforce_el_bubbles_boundary_conditions(q_prim_vf)
3802
3803 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
3804 integer :: k, i, q
3805 integer :: patch_id, newbubs, new_idx
3806 real(wp) :: offset
3807 integer, dimension(3) :: cell
3808
3809 call nvtxstartrange("LAG-BC")
3810 call nvtxstartrange("LAG-BC-DEV2HOST")
3811
3812# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3813#if defined(MFC_OpenACC)
3814# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3815!$acc update host(bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, lag_id, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, keep_bubble, n_el_bubs_loc, wrap_bubble_dir, wrap_bubble_loc)
3816# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3817#elif defined(MFC_OpenMP)
3818# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3819!$omp target update from(bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, lag_id, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, keep_bubble, n_el_bubs_loc, wrap_bubble_dir, wrap_bubble_loc)
3820# 1294 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3821#endif
3822# 1297 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3823 call nvtxendrange
3824
3825 ! Handle MPI transfer of bubbles going to another processor's local domain
3826 if (num_procs > 1) then
3827 call nvtxstartrange("LAG-BC-TRANSFER-LIST")
3828 call s_add_particles_to_transfer_list(n_el_bubs_loc, mtn_pos(:,:,2), mtn_posprev(:,:,2))
3829 call nvtxendrange
3830
3831 call nvtxstartrange("LAG-BC-SENDRECV")
3832 call s_mpi_sendrecv_particles(bub_r0, rmax_stats, rmin_stats, gas_mg, gas_betat, gas_betac, bub_dphidt, lag_id, &
3835 & n_el_bubs_loc, 2)
3836 call nvtxendrange
3837 end if
3838
3839 call nvtxstartrange("LAG-BC-HOST2DEV")
3840
3841# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3842#if defined(MFC_OpenACC)
3843# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3844!$acc update device(bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, lag_id, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, n_el_bubs_loc)
3845# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3846#elif defined(MFC_OpenMP)
3847# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3848!$omp target update to(bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, lag_id, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, n_el_bubs_loc)
3849# 1314 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3850#endif
3851# 1317 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3852 call nvtxendrange
3853
3854
3855# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3856
3857# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3858#if defined(MFC_OpenACC)
3859# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3860!$acc parallel loop gang vector default(present) private(k, cell)
3861# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3862#elif defined(MFC_OpenMP)
3863# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3864
3865# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3866
3867# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3868
3869# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3870!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k, cell)
3871# 1319 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3872#endif
3873# 1320 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3874 do k = 1, n_el_bubs_loc
3875 keep_bubble(k) = 1
3876 wrap_bubble_loc(k,:) = 0
3877 wrap_bubble_dir(k,:) = 0
3878
3879 ! Relocate bubbles at solid boundaries and delete bubbles that leave buffer regions
3880 if (any(bc_x%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. mtn_pos(k, 1, &
3881 & 2) < x_cb(-1) + intfc_rad(k, 2)) then
3882 mtn_pos(k, 1, 2) = x_cb(-1) + intfc_rad(k, 2)
3883 else if (any(bc_x%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. mtn_pos(k, 1, &
3884 & 2) > x_cb(m) - intfc_rad(k, 2)) then
3885 mtn_pos(k, 1, 2) = x_cb(m) - intfc_rad(k, 2)
3886 else if (bc_x%beg == bc_periodic .and. mtn_pos(k, 1, 2) < pcomm_coords(1)%beg .and. mtn_posprev(k, 1, &
3887 & 2) >= pcomm_coords(1)%beg) then
3888 wrap_bubble_dir(k, 1) = 1
3889 wrap_bubble_loc(k, 1) = -1
3890 else if (bc_x%end == bc_periodic .and. mtn_pos(k, 1, 2) > pcomm_coords(1)%end .and. mtn_posprev(k, 1, &
3891 & 2) <= pcomm_coords(1)%end) then
3892 wrap_bubble_dir(k, 1) = 1
3893 wrap_bubble_loc(k, 1) = 1
3894 else if (.not. (mtn_pos(k, 1, 2) >= x_cb(-1) .and. mtn_pos(k, 1, 2) < x_cb(m))) then
3895 keep_bubble(k) = 0
3896 end if
3897
3898 if (any(bc_y%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. mtn_pos(k, 2, &
3899 & 2) < y_cb(-1) + intfc_rad(k, 2)) then
3900 mtn_pos(k, 2, 2) = y_cb(-1) + intfc_rad(k, 2)
3901 else if (any(bc_y%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. mtn_pos(k, 2, &
3902 & 2) > y_cb(n) - intfc_rad(k, 2)) then
3903 mtn_pos(k, 2, 2) = y_cb(n) - intfc_rad(k, 2)
3904 else if (bc_y%beg == bc_periodic .and. mtn_pos(k, 2, 2) < pcomm_coords(2)%beg .and. mtn_posprev(k, 2, &
3905 & 2) >= pcomm_coords(2)%beg) then
3906 wrap_bubble_dir(k, 2) = 1
3907 wrap_bubble_loc(k, 2) = -1
3908 else if (bc_y%end == bc_periodic .and. mtn_pos(k, 2, 2) > pcomm_coords(2)%end .and. mtn_posprev(k, 2, &
3909 & 2) <= pcomm_coords(2)%end) then
3910 wrap_bubble_dir(k, 2) = 1
3911 wrap_bubble_loc(k, 2) = 1
3912 else if (.not. (mtn_pos(k, 2, 2) >= y_cb(-1) .and. mtn_pos(k, 2, 2) < y_cb(n))) then
3913 keep_bubble(k) = 0
3914 end if
3915
3916 if (p > 0) then
3917 if (any(bc_z%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. mtn_pos(k, 3, &
3918 & 2) < z_cb(-1) + intfc_rad(k, 2)) then
3919 mtn_pos(k, 3, 2) = z_cb(-1) + intfc_rad(k, 2)
3920 else if (any(bc_z%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. mtn_pos(k, 3, &
3921 & 2) > z_cb(p) - intfc_rad(k, 2)) then
3922 mtn_pos(k, 3, 2) = z_cb(p) - intfc_rad(k, 2)
3923 else if (bc_z%beg == bc_periodic .and. mtn_pos(k, 3, 2) < pcomm_coords(3)%beg .and. mtn_posprev(k, 3, &
3924 & 2) >= pcomm_coords(3)%beg) then
3925 wrap_bubble_dir(k, 3) = 1
3926 wrap_bubble_loc(k, 3) = -1
3927 else if (bc_z%end == bc_periodic .and. mtn_pos(k, 3, 2) > pcomm_coords(3)%end .and. mtn_posprev(k, 3, &
3928 & 2) <= pcomm_coords(3)%end) then
3929 wrap_bubble_dir(k, 3) = 1
3930 wrap_bubble_loc(k, 3) = 1
3931 else if (.not. (mtn_pos(k, 3, 2) >= z_cb(-1) .and. mtn_pos(k, 3, 2) < z_cb(p))) then
3932 keep_bubble(k) = 0
3933 end if
3934 end if
3935
3936 if (keep_bubble(k) == 1) then
3937 ! Remove bubbles that are no longer in a liquid
3938 cell = fd_number - buff_size
3939 call s_locate_cell(mtn_pos(k,1:3,2), cell, mtn_s(k,1:3,2))
3940
3941 if (q_prim_vf(eqn_idx%adv%beg)%sf(cell(1), cell(2), cell(3)) < (1._wp - lag_params%valmaxvoid)) then
3942 keep_bubble(k) = 0
3943 end if
3944 end if
3945 end do
3946
3947# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3948#if defined(MFC_OpenACC)
3949# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3950!$acc end parallel loop
3951# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3952#elif defined(MFC_OpenMP)
3953# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3954
3955# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3956!$omp end target teams loop
3957# 1392 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3958#endif
3959# 1393 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3960
3961 if (n_el_bubs_loc > 0) then
3962 call nvtxstartrange("LAG-BC-DEV2HOST")
3963
3964# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3965#if defined(MFC_OpenACC)
3966# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3967!$acc update host(bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, lag_id, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, keep_bubble, n_el_bubs_loc, wrap_bubble_dir, wrap_bubble_loc)
3968# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3969#elif defined(MFC_OpenMP)
3970# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3971!$omp target update from(bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, lag_id, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, keep_bubble, n_el_bubs_loc, wrap_bubble_dir, wrap_bubble_loc)
3972# 1396 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3973#endif
3974# 1399 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3975 call nvtxendrange
3976
3977 newbubs = 0
3978 do k = 1, n_el_bubs_loc
3979 if (keep_bubble(k) == 1) then
3980 newbubs = newbubs + 1
3981 if (newbubs /= k) then
3982 call s_copy_lag_bubble(newbubs, k)
3983 wrap_bubble_dir(newbubs,:) = wrap_bubble_dir(k,:)
3984 wrap_bubble_loc(newbubs,:) = wrap_bubble_loc(k,:)
3985 end if
3986 end if
3987 end do
3988 n_el_bubs_loc = newbubs
3989
3990 ! Handle periodic wrapping of bubbles on same processor
3991 do k = 1, n_el_bubs_loc
3992 if (any(wrap_bubble_dir(k,:) == 1)) then
3993 do i = 1, num_dims
3994 if (wrap_bubble_dir(k, i) == 1) then
3995 offset = glb_bounds(i)%end - glb_bounds(i)%beg
3996 if (wrap_bubble_loc(k, i) == 1) then
3997 do q = 1, 2
3998 mtn_pos(k, i, q) = mtn_pos(k, i, q) - offset
3999 mtn_posprev(k, i, q) = mtn_posprev(k, i, q) - offset
4000 end do
4001 else if (wrap_bubble_loc(k, i) == -1) then
4002 do q = 1, 2
4003 mtn_pos(k, i, q) = mtn_pos(k, i, q) + offset
4004 mtn_posprev(k, i, q) = mtn_posprev(k, i, q) + offset
4005 end do
4006 end if
4007 end if
4008 end do
4009 end if
4010 end do
4011 call nvtxstartrange("LAG-BC-HOST2DEV")
4012
4013# 1436 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4014#if defined(MFC_OpenACC)
4015# 1436 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4016!$acc update device(bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, lag_id, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, n_el_bubs_loc)
4017# 1436 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4018#elif defined(MFC_OpenMP)
4019# 1436 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4020!$omp target update to(bub_R0, Rmax_stats, Rmin_stats, gas_mg, gas_betaT, gas_betaC, bub_dphidt, lag_id, gas_p, gas_mv, intfc_rad, intfc_vel, mtn_pos, mtn_posPrev, mtn_vel, mtn_s, intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt, n_el_bubs_loc)
4021# 1436 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4022#endif
4023# 1439 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4024 call nvtxendrange
4025 end if
4026
4027
4028# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4029
4030# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4031#if defined(MFC_OpenACC)
4032# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4033!$acc parallel loop gang vector default(present) private(cell)
4034# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4035#elif defined(MFC_OpenMP)
4036# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4037
4038# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4039
4040# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4041
4042# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4043!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(cell)
4044# 1442 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4045#endif
4046# 1443 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4047 do k = 1, n_el_bubs_loc
4048 cell = fd_number - buff_size
4049 call s_locate_cell(mtn_pos(k,1:3,2), cell, mtn_s(k,1:3,2))
4050 end do
4051
4052# 1447 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4053#if defined(MFC_OpenACC)
4054# 1447 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4055!$acc end parallel loop
4056# 1447 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4057#elif defined(MFC_OpenMP)
4058# 1447 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4059
4060# 1447 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4061!$omp end target teams loop
4062# 1447 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4063#endif
4064# 1448 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4065
4066 call nvtxendrange ! LAG-BC
4067
4069
4070 !> Locate the cell index for a given physical position
4071 subroutine s_locate_cell(pos, cell, scoord)
4072
4073
4074# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4075#ifdef _CRAYFTN
4076# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4077#if MFC_OpenACC
4078# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4079!$acc routine seq
4080# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4081#elif MFC_OpenMP
4082# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4083
4084# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4085
4086# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4087!$omp declare target device_type(any)
4088# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4089#else
4090# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4091!DIR$ INLINEALWAYS s_locate_cell
4092# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4093#endif
4094# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4095#elif MFC_OpenACC
4096# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4097!$acc routine seq
4098# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4099#elif MFC_OpenMP
4100# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4101
4102# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4103
4104# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4105!$omp declare target device_type(any)
4106# 1456 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4107#endif
4108# 1457 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4109
4110 real(wp), dimension(3), intent(in) :: pos
4111 real(wp), dimension(3), intent(out) :: scoord
4112 integer, dimension(3), intent(inout) :: cell
4113 integer :: i
4114
4115 do while (pos(1) < x_cb(cell(1) - 1))
4116 cell(1) = cell(1) - 1
4117 end do
4118
4119 do while (pos(1) >= x_cb(cell(1)))
4120 cell(1) = cell(1) + 1
4121 end do
4122
4123 do while (pos(2) < y_cb(cell(2) - 1))
4124 cell(2) = cell(2) - 1
4125 end do
4126
4127 do while (pos(2) >= y_cb(cell(2)))
4128 cell(2) = cell(2) + 1
4129 end do
4130
4131 if (p > 0) then
4132 do while (pos(3) < z_cb(cell(3) - 1))
4133 cell(3) = cell(3) - 1
4134 end do
4135 do while (pos(3) >= z_cb(cell(3)))
4136 cell(3) = cell(3) + 1
4137 end do
4138 else
4139 cell(3) = 0
4140 end if
4141
4142 ! The numbering of the cell of which left boundary is the domain boundary is 0. if comp.coord of the pos is s, the real
4143 ! coordinate of s is (the coordinate of the left boundary of the Floor(s)-th cell) + (s-(int(s))*(cell-width). In other
4144 ! words, the coordinate of the center of the cell is x_cc(cell).
4145
4146 ! coordinates in computational space
4147 scoord(1) = cell(1) + (pos(1) - x_cb(cell(1) - 1))/dx(cell(1))
4148 scoord(2) = cell(2) + (pos(2) - y_cb(cell(2) - 1))/dy(cell(2))
4149 scoord(3) = 0._wp
4150 if (p > 0) scoord(3) = cell(3) + (pos(3) - z_cb(cell(3) - 1))/dz(cell(3))
4151
4152 end subroutine s_locate_cell
4153
4154 !> Transfer data into the temporal variables
4155 impure subroutine s_transfer_data_to_tmp()
4156
4157 integer :: k
4158
4159
4160# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4161
4162# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4163#if defined(MFC_OpenACC)
4164# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4165!$acc parallel loop gang vector default(present) private(k)
4166# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4167#elif defined(MFC_OpenMP)
4168# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4169
4170# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4171
4172# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4173
4174# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4175!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
4176# 1507 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4177#endif
4178# 1508 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4179 do k = 1, n_el_bubs_loc
4180 gas_p(k, 2) = gas_p(k, 1)
4181 gas_mv(k, 2) = gas_mv(k, 1)
4182 intfc_rad(k, 2) = intfc_rad(k, 1)
4183 intfc_vel(k, 2) = intfc_vel(k, 1)
4184 mtn_pos(k,1:3,2) = mtn_pos(k,1:3,1)
4185 mtn_posprev(k,1:3,2) = mtn_posprev(k,1:3,1)
4186 mtn_vel(k,1:3,2) = mtn_vel(k,1:3,1)
4187 mtn_s(k,1:3,2) = mtn_s(k,1:3,1)
4188 end do
4189
4190# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4191#if defined(MFC_OpenACC)
4192# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4193!$acc end parallel loop
4194# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4195#elif defined(MFC_OpenMP)
4196# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4197
4198# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4199!$omp end target teams loop
4200# 1518 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4201#endif
4202# 1519 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4203
4204 end subroutine s_transfer_data_to_tmp
4205
4206 !> Determine if a bubble position lies within the current MPI subdomain including ghost cells
4207 function particle_in_domain(pos_part)
4208
4209 logical :: particle_in_domain
4210 real(wp), dimension(3), intent(in) :: pos_part
4211
4212 ! 2D
4213
4214 if (p == 0 .and. cyl_coord .neqv. .true.) then
4215 ! Defining a virtual z-axis that has the same dimensions as y-axis defined in the input file
4216 particle_in_domain = ((pos_part(1) < x_cb(m + buff_size - fd_number)) .and. (pos_part(1) >= x_cb(fd_number &
4217 & - buff_size - 1)) .and. (pos_part(2) < y_cb(n + buff_size - fd_number)) .and. (pos_part(2) &
4218 & >= y_cb(fd_number - buff_size - 1)) .and. (pos_part(3) < lag_params%charwidth/2._wp) &
4219 & .and. (pos_part(3) > -lag_params%charwidth/2._wp))
4220 else
4221 ! cyl_coord
4222 particle_in_domain = ((pos_part(1) < x_cb(m + buff_size - fd_number)) .and. (pos_part(1) >= x_cb(fd_number &
4223 & - buff_size - 1)) .and. (abs(pos_part(2)) < y_cb(n + buff_size - fd_number)) &
4224 & .and. (abs(pos_part(2)) >= max(y_cb(fd_number - buff_size - 1), 0._wp)))
4225 end if
4226
4227 ! 3D
4228 if (p > 0) then
4229 particle_in_domain = ((pos_part(1) < x_cb(m + buff_size - fd_number)) .and. (pos_part(1) >= x_cb(fd_number &
4230 & - buff_size - 1)) .and. (pos_part(2) < y_cb(n + buff_size - fd_number)) .and. (pos_part(2) &
4231 & >= y_cb(fd_number - buff_size - 1)) .and. (pos_part(3) < z_cb(p + buff_size - fd_number)) &
4232 & .and. (pos_part(3) >= z_cb(fd_number - buff_size - 1)))
4233 end if
4234
4235 ! For symmetric and wall boundary condition
4236 if (any(bc_x%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/))) then
4237 particle_in_domain = (particle_in_domain .and. (pos_part(1) >= x_cb(-1)))
4238 end if
4239 if (any(bc_x%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/))) then
4240 particle_in_domain = (particle_in_domain .and. (pos_part(1) < x_cb(m)))
4241 end if
4242 if (any(bc_y%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. (.not. cyl_coord)) then
4243 particle_in_domain = (particle_in_domain .and. (pos_part(2) >= y_cb(-1)))
4244 end if
4245 if (any(bc_y%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. (.not. cyl_coord)) then
4246 particle_in_domain = (particle_in_domain .and. (pos_part(2) < y_cb(n)))
4247 end if
4248 if (p > 0) then
4249 if (any(bc_z%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/))) then
4250 particle_in_domain = (particle_in_domain .and. (pos_part(3) >= z_cb(-1)))
4251 end if
4252 if (any(bc_z%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/))) then
4253 particle_in_domain = (particle_in_domain .and. (pos_part(3) < z_cb(p)))
4254 end if
4255 end if
4256
4257 end function particle_in_domain
4258
4259 !> Determine if a Lagrangian bubble is within the physical domain excluding ghost cells
4261
4263 real(wp), dimension(3), intent(in) :: pos_part
4264
4265 particle_in_domain_physical = ((pos_part(1) < x_cb(m)) .and. (pos_part(1) >= x_cb(-1)) .and. (pos_part(2) < y_cb(n)) &
4266 & .and. (pos_part(2) >= y_cb(-1)))
4267
4268 if (p > 0) then
4269 particle_in_domain_physical = (particle_in_domain_physical .and. (pos_part(3) < z_cb(p)) .and. (pos_part(3) &
4270 & >= z_cb(-1)))
4271 end if
4272
4273 end function particle_in_domain_physical
4274
4275 !> Compute the gradient of a scalar field using second-order central differences on a non-uniform grid
4276 subroutine s_gradient_dir(q, dq, dir)
4277
4278 real(stp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:), intent(inout) :: q, dq
4279 integer, intent(in) :: dir
4280 integer :: i, j, k
4281
4282 if (dir == 1) then
4283 ! Gradient in x dir.
4284
4285# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4286
4287# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4288#if defined(MFC_OpenACC)
4289# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4290!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
4291# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4292#elif defined(MFC_OpenMP)
4293# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4294
4295# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4296
4297# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4298
4299# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4300!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k)
4301# 1600 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4302#endif
4303# 1601 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4304 do k = 0, p
4305 do j = 0, n
4306 do i = 0, m
4307 dq(i, j, k) = q(i, j, k)*(dx(i + 1) - dx(i - 1)) + q(i + 1, j, k)*(dx(i) + dx(i - 1)) - q(i - 1, j, &
4308 & k)*(dx(i) + dx(i + 1))
4309 dq(i, j, k) = dq(i, j, k)/((dx(i) + dx(i - 1))*(dx(i) + dx(i + 1)))
4310 end do
4311 end do
4312 end do
4313
4314# 1610 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4315#if defined(MFC_OpenACC)
4316# 1610 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4317!$acc end parallel loop
4318# 1610 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4319#elif defined(MFC_OpenMP)
4320# 1610 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4321
4322# 1610 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4323!$omp end target teams loop
4324# 1610 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4325#endif
4326# 1611 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4327 else if (dir == 2) then
4328 ! Gradient in y dir.
4329
4330# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4331
4332# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4333#if defined(MFC_OpenACC)
4334# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4335!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
4336# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4337#elif defined(MFC_OpenMP)
4338# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4339
4340# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4341
4342# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4343
4344# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4345!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k)
4346# 1613 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4347#endif
4348# 1614 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4349 do k = 0, p
4350 do j = 0, n
4351 do i = 0, m
4352 dq(i, j, k) = q(i, j, k)*(dy(j + 1) - dy(j - 1)) + q(i, j + 1, k)*(dy(j) + dy(j - 1)) - q(i, j - 1, &
4353 & k)*(dy(j) + dy(j + 1))
4354 dq(i, j, k) = dq(i, j, k)/((dy(j) + dy(j - 1))*(dy(j) + dy(j + 1)))
4355 end do
4356 end do
4357 end do
4358
4359# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4360#if defined(MFC_OpenACC)
4361# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4362!$acc end parallel loop
4363# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4364#elif defined(MFC_OpenMP)
4365# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4366
4367# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4368!$omp end target teams loop
4369# 1623 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4370#endif
4371# 1624 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4372 else if (dir == 3) then
4373 ! Gradient in z dir.
4374
4375# 1626 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4376
4377# 1626 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4378#if defined(MFC_OpenACC)
4379# 1626 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4380!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
4381# 1626 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4382#elif defined(MFC_OpenMP)
4383# 1626 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4384
4385# 1626 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4386
4387# 1626 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4388
4389# 1626 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4390!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(i, j, k)
4391# 1626 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4392#endif
4393# 1627 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4394 do k = 0, p
4395 do j = 0, n
4396 do i = 0, m
4397 dq(i, j, k) = q(i, j, k)*(dz(k + 1) - dz(k - 1)) + q(i, j, k + 1)*(dz(k) + dz(k - 1)) - q(i, j, &
4398 & k - 1)*(dz(k) + dz(k + 1))
4399 dq(i, j, k) = dq(i, j, k)/((dz(k) + dz(k - 1))*(dz(k) + dz(k + 1)))
4400 end do
4401 end do
4402 end do
4403
4404# 1636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4405#if defined(MFC_OpenACC)
4406# 1636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4407!$acc end parallel loop
4408# 1636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4409#elif defined(MFC_OpenMP)
4410# 1636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4411
4412# 1636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4413!$omp end target teams loop
4414# 1636 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4415#endif
4416# 1637 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4417 end if
4418
4419 end subroutine s_gradient_dir
4420
4421 !> Write Lagrangian bubble state data at each time step
4422 impure subroutine s_write_lag_particles(qtime)
4423
4424 real(wp), intent(in) :: qtime
4425 integer :: k
4426 character(LEN=path_len + 2*name_len) :: file_loc
4427 logical :: file_exist
4428 character(LEN=25) :: fmt
4429
4430 write (file_loc, '(A,I0,A)') 'lag_bubble_evol_', proc_rank, '.dat'
4431 file_loc = trim(case_dir) // '/D/' // trim(file_loc)
4432 call my_inquire(trim(file_loc), file_exist)
4433
4434 if (precision == precision_single) then
4435 fmt = "(A16,A14,8A16)"
4436 else
4437 fmt = "(A24,A14,8A24)"
4438 end if
4439
4440 if (.not. file_exist) then
4441 open (lag_evol_id, file=trim(file_loc), form='formatted', position='rewind')
4442 write (lag_evol_id, fmt) 'currentTime', 'particleID', 'x', 'y', 'z', 'coreVaporMass', 'coreVaporConcentration', &
4443 & 'radius', 'interfaceVelocity', 'corePressure'
4444 else
4445 open (lag_evol_id, file=trim(file_loc), form='formatted', position='append')
4446 end if
4447
4448 end subroutine s_write_lag_particles
4449
4450 !> Open the file to write the evolution of the lagrangian bubbles on each time step.
4451 impure subroutine s_open_lag_bubble_evol()
4452
4453 character(LEN=path_len + 2*name_len) :: file_loc
4454 logical :: file_exist
4455 character(LEN=25) :: fmt
4456
4457 write (file_loc, '(A,I0,A)') 'lag_bubble_evol_', proc_rank, '.dat'
4458 file_loc = trim(case_dir) // '/D/' // trim(file_loc)
4459 call my_inquire(trim(file_loc), file_exist)
4460
4461 if (precision == precision_single) then
4462 fmt = "(A16,A14,8A16)"
4463 else
4464 fmt = "(A24,A14,8A24)"
4465 end if
4466
4467 if (.not. file_exist) then
4468 open (lag_evol_id, file=trim(file_loc), form='formatted', position='rewind')
4469 write (lag_evol_id, fmt) 'currentTime', 'particleID', 'x', 'y', 'z', 'coreVaporMass', 'coreVaporConcentration', &
4470 & 'radius', 'interfaceVelocity', 'corePressure'
4471 else
4472 open (lag_evol_id, file=trim(file_loc), form='formatted', position='append')
4473 end if
4474
4475 end subroutine s_open_lag_bubble_evol
4476
4477 !> Write on each time step the changes of the lagrangian bubbles.
4478 impure subroutine s_write_lag_bubble_evol(qtime)
4479
4480 real(wp), intent(in) :: qtime
4481 integer :: k, ios
4482 character(LEN=25) :: fmt
4483 character(LEN=path_len + 2*name_len) :: file_loc, path
4484 logical :: file_exist
4485
4486 if (precision == precision_single) then
4487 fmt = "(F16.8,I14,8F16.8)"
4488 else
4489 fmt = "(F24.16,I14,8F24.16)"
4490 end if
4491
4492 ! Cycle through list
4493 do k = 1, n_el_bubs_loc
4494 write (lag_evol_id, fmt) qtime, lag_id(k, 1), mtn_pos(k, 1, 1), mtn_pos(k, 2, 1), mtn_pos(k, 3, 1), gas_mv(k, 1), &
4495 & gas_mv(k, 1)/(gas_mv(k, 1) + gas_mg(k)), intfc_rad(k, 1), intfc_vel(k, 1), gas_p(k, 1)
4496 end do
4497
4498 end subroutine s_write_lag_bubble_evol
4499
4500 impure subroutine s_close_lag_bubble_evol
4501
4502 close (lag_evol_id)
4503
4504 end subroutine s_close_lag_bubble_evol
4505
4507
4508 character(LEN=path_len + 2*name_len) :: file_loc
4509 logical :: file_exist
4510
4511 if (proc_rank == 0) then
4512 write (file_loc, '(A)') 'voidfraction.dat'
4513 file_loc = trim(case_dir) // '/D/' // trim(file_loc)
4514 call my_inquire(trim(file_loc), file_exist)
4515 if (.not. file_exist) then
4516 open (lag_void_id, file=trim(file_loc), form='formatted', position='rewind')
4517 else
4518 open (lag_void_id, file=trim(file_loc), form='formatted', position='append')
4519 end if
4520 end if
4521
4522 end subroutine s_open_void_evol
4523
4524 !> Write some useful statistics related to the volume fraction of the particles (void fraction)
4525 impure subroutine s_write_void_evol(qtime)
4526
4527 real(wp), intent(in) :: qtime
4528 real(wp) :: volcell, voltot
4529 real(wp) :: lag_void_max, lag_void_avg, lag_vol
4530 real(wp) :: void_max_glb, void_avg_glb, vol_glb
4531 integer :: i, j, k
4532 character(LEN=path_len + 2*name_len) :: file_loc
4533 logical :: file_exist
4534
4535 lag_void_max = 0._wp
4536 lag_void_avg = 0._wp
4537 lag_vol = 0._wp
4538
4539# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4540
4541# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4542#if defined(MFC_OpenACC)
4543# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4544!$acc parallel loop collapse(3) gang vector default(present) private(volcell) reduction(+:lag_vol, lag_void_avg) reduction(MAX:lag_void_max) copy(lag_vol, lag_void_avg, lag_void_max)
4545# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4546#elif defined(MFC_OpenMP)
4547# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4548
4549# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4550
4551# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4552
4553# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4554!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(volcell) &
4555# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4556!$omp& reduction(+:lag_vol, lag_void_avg) reduction(MAX:lag_void_max) map(tofrom:lag_vol, lag_void_avg, lag_void_max)
4557# 1758 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4558#endif
4559# 1760 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4560 do k = 0, p
4561 do j = 0, n
4562 do i = 0, m
4563 lag_void_max = max(lag_void_max, 1._wp - q_beta(1)%sf(i, j, k))
4564 call s_get_char_vol(i, j, k, volcell)
4565 if ((1._wp - q_beta(1)%sf(i, j, k)) > 5.0e-11_wp) then
4566 lag_void_avg = lag_void_avg + (1._wp - q_beta(1)%sf(i, j, k))*volcell
4567 lag_vol = lag_vol + volcell
4568 end if
4569 end do
4570 end do
4571 end do
4572
4573# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4574#if defined(MFC_OpenACC)
4575# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4576!$acc end parallel loop
4577# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4578#elif defined(MFC_OpenMP)
4579# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4580
4581# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4582!$omp end target teams loop
4583# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4584#endif
4585# 1773 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4586
4587#ifdef MFC_MPI
4588 if (num_procs > 1) then
4589 call s_mpi_allreduce_max(lag_void_max, void_max_glb)
4590 lag_void_max = void_max_glb
4591 call s_mpi_allreduce_sum(lag_vol, vol_glb)
4592 lag_vol = vol_glb
4593 call s_mpi_allreduce_sum(lag_void_avg, void_avg_glb)
4594 lag_void_avg = void_avg_glb
4595 end if
4596#endif
4597 voltot = lag_void_avg
4598 ! This voidavg value does not reflect the real void fraction in the cloud since the cell which does not have bubbles are not
4599 ! accounted
4600 if (lag_vol > 0._wp) lag_void_avg = lag_void_avg/lag_vol
4601
4602 if (proc_rank == 0) then
4603 write (lag_void_id, '(6X,4e24.8)') qtime, lag_void_avg, lag_void_max, voltot
4604 end if
4605
4606 end subroutine s_write_void_evol
4607
4609
4610 if (proc_rank == 0) close (lag_void_id)
4611
4612 end subroutine s_close_void_evol
4613
4614 !> Write restart files for the Lagrangian bubble solver
4615 impure subroutine s_write_restart_lag_bubbles(t_step)
4616
4617 ! Generic string used to store the address of a particular file
4618 integer, intent(in) :: t_step
4619 character(LEN=path_len + 2*name_len) :: file_loc
4620 logical :: file_exist
4621 integer :: bub_id, tot_part
4622 integer :: i, k
4623
4624#ifdef MFC_MPI
4625 ! For Parallel I/O
4626 integer :: ifile, ierr
4627 integer, dimension(MPI_STATUS_SIZE) :: status
4628 integer(KIND=MPI_OFFSET_KIND) :: disp
4629 integer :: view
4630 integer, dimension(2) :: gsizes, lsizes, start_idx_part
4631 integer, allocatable :: proc_bubble_counts(:)
4632 real(wp), dimension(1:1,1:lag_io_vars) :: dummy
4633 dummy = 0._wp
4634
4635 bub_id = 0
4636 if (n_el_bubs_loc /= 0) then
4637 do k = 1, n_el_bubs_loc
4638 if (particle_in_domain_physical(mtn_pos(k,1:3,1))) then
4639 bub_id = bub_id + 1
4640 end if
4641 end do
4642 end if
4643
4644 if (.not. parallel_io) return
4645
4646 allocate (proc_bubble_counts(num_procs))
4647
4648 lsizes(1) = bub_id
4649 lsizes(2) = lag_io_vars
4650
4651 ! Total number of particles
4652 call mpi_allreduce(bub_id, tot_part, 1, mpi_integer, mpi_sum, mpi_comm_world, ierr)
4653
4654 call mpi_allgather(bub_id, 1, mpi_integer, proc_bubble_counts, 1, mpi_integer, mpi_comm_world, ierr)
4655
4656 ! Calculate starting index for this processor's particles
4657 call mpi_exscan(lsizes(1), start_idx_part(1), 1, mpi_integer, mpi_sum, mpi_comm_world, ierr)
4658 if (proc_rank == 0) start_idx_part(1) = 0
4659 start_idx_part(2) = 0
4660
4661 gsizes(1) = tot_part
4662 gsizes(2) = lag_io_vars
4663
4664 write (file_loc, '(A,I0,A)') 'lag_bubbles_', t_step, '.dat'
4665 file_loc = trim(case_dir) // '/restart_data' // trim(mpiiofs) // trim(file_loc)
4666
4667 ! Clean up existing file
4668 if (proc_rank == 0) then
4669 inquire (file=trim(file_loc), exist=file_exist)
4670 if (file_exist) then
4671 call mpi_file_delete(file_loc, mpi_info_int, ierr)
4672 end if
4673 end if
4674
4675 call mpi_barrier(mpi_comm_world, ierr)
4676
4677 if (proc_rank == 0) then
4678 call mpi_file_open(mpi_comm_self, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
4679 call s_check_mpi_file_open(ierr, file_loc)
4680
4681 ! Write header using MPI I/O for consistency
4682 call mpi_file_write(ifile, tot_part, 1, mpi_integer, status, ierr)
4683 call mpi_file_write(ifile, mytime, 1, mpi_p, status, ierr)
4684 call mpi_file_write(ifile, dt, 1, mpi_p, status, ierr)
4685 call mpi_file_write(ifile, num_procs, 1, mpi_integer, status, ierr)
4686 call mpi_file_write(ifile, proc_bubble_counts, num_procs, mpi_integer, status, ierr)
4687
4688 call mpi_file_close(ifile, ierr)
4689 end if
4690
4691 call mpi_barrier(mpi_comm_world, ierr)
4692
4693 if (bub_id > 0) then
4694 allocate (mpi_io_data_lag_bubbles(max(1, bub_id),1:lag_io_vars))
4695
4696 i = 0
4697 do k = 1, n_el_bubs_loc
4698 if (.not. particle_in_domain_physical(mtn_pos(k,1:3,1))) cycle
4699 i = i + 1
4700 mpi_io_data_lag_bubbles(i, 1) = real(lag_id(k, 1))
4701 mpi_io_data_lag_bubbles(i,2:4) = mtn_pos(k,1:3,1)
4702 mpi_io_data_lag_bubbles(i,5:7) = mtn_posprev(k,1:3,1)
4703 mpi_io_data_lag_bubbles(i,8:10) = mtn_vel(k,1:3,1)
4704 mpi_io_data_lag_bubbles(i, 11) = intfc_rad(k, 1)
4705 mpi_io_data_lag_bubbles(i, 12) = intfc_vel(k, 1)
4706 mpi_io_data_lag_bubbles(i, 13) = bub_r0(k)
4707 mpi_io_data_lag_bubbles(i, 14) = rmax_stats(k)
4708 mpi_io_data_lag_bubbles(i, 15) = rmin_stats(k)
4709 mpi_io_data_lag_bubbles(i, 16) = bub_dphidt(k)
4710 mpi_io_data_lag_bubbles(i, 17) = gas_p(k, 1)
4711 mpi_io_data_lag_bubbles(i, 18) = gas_mv(k, 1)
4712 mpi_io_data_lag_bubbles(i, 19) = gas_mg(k)
4713 mpi_io_data_lag_bubbles(i, 20) = gas_betat(k)
4714 mpi_io_data_lag_bubbles(i, 21) = gas_betac(k)
4715 end do
4716
4717 call mpi_type_create_subarray(2, gsizes, lsizes, start_idx_part, mpi_order_fortran, mpi_p, view, ierr)
4718 call mpi_type_commit(view, ierr)
4719
4720 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
4721 call s_check_mpi_file_open(ierr, file_loc)
4722
4723 ! Skip header (written by rank 0)
4724 disp = int(sizeof(tot_part) + 2*sizeof(mytime) + sizeof(num_procs) + num_procs*sizeof(proc_bubble_counts(1)), &
4725 & mpi_offset_kind)
4726 call mpi_file_set_view(ifile, disp, mpi_p, view, 'native', mpi_info_int, ierr)
4727
4728 call mpi_file_write_all(ifile, mpi_io_data_lag_bubbles, lag_io_vars*bub_id, mpi_p, status, ierr)
4729
4730 call mpi_file_close(ifile, ierr)
4731
4732 deallocate (mpi_io_data_lag_bubbles)
4733 else
4734 call mpi_type_contiguous(0, mpi_p, view, ierr)
4735 call mpi_type_commit(view, ierr)
4736
4737 call mpi_file_open(mpi_comm_world, file_loc, ior(mpi_mode_wronly, mpi_mode_create), mpi_info_int, ifile, ierr)
4738 call s_check_mpi_file_open(ierr, file_loc)
4739
4740 ! Skip header (written by rank 0)
4741 disp = int(sizeof(tot_part) + 2*sizeof(mytime) + sizeof(num_procs) + num_procs*sizeof(proc_bubble_counts(1)), &
4742 & mpi_offset_kind)
4743 call mpi_file_set_view(ifile, disp, mpi_p, view, 'native', mpi_info_int, ierr)
4744
4745 call mpi_file_write_all(ifile, dummy, 0, mpi_p, status, ierr)
4746
4747 call mpi_file_close(ifile, ierr)
4748 end if
4749
4750 deallocate (proc_bubble_counts)
4751#endif
4752
4753 end subroutine s_write_restart_lag_bubbles
4754
4755 !> Compute the maximum and minimum radius of each bubble
4757
4758 integer :: k
4759
4760
4761# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4762
4763# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4764#if defined(MFC_OpenACC)
4765# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4766!$acc parallel loop gang vector default(present) private(k) reduction(MAX:Rmax_glb) reduction(MIN:Rmin_glb) copy(Rmax_glb, Rmin_glb)
4767# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4768#elif defined(MFC_OpenMP)
4769# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4770
4771# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4772
4773# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4774
4775# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4776!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k) reduction(MAX:Rmax_glb) &
4777# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4778!$omp& reduction(MIN:Rmin_glb) map(tofrom:Rmax_glb, Rmin_glb)
4779# 1947 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4780#endif
4781# 1949 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4782 do k = 1, n_el_bubs_loc
4783 rmax_glb = max(rmax_glb, intfc_rad(k, 1)/bub_r0(k))
4784 rmin_glb = min(rmin_glb, intfc_rad(k, 1)/bub_r0(k))
4785 rmax_stats(k) = max(rmax_stats(k), intfc_rad(k, 1)/bub_r0(k))
4786 rmin_stats(k) = min(rmin_stats(k), intfc_rad(k, 1)/bub_r0(k))
4787 end do
4788
4789# 1955 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4790#if defined(MFC_OpenACC)
4791# 1955 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4792!$acc end parallel loop
4793# 1955 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4794#elif defined(MFC_OpenMP)
4795# 1955 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4796
4797# 1955 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4798!$omp end target teams loop
4799# 1955 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4800#endif
4801# 1956 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4802
4803 end subroutine s_calculate_lag_bubble_stats
4804
4805 impure subroutine s_open_lag_bubble_stats()
4806
4807 character(LEN=path_len + 2*name_len) :: file_loc
4808 character(LEN=20) :: fmt
4809 logical :: file_exist
4810
4811 write (file_loc, '(A,I0,A)') 'stats_lag_bubbles_', proc_rank, '.dat'
4812 file_loc = trim(case_dir) // '/D/' // trim(file_loc)
4813 call my_inquire(trim(file_loc), file_exist)
4814
4815 if (precision == precision_single) then
4816 fmt = "(A10,A14,5A16)"
4817 else
4818 fmt = "(A10,A14,5A24)"
4819 end if
4820
4821 if (.not. file_exist) then
4822 open (lag_stats_id, file=trim(file_loc), form='formatted', position='rewind')
4823 write (lag_stats_id, *) 'proc_rank, particleID, x, y, z, Rmax_glb, Rmin_glb'
4824 else
4825 open (lag_stats_id, file=trim(file_loc), form='formatted', position='append')
4826 end if
4827
4828 end subroutine s_open_lag_bubble_stats
4829
4830 !> Write the maximum and minimum radius of each bubble.
4831 impure subroutine s_write_lag_bubble_stats()
4832
4833 integer :: k
4834 character(LEN=path_len + 2*name_len) :: file_loc
4835 character(LEN=20) :: fmt
4836
4837
4838# 1991 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4839#if defined(MFC_OpenACC)
4840# 1991 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4841!$acc update host(Rmax_glb, Rmin_glb)
4842# 1991 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4843#elif defined(MFC_OpenMP)
4844# 1991 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4845!$omp target update from(Rmax_glb, Rmin_glb)
4846# 1991 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4847#endif
4848# 1992 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4849
4850 if (precision == precision_single) then
4851 fmt = "(I10,I14,5F16.8)"
4852 else
4853 fmt = "(I10,I14,5F24.16)"
4854 end if
4855
4856 do k = 1, n_el_bubs_loc
4857 write (lag_stats_id, fmt) proc_rank, lag_id(k, 1), mtn_pos(k, 1, 1), mtn_pos(k, 2, 1), mtn_pos(k, 3, 1), &
4859 end do
4860
4861 end subroutine s_write_lag_bubble_stats
4862
4864
4865 close (lag_stats_id)
4866
4867 end subroutine s_close_lag_bubble_stats
4868
4869 !> Copy a lag bubble from a src index to a destination index
4870 impure subroutine s_copy_lag_bubble(dest, src)
4871
4872 integer, intent(in) :: src, dest
4873
4874 bub_r0(dest) = bub_r0(src)
4875 rmax_stats(dest) = rmax_stats(src)
4876 rmin_stats(dest) = rmin_stats(src)
4877 gas_mg(dest) = gas_mg(src)
4878 gas_betat(dest) = gas_betat(src)
4879 gas_betac(dest) = gas_betac(src)
4880 bub_dphidt(dest) = bub_dphidt(src)
4881 lag_id(dest, 1) = lag_id(src, 1)
4882 gas_p(dest,1:2) = gas_p(src,1:2)
4883 gas_mv(dest,1:2) = gas_mv(src,1:2)
4884 intfc_rad(dest,1:2) = intfc_rad(src,1:2)
4885 intfc_vel(dest,1:2) = intfc_vel(src,1:2)
4886 mtn_vel(dest,1:3,1:2) = mtn_vel(src,1:3,1:2)
4887 mtn_s(dest,1:3,1:2) = mtn_s(src,1:3,1:2)
4888 mtn_pos(dest,1:3,1:2) = mtn_pos(src,1:3,1:2)
4889 mtn_posprev(dest,1:3,1:2) = mtn_posprev(src,1:3,1:2)
4892 gas_dpdt(dest,1:lag_num_ts) = gas_dpdt(src,1:lag_num_ts)
4893 gas_dmvdt(dest,1:lag_num_ts) = gas_dmvdt(src,1:lag_num_ts)
4894 mtn_dposdt(dest,1:3,1:lag_num_ts) = mtn_dposdt(src,1:3,1:lag_num_ts)
4895 mtn_dveldt(dest,1:3,1:lag_num_ts) = mtn_dveldt(src,1:3,1:lag_num_ts)
4896
4897 end subroutine s_copy_lag_bubble
4898
4900
4901 integer :: i
4902
4903 if (lag_params%write_void_evol) call s_close_void_evol
4904 if (lag_params%write_bubbles) call s_close_lag_bubble_evol()
4905 if (lag_params%write_bubbles_stats) call s_close_lag_bubble_stats()
4906
4907 do i = 1, q_beta_idx
4908#ifdef MFC_DEBUG
4909# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4910 block
4911# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4912 use iso_fortran_env, only: output_unit
4913# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4914
4915# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4916 print *, 'm_bubbles_EL.fpp:2051: ', '@:DEALLOCATE(q_beta(i)%sf)'
4917# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4918
4919# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4920 call flush (output_unit)
4921# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4922 end block
4923# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4924#endif
4925# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4926
4927# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4928#if defined(MFC_OpenACC)
4929# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4930!$acc exit data delete(q_beta(i)%sf)
4931# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4932#elif defined(MFC_OpenMP)
4933# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4934!$omp target exit data map(release:q_beta(i)%sf)
4935# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4936#endif
4937# 2051 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4938 deallocate (q_beta(i)%sf)
4939# 2052 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4940 if (lag_params%kahan_summation) then
4941#ifdef MFC_DEBUG
4942# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4943 block
4944# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4945 use iso_fortran_env, only: output_unit
4946# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4947
4948# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4949 print *, 'm_bubbles_EL.fpp:2053: ', '@:DEALLOCATE(kahan_comp(i)%sf)'
4950# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4951
4952# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4953 call flush (output_unit)
4954# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4955 end block
4956# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4957#endif
4958# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4959
4960# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4961#if defined(MFC_OpenACC)
4962# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4963!$acc exit data delete(kahan_comp(i)%sf)
4964# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4965#elif defined(MFC_OpenMP)
4966# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4967!$omp target exit data map(release:kahan_comp(i)%sf)
4968# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4969#endif
4970# 2053 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4971 deallocate (kahan_comp(i)%sf)
4972# 2054 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4973 end if
4974 end do
4975#ifdef MFC_DEBUG
4976# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4977 block
4978# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4979 use iso_fortran_env, only: output_unit
4980# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4981
4982# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4983 print *, 'm_bubbles_EL.fpp:2056: ', '@:DEALLOCATE(q_beta)'
4984# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4985
4986# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4987 call flush (output_unit)
4988# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4989 end block
4990# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4991#endif
4992# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4993
4994# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4995#if defined(MFC_OpenACC)
4996# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4997!$acc exit data delete(q_beta)
4998# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4999#elif defined(MFC_OpenMP)
5000# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5001!$omp target exit data map(release:q_beta)
5002# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5003#endif
5004# 2056 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5005 deallocate (q_beta)
5006# 2057 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5007 if (lag_params%kahan_summation) then
5008#ifdef MFC_DEBUG
5009# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5010 block
5011# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5012 use iso_fortran_env, only: output_unit
5013# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5014
5015# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5016 print *, 'm_bubbles_EL.fpp:2058: ', '@:DEALLOCATE(kahan_comp)'
5017# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5018
5019# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5020 call flush (output_unit)
5021# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5022 end block
5023# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5024#endif
5025# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5026
5027# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5028#if defined(MFC_OpenACC)
5029# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5030!$acc exit data delete(kahan_comp)
5031# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5032#elif defined(MFC_OpenMP)
5033# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5034!$omp target exit data map(release:kahan_comp)
5035# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5036#endif
5037# 2058 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5038 deallocate (kahan_comp)
5039# 2059 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5040 end if
5041
5042 ! Deallocating space
5043#ifdef MFC_DEBUG
5044# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5045 block
5046# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5047 use iso_fortran_env, only: output_unit
5048# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5049
5050# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5051 print *, 'm_bubbles_EL.fpp:2062: ', '@:DEALLOCATE(lag_id)'
5052# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5053
5054# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5055 call flush (output_unit)
5056# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5057 end block
5058# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5059#endif
5060# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5061
5062# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5063#if defined(MFC_OpenACC)
5064# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5065!$acc exit data delete(lag_id)
5066# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5067#elif defined(MFC_OpenMP)
5068# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5069!$omp target exit data map(release:lag_id)
5070# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5071#endif
5072# 2062 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5073 deallocate (lag_id)
5074# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5075#ifdef MFC_DEBUG
5076# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5077 block
5078# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5079 use iso_fortran_env, only: output_unit
5080# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5081
5082# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5083 print *, 'm_bubbles_EL.fpp:2063: ', '@:DEALLOCATE(bub_R0)'
5084# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5085
5086# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5087 call flush (output_unit)
5088# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5089 end block
5090# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5091#endif
5092# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5093
5094# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5095#if defined(MFC_OpenACC)
5096# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5097!$acc exit data delete(bub_R0)
5098# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5099#elif defined(MFC_OpenMP)
5100# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5101!$omp target exit data map(release:bub_R0)
5102# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5103#endif
5104# 2063 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5105 deallocate (bub_r0)
5106# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5107#ifdef MFC_DEBUG
5108# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5109 block
5110# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5111 use iso_fortran_env, only: output_unit
5112# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5113
5114# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5115 print *, 'm_bubbles_EL.fpp:2064: ', '@:DEALLOCATE(Rmax_stats)'
5116# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5117
5118# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5119 call flush (output_unit)
5120# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5121 end block
5122# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5123#endif
5124# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5125
5126# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5127#if defined(MFC_OpenACC)
5128# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5129!$acc exit data delete(Rmax_stats)
5130# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5131#elif defined(MFC_OpenMP)
5132# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5133!$omp target exit data map(release:Rmax_stats)
5134# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5135#endif
5136# 2064 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5137 deallocate (rmax_stats)
5138# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5139#ifdef MFC_DEBUG
5140# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5141 block
5142# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5143 use iso_fortran_env, only: output_unit
5144# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5145
5146# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5147 print *, 'm_bubbles_EL.fpp:2065: ', '@:DEALLOCATE(Rmin_stats)'
5148# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5149
5150# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5151 call flush (output_unit)
5152# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5153 end block
5154# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5155#endif
5156# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5157
5158# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5159#if defined(MFC_OpenACC)
5160# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5161!$acc exit data delete(Rmin_stats)
5162# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5163#elif defined(MFC_OpenMP)
5164# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5165!$omp target exit data map(release:Rmin_stats)
5166# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5167#endif
5168# 2065 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5169 deallocate (rmin_stats)
5170# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5171#ifdef MFC_DEBUG
5172# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5173 block
5174# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5175 use iso_fortran_env, only: output_unit
5176# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5177
5178# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5179 print *, 'm_bubbles_EL.fpp:2066: ', '@:DEALLOCATE(gas_mg)'
5180# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5181
5182# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5183 call flush (output_unit)
5184# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5185 end block
5186# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5187#endif
5188# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5189
5190# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5191#if defined(MFC_OpenACC)
5192# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5193!$acc exit data delete(gas_mg)
5194# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5195#elif defined(MFC_OpenMP)
5196# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5197!$omp target exit data map(release:gas_mg)
5198# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5199#endif
5200# 2066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5201 deallocate (gas_mg)
5202# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5203#ifdef MFC_DEBUG
5204# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5205 block
5206# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5207 use iso_fortran_env, only: output_unit
5208# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5209
5210# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5211 print *, 'm_bubbles_EL.fpp:2067: ', '@:DEALLOCATE(gas_betaT)'
5212# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5213
5214# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5215 call flush (output_unit)
5216# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5217 end block
5218# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5219#endif
5220# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5221
5222# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5223#if defined(MFC_OpenACC)
5224# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5225!$acc exit data delete(gas_betaT)
5226# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5227#elif defined(MFC_OpenMP)
5228# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5229!$omp target exit data map(release:gas_betaT)
5230# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5231#endif
5232# 2067 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5233 deallocate (gas_betat)
5234# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5235#ifdef MFC_DEBUG
5236# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5237 block
5238# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5239 use iso_fortran_env, only: output_unit
5240# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5241
5242# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5243 print *, 'm_bubbles_EL.fpp:2068: ', '@:DEALLOCATE(gas_betaC)'
5244# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5245
5246# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5247 call flush (output_unit)
5248# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5249 end block
5250# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5251#endif
5252# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5253
5254# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5255#if defined(MFC_OpenACC)
5256# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5257!$acc exit data delete(gas_betaC)
5258# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5259#elif defined(MFC_OpenMP)
5260# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5261!$omp target exit data map(release:gas_betaC)
5262# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5263#endif
5264# 2068 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5265 deallocate (gas_betac)
5266# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5267#ifdef MFC_DEBUG
5268# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5269 block
5270# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5271 use iso_fortran_env, only: output_unit
5272# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5273
5274# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5275 print *, 'm_bubbles_EL.fpp:2069: ', '@:DEALLOCATE(bub_dphidt)'
5276# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5277
5278# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5279 call flush (output_unit)
5280# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5281 end block
5282# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5283#endif
5284# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5285
5286# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5287#if defined(MFC_OpenACC)
5288# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5289!$acc exit data delete(bub_dphidt)
5290# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5291#elif defined(MFC_OpenMP)
5292# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5293!$omp target exit data map(release:bub_dphidt)
5294# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5295#endif
5296# 2069 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5297 deallocate (bub_dphidt)
5298# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5299#ifdef MFC_DEBUG
5300# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5301 block
5302# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5303 use iso_fortran_env, only: output_unit
5304# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5305
5306# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5307 print *, 'm_bubbles_EL.fpp:2070: ', '@:DEALLOCATE(gas_p)'
5308# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5309
5310# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5311 call flush (output_unit)
5312# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5313 end block
5314# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5315#endif
5316# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5317
5318# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5319#if defined(MFC_OpenACC)
5320# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5321!$acc exit data delete(gas_p)
5322# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5323#elif defined(MFC_OpenMP)
5324# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5325!$omp target exit data map(release:gas_p)
5326# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5327#endif
5328# 2070 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5329 deallocate (gas_p)
5330# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5331#ifdef MFC_DEBUG
5332# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5333 block
5334# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5335 use iso_fortran_env, only: output_unit
5336# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5337
5338# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5339 print *, 'm_bubbles_EL.fpp:2071: ', '@:DEALLOCATE(gas_mv)'
5340# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5341
5342# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5343 call flush (output_unit)
5344# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5345 end block
5346# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5347#endif
5348# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5349
5350# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5351#if defined(MFC_OpenACC)
5352# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5353!$acc exit data delete(gas_mv)
5354# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5355#elif defined(MFC_OpenMP)
5356# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5357!$omp target exit data map(release:gas_mv)
5358# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5359#endif
5360# 2071 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5361 deallocate (gas_mv)
5362# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5363#ifdef MFC_DEBUG
5364# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5365 block
5366# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5367 use iso_fortran_env, only: output_unit
5368# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5369
5370# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5371 print *, 'm_bubbles_EL.fpp:2072: ', '@:DEALLOCATE(intfc_rad)'
5372# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5373
5374# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5375 call flush (output_unit)
5376# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5377 end block
5378# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5379#endif
5380# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5381
5382# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5383#if defined(MFC_OpenACC)
5384# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5385!$acc exit data delete(intfc_rad)
5386# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5387#elif defined(MFC_OpenMP)
5388# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5389!$omp target exit data map(release:intfc_rad)
5390# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5391#endif
5392# 2072 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5393 deallocate (intfc_rad)
5394# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5395#ifdef MFC_DEBUG
5396# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5397 block
5398# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5399 use iso_fortran_env, only: output_unit
5400# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5401
5402# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5403 print *, 'm_bubbles_EL.fpp:2073: ', '@:DEALLOCATE(intfc_vel)'
5404# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5405
5406# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5407 call flush (output_unit)
5408# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5409 end block
5410# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5411#endif
5412# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5413
5414# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5415#if defined(MFC_OpenACC)
5416# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5417!$acc exit data delete(intfc_vel)
5418# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5419#elif defined(MFC_OpenMP)
5420# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5421!$omp target exit data map(release:intfc_vel)
5422# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5423#endif
5424# 2073 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5425 deallocate (intfc_vel)
5426# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5427#ifdef MFC_DEBUG
5428# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5429 block
5430# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5431 use iso_fortran_env, only: output_unit
5432# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5433
5434# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5435 print *, 'm_bubbles_EL.fpp:2074: ', '@:DEALLOCATE(mtn_pos)'
5436# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5437
5438# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5439 call flush (output_unit)
5440# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5441 end block
5442# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5443#endif
5444# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5445
5446# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5447#if defined(MFC_OpenACC)
5448# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5449!$acc exit data delete(mtn_pos)
5450# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5451#elif defined(MFC_OpenMP)
5452# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5453!$omp target exit data map(release:mtn_pos)
5454# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5455#endif
5456# 2074 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5457 deallocate (mtn_pos)
5458# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5459#ifdef MFC_DEBUG
5460# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5461 block
5462# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5463 use iso_fortran_env, only: output_unit
5464# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5465
5466# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5467 print *, 'm_bubbles_EL.fpp:2075: ', '@:DEALLOCATE(mtn_posPrev)'
5468# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5469
5470# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5471 call flush (output_unit)
5472# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5473 end block
5474# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5475#endif
5476# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5477
5478# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5479#if defined(MFC_OpenACC)
5480# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5481!$acc exit data delete(mtn_posPrev)
5482# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5483#elif defined(MFC_OpenMP)
5484# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5485!$omp target exit data map(release:mtn_posPrev)
5486# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5487#endif
5488# 2075 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5489 deallocate (mtn_posprev)
5490# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5491#ifdef MFC_DEBUG
5492# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5493 block
5494# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5495 use iso_fortran_env, only: output_unit
5496# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5497
5498# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5499 print *, 'm_bubbles_EL.fpp:2076: ', '@:DEALLOCATE(mtn_vel)'
5500# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5501
5502# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5503 call flush (output_unit)
5504# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5505 end block
5506# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5507#endif
5508# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5509
5510# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5511#if defined(MFC_OpenACC)
5512# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5513!$acc exit data delete(mtn_vel)
5514# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5515#elif defined(MFC_OpenMP)
5516# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5517!$omp target exit data map(release:mtn_vel)
5518# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5519#endif
5520# 2076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5521 deallocate (mtn_vel)
5522# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5523#ifdef MFC_DEBUG
5524# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5525 block
5526# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5527 use iso_fortran_env, only: output_unit
5528# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5529
5530# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5531 print *, 'm_bubbles_EL.fpp:2077: ', '@:DEALLOCATE(mtn_s)'
5532# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5533
5534# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5535 call flush (output_unit)
5536# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5537 end block
5538# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5539#endif
5540# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5541
5542# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5543#if defined(MFC_OpenACC)
5544# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5545!$acc exit data delete(mtn_s)
5546# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5547#elif defined(MFC_OpenMP)
5548# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5549!$omp target exit data map(release:mtn_s)
5550# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5551#endif
5552# 2077 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5553 deallocate (mtn_s)
5554# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5555#ifdef MFC_DEBUG
5556# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5557 block
5558# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5559 use iso_fortran_env, only: output_unit
5560# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5561
5562# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5563 print *, 'm_bubbles_EL.fpp:2078: ', '@:DEALLOCATE(intfc_draddt)'
5564# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5565
5566# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5567 call flush (output_unit)
5568# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5569 end block
5570# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5571#endif
5572# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5573
5574# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5575#if defined(MFC_OpenACC)
5576# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5577!$acc exit data delete(intfc_draddt)
5578# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5579#elif defined(MFC_OpenMP)
5580# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5581!$omp target exit data map(release:intfc_draddt)
5582# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5583#endif
5584# 2078 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5585 deallocate (intfc_draddt)
5586# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5587#ifdef MFC_DEBUG
5588# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5589 block
5590# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5591 use iso_fortran_env, only: output_unit
5592# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5593
5594# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5595 print *, 'm_bubbles_EL.fpp:2079: ', '@:DEALLOCATE(intfc_dveldt)'
5596# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5597
5598# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5599 call flush (output_unit)
5600# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5601 end block
5602# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5603#endif
5604# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5605
5606# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5607#if defined(MFC_OpenACC)
5608# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5609!$acc exit data delete(intfc_dveldt)
5610# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5611#elif defined(MFC_OpenMP)
5612# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5613!$omp target exit data map(release:intfc_dveldt)
5614# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5615#endif
5616# 2079 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5617 deallocate (intfc_dveldt)
5618# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5619#ifdef MFC_DEBUG
5620# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5621 block
5622# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5623 use iso_fortran_env, only: output_unit
5624# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5625
5626# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5627 print *, 'm_bubbles_EL.fpp:2080: ', '@:DEALLOCATE(gas_dpdt)'
5628# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5629
5630# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5631 call flush (output_unit)
5632# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5633 end block
5634# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5635#endif
5636# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5637
5638# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5639#if defined(MFC_OpenACC)
5640# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5641!$acc exit data delete(gas_dpdt)
5642# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5643#elif defined(MFC_OpenMP)
5644# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5645!$omp target exit data map(release:gas_dpdt)
5646# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5647#endif
5648# 2080 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5649 deallocate (gas_dpdt)
5650# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5651#ifdef MFC_DEBUG
5652# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5653 block
5654# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5655 use iso_fortran_env, only: output_unit
5656# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5657
5658# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5659 print *, 'm_bubbles_EL.fpp:2081: ', '@:DEALLOCATE(gas_dmvdt)'
5660# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5661
5662# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5663 call flush (output_unit)
5664# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5665 end block
5666# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5667#endif
5668# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5669
5670# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5671#if defined(MFC_OpenACC)
5672# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5673!$acc exit data delete(gas_dmvdt)
5674# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5675#elif defined(MFC_OpenMP)
5676# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5677!$omp target exit data map(release:gas_dmvdt)
5678# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5679#endif
5680# 2081 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5681 deallocate (gas_dmvdt)
5682# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5683#ifdef MFC_DEBUG
5684# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5685 block
5686# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5687 use iso_fortran_env, only: output_unit
5688# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5689
5690# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5691 print *, 'm_bubbles_EL.fpp:2082: ', '@:DEALLOCATE(mtn_dposdt)'
5692# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5693
5694# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5695 call flush (output_unit)
5696# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5697 end block
5698# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5699#endif
5700# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5701
5702# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5703#if defined(MFC_OpenACC)
5704# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5705!$acc exit data delete(mtn_dposdt)
5706# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5707#elif defined(MFC_OpenMP)
5708# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5709!$omp target exit data map(release:mtn_dposdt)
5710# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5711#endif
5712# 2082 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5713 deallocate (mtn_dposdt)
5714# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5715#ifdef MFC_DEBUG
5716# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5717 block
5718# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5719 use iso_fortran_env, only: output_unit
5720# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5721
5722# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5723 print *, 'm_bubbles_EL.fpp:2083: ', '@:DEALLOCATE(mtn_dveldt)'
5724# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5725
5726# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5727 call flush (output_unit)
5728# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5729 end block
5730# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5731#endif
5732# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5733
5734# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5735#if defined(MFC_OpenACC)
5736# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5737!$acc exit data delete(mtn_dveldt)
5738# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5739#elif defined(MFC_OpenMP)
5740# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5741!$omp target exit data map(release:mtn_dveldt)
5742# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5743#endif
5744# 2083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5745 deallocate (mtn_dveldt)
5746# 2084 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5747
5748#ifdef MFC_DEBUG
5749# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5750 block
5751# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5752 use iso_fortran_env, only: output_unit
5753# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5754
5755# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5756 print *, 'm_bubbles_EL.fpp:2085: ', '@:DEALLOCATE(keep_bubble)'
5757# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5758
5759# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5760 call flush (output_unit)
5761# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5762 end block
5763# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5764#endif
5765# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5766
5767# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5768#if defined(MFC_OpenACC)
5769# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5770!$acc exit data delete(keep_bubble)
5771# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5772#elif defined(MFC_OpenMP)
5773# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5774!$omp target exit data map(release:keep_bubble)
5775# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5776#endif
5777# 2085 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5778 deallocate (keep_bubble)
5779# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5780#ifdef MFC_DEBUG
5781# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5782 block
5783# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5784 use iso_fortran_env, only: output_unit
5785# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5786
5787# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5788 print *, 'm_bubbles_EL.fpp:2086: ', '@:DEALLOCATE(wrap_bubble_loc, wrap_bubble_dir)'
5789# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5790
5791# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5792 call flush (output_unit)
5793# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5794 end block
5795# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5796#endif
5797# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5798
5799# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5800#if defined(MFC_OpenACC)
5801# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5802!$acc exit data delete(wrap_bubble_loc, wrap_bubble_dir)
5803# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5804#elif defined(MFC_OpenMP)
5805# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5806!$omp target exit data map(release:wrap_bubble_loc, wrap_bubble_dir)
5807# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5808#endif
5809# 2086 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5810 deallocate (wrap_bubble_loc, wrap_bubble_dir)
5811# 2087 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5812
5813 if (lag_params%vel_model > 0 .and. lag_params%pressure_force) then
5814#ifdef MFC_DEBUG
5815# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5816 block
5817# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5818 use iso_fortran_env, only: output_unit
5819# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5820
5821# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5822 print *, 'm_bubbles_EL.fpp:2089: ', '@:DEALLOCATE(grad_p_x)'
5823# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5824
5825# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5826 call flush (output_unit)
5827# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5828 end block
5829# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5830#endif
5831# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5832
5833# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5834#if defined(MFC_OpenACC)
5835# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5836!$acc exit data delete(grad_p_x)
5837# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5838#elif defined(MFC_OpenMP)
5839# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5840!$omp target exit data map(release:grad_p_x)
5841# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5842#endif
5843# 2089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5844 deallocate (grad_p_x)
5845# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5846#ifdef MFC_DEBUG
5847# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5848 block
5849# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5850 use iso_fortran_env, only: output_unit
5851# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5852
5853# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5854 print *, 'm_bubbles_EL.fpp:2090: ', '@:DEALLOCATE(fd_coeff_x_pgrad)'
5855# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5856
5857# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5858 call flush (output_unit)
5859# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5860 end block
5861# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5862#endif
5863# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5864
5865# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5866#if defined(MFC_OpenACC)
5867# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5868!$acc exit data delete(fd_coeff_x_pgrad)
5869# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5870#elif defined(MFC_OpenMP)
5871# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5872!$omp target exit data map(release:fd_coeff_x_pgrad)
5873# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5874#endif
5875# 2090 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5876 deallocate (fd_coeff_x_pgrad)
5877# 2091 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5878 if (n > 0) then
5879#ifdef MFC_DEBUG
5880# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5881 block
5882# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5883 use iso_fortran_env, only: output_unit
5884# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5885
5886# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5887 print *, 'm_bubbles_EL.fpp:2092: ', '@:DEALLOCATE(grad_p_y)'
5888# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5889
5890# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5891 call flush (output_unit)
5892# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5893 end block
5894# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5895#endif
5896# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5897
5898# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5899#if defined(MFC_OpenACC)
5900# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5901!$acc exit data delete(grad_p_y)
5902# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5903#elif defined(MFC_OpenMP)
5904# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5905!$omp target exit data map(release:grad_p_y)
5906# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5907#endif
5908# 2092 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5909 deallocate (grad_p_y)
5910# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5911#ifdef MFC_DEBUG
5912# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5913 block
5914# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5915 use iso_fortran_env, only: output_unit
5916# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5917
5918# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5919 print *, 'm_bubbles_EL.fpp:2093: ', '@:DEALLOCATE(fd_coeff_y_pgrad)'
5920# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5921
5922# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5923 call flush (output_unit)
5924# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5925 end block
5926# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5927#endif
5928# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5929
5930# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5931#if defined(MFC_OpenACC)
5932# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5933!$acc exit data delete(fd_coeff_y_pgrad)
5934# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5935#elif defined(MFC_OpenMP)
5936# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5937!$omp target exit data map(release:fd_coeff_y_pgrad)
5938# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5939#endif
5940# 2093 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5941 deallocate (fd_coeff_y_pgrad)
5942# 2094 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5943 if (p > 0) then
5944#ifdef MFC_DEBUG
5945# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5946 block
5947# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5948 use iso_fortran_env, only: output_unit
5949# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5950
5951# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5952 print *, 'm_bubbles_EL.fpp:2095: ', '@:DEALLOCATE(grad_p_z)'
5953# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5954
5955# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5956 call flush (output_unit)
5957# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5958 end block
5959# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5960#endif
5961# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5962
5963# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5964#if defined(MFC_OpenACC)
5965# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5966!$acc exit data delete(grad_p_z)
5967# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5968#elif defined(MFC_OpenMP)
5969# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5970!$omp target exit data map(release:grad_p_z)
5971# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5972#endif
5973# 2095 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5974 deallocate (grad_p_z)
5975# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5976#ifdef MFC_DEBUG
5977# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5978 block
5979# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5980 use iso_fortran_env, only: output_unit
5981# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5982
5983# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5984 print *, 'm_bubbles_EL.fpp:2096: ', '@:DEALLOCATE(fd_coeff_z_pgrad)'
5985# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5986
5987# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5988 call flush (output_unit)
5989# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5990 end block
5991# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5992#endif
5993# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5994
5995# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5996#if defined(MFC_OpenACC)
5997# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
5998!$acc exit data delete(fd_coeff_z_pgrad)
5999# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6000#elif defined(MFC_OpenMP)
6001# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6002!$omp target exit data map(release:fd_coeff_z_pgrad)
6003# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6004#endif
6005# 2096 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6006 deallocate (fd_coeff_z_pgrad)
6007# 2097 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6008 end if
6009 end if
6010 end if
6011
6012#ifdef MFC_DEBUG
6013# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6014 block
6015# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6016 use iso_fortran_env, only: output_unit
6017# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6018
6019# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6020 print *, 'm_bubbles_EL.fpp:2101: ', '@:DEALLOCATE(cell_list_start)'
6021# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6022
6023# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6024 call flush (output_unit)
6025# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6026 end block
6027# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6028#endif
6029# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6030
6031# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6032#if defined(MFC_OpenACC)
6033# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6034!$acc exit data delete(cell_list_start)
6035# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6036#elif defined(MFC_OpenMP)
6037# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6038!$omp target exit data map(release:cell_list_start)
6039# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6040#endif
6041# 2101 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6042 deallocate (cell_list_start)
6043# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6044#ifdef MFC_DEBUG
6045# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6046 block
6047# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6048 use iso_fortran_env, only: output_unit
6049# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6050
6051# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6052 print *, 'm_bubbles_EL.fpp:2102: ', '@:DEALLOCATE(cell_list_count)'
6053# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6054
6055# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6056 call flush (output_unit)
6057# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6058 end block
6059# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6060#endif
6061# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6062
6063# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6064#if defined(MFC_OpenACC)
6065# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6066!$acc exit data delete(cell_list_count)
6067# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6068#elif defined(MFC_OpenMP)
6069# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6070!$omp target exit data map(release:cell_list_count)
6071# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6072#endif
6073# 2102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6074 deallocate (cell_list_count)
6075# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6076#ifdef MFC_DEBUG
6077# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6078 block
6079# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6080 use iso_fortran_env, only: output_unit
6081# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6082
6083# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6084 print *, 'm_bubbles_EL.fpp:2103: ', '@:DEALLOCATE(cell_list_idx)'
6085# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6086
6087# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6088 call flush (output_unit)
6089# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6090 end block
6091# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6092#endif
6093# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6094
6095# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6096#if defined(MFC_OpenACC)
6097# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6098!$acc exit data delete(cell_list_idx)
6099# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6100#elif defined(MFC_OpenMP)
6101# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6102!$omp target exit data map(release:cell_list_idx)
6103# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6104#endif
6105# 2103 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6106 deallocate (cell_list_idx)
6107# 2104 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
6108
6109 end subroutine s_finalize_lagrangian_solver
6110
6111end module m_bubbles_el
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
integer, intent(in) k
integer, intent(in) j
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
Kernel functions (Gaussian, delta) that smear Lagrangian bubble effects onto the Eulerian grid.
Tracks Lagrangian bubbles and couples their dynamics to the Eulerian flow via volume averaging.
real(wp), dimension(:,:), allocatable intfc_draddt
Time derivative of bubble's radius.
impure subroutine s_write_lag_bubble_stats()
Write the maximum and minimum radius of each bubble.
subroutine s_gradient_dir(q, dq, dir)
Compute the gradient of a scalar field using second-order central differences on a non-uniform grid.
real(wp) rmin_glb
Maximum and minimum bubbe size in the local domain.
real(wp), dimension(:,:,:), allocatable mtn_vel
Bubble's velocity.
real(wp), dimension(:), allocatable gas_betat
heatflux model (Preston et al., 2007)
real(wp), dimension(:), allocatable bub_dphidt
subgrid velocity potential (Maeda & Colonius, 2018)
real(wp), dimension(:,:,:), allocatable mtn_dveldt
Time derivative of the bubble's velocity.
integer, dimension(:,:), allocatable wrap_bubble_dir
impure subroutine s_write_lag_bubble_evol(qtime)
Write on each time step the changes of the lagrangian bubbles.
integer q_beta_idx
Size of the q_beta vector field.
real(wp), dimension(:,:), allocatable gas_dpdt
Time derivative of gas pressure.
real(wp), dimension(:), allocatable gas_mg
Bubble's gas mass.
subroutine s_close_void_evol
impure subroutine s_write_restart_lag_bubbles(t_step)
Write restart files for the Lagrangian bubble solver.
integer, parameter lag_evol_id
impure subroutine s_close_lag_bubble_evol
real(wp), dimension(:,:), allocatable intfc_dveldt
Time derivative of bubble's interface velocity.
integer, private lag_num_ts
Number of time stages in the time-stepping scheme.
real(wp), dimension(:), allocatable bub_r0
Initial bubble radius.
integer, parameter lag_stats_id
impure subroutine s_add_bubbles(inputbubble, q_cons_vf, bub_id)
Add a new bubble from input data for a fresh start.
real(wp), dimension(:), allocatable rmin_stats
Minimum radius.
real(wp), dimension(:,:), allocatable gas_mv
Vapor mass in the bubble.
logical function particle_in_domain_physical(pos_part)
Determine if a Lagrangian bubble is within the physical domain excluding ghost cells.
impure subroutine s_restart_bubbles(bub_id, save_count)
Restore bubble data from a restart file.
real(wp), dimension(:,:), allocatable gas_dmvdt
Time derivative of the vapor mass in the bubble.
impure subroutine s_open_lag_bubble_evol()
Open the file to write the evolution of the lagrangian bubbles on each time step.
logical function particle_in_domain(pos_part)
Determine if a bubble position lies within the current MPI subdomain including ghost cells.
subroutine s_compute_bubbles_el_source(q_cons_vf, q_prim_vf, rhs_vf)
Compute the Lagrangian bubble source terms and add them to the RHS.
integer, dimension(:), allocatable keep_bubble
subroutine s_locate_cell(pos, cell, scoord)
Locate the cell index for a given physical position.
subroutine s_smear_voidfraction(bc_type)
Smear the bubble effects onto the Eulerian grid.
real(wp), dimension(:), allocatable rmax_stats
Maximum radius.
impure subroutine s_write_void_evol(qtime)
Write some useful statistics related to the volume fraction of the particles (void fraction).
impure subroutine s_transfer_data_to_tmp()
Transfer data into the temporal variables.
integer, dimension(:,:), allocatable lag_id
Global and local IDs.
real(wp), dimension(:,:,:), allocatable mtn_s
Bubble's computational cell position in real format.
subroutine s_calculate_lag_bubble_stats()
Compute the maximum and minimum radius of each bubble.
impure subroutine s_enforce_el_bubbles_boundary_conditions(q_prim_vf)
impure subroutine s_copy_lag_bubble(dest, src)
Copy a lag bubble from a src index to a destination index.
subroutine s_open_void_evol
type(scalar_field), dimension(:), allocatable q_beta
Projection of the lagrangian particles in the Eulerian framework.
real(wp), dimension(:), allocatable gas_betac
massflux model (Preston et al., 2007)
impure subroutine s_read_input_bubbles(q_cons_vf, bc_type)
Read initial bubble data from input files.
real(wp), dimension(:,:), allocatable intfc_vel
Velocity of the bubble interface.
impure subroutine s_initialize_bubbles_el_module(q_cons_vf, bc_type)
Initializes the lagrangian subgrid bubble solver.
subroutine s_close_lag_bubble_stats
impure subroutine s_open_lag_bubble_stats()
impure subroutine s_update_lagrange_tdv_rk(q_prim_vf, bc_type, stage)
Update Lagrangian bubble variables using TVD Runge-Kutta time stepping.
subroutine s_compute_bubble_el_dynamics(q_prim_vf, bc_type, stage)
Contains the bubble dynamics subroutines.
real(wp), dimension(:,:), allocatable gas_p
Pressure in the bubble.
type(scalar_field), dimension(:), allocatable kahan_comp
Kahan compensation for q_beta accumulation.
real(wp), dimension(:,:), allocatable intfc_rad
Bubble radius.
impure subroutine s_write_lag_particles(qtime)
Write Lagrangian bubble state data at each time step.
impure subroutine s_finalize_lagrangian_solver()
integer, parameter lag_void_id
real(wp), dimension(:,:,:), allocatable mtn_dposdt
Time derivative of the bubble's position.
real(wp), dimension(:,:,:), allocatable mtn_pos
Bubble's position.
real(wp), dimension(:,:,:), allocatable mtn_posprev
Bubble's previous position.
integer, dimension(:,:), allocatable wrap_bubble_loc
subroutine s_get_pinf(bub_id, q_prim_vf, ptype, f_pinfl, cell, preterm1, term2, romega)
Compute the bubble driving pressure p_inf.
Bubble-dynamics procedures for ensemble- and volume-averaged model.
Platform-specific file and directory operations: create, delete, inquire, getcwd, and basename.
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter time_stepper_rk2
integer, parameter time_stepper_rk1
integer, parameter time_stepper_rk3
integer, parameter precision_single
Equations of state in Gamma/Pi form, rho e = Gamma(rho) p + Pi(rho).
Finite difference operators for computing divergence of velocity fields.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
real(wp), dimension(:), allocatable, target z_cb
type(bounds_info), dimension(:), allocatable pcomm_coords
Local rank physical domain bounds.
real(wp), dimension(:), allocatable, target y_cb
real(wp), dimension(:), allocatable, target x_cb
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
Ghost-node immersed boundary method: locates ghost/image points, computes interpolation coefficients,...
MPI communication layer: domain decomposition, halo exchange, reductions, and parallel I/O setup.
impure subroutine s_mpi_abort(prnt, code)
The subroutine terminates the MPI execution environment.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Simulation helper routines for cell state, CFL calculation, and stability checks.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.