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# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20
21# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22
23# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24
25# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26
27# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28
29# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30
31# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32! New line at end of file is required for FYPP
33# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
34# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
35# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
36# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45
46# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47
48# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49
50# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51
52# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53
54# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55
56# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57
58# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59! New line at end of file is required for FYPP
60# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
61
62# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
63# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
64# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
65# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
66# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
67
68# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
69
70# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
71
72# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
73
74# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75
76# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77
78# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79
80# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81
82# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83
84# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85
86# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87
88# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89
90# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91
92# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93
94# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95
96# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97
98# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99
100# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101
102# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103
104# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105
106# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107
108# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109
110# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111
112# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124
125# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126
127# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128
129# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130
131# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132
133# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134
135# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136
137# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138! New line at end of file is required for FYPP
139# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
140# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
141# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
142# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
144# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
145# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
146# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
147
148# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
151
152# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153
154# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155
156# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157
158# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159
160# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161
162# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163
164# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165! New line at end of file is required for FYPP
166# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
167
168# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
169
170# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
171
172# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
173
174# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
175
176# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
177
178# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
179
180# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
181
182# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
183
184# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
185
186# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
187
188# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
189
190# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
191
192# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
193
194# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
195
196# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
197
198# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
199
200# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
201
202# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
203
204# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
205
206# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
207
208# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209
210# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211
212# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213
214# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215
216# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217
218# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219
220# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221
222# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223! New line at end of file is required for FYPP
224# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
225
226# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
227
228# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
229
230# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
231
232# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
233
234# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
235
236# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
237
238# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239
240# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
241
242# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
243
244# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247
248# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
249
250# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253
254# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
255
256# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259
260# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
261
262# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266! New line at end of file is required for FYPP
267# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
268
269# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
270
271! Caution:
272! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
273! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
274! For an example see misc/nvidia_uvm/bind.sh.
275# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
276
277# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
278
279# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
280
281# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
282
283# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
284
285# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
286
287# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
288
289# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
290! New line at end of file is required for FYPP
291# 6 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp" 2
292
293!> @brief Tracks Lagrangian bubbles and couples their dynamics to the Eulerian flow via volume averaging
295
296 use m_global_parameters !< definitions of the global parameters
297
298 use m_mpi_proxy !< message passing interface (mpi) module proxy
299
300 use m_bubbles_el_kernels !< definitions of the kernel functions
301
302 use m_bubbles !< general bubble dynamics procedures
303
304 use m_variables_conversion !< state variables type conversion procedures
305
307
309
310 use m_helper_basic !< functions to compare floating point numbers
311
312 use m_sim_helpers
313
314 use m_helper
315
316 implicit none
317
318 !(nBub)
319 integer, allocatable, dimension(:, :) :: lag_id !< Global and local IDs
320 real(wp), allocatable, dimension(:) :: bub_r0 !< Initial bubble radius
321 real(wp), allocatable, dimension(:) :: rmax_stats !< Maximum radius
322 real(wp), allocatable, dimension(:) :: rmin_stats !< Minimum radius
323
324# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
325#if defined(MFC_OpenACC)
326# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
327!$acc declare create(lag_id, bub_R0, Rmax_stats, Rmin_stats)
328# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
329#elif defined(MFC_OpenMP)
330# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
331!$omp declare target (lag_id, bub_R0, Rmax_stats, Rmin_stats)
332# 37 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
333#endif
334
335 real(wp), allocatable, dimension(:) :: gas_mg !< Bubble's gas mass
336 real(wp), allocatable, dimension(:) :: gas_betat !< heatflux model (Preston et al., 2007)
337 real(wp), allocatable, dimension(:) :: gas_betac !< massflux model (Preston et al., 2007)
338 real(wp), allocatable, dimension(:) :: bub_dphidt !< subgrid velocity potential (Maeda & Colonius, 2018)
339
340# 43 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
341#if defined(MFC_OpenACC)
342# 43 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
343!$acc declare create(gas_mg, gas_betaT, gas_betaC, bub_dphidt)
344# 43 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
345#elif defined(MFC_OpenMP)
346# 43 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
347!$omp declare target (gas_mg, gas_betaT, gas_betaC, bub_dphidt)
348# 43 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
349#endif
350
351 !(nBub, 1 -> actual val or 2 -> temp val)
352 real(wp), allocatable, dimension(:, :) :: gas_p !< Pressure in the bubble
353 real(wp), allocatable, dimension(:, :) :: gas_mv !< Vapor mass in the bubble
354 real(wp), allocatable, dimension(:, :) :: intfc_rad !< Bubble radius
355 real(wp), allocatable, dimension(:, :) :: intfc_vel !< Velocity of the bubble interface
356
357# 50 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
358#if defined(MFC_OpenACC)
359# 50 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
360!$acc declare create(gas_p, gas_mv, intfc_rad, intfc_vel)
361# 50 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
362#elif defined(MFC_OpenMP)
363# 50 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
364!$omp declare target (gas_p, gas_mv, intfc_rad, intfc_vel)
365# 50 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
366#endif
367 !(nBub, 1-> x or 2->y or 3 ->z, 1 -> actual or 2 -> temporal val)
368 real(wp), allocatable, dimension(:, :, :) :: mtn_pos !< Bubble's position
369 real(wp), allocatable, dimension(:, :, :) :: mtn_posprev !< Bubble's previous position
370 real(wp), allocatable, dimension(:, :, :) :: mtn_vel !< Bubble's velocity
371 real(wp), allocatable, dimension(:, :, :) :: mtn_s !< Bubble's computational cell position in real format
372
373# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
374#if defined(MFC_OpenACC)
375# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
376!$acc declare create(mtn_pos, mtn_posPrev, mtn_vel, mtn_s)
377# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
378#elif defined(MFC_OpenMP)
379# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
380!$omp declare target (mtn_pos, mtn_posPrev, mtn_vel, mtn_s)
381# 56 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
382#endif
383 !(nBub, 1-> x or 2->y or 3 ->z, time-stage)
384 real(wp), allocatable, dimension(:, :) :: intfc_draddt !< Time derivative of bubble's radius
385 real(wp), allocatable, dimension(:, :) :: intfc_dveldt !< Time derivative of bubble's interface velocity
386 real(wp), allocatable, dimension(:, :) :: gas_dpdt !< Time derivative of gas pressure
387 real(wp), allocatable, dimension(:, :) :: gas_dmvdt !< Time derivative of the vapor mass in the bubble
388 real(wp), allocatable, dimension(:, :, :) :: mtn_dposdt !< Time derivative of the bubble's position
389 real(wp), allocatable, dimension(:, :, :) :: mtn_dveldt !< Time derivative of the bubble's velocity
390
391# 64 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
392#if defined(MFC_OpenACC)
393# 64 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
394!$acc declare create(intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt)
395# 64 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
396#elif defined(MFC_OpenMP)
397# 64 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
398!$omp declare target (intfc_draddt, intfc_dveldt, gas_dpdt, gas_dmvdt, mtn_dposdt, mtn_dveldt)
399# 64 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
400#endif
401
402 integer, private :: lag_num_ts !< Number of time stages in the time-stepping scheme
403
404
405# 68 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
406#if defined(MFC_OpenACC)
407# 68 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
408!$acc declare create(lag_num_ts)
409# 68 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
410#elif defined(MFC_OpenMP)
411# 68 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
412!$omp declare target (lag_num_ts)
413# 68 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
414#endif
415
416 integer :: nbubs !< Number of bubbles in the local domain
417 real(wp) :: rmax_glb, rmin_glb !< Maximum and minimum bubbe size in the local domain
418 !< Projection of the lagrangian particles in the Eulerian framework
419 type(scalar_field), dimension(:), allocatable :: q_beta
420 integer :: q_beta_idx !< Size of the q_beta vector field
421
422
423# 76 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
424#if defined(MFC_OpenACC)
425# 76 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
426!$acc declare create(nBubs, Rmax_glb, Rmin_glb, q_beta, q_beta_idx)
427# 76 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
428#elif defined(MFC_OpenMP)
429# 76 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
430!$omp declare target (nBubs, Rmax_glb, Rmin_glb, q_beta, q_beta_idx)
431# 76 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
432#endif
433
434contains
435
436 !> Initializes the lagrangian subgrid bubble solver
437 !! @param q_cons_vf Initial conservative variables
438 impure subroutine s_initialize_bubbles_el_module(q_cons_vf)
439
440 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
441
442 integer :: nbubs_glb, i
443
444 ! Setting number of time-stages for selected time-stepping scheme
446
447 ! Allocate space for the Eulerian fields needed to map the effect of the bubbles
448 if (lag_params%solver_approach == 1) then
449 ! One-way coupling
450 q_beta_idx = 3
451 elseif (lag_params%solver_approach == 2) then
452 ! Two-way coupling
453 q_beta_idx = 4
454 if (p == 0) then
455 !Subgrid noise model for 2D approximation
456 q_beta_idx = 6
457 end if
458 else
459 call s_mpi_abort('Please check the lag_params%solver_approach input')
460 end if
461
462
463# 106 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
464#if defined(MFC_OpenACC)
465# 106 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
466!$acc update device(lag_num_ts, q_beta_idx)
467# 106 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
468#elif defined(MFC_OpenMP)
469# 106 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
470!$omp target update to(lag_num_ts, q_beta_idx)
471# 106 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
472#endif
473
474#ifdef MFC_DEBUG
475# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
476 block
477# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
478 use iso_fortran_env, only: output_unit
479# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
480
481# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
482 print *, 'm_bubbles_EL.fpp:108: ', '@:ALLOCATE(q_beta(1:q_beta_idx))'
483# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
484
485# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
486 call flush (output_unit)
487# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
488 end block
489# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
490#endif
491# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
492 allocate (q_beta(1:q_beta_idx))
493# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
494
495# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
496
497# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
498#if defined(MFC_OpenACC)
499# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
500!$acc enter data create(q_beta)
501# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
502#elif defined(MFC_OpenMP)
503# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
504!$omp target enter data map(always,alloc:q_beta)
505# 108 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
506#endif
507
508 do i = 1, q_beta_idx
509#ifdef MFC_DEBUG
510# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
511 block
512# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
513 use iso_fortran_env, only: output_unit
514# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
515
516# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
517 print *, 'm_bubbles_EL.fpp:111: ', '@:ALLOCATE(q_beta(i)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
518# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
519
520# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
521 call flush (output_unit)
522# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
523 end block
524# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
525#endif
526# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
527 allocate (q_beta(i)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
528# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
529
530# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
531
532# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
533#if defined(MFC_OpenACC)
534# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
535!$acc enter data create(q_beta(i)%sf)
536# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
537#elif defined(MFC_OpenMP)
538# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
539!$omp target enter data map(always,alloc:q_beta(i)%sf)
540# 111 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
541#endif
542# 114 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
543 end do
544
545 do i = 1, q_beta_idx
546#ifdef _CRAYFTN
547# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
548 block
549# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
550
551# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
552#ifdef MFC_DEBUG
553# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
554 block
555# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
556 use iso_fortran_env, only: output_unit
557# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
558
559# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
560 print *, 'm_bubbles_EL.fpp:117: ', '@:ACC_SETUP_SFs(q_beta(i))'
561# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
562
563# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
564 call flush (output_unit)
565# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
566 end block
567# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
568#endif
569# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
570
571# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
572
573# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
574#if defined(MFC_OpenACC)
575# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
576!$acc enter data copyin(q_beta(i))
577# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
578#elif defined(MFC_OpenMP)
579# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
580!$omp target enter data map(to:q_beta(i))
581# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
582#endif
583# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
584 if (associated(q_beta(i)%sf)) then
585# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
586
587# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
588#if defined(MFC_OpenACC)
589# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
590!$acc enter data copyin(q_beta(i)%sf)
591# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
592#elif defined(MFC_OpenMP)
593# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
594!$omp target enter data map(to:q_beta(i)%sf)
595# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
596#endif
597# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
598 end if
599# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
600 end block
601# 117 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
602#endif
603 end do
604
605 ! Allocating space for lagrangian variables
606 nbubs_glb = lag_params%nBubs_glb
607
608#ifdef MFC_DEBUG
609# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
610 block
611# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
612 use iso_fortran_env, only: output_unit
613# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
614
615# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
616 print *, 'm_bubbles_EL.fpp:123: ', '@:ALLOCATE(lag_id(1:nBubs_glb, 1:2))'
617# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
618
619# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
620 call flush (output_unit)
621# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
622 end block
623# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
624#endif
625# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
626 allocate (lag_id(1:nbubs_glb, 1:2))
627# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
628
629# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
630
631# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
632#if defined(MFC_OpenACC)
633# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
634!$acc enter data create(lag_id)
635# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
636#elif defined(MFC_OpenMP)
637# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
638!$omp target enter data map(always,alloc:lag_id)
639# 123 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
640#endif
641#ifdef MFC_DEBUG
642# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
643 block
644# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
645 use iso_fortran_env, only: output_unit
646# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
647
648# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
649 print *, 'm_bubbles_EL.fpp:124: ', '@:ALLOCATE(bub_R0(1:nBubs_glb))'
650# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
651
652# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
653 call flush (output_unit)
654# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
655 end block
656# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
657#endif
658# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
659 allocate (bub_r0(1:nbubs_glb))
660# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
661
662# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
663
664# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
665#if defined(MFC_OpenACC)
666# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
667!$acc enter data create(bub_R0)
668# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
669#elif defined(MFC_OpenMP)
670# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
671!$omp target enter data map(always,alloc:bub_R0)
672# 124 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
673#endif
674#ifdef MFC_DEBUG
675# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
676 block
677# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
678 use iso_fortran_env, only: output_unit
679# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
680
681# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
682 print *, 'm_bubbles_EL.fpp:125: ', '@:ALLOCATE(Rmax_stats(1:nBubs_glb))'
683# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
684
685# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
686 call flush (output_unit)
687# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
688 end block
689# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
690#endif
691# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
692 allocate (rmax_stats(1:nbubs_glb))
693# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
694
695# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
696
697# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
698#if defined(MFC_OpenACC)
699# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
700!$acc enter data create(Rmax_stats)
701# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
702#elif defined(MFC_OpenMP)
703# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
704!$omp target enter data map(always,alloc:Rmax_stats)
705# 125 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
706#endif
707#ifdef MFC_DEBUG
708# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
709 block
710# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
711 use iso_fortran_env, only: output_unit
712# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
713
714# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
715 print *, 'm_bubbles_EL.fpp:126: ', '@:ALLOCATE(Rmin_stats(1:nBubs_glb))'
716# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
717
718# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
719 call flush (output_unit)
720# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
721 end block
722# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
723#endif
724# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
725 allocate (rmin_stats(1:nbubs_glb))
726# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
727
728# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
729
730# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
731#if defined(MFC_OpenACC)
732# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
733!$acc enter data create(Rmin_stats)
734# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
735#elif defined(MFC_OpenMP)
736# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
737!$omp target enter data map(always,alloc:Rmin_stats)
738# 126 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
739#endif
740#ifdef MFC_DEBUG
741# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
742 block
743# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
744 use iso_fortran_env, only: output_unit
745# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
746
747# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
748 print *, 'm_bubbles_EL.fpp:127: ', '@:ALLOCATE(gas_mg(1:nBubs_glb))'
749# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
750
751# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
752 call flush (output_unit)
753# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
754 end block
755# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
756#endif
757# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
758 allocate (gas_mg(1:nbubs_glb))
759# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
760
761# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
762
763# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
764#if defined(MFC_OpenACC)
765# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
766!$acc enter data create(gas_mg)
767# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
768#elif defined(MFC_OpenMP)
769# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
770!$omp target enter data map(always,alloc:gas_mg)
771# 127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
772#endif
773#ifdef MFC_DEBUG
774# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
775 block
776# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
777 use iso_fortran_env, only: output_unit
778# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
779
780# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
781 print *, 'm_bubbles_EL.fpp:128: ', '@:ALLOCATE(gas_betaT(1:nBubs_glb))'
782# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
783
784# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
785 call flush (output_unit)
786# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
787 end block
788# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
789#endif
790# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
791 allocate (gas_betat(1:nbubs_glb))
792# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
793
794# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
795
796# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
797#if defined(MFC_OpenACC)
798# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
799!$acc enter data create(gas_betaT)
800# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
801#elif defined(MFC_OpenMP)
802# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
803!$omp target enter data map(always,alloc:gas_betaT)
804# 128 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
805#endif
806#ifdef MFC_DEBUG
807# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
808 block
809# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
810 use iso_fortran_env, only: output_unit
811# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
812
813# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
814 print *, 'm_bubbles_EL.fpp:129: ', '@:ALLOCATE(gas_betaC(1:nBubs_glb))'
815# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
816
817# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
818 call flush (output_unit)
819# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
820 end block
821# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
822#endif
823# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
824 allocate (gas_betac(1:nbubs_glb))
825# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
826
827# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
828
829# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
830#if defined(MFC_OpenACC)
831# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
832!$acc enter data create(gas_betaC)
833# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
834#elif defined(MFC_OpenMP)
835# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
836!$omp target enter data map(always,alloc:gas_betaC)
837# 129 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
838#endif
839#ifdef MFC_DEBUG
840# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
841 block
842# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
843 use iso_fortran_env, only: output_unit
844# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
845
846# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
847 print *, 'm_bubbles_EL.fpp:130: ', '@:ALLOCATE(bub_dphidt(1:nBubs_glb))'
848# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
849
850# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
851 call flush (output_unit)
852# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
853 end block
854# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
855#endif
856# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
857 allocate (bub_dphidt(1:nbubs_glb))
858# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
859
860# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
861
862# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
863#if defined(MFC_OpenACC)
864# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
865!$acc enter data create(bub_dphidt)
866# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
867#elif defined(MFC_OpenMP)
868# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
869!$omp target enter data map(always,alloc:bub_dphidt)
870# 130 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
871#endif
872#ifdef MFC_DEBUG
873# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
874 block
875# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
876 use iso_fortran_env, only: output_unit
877# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
878
879# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
880 print *, 'm_bubbles_EL.fpp:131: ', '@:ALLOCATE(gas_p(1:nBubs_glb, 1:2))'
881# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
882
883# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
884 call flush (output_unit)
885# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
886 end block
887# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
888#endif
889# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
890 allocate (gas_p(1:nbubs_glb, 1:2))
891# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
892
893# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
894
895# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
896#if defined(MFC_OpenACC)
897# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
898!$acc enter data create(gas_p)
899# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
900#elif defined(MFC_OpenMP)
901# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
902!$omp target enter data map(always,alloc:gas_p)
903# 131 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
904#endif
905#ifdef MFC_DEBUG
906# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
907 block
908# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
909 use iso_fortran_env, only: output_unit
910# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
911
912# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
913 print *, 'm_bubbles_EL.fpp:132: ', '@:ALLOCATE(gas_mv(1:nBubs_glb, 1:2))'
914# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
915
916# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
917 call flush (output_unit)
918# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
919 end block
920# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
921#endif
922# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
923 allocate (gas_mv(1:nbubs_glb, 1:2))
924# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
925
926# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
927
928# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
929#if defined(MFC_OpenACC)
930# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
931!$acc enter data create(gas_mv)
932# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
933#elif defined(MFC_OpenMP)
934# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
935!$omp target enter data map(always,alloc:gas_mv)
936# 132 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
937#endif
938#ifdef MFC_DEBUG
939# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
940 block
941# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
942 use iso_fortran_env, only: output_unit
943# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
944
945# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
946 print *, 'm_bubbles_EL.fpp:133: ', '@:ALLOCATE(intfc_rad(1:nBubs_glb, 1:2))'
947# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
948
949# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
950 call flush (output_unit)
951# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
952 end block
953# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
954#endif
955# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
956 allocate (intfc_rad(1:nbubs_glb, 1:2))
957# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
958
959# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
960
961# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
962#if defined(MFC_OpenACC)
963# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
964!$acc enter data create(intfc_rad)
965# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
966#elif defined(MFC_OpenMP)
967# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
968!$omp target enter data map(always,alloc:intfc_rad)
969# 133 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
970#endif
971#ifdef MFC_DEBUG
972# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
973 block
974# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
975 use iso_fortran_env, only: output_unit
976# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
977
978# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
979 print *, 'm_bubbles_EL.fpp:134: ', '@:ALLOCATE(intfc_vel(1:nBubs_glb, 1:2))'
980# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
981
982# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
983 call flush (output_unit)
984# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
985 end block
986# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
987#endif
988# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
989 allocate (intfc_vel(1:nbubs_glb, 1:2))
990# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
991
992# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
993
994# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
995#if defined(MFC_OpenACC)
996# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
997!$acc enter data create(intfc_vel)
998# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
999#elif defined(MFC_OpenMP)
1000# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1001!$omp target enter data map(always,alloc:intfc_vel)
1002# 134 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1003#endif
1004#ifdef MFC_DEBUG
1005# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1006 block
1007# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1008 use iso_fortran_env, only: output_unit
1009# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1010
1011# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1012 print *, 'm_bubbles_EL.fpp:135: ', '@:ALLOCATE(mtn_pos(1:nBubs_glb, 1:3, 1:2))'
1013# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1014
1015# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1016 call flush (output_unit)
1017# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1018 end block
1019# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1020#endif
1021# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1022 allocate (mtn_pos(1:nbubs_glb, 1:3, 1:2))
1023# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1024
1025# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1026
1027# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1028#if defined(MFC_OpenACC)
1029# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1030!$acc enter data create(mtn_pos)
1031# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1032#elif defined(MFC_OpenMP)
1033# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1034!$omp target enter data map(always,alloc:mtn_pos)
1035# 135 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1036#endif
1037#ifdef MFC_DEBUG
1038# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1039 block
1040# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1041 use iso_fortran_env, only: output_unit
1042# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1043
1044# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1045 print *, 'm_bubbles_EL.fpp:136: ', '@:ALLOCATE(mtn_posPrev(1:nBubs_glb, 1:3, 1:2))'
1046# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1047
1048# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1049 call flush (output_unit)
1050# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1051 end block
1052# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1053#endif
1054# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1055 allocate (mtn_posprev(1:nbubs_glb, 1:3, 1:2))
1056# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1057
1058# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1059
1060# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1061#if defined(MFC_OpenACC)
1062# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1063!$acc enter data create(mtn_posPrev)
1064# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1065#elif defined(MFC_OpenMP)
1066# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1067!$omp target enter data map(always,alloc:mtn_posPrev)
1068# 136 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1069#endif
1070#ifdef MFC_DEBUG
1071# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1072 block
1073# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1074 use iso_fortran_env, only: output_unit
1075# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1076
1077# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1078 print *, 'm_bubbles_EL.fpp:137: ', '@:ALLOCATE(mtn_vel(1:nBubs_glb, 1:3, 1:2))'
1079# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1080
1081# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1082 call flush (output_unit)
1083# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1084 end block
1085# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1086#endif
1087# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1088 allocate (mtn_vel(1:nbubs_glb, 1:3, 1:2))
1089# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1090
1091# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1092
1093# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1094#if defined(MFC_OpenACC)
1095# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1096!$acc enter data create(mtn_vel)
1097# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1098#elif defined(MFC_OpenMP)
1099# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1100!$omp target enter data map(always,alloc:mtn_vel)
1101# 137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1102#endif
1103#ifdef MFC_DEBUG
1104# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1105 block
1106# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1107 use iso_fortran_env, only: output_unit
1108# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1109
1110# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1111 print *, 'm_bubbles_EL.fpp:138: ', '@:ALLOCATE(mtn_s(1:nBubs_glb, 1:3, 1:2))'
1112# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1113
1114# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1115 call flush (output_unit)
1116# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1117 end block
1118# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1119#endif
1120# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1121 allocate (mtn_s(1:nbubs_glb, 1:3, 1:2))
1122# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1123
1124# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1125
1126# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1127#if defined(MFC_OpenACC)
1128# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1129!$acc enter data create(mtn_s)
1130# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1131#elif defined(MFC_OpenMP)
1132# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1133!$omp target enter data map(always,alloc:mtn_s)
1134# 138 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1135#endif
1136#ifdef MFC_DEBUG
1137# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1138 block
1139# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1140 use iso_fortran_env, only: output_unit
1141# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1142
1143# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1144 print *, 'm_bubbles_EL.fpp:139: ', '@:ALLOCATE(intfc_draddt(1:nBubs_glb, 1:lag_num_ts))'
1145# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1146
1147# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1148 call flush (output_unit)
1149# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1150 end block
1151# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1152#endif
1153# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1154 allocate (intfc_draddt(1:nbubs_glb, 1:lag_num_ts))
1155# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1156
1157# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1158
1159# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1160#if defined(MFC_OpenACC)
1161# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1162!$acc enter data create(intfc_draddt)
1163# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1164#elif defined(MFC_OpenMP)
1165# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1166!$omp target enter data map(always,alloc:intfc_draddt)
1167# 139 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1168#endif
1169#ifdef MFC_DEBUG
1170# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1171 block
1172# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1173 use iso_fortran_env, only: output_unit
1174# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1175
1176# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1177 print *, 'm_bubbles_EL.fpp:140: ', '@:ALLOCATE(intfc_dveldt(1:nBubs_glb, 1:lag_num_ts))'
1178# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1179
1180# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1181 call flush (output_unit)
1182# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1183 end block
1184# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1185#endif
1186# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1187 allocate (intfc_dveldt(1:nbubs_glb, 1:lag_num_ts))
1188# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1189
1190# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1191
1192# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1193#if defined(MFC_OpenACC)
1194# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1195!$acc enter data create(intfc_dveldt)
1196# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1197#elif defined(MFC_OpenMP)
1198# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1199!$omp target enter data map(always,alloc:intfc_dveldt)
1200# 140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1201#endif
1202#ifdef MFC_DEBUG
1203# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1204 block
1205# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1206 use iso_fortran_env, only: output_unit
1207# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1208
1209# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1210 print *, 'm_bubbles_EL.fpp:141: ', '@:ALLOCATE(gas_dpdt(1:nBubs_glb, 1:lag_num_ts))'
1211# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1212
1213# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1214 call flush (output_unit)
1215# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1216 end block
1217# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1218#endif
1219# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1220 allocate (gas_dpdt(1:nbubs_glb, 1:lag_num_ts))
1221# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1222
1223# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1224
1225# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1226#if defined(MFC_OpenACC)
1227# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1228!$acc enter data create(gas_dpdt)
1229# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1230#elif defined(MFC_OpenMP)
1231# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1232!$omp target enter data map(always,alloc:gas_dpdt)
1233# 141 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1234#endif
1235#ifdef MFC_DEBUG
1236# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1237 block
1238# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1239 use iso_fortran_env, only: output_unit
1240# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1241
1242# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1243 print *, 'm_bubbles_EL.fpp:142: ', '@:ALLOCATE(gas_dmvdt(1:nBubs_glb, 1:lag_num_ts))'
1244# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1245
1246# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1247 call flush (output_unit)
1248# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1249 end block
1250# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1251#endif
1252# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1253 allocate (gas_dmvdt(1:nbubs_glb, 1:lag_num_ts))
1254# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1255
1256# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1257
1258# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1259#if defined(MFC_OpenACC)
1260# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1261!$acc enter data create(gas_dmvdt)
1262# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1263#elif defined(MFC_OpenMP)
1264# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1265!$omp target enter data map(always,alloc:gas_dmvdt)
1266# 142 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1267#endif
1268#ifdef MFC_DEBUG
1269# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1270 block
1271# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1272 use iso_fortran_env, only: output_unit
1273# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1274
1275# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1276 print *, 'm_bubbles_EL.fpp:143: ', '@:ALLOCATE(mtn_dposdt(1:nBubs_glb, 1:3, 1:lag_num_ts))'
1277# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1278
1279# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1280 call flush (output_unit)
1281# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1282 end block
1283# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1284#endif
1285# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1286 allocate (mtn_dposdt(1:nbubs_glb, 1:3, 1:lag_num_ts))
1287# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1288
1289# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1290
1291# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1292#if defined(MFC_OpenACC)
1293# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1294!$acc enter data create(mtn_dposdt)
1295# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1296#elif defined(MFC_OpenMP)
1297# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1298!$omp target enter data map(always,alloc:mtn_dposdt)
1299# 143 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1300#endif
1301#ifdef MFC_DEBUG
1302# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1303 block
1304# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1305 use iso_fortran_env, only: output_unit
1306# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1307
1308# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1309 print *, 'm_bubbles_EL.fpp:144: ', '@:ALLOCATE(mtn_dveldt(1:nBubs_glb, 1:3, 1:lag_num_ts))'
1310# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1311
1312# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1313 call flush (output_unit)
1314# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1315 end block
1316# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1317#endif
1318# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1319 allocate (mtn_dveldt(1:nbubs_glb, 1:3, 1:lag_num_ts))
1320# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1321
1322# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1323
1324# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1325#if defined(MFC_OpenACC)
1326# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1327!$acc enter data create(mtn_dveldt)
1328# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1329#elif defined(MFC_OpenMP)
1330# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1331!$omp target enter data map(always,alloc:mtn_dveldt)
1332# 144 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1333#endif
1334
1335 if (adap_dt .and. f_is_default(adap_dt_tol)) adap_dt_tol = dflt_adap_dt_tol
1336
1337 ! Starting bubbles
1339
1340 end subroutine s_initialize_bubbles_el_module
1341
1342 !> The purpose of this procedure is to obtain the initial bubbles' information
1343 !! @param q_cons_vf Conservative variables
1344 impure subroutine s_read_input_bubbles(q_cons_vf)
1345
1346 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
1347
1348 real(wp), dimension(8) :: inputbubble
1349 real(wp) :: qtime
1350 integer :: id, bub_id, save_count
1351 integer :: i, ios
1352 logical :: file_exist, indomain
1353
1354 character(LEN=path_len + 2*name_len) :: path_d_dir !<
1355
1356 ! Initialize number of particles
1357 bub_id = 0
1358 id = 0
1359
1360 ! Read the input lag_bubble file or restart point
1361 if (cfl_dt) then
1362 save_count = n_start
1363 qtime = n_start*t_save
1364 else
1365 save_count = t_step_start
1366 qtime = t_step_start*dt
1367 end if
1368
1369 if (save_count == 0) then
1370 if (proc_rank == 0) print *, 'Reading lagrange bubbles input file.'
1371 inquire (file='input/lag_bubbles.dat', exist=file_exist)
1372 if (file_exist) then
1373 open (94, file='input/lag_bubbles.dat', form='formatted', iostat=ios)
1374 do while (ios == 0)
1375 read (94, *, iostat=ios) (inputbubble(i), i=1, 8)
1376 if (ios /= 0) cycle
1377 indomain = particle_in_domain_physical(inputbubble(1:3))
1378 id = id + 1
1379 if (id > lag_params%nBubs_glb .and. proc_rank == 0) then
1380 call s_mpi_abort("Current number of bubbles is larger than nBubs_glb")
1381 end if
1382 if (indomain) then
1383 bub_id = bub_id + 1
1384 call s_add_bubbles(inputbubble, q_cons_vf, bub_id)
1385 lag_id(bub_id, 1) = id !global ID
1386 lag_id(bub_id, 2) = bub_id !local ID
1387 nbubs = bub_id ! local number of bubbles
1388 end if
1389 end do
1390 close (94)
1391 else
1392 call s_mpi_abort("Initialize the lagrange bubbles in input/lag_bubbles.dat")
1393 end if
1394 else
1395 if (proc_rank == 0) print *, 'Restarting lagrange bubbles at save_count: ', save_count
1396 call s_restart_bubbles(bub_id, save_count)
1397 end if
1398
1399 print *, " Lagrange bubbles running, in proc", proc_rank, "number:", bub_id, "/", id
1400
1401
1402# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1403#if defined(MFC_OpenACC)
1404# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1405!$acc update device(bubbles_lagrange, lag_params)
1406# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1407#elif defined(MFC_OpenMP)
1408# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1409!$omp target update to(bubbles_lagrange, lag_params)
1410# 212 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1411#endif
1412
1413
1414# 214 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1415#if defined(MFC_OpenACC)
1416# 214 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1417!$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, nBubs)
1418# 214 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1419#elif defined(MFC_OpenMP)
1420# 214 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1421!$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, nBubs)
1422# 214 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1423#endif
1424# 219 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1425
1426 rmax_glb = min(dflt_real, -dflt_real)
1427 rmin_glb = max(dflt_real, -dflt_real)
1428
1429# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1430#if defined(MFC_OpenACC)
1431# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1432!$acc update device(Rmax_glb, Rmin_glb)
1433# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1434#elif defined(MFC_OpenMP)
1435# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1436!$omp target update to(Rmax_glb, Rmin_glb)
1437# 222 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1438#endif
1439
1440
1441# 224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1442#if defined(MFC_OpenACC)
1443# 224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1444!$acc update device(dx, dy, dz, x_cb, x_cc, y_cb, y_cc, z_cb, z_cc)
1445# 224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1446#elif defined(MFC_OpenMP)
1447# 224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1448!$omp target update to(dx, dy, dz, x_cb, x_cc, y_cb, y_cc, z_cb, z_cc)
1449# 224 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1450#endif
1451
1452 !Populate temporal variables
1455
1456 if (lag_params%write_bubbles) call s_write_lag_particles(qtime)
1457
1458 if (save_count == 0) then
1459 ! Create ./D directory
1460 write (path_d_dir, '(A,I0,A,I0)') trim(case_dir)//'/D'
1461 call my_inquire(path_d_dir, file_exist)
1462 if (.not. file_exist) call s_create_directory(trim(path_d_dir))
1463 call s_write_restart_lag_bubbles(save_count) ! Needed for post_processing
1464 call s_write_void_evol(qtime)
1465 end if
1466
1467 end subroutine s_read_input_bubbles
1468
1469 !> The purpose of this procedure is to obtain the information of the bubbles when starting fresh
1470 !! @param inputBubble Bubble information
1471 !! @param q_cons_vf Conservative variables
1472 !! @param bub_id Local id of the bubble
1473 impure subroutine s_add_bubbles(inputBubble, q_cons_vf, bub_id)
1474
1475 type(scalar_field), dimension(sys_size), intent(in) :: q_cons_vf
1476 real(wp), dimension(8), intent(in) :: inputbubble
1477 integer, intent(in) :: bub_id
1478 integer :: i
1479
1480 real(wp) :: pliq, volparticle, concvap, totalmass, kparticle, cpparticle
1481 real(wp) :: omegan_local, peg, pet, rhol, pcrit, qv, gamma, pi_inf, dynp
1482 integer, dimension(3) :: cell
1483 real(wp), dimension(2) :: re
1484 real(wp) :: massflag, heatflag, re_trans, im_trans
1485
1486 massflag = 0._wp
1487 heatflag = 0._wp
1488 if (lag_params%massTransfer_model) massflag = 1._wp
1489 if (lag_params%heatTransfer_model) heatflag = 1._wp
1490
1491 bub_r0(bub_id) = inputbubble(7)
1492 rmax_stats(bub_id) = min(dflt_real, -dflt_real)
1493 rmin_stats(bub_id) = max(dflt_real, -dflt_real)
1494 bub_dphidt(bub_id) = 0._wp
1495 intfc_rad(bub_id, 1) = inputbubble(7)
1496 intfc_vel(bub_id, 1) = inputbubble(8)
1497 mtn_pos(bub_id, 1:3, 1) = inputbubble(1:3)
1498 mtn_posprev(bub_id, 1:3, 1) = mtn_pos(bub_id, 1:3, 1)
1499 mtn_vel(bub_id, 1:3, 1) = inputbubble(4:6)
1500
1501 if (cyl_coord .and. p == 0) then
1502 mtn_pos(bub_id, 2, 1) = sqrt(mtn_pos(bub_id, 2, 1)**2._wp + &
1503 mtn_pos(bub_id, 3, 1)**2._wp)
1504 !Storing azimuthal angle (-Pi to Pi)) into the third coordinate variable
1505 mtn_pos(bub_id, 3, 1) = atan2(inputbubble(3), inputbubble(2))
1506 mtn_posprev(bub_id, 1:3, 1) = mtn_pos(bub_id, 1:3, 1)
1507 end if
1508
1509 cell = -buff_size
1510 call s_locate_cell(mtn_pos(bub_id, 1:3, 1), cell, mtn_s(bub_id, 1:3, 1))
1511
1512 ! Check if the bubble is located in the ghost cell of a symmetric, or wall boundary
1513 if ((any(bc_x%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. cell(1) < 0) .or. &
1514 (any(bc_x%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. cell(1) > m) .or. &
1515 (any(bc_y%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. cell(2) < 0) .or. &
1516 (any(bc_y%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. cell(2) > n)) then
1517 call s_mpi_abort("Lagrange bubble is in the ghost cells of a symmetric or wall boundary.")
1518 end if
1519
1520 if (p > 0) then
1521 if ((any(bc_z%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. cell(3) < 0) .or. &
1522 (any(bc_z%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. cell(3) > p)) then
1523 call s_mpi_abort("Lagrange bubble is in the ghost cells of a symmetric or wall boundary.")
1524 end if
1525 end if
1526
1527 call s_convert_to_mixture_variables(q_cons_vf, cell(1), cell(2), cell(3), &
1528 rhol, gamma, pi_inf, qv, re)
1529 dynp = 0._wp
1530 do i = 1, num_dims
1531 dynp = dynp + 0.5_wp*q_cons_vf(contxe + i)%sf(cell(1), cell(2), cell(3))**2/rhol
1532 end do
1533 pliq = (q_cons_vf(e_idx)%sf(cell(1), cell(2), cell(3)) - dynp - pi_inf)/gamma
1534 if (pliq < 0) print *, "Negative pressure", proc_rank, &
1535 q_cons_vf(e_idx)%sf(cell(1), cell(2), cell(3)), pi_inf, gamma, pliq, cell, dynp
1536
1537 ! Initial particle pressure
1538 gas_p(bub_id, 1) = pliq + 2._wp*(1._wp/web)/bub_r0(bub_id)
1539 if (.not. f_approx_equal((1._wp/web), 0._wp)) then
1540 pcrit = pv - 4._wp*(1._wp/web)/(3._wp*sqrt(3._wp*gas_p(bub_id, 1)*bub_r0(bub_id)**3._wp/(2._wp*(1._wp/web))))
1541 pref = gas_p(bub_id, 1)
1542 else
1543 pcrit = 0._wp
1544 end if
1545
1546 ! Initial particle mass
1547 volparticle = 4._wp/3._wp*pi*bub_r0(bub_id)**3._wp ! volume
1548 gas_mv(bub_id, 1) = pv*volparticle*(1._wp/(r_v*tw))*(massflag) ! vapermass
1549 gas_mg(bub_id) = (gas_p(bub_id, 1) - pv*(massflag))*volparticle*(1._wp/(r_g*tw)) ! gasmass
1550 if (gas_mg(bub_id) <= 0._wp) then
1551 call s_mpi_abort("The initial mass of gas inside the bubble is negative. Check the initial conditions.")
1552 end if
1553 totalmass = gas_mg(bub_id) + gas_mv(bub_id, 1) ! totalmass
1554
1555 ! Bubble natural frequency
1556 concvap = gas_mv(bub_id, 1)/(gas_mv(bub_id, 1) + gas_mg(bub_id))
1557 omegan_local = (3._wp*(gas_p(bub_id, 1) - pv*(massflag)) + 4._wp*(1._wp/web)/bub_r0(bub_id))/rhol
1558 if (pv*(massflag) > gas_p(bub_id, 1)) then
1559 call s_mpi_abort("Lagrange bubble initially located in a region with pressure below the vapor pressure.")
1560 end if
1561 omegan_local = sqrt(omegan_local/bub_r0(bub_id)**2._wp)
1562
1563 cpparticle = concvap*cp_v + (1._wp - concvap)*cp_g
1564 kparticle = concvap*k_vl + (1._wp - concvap)*k_gl
1565
1566 ! Mass and heat transfer coefficients (based on Preston 2007)
1567 pet = totalmass/volparticle*cpparticle*bub_r0(bub_id)**2._wp*omegan_local/kparticle
1568 call s_transcoeff(1._wp, pet, re_trans, im_trans)
1569 gas_betat(bub_id) = re_trans*(heatflag)*kparticle
1570
1571 peg = bub_r0(bub_id)**2._wp*omegan_local/vd
1572 call s_transcoeff(1._wp, peg, re_trans, im_trans)
1573 gas_betac(bub_id) = re_trans*(massflag)*vd
1574
1575 if (gas_mg(bub_id) <= 0._wp) then
1576 call s_mpi_abort("Negative gas mass in the bubble, check if the bubble is in the domain.")
1577 end if
1578
1579 end subroutine s_add_bubbles
1580
1581 !> The purpose of this procedure is to obtain the information of the bubbles from a restart point.
1582 !! @param bub_id Local ID of the particle
1583 !! @param save_count File identifier
1584 impure subroutine s_restart_bubbles(bub_id, save_count)
1585
1586 integer, intent(inout) :: bub_id, save_count
1587
1588 character(LEN=path_len + 2*name_len) :: file_loc
1589 real(wp) :: file_time, file_dt
1590 integer :: file_num_procs, file_tot_part, tot_part
1591
1592#ifdef MFC_MPI
1593 real(wp), dimension(20) :: inputvals
1594 integer, dimension(MPI_STATUS_SIZE) :: status
1595 integer(kind=MPI_OFFSET_KIND) :: disp
1596 integer :: view
1597
1598 integer, dimension(3) :: cell
1599 logical :: indomain, particle_file, file_exist
1600
1601 integer, dimension(2) :: gsizes, lsizes, start_idx_part
1602 integer :: ifile, ierr, tot_data, id
1603 integer :: i
1604
1605 integer, dimension(:), allocatable :: proc_bubble_counts
1606 real(wp), dimension(1:1, 1:lag_io_vars) :: dummy
1607 dummy = 0._wp
1608
1609 ! Construct file path
1610 write (file_loc, '(A,I0,A)') 'lag_bubbles_', save_count, '.dat'
1611 file_loc = trim(case_dir)//'/restart_data'//trim(mpiiofs)//trim(file_loc)
1612
1613 ! Check if file exists
1614 inquire (file=trim(file_loc), exist=file_exist)
1615 if (.not. file_exist) then
1616 call s_mpi_abort('Restart file '//trim(file_loc)//' does not exist!')
1617 end if
1618
1619 if (.not. parallel_io) return
1620
1621 if (proc_rank == 0) then
1622 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly, &
1623 mpi_info_int, ifile, ierr)
1624
1625 call mpi_file_read(ifile, file_tot_part, 1, mpi_integer, status, ierr)
1626 call mpi_file_read(ifile, file_time, 1, mpi_p, status, ierr)
1627 call mpi_file_read(ifile, file_dt, 1, mpi_p, status, ierr)
1628 call mpi_file_read(ifile, file_num_procs, 1, mpi_integer, status, ierr)
1629
1630 call mpi_file_close(ifile, ierr)
1631 end if
1632
1633 call mpi_bcast(file_tot_part, 1, mpi_integer, 0, mpi_comm_world, ierr)
1634 call mpi_bcast(file_time, 1, mpi_p, 0, mpi_comm_world, ierr)
1635 call mpi_bcast(file_dt, 1, mpi_p, 0, mpi_comm_world, ierr)
1636 call mpi_bcast(file_num_procs, 1, mpi_integer, 0, mpi_comm_world, ierr)
1637
1638 allocate (proc_bubble_counts(file_num_procs))
1639
1640 if (proc_rank == 0) then
1641 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly, &
1642 mpi_info_int, ifile, ierr)
1643
1644 ! Skip to processor counts position
1645 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs), &
1646 mpi_offset_kind)
1647 call mpi_file_seek(ifile, disp, mpi_seek_set, ierr)
1648 call mpi_file_read(ifile, proc_bubble_counts, file_num_procs, mpi_integer, status, ierr)
1649
1650 call mpi_file_close(ifile, ierr)
1651 end if
1652
1653 call mpi_bcast(proc_bubble_counts, file_num_procs, mpi_integer, 0, mpi_comm_world, ierr)
1654
1655 ! Set time variables from file
1656 mytime = file_time
1657 dt = file_dt
1658
1659 bub_id = proc_bubble_counts(proc_rank + 1)
1660
1661 start_idx_part(1) = 0
1662 do i = 1, proc_rank
1663 start_idx_part(1) = start_idx_part(1) + proc_bubble_counts(i)
1664 end do
1665
1666 start_idx_part(2) = 0
1667 lsizes(1) = bub_id
1668 lsizes(2) = lag_io_vars
1669
1670 gsizes(1) = file_tot_part
1671 gsizes(2) = lag_io_vars
1672
1673 if (bub_id > 0) then
1674
1675 allocate (mpi_io_data_lag_bubbles(bub_id, 1:lag_io_vars))
1676
1677 call mpi_type_create_subarray(2, gsizes, lsizes, start_idx_part, &
1678 mpi_order_fortran, mpi_p, view, ierr)
1679 call mpi_type_commit(view, ierr)
1680
1681 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly, &
1682 mpi_info_int, ifile, ierr)
1683
1684 ! Skip extended header
1685 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs) + &
1686 file_num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
1687 call mpi_file_set_view(ifile, disp, mpi_p, view, 'native', mpi_info_int, ierr)
1688
1689 call mpi_file_read_all(ifile, mpi_io_data_lag_bubbles, &
1690 lag_io_vars*bub_id, mpi_p, status, ierr)
1691
1692 call mpi_file_close(ifile, ierr)
1693 call mpi_type_free(view, ierr)
1694
1695 nbubs = bub_id
1696
1697 do i = 1, bub_id
1698 lag_id(i, 1) = int(mpi_io_data_lag_bubbles(i, 1))
1699 mtn_pos(i, 1:3, 1) = mpi_io_data_lag_bubbles(i, 2:4)
1700 mtn_posprev(i, 1:3, 1) = mpi_io_data_lag_bubbles(i, 5:7)
1701 mtn_vel(i, 1:3, 1) = mpi_io_data_lag_bubbles(i, 8:10)
1702 intfc_rad(i, 1) = mpi_io_data_lag_bubbles(i, 11)
1703 intfc_vel(i, 1) = mpi_io_data_lag_bubbles(i, 12)
1704 bub_r0(i) = mpi_io_data_lag_bubbles(i, 13)
1705 rmax_stats(i) = mpi_io_data_lag_bubbles(i, 14)
1706 rmin_stats(i) = mpi_io_data_lag_bubbles(i, 15)
1707 bub_dphidt(i) = mpi_io_data_lag_bubbles(i, 16)
1708 gas_p(i, 1) = mpi_io_data_lag_bubbles(i, 17)
1709 gas_mv(i, 1) = mpi_io_data_lag_bubbles(i, 18)
1710 gas_mg(i) = mpi_io_data_lag_bubbles(i, 19)
1711 gas_betat(i) = mpi_io_data_lag_bubbles(i, 20)
1712 gas_betac(i) = mpi_io_data_lag_bubbles(i, 21)
1713 cell = -buff_size
1714 call s_locate_cell(mtn_pos(i, 1:3, 1), cell, mtn_s(i, 1:3, 1))
1715 end do
1716
1717 deallocate (mpi_io_data_lag_bubbles)
1718
1719 else
1720 nbubs = 0
1721
1722 call mpi_type_contiguous(0, mpi_p, view, ierr)
1723 call mpi_type_commit(view, ierr)
1724
1725 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly, &
1726 mpi_info_int, ifile, ierr)
1727
1728 ! Skip extended header
1729 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs) + &
1730 file_num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
1731 call mpi_file_set_view(ifile, disp, mpi_p, view, 'native', mpi_info_int, ierr)
1732
1733 call mpi_file_read_all(ifile, dummy, 0, mpi_p, status, ierr)
1734
1735 call mpi_file_close(ifile, ierr)
1736 call mpi_type_free(view, ierr)
1737 end if
1738
1739 if (proc_rank == 0) then
1740 write (*, '(A,I0,A,I0)') 'Read ', file_tot_part, ' particles from restart file at t_step = ', save_count
1741 write (*, '(A,E15.7,A,E15.7)') 'Restart time = ', mytime, ', dt = ', dt
1742 end if
1743
1744 deallocate (proc_bubble_counts)
1745#endif
1746
1747 end subroutine s_restart_bubbles
1748
1749 !> Contains the bubble dynamics subroutines.
1750 !! @param q_prim_vf Primitive variables
1751 !! @param stage Current stage in the time-stepper algorithm
1752 subroutine s_compute_bubble_el_dynamics(q_prim_vf, stage)
1753
1754 type(scalar_field), dimension(sys_size), intent(inout) :: q_prim_vf
1755 integer, intent(in) :: stage
1756
1757 real(wp) :: myVapFlux
1758 real(wp) :: preterm1, term2, paux, pint, Romega, term1_fac
1759 real(wp) :: myR_m, mygamma_m, myPb, myMass_n, myMass_v
1760 real(wp) :: myR, myV, myBeta_c, myBeta_t, myR0, myPbdot, myMvdot
1761 real(wp) :: myPinf, aux1, aux2, myCson, myRho
1762 real(wp) :: gamma, pi_inf, qv
1763# 540 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1764 real(wp), dimension(num_fluids) :: myalpha_rho, myalpha
1765# 542 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1766 real(wp), dimension(2) :: Re
1767 integer, dimension(3) :: cell
1768
1769 integer :: adap_dt_stop_max, adap_dt_stop !< Fail-safe exit if max iteration count reached
1770 real(wp) :: dmalf, dmntait, dmBtait, dm_bub_adv_src, dm_divu !< Dummy variables for unified subgrid bubble subroutines
1771
1772 integer :: i, k, l
1773
1774 call nvtxstartrange("LAGRANGE-BUBBLE-DYNAMICS")
1775
1776 ! Subgrid p_inf model based on Maeda and Colonius (2018).
1777 if (lag_params%pressure_corrector) then
1778 ! Calculate velocity potentials (valid for one bubble per cell)
1779
1780# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1781
1782# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1783#if defined(MFC_OpenACC)
1784# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1785!$acc parallel loop gang vector default(present) private(k, cell, paux, preterm1, term2, Romega, myR0, myR, myV, myPb, pint, term1_fac)
1786# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1787#elif defined(MFC_OpenMP)
1788# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1789
1790# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1791
1792# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1793
1794# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1795!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k, cell, paux, preterm1, term2, Romega, myR0, myR, myV, myPb, pint, term1_fac)
1796# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1797#endif
1798# 555 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1799
1800 do k = 1, nbubs
1801 call s_get_pinf(k, q_prim_vf, 2, paux, cell, preterm1, term2, romega)
1802 myr0 = bub_r0(k)
1803 myr = intfc_rad(k, 2)
1804 myv = intfc_vel(k, 2)
1805 mypb = gas_p(k, 2)
1806 pint = f_cpbw_km(myr0, myr, myv, mypb)
1807 pint = pint + 0.5_wp*myv**2._wp
1808 if (lag_params%cluster_type == 2) then
1809 bub_dphidt(k) = (paux - pint) + term2
1810 ! Accounting for the potential induced by the bubble averaged over the control volume
1811 ! Note that this is based on the incompressible flow assumption near the bubble.
1812 term1_fac = 3._wp/2._wp*(myr*(romega**2._wp - myr**2._wp))/(romega**3._wp - myr**3._wp)
1813 bub_dphidt(k) = bub_dphidt(k)/(1._wp - term1_fac)
1814 end if
1815 end do
1816
1817# 572 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1818
1819# 572 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1820#if defined(MFC_OpenACC)
1821# 572 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1822!$acc end parallel loop
1823# 572 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1824#elif defined(MFC_OpenMP)
1825# 572 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1826
1827# 572 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1828
1829# 572 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1830!$omp end target teams loop
1831# 572 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1832#endif
1833# 572 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1834
1835 end if
1836
1837 ! Radial motion model
1838 adap_dt_stop_max = 0
1839
1840# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1841
1842# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1843#if defined(MFC_OpenACC)
1844# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1845!$acc parallel loop gang vector default(present) private(k, i, myalpha_rho, myalpha, Re, 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, myRho, gamma, pi_inf, qv, dmalf, dmntait, dmBtait, dm_bub_adv_src, dm_divu, adap_dt_stop) reduction(MAX:adap_dt_stop_max) copy(adap_dt_stop_max) copyin(stage)
1846# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1847#elif defined(MFC_OpenMP)
1848# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1849
1850# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1851
1852# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1853
1854# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1855!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k, i, myalpha_rho, myalpha, Re, 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, myRho, gamma, pi_inf, qv, dmalf, dmntait, dmBtait, dm_bub_adv_src, dm_divu, adap_dt_stop) reduction(MAX:adap_dt_stop_max) map(tofrom:adap_dt_stop_max) map(to:stage)
1856# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1857#endif
1858# 577 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1859
1860# 580 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1861 do k = 1, nbubs
1862 ! Keller-Miksis model
1863
1864 ! Current bubble state
1865 mypb = gas_p(k, 2)
1866 mymass_n = gas_mg(k)
1867 mymass_v = gas_mv(k, 2)
1868 myr = intfc_rad(k, 2)
1869 myv = intfc_vel(k, 2)
1870 mybeta_c = gas_betac(k)
1871 mybeta_t = gas_betat(k)
1872 myr0 = bub_r0(k)
1873
1874 ! Vapor and heat fluxes
1875 call s_vflux(myr, myv, mypb, mymass_v, k, myvapflux, mymass_n, mybeta_c, myr_m, mygamma_m)
1876 mypbdot = f_bpres_dot(myvapflux, myr, myv, mypb, mymass_v, k, mybeta_t, myr_m, mygamma_m)
1877 mymvdot = 4._wp*pi*myr**2._wp*myvapflux
1878
1879 ! Obtaining driving pressure
1880 call s_get_pinf(k, q_prim_vf, 1, mypinf, cell, aux1, aux2)
1881
1882 ! Obtain liquid density and computing speed of sound from pinf
1883 call s_compute_species_fraction(q_prim_vf, cell(1), cell(2), cell(3), myalpha_rho, myalpha)
1884 call s_convert_species_to_mixture_variables_acc(myrho, gamma, pi_inf, qv, myalpha, &
1885 myalpha_rho, re)
1886 call s_compute_cson_from_pinf(q_prim_vf, mypinf, cell, myrho, gamma, pi_inf, mycson)
1887
1888 ! Adaptive time stepping
1889 adap_dt_stop = 0
1890
1891 if (adap_dt) then
1892
1893 call s_advance_step(myrho, mypinf, myr, myv, myr0, mypb, mypbdot, dmalf, &
1894 dmntait, dmbtait, dm_bub_adv_src, dm_divu, &
1895 k, mymass_v, mymass_n, mybeta_c, &
1896 mybeta_t, mycson, adap_dt_stop)
1897
1898 ! Update bubble state
1899 intfc_rad(k, 1) = myr
1900 intfc_vel(k, 1) = myv
1901 gas_p(k, 1) = mypb
1902 gas_mv(k, 1) = mymass_v
1903
1904 else
1905
1906 ! Radial acceleration from bubble models
1907 intfc_dveldt(k, stage) = f_rddot(myrho, mypinf, myr, myv, myr0, &
1908 mypb, mypbdot, dmalf, dmntait, dmbtait, &
1909 dm_bub_adv_src, dm_divu, &
1910 mycson)
1911 intfc_draddt(k, stage) = myv
1912 gas_dmvdt(k, stage) = mymvdot
1913 gas_dpdt(k, stage) = mypbdot
1914
1915 end if
1916
1917 adap_dt_stop_max = max(adap_dt_stop_max, adap_dt_stop)
1918
1919 end do
1920
1921# 639 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1922
1923# 639 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1924#if defined(MFC_OpenACC)
1925# 639 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1926!$acc end parallel loop
1927# 639 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1928#elif defined(MFC_OpenMP)
1929# 639 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1930
1931# 639 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1932
1933# 639 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1934!$omp end target teams loop
1935# 639 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1936#endif
1937# 639 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1938
1939
1940 if (adap_dt .and. adap_dt_stop_max > 0) call s_mpi_abort("Adaptive time stepping failed to converge.")
1941
1942 ! Bubbles remain in a fixed position
1943
1944# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1945
1946# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1947#if defined(MFC_OpenACC)
1948# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1949!$acc parallel loop collapse(2) gang vector default(present) private(k, l) copyin(stage)
1950# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1951#elif defined(MFC_OpenMP)
1952# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1953
1954# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1955
1956# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1957
1958# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1959!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(2) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k, l) map(to:stage)
1960# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1961#endif
1962# 644 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1963
1964 do k = 1, nbubs
1965 do l = 1, 3
1966 mtn_dposdt(k, l, stage) = 0._wp
1967 mtn_dveldt(k, l, stage) = 0._wp
1968 end do
1969 end do
1970
1971# 651 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1972
1973# 651 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1974#if defined(MFC_OpenACC)
1975# 651 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1976!$acc end parallel loop
1977# 651 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1978#elif defined(MFC_OpenMP)
1979# 651 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1980
1981# 651 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1982
1983# 651 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1984!$omp end target teams loop
1985# 651 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1986#endif
1987# 651 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
1988
1989
1990 call nvtxendrange
1991
1992 end subroutine s_compute_bubble_el_dynamics
1993
1994 !> The purpose of this subroutine is to obtain the bubble source terms based on Maeda and Colonius (2018)
1995 !! and add them to the RHS scalar field.
1996 !! @param q_cons_vf Conservative variables
1997 !! @param q_prim_vf Conservative variables
1998 !! @param rhs_vf Time derivative of the conservative variables
1999 subroutine s_compute_bubbles_el_source(q_cons_vf, q_prim_vf, rhs_vf)
2000
2001 type(scalar_field), dimension(sys_size), intent(inout) :: q_cons_vf
2002 type(scalar_field), dimension(sys_size), intent(inout) :: q_prim_vf
2003 type(scalar_field), dimension(sys_size), intent(inout) :: rhs_vf
2004
2005 integer :: i, j, k, l
2006
2007 if (.not. adap_dt) call s_smear_voidfraction()
2008
2009 if (lag_params%solver_approach == 2) then
2010
2011 ! (q / (1 - beta)) * d(beta)/dt source
2012 if (p == 0) then
2013
2014# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2015
2016# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2017#if defined(MFC_OpenACC)
2018# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2019!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
2020# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2021#elif defined(MFC_OpenMP)
2022# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2023
2024# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2025
2026# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2027
2028# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2029!$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)
2030# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2031#endif
2032# 676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2033
2034 do k = 0, p
2035 do j = 0, n
2036 do i = 0, m
2037 do l = 1, e_idx
2038 if (q_beta(1)%sf(i, j, k) > (1._wp - lag_params%valmaxvoid)) then
2039 rhs_vf(l)%sf(i, j, k) = rhs_vf(l)%sf(i, j, k) + &
2040 q_cons_vf(l)%sf(i, j, k)*(q_beta(2)%sf(i, j, k) + &
2041 q_beta(5)%sf(i, j, k))
2042
2043 end if
2044 end do
2045 end do
2046 end do
2047 end do
2048
2049# 691 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2050
2051# 691 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2052#if defined(MFC_OpenACC)
2053# 691 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2054!$acc end parallel loop
2055# 691 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2056#elif defined(MFC_OpenMP)
2057# 691 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2058
2059# 691 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2060
2061# 691 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2062!$omp end target teams loop
2063# 691 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2064#endif
2065# 691 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2066
2067 else
2068
2069# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2070
2071# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2072#if defined(MFC_OpenACC)
2073# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2074!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
2075# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2076#elif defined(MFC_OpenMP)
2077# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2078
2079# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2080
2081# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2082
2083# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2084!$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)
2085# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2086#endif
2087# 693 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2088
2089 do k = 0, p
2090 do j = 0, n
2091 do i = 0, m
2092 do l = 1, e_idx
2093 if (q_beta(1)%sf(i, j, k) > (1._wp - lag_params%valmaxvoid)) then
2094 rhs_vf(l)%sf(i, j, k) = rhs_vf(l)%sf(i, j, k) + &
2095 q_cons_vf(l)%sf(i, j, k)/q_beta(1)%sf(i, j, k)* &
2096 q_beta(2)%sf(i, j, k)
2097 end if
2098 end do
2099 end do
2100 end do
2101 end do
2102
2103# 707 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2104
2105# 707 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2106#if defined(MFC_OpenACC)
2107# 707 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2108!$acc end parallel loop
2109# 707 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2110#elif defined(MFC_OpenMP)
2111# 707 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2112
2113# 707 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2114
2115# 707 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2116!$omp end target teams loop
2117# 707 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2118#endif
2119# 707 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2120
2121 end if
2122
2123 do l = 1, num_dims
2124
2125 call s_gradient_dir(q_prim_vf(e_idx)%sf, q_beta(3)%sf, l)
2126
2127 ! (q / (1 - beta)) * d(beta)/dt source
2128
2129# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2130
2131# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2132#if defined(MFC_OpenACC)
2133# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2134!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
2135# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2136#elif defined(MFC_OpenMP)
2137# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2138
2139# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2140
2141# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2142
2143# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2144!$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)
2145# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2146#endif
2147# 715 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2148
2149 do k = 0, p
2150 do j = 0, n
2151 do i = 0, m
2152 if (q_beta(1)%sf(i, j, k) > (1._wp - lag_params%valmaxvoid)) then
2153 rhs_vf(contxe + l)%sf(i, j, k) = rhs_vf(contxe + l)%sf(i, j, k) - &
2154 (1._wp - q_beta(1)%sf(i, j, k))/ &
2155 q_beta(1)%sf(i, j, k)* &
2156 q_beta(3)%sf(i, j, k)
2157 end if
2158 end do
2159 end do
2160 end do
2161
2162# 728 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2163
2164# 728 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2165#if defined(MFC_OpenACC)
2166# 728 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2167!$acc end parallel loop
2168# 728 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2169#elif defined(MFC_OpenMP)
2170# 728 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2171
2172# 728 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2173
2174# 728 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2175!$omp end target teams loop
2176# 728 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2177#endif
2178# 728 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2179
2180
2181 !source in energy
2182
2183# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2184
2185# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2186#if defined(MFC_OpenACC)
2187# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2188!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
2189# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2190#elif defined(MFC_OpenMP)
2191# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2192
2193# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2194
2195# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2196
2197# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2198!$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)
2199# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2200#endif
2201# 731 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2202
2203 do k = idwbuff(3)%beg, idwbuff(3)%end
2204 do j = idwbuff(2)%beg, idwbuff(2)%end
2205 do i = idwbuff(1)%beg, idwbuff(1)%end
2206 q_beta(3)%sf(i, j, k) = q_prim_vf(e_idx)%sf(i, j, k)*q_prim_vf(contxe + l)%sf(i, j, k)
2207 end do
2208 end do
2209 end do
2210
2211# 739 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2212
2213# 739 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2214#if defined(MFC_OpenACC)
2215# 739 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2216!$acc end parallel loop
2217# 739 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2218#elif defined(MFC_OpenMP)
2219# 739 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2220
2221# 739 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2222
2223# 739 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2224!$omp end target teams loop
2225# 739 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2226#endif
2227# 739 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2228
2229
2230 call s_gradient_dir(q_beta(3)%sf, q_beta(4)%sf, l)
2231
2232 ! (beta / (1 - beta)) * d(Pu)/dl source
2233
2234# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2235
2236# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2237#if defined(MFC_OpenACC)
2238# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2239!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
2240# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2241#elif defined(MFC_OpenMP)
2242# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2243
2244# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2245
2246# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2247
2248# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2249!$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)
2250# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2251#endif
2252# 744 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2253
2254 do k = 0, p
2255 do j = 0, n
2256 do i = 0, m
2257 if (q_beta(1)%sf(i, j, k) > (1._wp - lag_params%valmaxvoid)) then
2258 rhs_vf(e_idx)%sf(i, j, k) = rhs_vf(e_idx)%sf(i, j, k) - &
2259 q_beta(4)%sf(i, j, k)*(1._wp - q_beta(1)%sf(i, j, k))/ &
2260 q_beta(1)%sf(i, j, k)
2261 end if
2262 end do
2263 end do
2264 end do
2265
2266# 756 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2267
2268# 756 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2269#if defined(MFC_OpenACC)
2270# 756 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2271!$acc end parallel loop
2272# 756 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2273#elif defined(MFC_OpenMP)
2274# 756 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2275
2276# 756 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2277
2278# 756 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2279!$omp end target teams loop
2280# 756 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2281#endif
2282# 756 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2283
2284 end do
2285
2286 end if
2287
2288 end subroutine s_compute_bubbles_el_source
2289
2290 !> This procedure computes the speed of sound from a given driving pressure
2291 !! @param q_prim_vf Primitive variables
2292 !! @param pinf Driving pressure
2293 !! @param cell Bubble cell
2294 !! @param rhol Liquid density
2295 !! @param gamma Liquid specific heat ratio
2296 !! @param pi_inf Liquid stiffness
2297 !! @param cson Calculated speed of sound
2298 subroutine s_compute_cson_from_pinf(q_prim_vf, pinf, cell, rhol, gamma, pi_inf, cson)
2299
2300# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2301#ifdef _CRAYFTN
2302# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2303#if MFC_OpenACC
2304# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2305!$acc routine seq
2306# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2307#elif MFC_OpenMP
2308# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2309
2310# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2311
2312# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2313!$omp declare target device_type(any)
2314# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2315#else
2316# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2317!DIR$ INLINEALWAYS s_compute_cson_from_pinf
2318# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2319#endif
2320# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2321#elif MFC_OpenACC
2322# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2323!$acc routine seq
2324# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2325#elif MFC_OpenMP
2326# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2327
2328# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2329
2330# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2331!$omp declare target device_type(any)
2332# 772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2333#endif
2334# 774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2335
2336 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
2337 real(wp), intent(in) :: pinf, rhol, gamma, pi_inf
2338 integer, dimension(3), intent(in) :: cell
2339 real(wp), intent(out) :: cson
2340
2341 real(wp) :: E, H
2342# 784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2343 real(wp), dimension(num_dims) :: vel
2344# 786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2345 integer :: i
2346
2347 vel(:) = 0._wp
2348
2349# 789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2350#if defined(MFC_OpenACC)
2351# 789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2352!$acc loop seq
2353# 789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2354#elif defined(MFC_OpenMP)
2355# 789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2356
2357# 789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2358#endif
2359 do i = 1, num_dims
2360 vel(i) = q_prim_vf(i + contxe)%sf(cell(1), cell(2), cell(3))
2361 end do
2362 e = gamma*pinf + pi_inf + 0.5_wp*rhol*dot_product(vel, vel)
2363 h = (e + pinf)/rhol
2364 cson = sqrt((h - 0.5_wp*dot_product(vel, vel))/gamma)
2365
2366 end subroutine s_compute_cson_from_pinf
2367
2368 !> The purpose of this subroutine is to smear the effect of the bubbles in the Eulerian framework
2370
2371 integer :: i, j, k, l
2372
2373 call nvtxstartrange("BUBBLES-LAGRANGE-KERNELS")
2374
2375
2376# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2377
2378# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2379#if defined(MFC_OpenACC)
2380# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2381!$acc parallel loop collapse(4) gang vector default(present) private(i, j, k, l)
2382# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2383#elif defined(MFC_OpenMP)
2384# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2385
2386# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2387
2388# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2389
2390# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2391!$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)
2392# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2393#endif
2394# 806 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2395
2396 do i = 1, q_beta_idx
2397 do l = idwbuff(3)%beg, idwbuff(3)%end
2398 do k = idwbuff(2)%beg, idwbuff(2)%end
2399 do j = idwbuff(1)%beg, idwbuff(1)%end
2400 q_beta(i)%sf(j, k, l) = 0._wp
2401 end do
2402 end do
2403 end do
2404 end do
2405
2406# 816 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2407
2408# 816 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2409#if defined(MFC_OpenACC)
2410# 816 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2411!$acc end parallel loop
2412# 816 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2413#elif defined(MFC_OpenMP)
2414# 816 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2415
2416# 816 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2417
2418# 816 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2419!$omp end target teams loop
2420# 816 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2421#endif
2422# 816 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2423
2424
2425 call s_smoothfunction(nbubs, intfc_rad, intfc_vel, &
2427
2428 !Store 1-beta
2429
2430# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2431
2432# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2433#if defined(MFC_OpenACC)
2434# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2435!$acc parallel loop collapse(3) gang vector default(present) private(j, k, l)
2436# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2437#elif defined(MFC_OpenMP)
2438# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2439
2440# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2441
2442# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2443
2444# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2445!$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)
2446# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2447#endif
2448# 822 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2449
2450 do l = idwbuff(3)%beg, idwbuff(3)%end
2451 do k = idwbuff(2)%beg, idwbuff(2)%end
2452 do j = idwbuff(1)%beg, idwbuff(1)%end
2453 q_beta(1)%sf(j, k, l) = 1._wp - q_beta(1)%sf(j, k, l)
2454 ! Limiting void fraction given max value
2455 q_beta(1)%sf(j, k, l) = max(q_beta(1)%sf(j, k, l), &
2456 1._wp - lag_params%valmaxvoid)
2457 end do
2458 end do
2459 end do
2460
2461# 833 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2462
2463# 833 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2464#if defined(MFC_OpenACC)
2465# 833 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2466!$acc end parallel loop
2467# 833 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2468#elif defined(MFC_OpenMP)
2469# 833 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2470
2471# 833 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2472
2473# 833 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2474!$omp end target teams loop
2475# 833 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2476#endif
2477# 833 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2478
2479
2480 call nvtxendrange
2481
2482 end subroutine s_smear_voidfraction
2483
2484 !> The purpose of this procedure is obtain the bubble driving pressure p_inf
2485 !! @param bub_id Particle identifier
2486 !! @param q_prim_vf Primitive variables
2487 !! @param ptype 1: p at infinity, 2: averaged P at the bubble location
2488 !! @param f_pinfl Driving pressure
2489 !! @param cell Bubble cell
2490 !! @param preterm1 Pre-computed term 1
2491 !! @param term2 Computed term 2
2492 !! @param Romega Control volume radius
2493 subroutine s_get_pinf(bub_id, q_prim_vf, ptype, f_pinfl, cell, preterm1, term2, Romega)
2494
2495# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2496#ifdef _CRAYFTN
2497# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2498#if MFC_OpenACC
2499# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2500!$acc routine seq
2501# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2502#elif MFC_OpenMP
2503# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2504
2505# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2506
2507# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2508!$omp declare target device_type(any)
2509# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2510#else
2511# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2512!DIR$ INLINEALWAYS s_get_pinf
2513# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2514#endif
2515# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2516#elif MFC_OpenACC
2517# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2518!$acc routine seq
2519# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2520#elif MFC_OpenMP
2521# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2522
2523# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2524
2525# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2526!$omp declare target device_type(any)
2527# 849 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2528#endif
2529# 851 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2530
2531 integer, intent(in) :: bub_id, ptype
2532 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
2533 real(wp), intent(out) :: f_pinfl
2534 integer, dimension(3), intent(out) :: cell
2535 real(wp), intent(out), optional :: preterm1, term2, Romega
2536
2537 real(wp), dimension(3) :: scoord, psi
2538 real(wp) :: dc, vol, aux
2539 real(wp) :: volgas, term1, Rbeq, denom
2540 real(wp) :: charvol, charpres, charvol2, charpres2
2541 integer, dimension(3) :: cellaux
2542 integer :: i, j, k
2543 integer :: smearGrid, smearGridz
2544 logical :: celloutside
2545
2546 scoord = mtn_s(bub_id, 1:3, 2)
2547 f_pinfl = 0._wp
2548
2549 !< Find current bubble cell
2550 cell(:) = int(scoord(:))
2551
2552# 872 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2553#if defined(MFC_OpenACC)
2554# 872 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2555!$acc loop seq
2556# 872 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2557#elif defined(MFC_OpenMP)
2558# 872 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2559
2560# 872 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2561#endif
2562 do i = 1, num_dims
2563 if (scoord(i) < 0._wp) cell(i) = cell(i) - 1
2564 end do
2565
2566 if ((lag_params%cluster_type == 1)) then
2567 !< Getting p_cell in terms of only the current cell by interpolation
2568
2569 !< Getting the cell volulme as Omega
2570 if (p > 0) then
2571 vol = dx(cell(1))*dy(cell(2))*dz(cell(3))
2572 else
2573 if (cyl_coord) then
2574 vol = dx(cell(1))*dy(cell(2))*y_cc(cell(2))*2._wp*pi
2575 else
2576 vol = dx(cell(1))*dy(cell(2))*lag_params%charwidth
2577 end if
2578 end if
2579
2580 !< Obtain bilinear interpolation coefficients, based on the current location of the bubble.
2581 psi(1) = (scoord(1) - real(cell(1)))*dx(cell(1)) + x_cb(cell(1) - 1)
2582 if (cell(1) == (m + buff_size)) then
2583 cell(1) = cell(1) - 1
2584 psi(1) = 1._wp
2585 else if (cell(1) == (-buff_size)) then
2586 psi(1) = 0._wp
2587 else
2588 if (psi(1) < x_cc(cell(1))) cell(1) = cell(1) - 1
2589 psi(1) = abs((psi(1) - x_cc(cell(1)))/(x_cc(cell(1) + 1) - x_cc(cell(1))))
2590 end if
2591
2592 psi(2) = (scoord(2) - real(cell(2)))*dy(cell(2)) + y_cb(cell(2) - 1)
2593 if (cell(2) == (n + buff_size)) then
2594 cell(2) = cell(2) - 1
2595 psi(2) = 1._wp
2596 else if (cell(2) == (-buff_size)) then
2597 psi(2) = 0._wp
2598 else
2599 if (psi(2) < y_cc(cell(2))) cell(2) = cell(2) - 1
2600 psi(2) = abs((psi(2) - y_cc(cell(2)))/(y_cc(cell(2) + 1) - y_cc(cell(2))))
2601 end if
2602
2603 if (p > 0) then
2604 psi(3) = (scoord(3) - real(cell(3)))*dz(cell(3)) + z_cb(cell(3) - 1)
2605 if (cell(3) == (p + buff_size)) then
2606 cell(3) = cell(3) - 1
2607 psi(3) = 1._wp
2608 else if (cell(3) == (-buff_size)) then
2609 psi(3) = 0._wp
2610 else
2611 if (psi(3) < z_cc(cell(3))) cell(3) = cell(3) - 1
2612 psi(3) = abs((psi(3) - z_cc(cell(3)))/(z_cc(cell(3) + 1) - z_cc(cell(3))))
2613 end if
2614 else
2615 psi(3) = 0._wp
2616 end if
2617
2618 !< Perform bilinear interpolation
2619 if (p == 0) then !2D
2620 f_pinfl = q_prim_vf(e_idx)%sf(cell(1), cell(2), cell(3))*(1._wp - psi(1))*(1._wp - psi(2))
2621 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1) + 1, cell(2), cell(3))*psi(1)*(1._wp - psi(2))
2622 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1) + 1, cell(2) + 1, cell(3))*psi(1)*psi(2)
2623 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1), cell(2) + 1, cell(3))*(1._wp - psi(1))*psi(2)
2624 else !3D
2625 f_pinfl = q_prim_vf(e_idx)%sf(cell(1), cell(2), cell(3))*(1._wp - psi(1))*(1._wp - psi(2))*(1._wp - psi(3))
2626 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1) + 1, cell(2), cell(3))*psi(1)*(1._wp - psi(2))*(1._wp - psi(3))
2627 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1) + 1, cell(2) + 1, cell(3))*psi(1)*psi(2)*(1._wp - psi(3))
2628 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1), cell(2) + 1, cell(3))*(1._wp - psi(1))*psi(2)*(1._wp - psi(3))
2629 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1), cell(2), cell(3) + 1)*(1._wp - psi(1))*(1._wp - psi(2))*psi(3)
2630 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1) + 1, cell(2), cell(3) + 1)*psi(1)*(1._wp - psi(2))*psi(3)
2631 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1) + 1, cell(2) + 1, cell(3) + 1)*psi(1)*psi(2)*psi(3)
2632 f_pinfl = f_pinfl + q_prim_vf(e_idx)%sf(cell(1), cell(2) + 1, cell(3) + 1)*(1._wp - psi(1))*psi(2)*psi(3)
2633 end if
2634
2635 !R_Omega
2636 dc = (3._wp*vol/(4._wp*pi))**(1._wp/3._wp)
2637
2638 else if (lag_params%cluster_type >= 2) then
2639 ! Bubble dynamic closure from Maeda and Colonius (2018)
2640
2641 ! Include the cell that contains the bubble (mapCells+1+mapCells)
2642 smeargrid = mapcells - (-mapcells) + 1
2643 smeargridz = smeargrid
2644 if (p == 0) smeargridz = 1
2645
2646 charvol = 0._wp
2647 charpres = 0._wp
2648 charvol2 = 0._wp
2649 charpres2 = 0._wp
2650 vol = 0._wp
2651
2652
2653# 963 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2654#if defined(MFC_OpenACC)
2655# 963 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2656!$acc loop seq
2657# 963 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2658#elif defined(MFC_OpenMP)
2659# 963 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2660
2661# 963 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2662#endif
2663 do i = 1, smeargrid
2664
2665# 965 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2666#if defined(MFC_OpenACC)
2667# 965 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2668!$acc loop seq
2669# 965 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2670#elif defined(MFC_OpenMP)
2671# 965 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2672
2673# 965 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2674#endif
2675 do j = 1, smeargrid
2676
2677# 967 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2678#if defined(MFC_OpenACC)
2679# 967 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2680!$acc loop seq
2681# 967 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2682#elif defined(MFC_OpenMP)
2683# 967 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2684
2685# 967 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2686#endif
2687 do k = 1, smeargridz
2688 cellaux(1) = cell(1) + i - (mapcells + 1)
2689 cellaux(2) = cell(2) + j - (mapcells + 1)
2690 cellaux(3) = cell(3) + k - (mapcells + 1)
2691 if (p == 0) cellaux(3) = 0
2692
2693 !< check if the current cell is outside the computational domain or not (including ghost cells)
2694 celloutside = .false.
2695 if (num_dims == 2) then
2696 if ((cellaux(1) < -buff_size) .or. (cellaux(2) < -buff_size)) then
2697 celloutside = .true.
2698 end if
2699 if (cyl_coord .and. y_cc(cellaux(2)) < 0._wp) then
2700 celloutside = .true.
2701 end if
2702 if ((cellaux(2) > n + buff_size) .or. (cellaux(1) > m + buff_size)) then
2703 celloutside = .true.
2704 end if
2705 else
2706 if ((cellaux(3) < -buff_size) .or. (cellaux(1) < -buff_size) .or. (cellaux(2) < -buff_size)) then
2707 celloutside = .true.
2708 end if
2709
2710 if ((cellaux(3) > p + buff_size) .or. (cellaux(2) > n + buff_size) .or. (cellaux(1) > m + buff_size)) then
2711 celloutside = .true.
2712 end if
2713 end if
2714 if (.not. celloutside) then
2715 if (cyl_coord .and. (p == 0) .and. (y_cc(cellaux(2)) < 0._wp)) then
2716 celloutside = .true.
2717 end if
2718 end if
2719
2720 if (.not. celloutside) then
2721 !< Obtaining the cell volulme
2722 if (p > 0) then
2723 vol = dx(cellaux(1))*dy(cellaux(2))*dz(cellaux(3))
2724 else
2725 if (cyl_coord) then
2726 vol = dx(cellaux(1))*dy(cellaux(2))*y_cc(cellaux(2))*2._wp*pi
2727 else
2728 vol = dx(cellaux(1))*dy(cellaux(2))*lag_params%charwidth
2729 end if
2730 end if
2731 !< Update values
2732 charvol = charvol + vol
2733 charpres = charpres + q_prim_vf(e_idx)%sf(cellaux(1), cellaux(2), cellaux(3))*vol
2734 charvol2 = charvol2 + vol*q_beta(1)%sf(cellaux(1), cellaux(2), cellaux(3))
2735 charpres2 = charpres2 + q_prim_vf(e_idx)%sf(cellaux(1), cellaux(2), cellaux(3)) &
2736 *vol*q_beta(1)%sf(cellaux(1), cellaux(2), cellaux(3))
2737 end if
2738
2739 end do
2740 end do
2741 end do
2742
2743 f_pinfl = charpres2/charvol2
2744 vol = charvol
2745 dc = (3._wp*abs(vol)/(4._wp*pi))**(1._wp/3._wp)
2746
2747 end if
2748
2749 if (lag_params%pressure_corrector) then
2750
2751 !Valid if only one bubble exists per cell
2752 volgas = intfc_rad(bub_id, 2)**3._wp
2753 denom = intfc_rad(bub_id, 2)**2._wp
2754 term1 = bub_dphidt(bub_id)*intfc_rad(bub_id, 2)**2._wp
2755 term2 = intfc_vel(bub_id, 2)*intfc_rad(bub_id, 2)**2._wp
2756
2757 rbeq = volgas**(1._wp/3._wp) !surrogate bubble radius
2758 aux = dc**3._wp - rbeq**3._wp
2759 term2 = term2/denom
2760 term2 = 3._wp/2._wp*term2**2._wp*rbeq**3._wp*(1._wp - rbeq/dc)/aux
2761 preterm1 = 3._wp/2._wp*rbeq*(dc**2._wp - rbeq**2._wp)/(aux*denom)
2762
2763 !Control volume radius
2764 if (ptype == 2) romega = dc
2765
2766 ! Getting p_inf
2767 if (ptype == 1) then
2768 f_pinfl = f_pinfl + preterm1*term1 + term2
2769 end if
2770
2771 end if
2772
2773 end subroutine s_get_pinf
2774
2775 !> This subroutine updates the Lagrange variables using the tvd RK time steppers.
2776 !! The time derivative of the bubble variables must be stored at every stage to avoid precision errors.
2777 !! @param stage Current tvd RK stage
2778 impure subroutine s_update_lagrange_tdv_rk(stage)
2779
2780 integer, intent(in) :: stage
2781
2782 integer :: k
2783
2784 if (time_stepper == 1) then ! 1st order TVD RK
2785
2786# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2787
2788# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2789#if defined(MFC_OpenACC)
2790# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2791!$acc parallel loop gang vector default(present) private(k)
2792# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2793#elif defined(MFC_OpenMP)
2794# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2795
2796# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2797
2798# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2799
2800# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2801!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
2802# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2803#endif
2804# 1066 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2805
2806 do k = 1, nbubs
2807 !u{1} = u{n} + dt * RHS{n}
2808 intfc_rad(k, 1) = intfc_rad(k, 1) + dt*intfc_draddt(k, 1)
2809 intfc_vel(k, 1) = intfc_vel(k, 1) + dt*intfc_dveldt(k, 1)
2810 mtn_pos(k, 1:3, 1) = mtn_pos(k, 1:3, 1) + dt*mtn_dposdt(k, 1:3, 1)
2811 mtn_vel(k, 1:3, 1) = mtn_vel(k, 1:3, 1) + dt*mtn_dveldt(k, 1:3, 1)
2812 gas_p(k, 1) = gas_p(k, 1) + dt*gas_dpdt(k, 1)
2813 gas_mv(k, 1) = gas_mv(k, 1) + dt*gas_dmvdt(k, 1)
2814 end do
2815
2816# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2817
2818# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2819#if defined(MFC_OpenACC)
2820# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2821!$acc end parallel loop
2822# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2823#elif defined(MFC_OpenMP)
2824# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2825
2826# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2827
2828# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2829!$omp end target teams loop
2830# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2831#endif
2832# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2833
2834
2836 call s_write_void_evol(mytime)
2837 if (lag_params%write_bubbles_stats) call s_calculate_lag_bubble_stats()
2838
2839 if (lag_params%write_bubbles) then
2840
2841# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2842#if defined(MFC_OpenACC)
2843# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2844!$acc update host(gas_p, gas_mv, intfc_rad, intfc_vel)
2845# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2846#elif defined(MFC_OpenMP)
2847# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2848!$omp target update from(gas_p, gas_mv, intfc_rad, intfc_vel)
2849# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2850#endif
2851 call s_write_lag_particles(mytime)
2852 end if
2853
2854 elseif (time_stepper == 2) then ! 2nd order TVD RK
2855 if (stage == 1) then
2856
2857# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2858
2859# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2860#if defined(MFC_OpenACC)
2861# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2862!$acc parallel loop gang vector default(present) private(k)
2863# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2864#elif defined(MFC_OpenMP)
2865# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2866
2867# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2868
2869# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2870
2871# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2872!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
2873# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2874#endif
2875# 1089 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2876
2877 do k = 1, nbubs
2878 !u{1} = u{n} + dt * RHS{n}
2879 intfc_rad(k, 2) = intfc_rad(k, 1) + dt*intfc_draddt(k, 1)
2880 intfc_vel(k, 2) = intfc_vel(k, 1) + dt*intfc_dveldt(k, 1)
2881 mtn_pos(k, 1:3, 2) = mtn_pos(k, 1:3, 1) + dt*mtn_dposdt(k, 1:3, 1)
2882 mtn_vel(k, 1:3, 2) = mtn_vel(k, 1:3, 1) + dt*mtn_dveldt(k, 1:3, 1)
2883 gas_p(k, 2) = gas_p(k, 1) + dt*gas_dpdt(k, 1)
2884 gas_mv(k, 2) = gas_mv(k, 1) + dt*gas_dmvdt(k, 1)
2885 end do
2886
2887# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2888
2889# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2890#if defined(MFC_OpenACC)
2891# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2892!$acc end parallel loop
2893# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2894#elif defined(MFC_OpenMP)
2895# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2896
2897# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2898
2899# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2900!$omp end target teams loop
2901# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2902#endif
2903# 1099 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2904
2905
2906 elseif (stage == 2) then
2907
2908# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2909
2910# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2911#if defined(MFC_OpenACC)
2912# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2913!$acc parallel loop gang vector default(present) private(k)
2914# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2915#elif defined(MFC_OpenMP)
2916# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2917
2918# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2919
2920# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2921
2922# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2923!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
2924# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2925#endif
2926# 1102 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2927
2928 do k = 1, nbubs
2929 !u{1} = u{n} + (1/2) * dt * (RHS{n} + RHS{1})
2930 intfc_rad(k, 1) = intfc_rad(k, 1) + dt*(intfc_draddt(k, 1) + intfc_draddt(k, 2))/2._wp
2931 intfc_vel(k, 1) = intfc_vel(k, 1) + dt*(intfc_dveldt(k, 1) + intfc_dveldt(k, 2))/2._wp
2932 mtn_pos(k, 1:3, 1) = mtn_pos(k, 1:3, 1) + dt*(mtn_dposdt(k, 1:3, 1) + mtn_dposdt(k, 1:3, 2))/2._wp
2933 mtn_vel(k, 1:3, 1) = mtn_vel(k, 1:3, 1) + dt*(mtn_dveldt(k, 1:3, 1) + mtn_dveldt(k, 1:3, 2))/2._wp
2934 gas_p(k, 1) = gas_p(k, 1) + dt*(gas_dpdt(k, 1) + gas_dpdt(k, 2))/2._wp
2935 gas_mv(k, 1) = gas_mv(k, 1) + dt*(gas_dmvdt(k, 1) + gas_dmvdt(k, 2))/2._wp
2936 end do
2937
2938# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2939
2940# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2941#if defined(MFC_OpenACC)
2942# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2943!$acc end parallel loop
2944# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2945#elif defined(MFC_OpenMP)
2946# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2947
2948# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2949
2950# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2951!$omp end target teams loop
2952# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2953#endif
2954# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2955
2956
2958 call s_write_void_evol(mytime)
2959 if (lag_params%write_bubbles_stats) call s_calculate_lag_bubble_stats()
2960
2961 if (lag_params%write_bubbles) then
2962
2963# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2964#if defined(MFC_OpenACC)
2965# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2966!$acc update host(gas_p, gas_mv, intfc_rad, intfc_vel)
2967# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2968#elif defined(MFC_OpenMP)
2969# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2970!$omp target update from(gas_p, gas_mv, intfc_rad, intfc_vel)
2971# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2972#endif
2973 call s_write_lag_particles(mytime)
2974 end if
2975
2976 end if
2977
2978 elseif (time_stepper == 3) then ! 3rd order TVD RK
2979 if (stage == 1) then
2980
2981# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2982
2983# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2984#if defined(MFC_OpenACC)
2985# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2986!$acc parallel loop gang vector default(present) private(k)
2987# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2988#elif defined(MFC_OpenMP)
2989# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2990
2991# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2992
2993# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2994
2995# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2996!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
2997# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
2998#endif
2999# 1127 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3000
3001 do k = 1, nbubs
3002 !u{1} = u{n} + dt * RHS{n}
3003 intfc_rad(k, 2) = intfc_rad(k, 1) + dt*intfc_draddt(k, 1)
3004 intfc_vel(k, 2) = intfc_vel(k, 1) + dt*intfc_dveldt(k, 1)
3005 mtn_pos(k, 1:3, 2) = mtn_pos(k, 1:3, 1) + dt*mtn_dposdt(k, 1:3, 1)
3006 mtn_vel(k, 1:3, 2) = mtn_vel(k, 1:3, 1) + dt*mtn_dveldt(k, 1:3, 1)
3007 gas_p(k, 2) = gas_p(k, 1) + dt*gas_dpdt(k, 1)
3008 gas_mv(k, 2) = gas_mv(k, 1) + dt*gas_dmvdt(k, 1)
3009 end do
3010
3011# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3012
3013# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3014#if defined(MFC_OpenACC)
3015# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3016!$acc end parallel loop
3017# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3018#elif defined(MFC_OpenMP)
3019# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3020
3021# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3022
3023# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3024!$omp end target teams loop
3025# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3026#endif
3027# 1137 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3028
3029
3030 elseif (stage == 2) then
3031
3032# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3033
3034# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3035#if defined(MFC_OpenACC)
3036# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3037!$acc parallel loop gang vector default(present) private(k)
3038# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3039#elif defined(MFC_OpenMP)
3040# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3041
3042# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3043
3044# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3045
3046# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3047!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
3048# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3049#endif
3050# 1140 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3051
3052 do k = 1, nbubs
3053 !u{2} = u{n} + (1/4) * dt * [RHS{n} + RHS{1}]
3054 intfc_rad(k, 2) = intfc_rad(k, 1) + dt*(intfc_draddt(k, 1) + intfc_draddt(k, 2))/4._wp
3055 intfc_vel(k, 2) = intfc_vel(k, 1) + dt*(intfc_dveldt(k, 1) + intfc_dveldt(k, 2))/4._wp
3056 mtn_pos(k, 1:3, 2) = mtn_pos(k, 1:3, 1) + dt*(mtn_dposdt(k, 1:3, 1) + mtn_dposdt(k, 1:3, 2))/4._wp
3057 mtn_vel(k, 1:3, 2) = mtn_vel(k, 1:3, 1) + dt*(mtn_dveldt(k, 1:3, 1) + mtn_dveldt(k, 1:3, 2))/4._wp
3058 gas_p(k, 2) = gas_p(k, 1) + dt*(gas_dpdt(k, 1) + gas_dpdt(k, 2))/4._wp
3059 gas_mv(k, 2) = gas_mv(k, 1) + dt*(gas_dmvdt(k, 1) + gas_dmvdt(k, 2))/4._wp
3060 end do
3061
3062# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3063
3064# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3065#if defined(MFC_OpenACC)
3066# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3067!$acc end parallel loop
3068# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3069#elif defined(MFC_OpenMP)
3070# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3071
3072# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3073
3074# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3075!$omp end target teams loop
3076# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3077#endif
3078# 1150 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3079
3080 elseif (stage == 3) then
3081
3082# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3083
3084# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3085#if defined(MFC_OpenACC)
3086# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3087!$acc parallel loop gang vector default(present) private(k)
3088# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3089#elif defined(MFC_OpenMP)
3090# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3091
3092# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3093
3094# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3095
3096# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3097!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
3098# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3099#endif
3100# 1152 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3101
3102 do k = 1, nbubs
3103 !u{n+1} = u{n} + (2/3) * dt * [(1/4)* RHS{n} + (1/4)* RHS{1} + RHS{2}]
3104 intfc_rad(k, 1) = intfc_rad(k, 1) + (2._wp/3._wp)*dt*(intfc_draddt(k, 1)/4._wp + intfc_draddt(k, 2)/4._wp + intfc_draddt(k, 3))
3105 intfc_vel(k, 1) = intfc_vel(k, 1) + (2._wp/3._wp)*dt*(intfc_dveldt(k, 1)/4._wp + intfc_dveldt(k, 2)/4._wp + intfc_dveldt(k, 3))
3106 mtn_pos(k, 1:3, 1) = mtn_pos(k, 1:3, 1) + (2._wp/3._wp)*dt*(mtn_dposdt(k, 1:3, 1)/4._wp + mtn_dposdt(k, 1:3, 2)/4._wp + mtn_dposdt(k, 1:3, 3))
3107 mtn_vel(k, 1:3, 1) = mtn_vel(k, 1:3, 1) + (2._wp/3._wp)*dt*(mtn_dveldt(k, 1:3, 1)/4._wp + mtn_dveldt(k, 1:3, 2)/4._wp + mtn_dveldt(k, 1:3, 3))
3108 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))
3109 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))
3110 end do
3111
3112# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3113
3114# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3115#if defined(MFC_OpenACC)
3116# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3117!$acc end parallel loop
3118# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3119#elif defined(MFC_OpenMP)
3120# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3121
3122# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3123
3124# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3125!$omp end target teams loop
3126# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3127#endif
3128# 1162 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3129
3130
3132 call s_write_void_evol(mytime)
3133 if (lag_params%write_bubbles_stats) call s_calculate_lag_bubble_stats()
3134
3135 if (lag_params%write_bubbles) then
3136
3137# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3138#if defined(MFC_OpenACC)
3139# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3140!$acc update host(gas_p, gas_mv, gas_mg, intfc_rad, intfc_vel)
3141# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3142#elif defined(MFC_OpenMP)
3143# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3144!$omp target update from(gas_p, gas_mv, gas_mg, intfc_rad, intfc_vel)
3145# 1169 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3146#endif
3147 call s_write_lag_particles(mytime)
3148 end if
3149
3150 end if
3151
3152 end if
3153
3154 end subroutine s_update_lagrange_tdv_rk
3155
3156 !> This subroutine returns the computational coordinate of the cell for the given position.
3157 !! @param pos Input coordinates
3158 !! @param cell Computational coordinate of the cell
3159 !! @param scoord Calculated particle coordinates
3160 subroutine s_locate_cell(pos, cell, scoord)
3161
3162 real(wp), dimension(3), intent(in) :: pos
3163 real(wp), dimension(3), intent(out) :: scoord
3164 integer, dimension(3), intent(inout) :: cell
3165
3166 integer :: i
3167
3168 do while (pos(1) < x_cb(cell(1) - 1))
3169 cell(1) = cell(1) - 1
3170 end do
3171
3172 do while (pos(1) > x_cb(cell(1)))
3173 cell(1) = cell(1) + 1
3174 end do
3175
3176 do while (pos(2) < y_cb(cell(2) - 1))
3177 cell(2) = cell(2) - 1
3178 end do
3179
3180 do while (pos(2) > y_cb(cell(2)))
3181 cell(2) = cell(2) + 1
3182 end do
3183
3184 if (p > 0) then
3185 do while (pos(3) < z_cb(cell(3) - 1))
3186 cell(3) = cell(3) - 1
3187 end do
3188 do while (pos(3) > z_cb(cell(3)))
3189 cell(3) = cell(3) + 1
3190 end do
3191 end if
3192
3193 ! The numbering of the cell of which left boundary is the domain boundary is 0.
3194 ! if comp.coord of the pos is s, the real coordinate of s is
3195 ! (the coordinate of the left boundary of the Floor(s)-th cell)
3196 ! + (s-(int(s))*(cell-width).
3197 ! In other words, the coordinate of the center of the cell is x_cc(cell).
3198
3199 !coordinates in computational space
3200 scoord(1) = cell(1) + (pos(1) - x_cb(cell(1) - 1))/dx(cell(1))
3201 scoord(2) = cell(2) + (pos(2) - y_cb(cell(2) - 1))/dy(cell(2))
3202 scoord(3) = 0._wp
3203 if (p > 0) scoord(3) = cell(3) + (pos(3) - z_cb(cell(3) - 1))/dz(cell(3))
3204 cell(:) = int(scoord(:))
3205 do i = 1, num_dims
3206 if (scoord(i) < 0._wp) cell(i) = cell(i) - 1
3207 end do
3208
3209 end subroutine s_locate_cell
3210
3211 !> This subroutine transfer data into the temporal variables.
3212 impure subroutine s_transfer_data_to_tmp()
3213
3214 integer :: k
3215
3216
3217# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3218
3219# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3220#if defined(MFC_OpenACC)
3221# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3222!$acc parallel loop gang vector default(present) private(k)
3223# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3224#elif defined(MFC_OpenMP)
3225# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3226
3227# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3228
3229# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3230
3231# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3232!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(k)
3233# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3234#endif
3235# 1239 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3236
3237 do k = 1, nbubs
3238 gas_p(k, 2) = gas_p(k, 1)
3239 gas_mv(k, 2) = gas_mv(k, 1)
3240 intfc_rad(k, 2) = intfc_rad(k, 1)
3241 intfc_vel(k, 2) = intfc_vel(k, 1)
3242 mtn_pos(k, 1:3, 2) = mtn_pos(k, 1:3, 1)
3243 mtn_posprev(k, 1:3, 2) = mtn_posprev(k, 1:3, 1)
3244 mtn_vel(k, 1:3, 2) = mtn_vel(k, 1:3, 1)
3245 mtn_s(k, 1:3, 2) = mtn_s(k, 1:3, 1)
3246 end do
3247
3248# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3249
3250# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3251#if defined(MFC_OpenACC)
3252# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3253!$acc end parallel loop
3254# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3255#elif defined(MFC_OpenMP)
3256# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3257
3258# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3259
3260# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3261!$omp end target teams loop
3262# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3263#endif
3264# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3265
3266
3267 end subroutine s_transfer_data_to_tmp
3268
3269 !> The purpose of this procedure is to determine if the global coordinates of the bubbles
3270 !! are present in the current MPI processor (including ghost cells).
3271 !! @param pos_part Spatial coordinates of the bubble
3272 function particle_in_domain(pos_part)
3273
3274 logical :: particle_in_domain
3275 real(wp), dimension(3), intent(in) :: pos_part
3276
3277 ! 2D
3278 if (p == 0 .and. cyl_coord .neqv. .true.) then
3279 ! Defining a virtual z-axis that has the same dimensions as y-axis
3280 ! defined in the input file
3281 particle_in_domain = ((pos_part(1) < x_cb(m + buff_size)) .and. (pos_part(1) >= x_cb(-buff_size - 1)) .and. &
3282 (pos_part(2) < y_cb(n + buff_size)) .and. (pos_part(2) >= y_cb(-buff_size - 1)) .and. &
3283 (pos_part(3) < lag_params%charwidth/2._wp) .and. (pos_part(3) >= -lag_params%charwidth/2._wp))
3284 else
3285 ! cyl_coord
3286 particle_in_domain = ((pos_part(1) < x_cb(m + buff_size)) .and. (pos_part(1) >= x_cb(-buff_size - 1)) .and. &
3287 (abs(pos_part(2)) < y_cb(n + buff_size)) .and. (abs(pos_part(2)) >= max(y_cb(-buff_size - 1), 0._wp)))
3288 end if
3289
3290 ! 3D
3291 if (p > 0) then
3292 particle_in_domain = ((pos_part(1) < x_cb(m + buff_size)) .and. (pos_part(1) >= x_cb(-buff_size - 1)) .and. &
3293 (pos_part(2) < y_cb(n + buff_size)) .and. (pos_part(2) >= y_cb(-buff_size - 1)) .and. &
3294 (pos_part(3) < z_cb(p + buff_size)) .and. (pos_part(3) >= z_cb(-buff_size - 1)))
3295 end if
3296
3297 ! For symmetric and wall boundary condition
3298 if (any(bc_x%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/))) then
3299 particle_in_domain = (particle_in_domain .and. (pos_part(1) >= x_cb(-1)))
3300 end if
3301 if (any(bc_x%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/))) then
3302 particle_in_domain = (particle_in_domain .and. (pos_part(1) < x_cb(m)))
3303 end if
3304 if (any(bc_y%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. (.not. cyl_coord)) then
3305 particle_in_domain = (particle_in_domain .and. (pos_part(2) >= y_cb(-1)))
3306 end if
3307 if (any(bc_y%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/)) .and. (.not. cyl_coord)) then
3308 particle_in_domain = (particle_in_domain .and. (pos_part(2) < y_cb(n)))
3309 end if
3310 if (p > 0) then
3311 if (any(bc_z%beg == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/))) then
3312 particle_in_domain = (particle_in_domain .and. (pos_part(3) >= z_cb(-1)))
3313 end if
3314 if (any(bc_z%end == (/bc_reflective, bc_char_slip_wall, bc_slip_wall, bc_no_slip_wall/))) then
3315 particle_in_domain = (particle_in_domain .and. (pos_part(3) < z_cb(p)))
3316 end if
3317 end if
3318
3319 end function particle_in_domain
3320
3321 !> The purpose of this procedure is to determine if the lagrangian bubble is located in the
3322 !! physical domain. The ghost cells are not part of the physical domain.
3323 !! @param pos_part Spatial coordinates of the bubble
3325
3327 real(wp), dimension(3), intent(in) :: pos_part
3328
3329 particle_in_domain_physical = ((pos_part(1) < x_cb(m)) .and. (pos_part(1) >= x_cb(-1)) .and. &
3330 (pos_part(2) < y_cb(n)) .and. (pos_part(2) >= y_cb(-1)))
3331
3332 if (p > 0) then
3333 particle_in_domain_physical = (particle_in_domain_physical .and. (pos_part(3) < z_cb(p)) .and. (pos_part(3) >= z_cb(-1)))
3334 end if
3335
3336 end function particle_in_domain_physical
3337
3338 !> The purpose of this procedure is to calculate the gradient of a scalar field along the x, y and z directions
3339 !! following a second-order central difference considering uneven widths
3340 !! @param q Input scalar field
3341 !! @param dq Output gradient of q
3342 !! @param dir Gradient spatial direction
3343 subroutine s_gradient_dir(q, dq, dir)
3344
3345 real(stp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:), intent(inout) :: q, dq
3346 integer, intent(in) :: dir
3347
3348 integer :: i, j, k
3349
3350 if (dir == 1) then
3351 ! Gradient in x dir.
3352
3353# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3354
3355# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3356#if defined(MFC_OpenACC)
3357# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3358!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
3359# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3360#elif defined(MFC_OpenMP)
3361# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3362
3363# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3364
3365# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3366
3367# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3368!$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)
3369# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3370#endif
3371# 1337 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3372
3373 do k = 0, p
3374 do j = 0, n
3375 do i = 0, m
3376 dq(i, j, k) = q(i, j, k)*(dx(i + 1) - dx(i - 1)) &
3377 + q(i + 1, j, k)*(dx(i) + dx(i - 1)) &
3378 - q(i - 1, j, k)*(dx(i) + dx(i + 1))
3379 dq(i, j, k) = dq(i, j, k)/ &
3380 ((dx(i) + dx(i - 1))*(dx(i) + dx(i + 1)))
3381 end do
3382 end do
3383 end do
3384
3385# 1349 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3386
3387# 1349 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3388#if defined(MFC_OpenACC)
3389# 1349 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3390!$acc end parallel loop
3391# 1349 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3392#elif defined(MFC_OpenMP)
3393# 1349 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3394
3395# 1349 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3396
3397# 1349 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3398!$omp end target teams loop
3399# 1349 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3400#endif
3401# 1349 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3402
3403 elseif (dir == 2) then
3404 ! Gradient in y dir.
3405
3406# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3407
3408# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3409#if defined(MFC_OpenACC)
3410# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3411!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
3412# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3413#elif defined(MFC_OpenMP)
3414# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3415
3416# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3417
3418# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3419
3420# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3421!$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)
3422# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3423#endif
3424# 1352 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3425
3426 do k = 0, p
3427 do j = 0, n
3428 do i = 0, m
3429 dq(i, j, k) = q(i, j, k)*(dy(j + 1) - dy(j - 1)) &
3430 + q(i, j + 1, k)*(dy(j) + dy(j - 1)) &
3431 - q(i, j - 1, k)*(dy(j) + dy(j + 1))
3432 dq(i, j, k) = dq(i, j, k)/ &
3433 ((dy(j) + dy(j - 1))*(dy(j) + dy(j + 1)))
3434 end do
3435 end do
3436 end do
3437
3438# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3439
3440# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3441#if defined(MFC_OpenACC)
3442# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3443!$acc end parallel loop
3444# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3445#elif defined(MFC_OpenMP)
3446# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3447
3448# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3449
3450# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3451!$omp end target teams loop
3452# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3453#endif
3454# 1364 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3455
3456 elseif (dir == 3) then
3457 ! Gradient in z dir.
3458
3459# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3460
3461# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3462#if defined(MFC_OpenACC)
3463# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3464!$acc parallel loop collapse(3) gang vector default(present) private(i, j, k)
3465# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3466#elif defined(MFC_OpenMP)
3467# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3468
3469# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3470
3471# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3472
3473# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3474!$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)
3475# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3476#endif
3477# 1367 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3478
3479 do k = 0, p
3480 do j = 0, n
3481 do i = 0, m
3482 dq(i, j, k) = q(i, j, k)*(dz(k + 1) - dz(k - 1)) &
3483 + q(i, j, k + 1)*(dz(k) + dz(k - 1)) &
3484 - q(i, j, k - 1)*(dz(k) + dz(k + 1))
3485 dq(i, j, k) = dq(i, j, k)/ &
3486 ((dz(k) + dz(k - 1))*(dz(k) + dz(k + 1)))
3487 end do
3488 end do
3489 end do
3490
3491# 1379 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3492
3493# 1379 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3494#if defined(MFC_OpenACC)
3495# 1379 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3496!$acc end parallel loop
3497# 1379 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3498#elif defined(MFC_OpenMP)
3499# 1379 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3500
3501# 1379 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3502
3503# 1379 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3504!$omp end target teams loop
3505# 1379 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3506#endif
3507# 1379 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3508
3509 end if
3510
3511 end subroutine s_gradient_dir
3512
3513 !> Subroutine that writes on each time step the changes of the lagrangian bubbles.
3514 !! @param qtime Current time
3515 impure subroutine s_write_lag_particles(qtime)
3516
3517 real(wp), intent(in) :: qtime
3518 integer :: k
3519
3520 character(LEN=path_len + 2*name_len) :: file_loc
3521 logical :: file_exist
3522
3523 character(LEN=25) :: fmt
3524
3525 write (file_loc, '(A,I0,A)') 'lag_bubble_evol_', proc_rank, '.dat'
3526 file_loc = trim(case_dir)//'/D/'//trim(file_loc)
3527 inquire (file=trim(file_loc), exist=file_exist)
3528
3529 if (precision == 1) then
3530 fmt = "(A16,A14,8A16)"
3531 else
3532 fmt = "(A24,A14,8A24)"
3533 end if
3534
3535 if (.not. file_exist) then
3536 open (11, file=trim(file_loc), form='formatted', position='rewind')
3537 write (11, fmt) 'currentTime', 'particleID', 'x', 'y', 'z', &
3538 'coreVaporMass', 'coreVaporConcentration', 'radius', 'interfaceVelocity', &
3539 'corePressure'
3540 else
3541 open (11, file=trim(file_loc), form='formatted', position='append')
3542 end if
3543
3544 if (precision == 1) then
3545 fmt = "(F16.8,I14,8F16.8)"
3546 else
3547 fmt = "(F24.16,I14,8F24.16)"
3548 end if
3549
3550 ! Cycle through list
3551 do k = 1, nbubs
3552 write (11, fmt) &
3553 qtime, &
3554 lag_id(k, 1), &
3555 mtn_pos(k, 1, 1), &
3556 mtn_pos(k, 2, 1), &
3557 mtn_pos(k, 3, 1), &
3558 gas_mv(k, 1), &
3559 gas_mv(k, 1)/(gas_mv(k, 1) + gas_mg(k)), &
3560 intfc_rad(k, 1), &
3561 intfc_vel(k, 1), &
3562 gas_p(k, 1)
3563 end do
3564
3565 close (11)
3566
3567 end subroutine s_write_lag_particles
3568
3569 !> Subroutine that writes some useful statistics related to the volume fraction
3570 !! of the particles (void fraction) in the computatioational domain
3571 !! on each time step.
3572 !! @param qtime Current time
3573 impure subroutine s_write_void_evol(qtime)
3574
3575 real(wp), intent(in) :: qtime
3576 real(wp) :: volcell, voltot
3577 real(wp) :: lag_void_max, lag_void_avg, lag_vol
3578 real(wp) :: void_max_glb, void_avg_glb, vol_glb
3579
3580 integer :: i, j, k
3581
3582 character(LEN=path_len + 2*name_len) :: file_loc
3583 logical :: file_exist
3584
3585 if (proc_rank == 0) then
3586 write (file_loc, '(A)') 'voidfraction.dat'
3587 file_loc = trim(case_dir)//'/D/'//trim(file_loc)
3588 inquire (file=trim(file_loc), exist=file_exist)
3589 if (.not. file_exist) then
3590 open (12, file=trim(file_loc), form='formatted', position='rewind')
3591 !write (12, *) 'currentTime, averageVoidFraction, ', &
3592 ! 'maximumVoidFraction, totalParticlesVolume'
3593 !write (12, *) 'The averageVoidFraction value does ', &
3594 ! 'not reflect the real void fraction in the cloud since the ', &
3595 ! 'cells which do not have bubbles are not accounted'
3596 else
3597 open (12, file=trim(file_loc), form='formatted', position='append')
3598 end if
3599 end if
3600
3601 lag_void_max = 0._wp
3602 lag_void_avg = 0._wp
3603 lag_vol = 0._wp
3604
3605# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3606
3607# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3608#if defined(MFC_OpenACC)
3609# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3610!$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)
3611# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3612#elif defined(MFC_OpenMP)
3613# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3614
3615# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3616
3617# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3618
3619# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3620!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(volcell) reduction(+:lag_vol, lag_void_avg) reduction(MAX:lag_void_max) map(tofrom:lag_vol, lag_void_avg, lag_void_max)
3621# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3622#endif
3623# 1475 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3624
3625 do k = 0, p
3626 do j = 0, n
3627 do i = 0, m
3628 lag_void_max = max(lag_void_max, 1._wp - q_beta(1)%sf(i, j, k))
3629 call s_get_char_vol(i, j, k, volcell)
3630 if ((1._wp - q_beta(1)%sf(i, j, k)) > 5.0d-11) then
3631 lag_void_avg = lag_void_avg + (1._wp - q_beta(1)%sf(i, j, k))*volcell
3632 lag_vol = lag_vol + volcell
3633 end if
3634 end do
3635 end do
3636 end do
3637
3638# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3639
3640# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3641#if defined(MFC_OpenACC)
3642# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3643!$acc end parallel loop
3644# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3645#elif defined(MFC_OpenMP)
3646# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3647
3648# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3649
3650# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3651!$omp end target teams loop
3652# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3653#endif
3654# 1488 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3655
3656
3657#ifdef MFC_MPI
3658 if (num_procs > 1) then
3659 call s_mpi_allreduce_max(lag_void_max, void_max_glb)
3660 lag_void_max = void_max_glb
3661 call s_mpi_allreduce_sum(lag_vol, vol_glb)
3662 lag_vol = vol_glb
3663 call s_mpi_allreduce_sum(lag_void_avg, void_avg_glb)
3664 lag_void_avg = void_avg_glb
3665 end if
3666#endif
3667 voltot = lag_void_avg
3668 ! This voidavg value does not reflect the real void fraction in the cloud
3669 ! since the cell which does not have bubbles are not accounted
3670 if (lag_vol > 0._wp) lag_void_avg = lag_void_avg/lag_vol
3671
3672 if (proc_rank == 0) then
3673 write (12, '(6X,4e24.8)') &
3674 qtime, &
3675 lag_void_avg, &
3676 lag_void_max, &
3677 voltot
3678 close (12)
3679 end if
3680
3681 end subroutine s_write_void_evol
3682
3683 !> Subroutine that writes the restarting files for the particles in the lagrangian solver.
3684 !! @param t_step Current time step
3685 impure subroutine s_write_restart_lag_bubbles(t_step)
3686
3687 ! Generic string used to store the address of a particular file
3688 integer, intent(in) :: t_step
3689
3690 character(LEN=path_len + 2*name_len) :: file_loc
3691 logical :: file_exist
3692 integer :: bub_id, tot_part
3693 integer :: i, k
3694
3695#ifdef MFC_MPI
3696 ! For Parallel I/O
3697 integer :: ifile, ierr
3698 integer, dimension(MPI_STATUS_SIZE) :: status
3699 integer(KIND=MPI_OFFSET_KIND) :: disp
3700 integer :: view
3701 integer, dimension(2) :: gsizes, lsizes, start_idx_part
3702 integer, allocatable :: proc_bubble_counts(:)
3703 real(wp), dimension(1:1, 1:lag_io_vars) :: dummy
3704 dummy = 0._wp
3705
3706 bub_id = 0._wp
3707 if (nbubs /= 0) then
3708 do k = 1, nbubs
3709 if (particle_in_domain_physical(mtn_pos(k, 1:3, 1))) then
3710 bub_id = bub_id + 1
3711 end if
3712 end do
3713 end if
3714
3715 if (.not. parallel_io) return
3716
3717 allocate (proc_bubble_counts(num_procs))
3718
3719 lsizes(1) = bub_id
3720 lsizes(2) = lag_io_vars
3721
3722 ! Total number of particles
3723 call mpi_allreduce(bub_id, tot_part, 1, mpi_integer, &
3724 mpi_sum, mpi_comm_world, ierr)
3725
3726 call mpi_allgather(bub_id, 1, mpi_integer, proc_bubble_counts, 1, mpi_integer, &
3727 mpi_comm_world, ierr)
3728
3729 ! Calculate starting index for this processor's particles
3730 call mpi_exscan(lsizes(1), start_idx_part(1), 1, mpi_integer, mpi_sum, mpi_comm_world, ierr)
3731 if (proc_rank == 0) start_idx_part(1) = 0
3732 start_idx_part(2) = 0
3733
3734 gsizes(1) = tot_part
3735 gsizes(2) = lag_io_vars
3736
3737 write (file_loc, '(A,I0,A)') 'lag_bubbles_', t_step, '.dat'
3738 file_loc = trim(case_dir)//'/restart_data'//trim(mpiiofs)//trim(file_loc)
3739
3740 ! Clean up existing file
3741 if (proc_rank == 0) then
3742 inquire (file=trim(file_loc), exist=file_exist)
3743 if (file_exist) then
3744 call mpi_file_delete(file_loc, mpi_info_int, ierr)
3745 end if
3746 end if
3747
3748 call mpi_barrier(mpi_comm_world, ierr)
3749
3750 if (proc_rank == 0) then
3751 call mpi_file_open(mpi_comm_self, file_loc, &
3752 ior(mpi_mode_wronly, mpi_mode_create), &
3753 mpi_info_int, ifile, ierr)
3754
3755 ! Write header using MPI I/O for consistency
3756 call mpi_file_write(ifile, tot_part, 1, mpi_integer, status, ierr)
3757 call mpi_file_write(ifile, mytime, 1, mpi_p, status, ierr)
3758 call mpi_file_write(ifile, dt, 1, mpi_p, status, ierr)
3759 call mpi_file_write(ifile, num_procs, 1, mpi_integer, status, ierr)
3760 call mpi_file_write(ifile, proc_bubble_counts, num_procs, mpi_integer, status, ierr)
3761
3762 call mpi_file_close(ifile, ierr)
3763 end if
3764
3765 call mpi_barrier(mpi_comm_world, ierr)
3766
3767 if (bub_id > 0) then
3768 allocate (mpi_io_data_lag_bubbles(max(1, bub_id), 1:lag_io_vars))
3769
3770 i = 1
3771 do k = 1, nbubs
3772 if (particle_in_domain_physical(mtn_pos(k, 1:3, 1))) then
3773 mpi_io_data_lag_bubbles(i, 1) = real(lag_id(k, 1))
3774 mpi_io_data_lag_bubbles(i, 2:4) = mtn_pos(k, 1:3, 1)
3775 mpi_io_data_lag_bubbles(i, 5:7) = mtn_posprev(k, 1:3, 1)
3776 mpi_io_data_lag_bubbles(i, 8:10) = mtn_vel(k, 1:3, 1)
3777 mpi_io_data_lag_bubbles(i, 11) = intfc_rad(k, 1)
3778 mpi_io_data_lag_bubbles(i, 12) = intfc_vel(k, 1)
3779 mpi_io_data_lag_bubbles(i, 13) = bub_r0(k)
3780 mpi_io_data_lag_bubbles(i, 14) = rmax_stats(k)
3781 mpi_io_data_lag_bubbles(i, 15) = rmin_stats(k)
3782 mpi_io_data_lag_bubbles(i, 16) = bub_dphidt(k)
3783 mpi_io_data_lag_bubbles(i, 17) = gas_p(k, 1)
3784 mpi_io_data_lag_bubbles(i, 18) = gas_mv(k, 1)
3785 mpi_io_data_lag_bubbles(i, 19) = gas_mg(k)
3786 mpi_io_data_lag_bubbles(i, 20) = gas_betat(k)
3787 mpi_io_data_lag_bubbles(i, 21) = gas_betac(k)
3788 i = i + 1
3789 end if
3790 end do
3791
3792 call mpi_type_create_subarray(2, gsizes, lsizes, start_idx_part, &
3793 mpi_order_fortran, mpi_p, view, ierr)
3794 call mpi_type_commit(view, ierr)
3795
3796 call mpi_file_open(mpi_comm_world, file_loc, &
3797 ior(mpi_mode_wronly, mpi_mode_create), &
3798 mpi_info_int, ifile, ierr)
3799
3800 ! Skip header (written by rank 0)
3801 disp = int(sizeof(tot_part) + 2*sizeof(mytime) + sizeof(num_procs) + &
3802 num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
3803 call mpi_file_set_view(ifile, disp, mpi_p, view, 'native', mpi_info_int, ierr)
3804
3805 call mpi_file_write_all(ifile, mpi_io_data_lag_bubbles, &
3806 lag_io_vars*bub_id, mpi_p, status, ierr)
3807
3808 call mpi_file_close(ifile, ierr)
3809
3810 deallocate (mpi_io_data_lag_bubbles)
3811
3812 else
3813 call mpi_type_contiguous(0, mpi_p, view, ierr)
3814 call mpi_type_commit(view, ierr)
3815
3816 call mpi_file_open(mpi_comm_world, file_loc, &
3817 ior(mpi_mode_wronly, mpi_mode_create), &
3818 mpi_info_int, ifile, ierr)
3819
3820 ! Skip header (written by rank 0)
3821 disp = int(sizeof(tot_part) + 2*sizeof(mytime) + sizeof(num_procs) + &
3822 num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
3823 call mpi_file_set_view(ifile, disp, mpi_p, view, 'native', mpi_info_int, ierr)
3824
3825 call mpi_file_write_all(ifile, dummy, 0, mpi_p, status, ierr)
3826
3827 call mpi_file_close(ifile, ierr)
3828 end if
3829
3830 deallocate (proc_bubble_counts)
3831
3832#endif
3833
3834 end subroutine s_write_restart_lag_bubbles
3835
3836 !> This procedure calculates the maximum and minimum radius of each bubble.
3838
3839 integer :: k
3840
3841
3842# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3843
3844# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3845#if defined(MFC_OpenACC)
3846# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3847!$acc parallel loop gang vector default(present) private(k) reduction(MAX:Rmax_glb) reduction(MIN:Rmin_glb) copy(Rmax_glb, Rmin_glb)
3848# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3849#elif defined(MFC_OpenMP)
3850# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3851
3852# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3853
3854# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3855
3856# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3857!$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) reduction(MIN:Rmin_glb) map(tofrom:Rmax_glb, Rmin_glb)
3858# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3859#endif
3860# 1674 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3861
3862# 1676 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3863 do k = 1, nbubs
3864 rmax_glb = max(rmax_glb, intfc_rad(k, 1)/bub_r0(k))
3865 rmin_glb = min(rmin_glb, intfc_rad(k, 1)/bub_r0(k))
3866 rmax_stats(k) = max(rmax_stats(k), intfc_rad(k, 1)/bub_r0(k))
3867 rmin_stats(k) = min(rmin_stats(k), intfc_rad(k, 1)/bub_r0(k))
3868 end do
3869
3870# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3871
3872# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3873#if defined(MFC_OpenACC)
3874# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3875!$acc end parallel loop
3876# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3877#elif defined(MFC_OpenMP)
3878# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3879
3880# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3881
3882# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3883!$omp end target teams loop
3884# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3885#endif
3886# 1682 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3887
3888
3889 end subroutine s_calculate_lag_bubble_stats
3890
3891 !> Subroutine that writes the maximum and minimum radius of each bubble.
3892 impure subroutine s_write_lag_bubble_stats()
3893
3894 integer :: k
3895 character(LEN=path_len + 2*name_len) :: file_loc
3896
3897 character(len=20) :: fmt
3898
3899 write (file_loc, '(A,I0,A)') 'stats_lag_bubbles_', proc_rank, '.dat'
3900 file_loc = trim(case_dir)//'/D/'//trim(file_loc)
3901
3902
3903# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3904#if defined(MFC_OpenACC)
3905# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3906!$acc update host(Rmax_glb, Rmin_glb)
3907# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3908#elif defined(MFC_OpenMP)
3909# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3910!$omp target update from(Rmax_glb, Rmin_glb)
3911# 1697 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3912#endif
3913
3914 if (precision == 1) then
3915 fmt = "(A10,A14,5A16)"
3916 else
3917 fmt = "(A10,A14,5A24)"
3918 end if
3919
3920 open (13, file=trim(file_loc), form='formatted', position='rewind')
3921 write (13, fmt) 'proc_rank', 'particleID', 'x', 'y', 'z', 'Rmax_glb', 'Rmin_glb'
3922
3923 if (precision == 1) then
3924 fmt = "(I10,I14,5F16.8)"
3925 else
3926 fmt = "(I10,I14,5F24.16)"
3927 end if
3928
3929 do k = 1, nbubs
3930 write (13, fmt) &
3931 proc_rank, &
3932 lag_id(k, 1), &
3933 mtn_pos(k, 1, 1), &
3934 mtn_pos(k, 2, 1), &
3935 mtn_pos(k, 3, 1), &
3936 rmax_stats(k), &
3937 rmin_stats(k)
3938 end do
3939
3940 close (13)
3941
3942 end subroutine s_write_lag_bubble_stats
3943
3944 !> The purpose of this subroutine is to remove one specific particle if dt is too small.
3945 !! @param bub_id Particle id
3946 impure subroutine s_remove_lag_bubble(bub_id)
3947
3948 integer, intent(in) :: bub_id
3949
3950 integer :: i
3951
3952
3953# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3954#if defined(MFC_OpenACC)
3955# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3956!$acc loop seq
3957# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3958#elif defined(MFC_OpenMP)
3959# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3960
3961# 1737 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3962#endif
3963 do i = bub_id, nbubs - 1
3964 lag_id(i, 1) = lag_id(i + 1, 1)
3965 bub_r0(i) = bub_r0(i + 1)
3966 rmax_stats(i) = rmax_stats(i + 1)
3967 rmin_stats(i) = rmin_stats(i + 1)
3968 gas_mg(i) = gas_mg(i + 1)
3969 gas_betat(i) = gas_betat(i + 1)
3970 gas_betac(i) = gas_betac(i + 1)
3971 bub_dphidt(i) = bub_dphidt(i + 1)
3972 gas_p(i, 1:2) = gas_p(i + 1, 1:2)
3973 gas_mv(i, 1:2) = gas_mv(i + 1, 1:2)
3974 intfc_rad(i, 1:2) = intfc_rad(i + 1, 1:2)
3975 intfc_vel(i, 1:2) = intfc_vel(i + 1, 1:2)
3976 mtn_pos(i, 1:3, 1:2) = mtn_pos(i + 1, 1:3, 1:2)
3977 mtn_posprev(i, 1:3, 1:2) = mtn_posprev(i + 1, 1:3, 1:2)
3978 mtn_vel(i, 1:3, 1:2) = mtn_vel(i + 1, 1:3, 1:2)
3979 mtn_s(i, 1:3, 1:2) = mtn_s(i + 1, 1:3, 1:2)
3982 gas_dpdt(i, 1:lag_num_ts) = gas_dpdt(i + 1, 1:lag_num_ts)
3983 gas_dmvdt(i, 1:lag_num_ts) = gas_dmvdt(i + 1, 1:lag_num_ts)
3984 end do
3985
3986 nbubs = nbubs - 1
3987
3988# 1762 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3989#if defined(MFC_OpenACC)
3990# 1762 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3991!$acc update device(nBubs)
3992# 1762 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3993#elif defined(MFC_OpenMP)
3994# 1762 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3995!$omp target update to(nBubs)
3996# 1762 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
3997#endif
3998
3999 end subroutine s_remove_lag_bubble
4000
4001 !> The purpose of this subroutine is to deallocate variables
4003
4004 integer :: i
4005
4006 do i = 1, q_beta_idx
4007#ifdef MFC_DEBUG
4008# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4009 block
4010# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4011 use iso_fortran_env, only: output_unit
4012# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4013
4014# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4015 print *, 'm_bubbles_EL.fpp:1772: ', '@:DEALLOCATE(q_beta(i)%sf)'
4016# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4017
4018# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4019 call flush (output_unit)
4020# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4021 end block
4022# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4023#endif
4024# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4025
4026# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4027#if defined(MFC_OpenACC)
4028# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4029!$acc exit data delete(q_beta(i)%sf)
4030# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4031#elif defined(MFC_OpenMP)
4032# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4033!$omp target exit data map(release:q_beta(i)%sf)
4034# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4035#endif
4036# 1772 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4037 deallocate (q_beta(i)%sf)
4038 end do
4039#ifdef MFC_DEBUG
4040# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4041 block
4042# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4043 use iso_fortran_env, only: output_unit
4044# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4045
4046# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4047 print *, 'm_bubbles_EL.fpp:1774: ', '@:DEALLOCATE(q_beta)'
4048# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4049
4050# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4051 call flush (output_unit)
4052# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4053 end block
4054# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4055#endif
4056# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4057
4058# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4059#if defined(MFC_OpenACC)
4060# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4061!$acc exit data delete(q_beta)
4062# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4063#elif defined(MFC_OpenMP)
4064# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4065!$omp target exit data map(release:q_beta)
4066# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4067#endif
4068# 1774 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4069 deallocate (q_beta)
4070
4071 !Deallocating space
4072#ifdef MFC_DEBUG
4073# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4074 block
4075# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4076 use iso_fortran_env, only: output_unit
4077# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4078
4079# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4080 print *, 'm_bubbles_EL.fpp:1777: ', '@:DEALLOCATE(lag_id)'
4081# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4082
4083# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4084 call flush (output_unit)
4085# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4086 end block
4087# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4088#endif
4089# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4090
4091# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4092#if defined(MFC_OpenACC)
4093# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4094!$acc exit data delete(lag_id)
4095# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4096#elif defined(MFC_OpenMP)
4097# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4098!$omp target exit data map(release:lag_id)
4099# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4100#endif
4101# 1777 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4102 deallocate (lag_id)
4103#ifdef MFC_DEBUG
4104# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4105 block
4106# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4107 use iso_fortran_env, only: output_unit
4108# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4109
4110# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4111 print *, 'm_bubbles_EL.fpp:1778: ', '@:DEALLOCATE(bub_R0)'
4112# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4113
4114# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4115 call flush (output_unit)
4116# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4117 end block
4118# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4119#endif
4120# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4121
4122# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4123#if defined(MFC_OpenACC)
4124# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4125!$acc exit data delete(bub_R0)
4126# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4127#elif defined(MFC_OpenMP)
4128# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4129!$omp target exit data map(release:bub_R0)
4130# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4131#endif
4132# 1778 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4133 deallocate (bub_r0)
4134#ifdef MFC_DEBUG
4135# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4136 block
4137# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4138 use iso_fortran_env, only: output_unit
4139# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4140
4141# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4142 print *, 'm_bubbles_EL.fpp:1779: ', '@:DEALLOCATE(Rmax_stats)'
4143# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4144
4145# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4146 call flush (output_unit)
4147# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4148 end block
4149# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4150#endif
4151# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4152
4153# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4154#if defined(MFC_OpenACC)
4155# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4156!$acc exit data delete(Rmax_stats)
4157# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4158#elif defined(MFC_OpenMP)
4159# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4160!$omp target exit data map(release:Rmax_stats)
4161# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4162#endif
4163# 1779 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4164 deallocate (rmax_stats)
4165#ifdef MFC_DEBUG
4166# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4167 block
4168# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4169 use iso_fortran_env, only: output_unit
4170# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4171
4172# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4173 print *, 'm_bubbles_EL.fpp:1780: ', '@:DEALLOCATE(Rmin_stats)'
4174# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4175
4176# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4177 call flush (output_unit)
4178# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4179 end block
4180# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4181#endif
4182# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4183
4184# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4185#if defined(MFC_OpenACC)
4186# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4187!$acc exit data delete(Rmin_stats)
4188# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4189#elif defined(MFC_OpenMP)
4190# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4191!$omp target exit data map(release:Rmin_stats)
4192# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4193#endif
4194# 1780 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4195 deallocate (rmin_stats)
4196#ifdef MFC_DEBUG
4197# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4198 block
4199# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4200 use iso_fortran_env, only: output_unit
4201# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4202
4203# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4204 print *, 'm_bubbles_EL.fpp:1781: ', '@:DEALLOCATE(gas_mg)'
4205# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4206
4207# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4208 call flush (output_unit)
4209# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4210 end block
4211# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4212#endif
4213# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4214
4215# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4216#if defined(MFC_OpenACC)
4217# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4218!$acc exit data delete(gas_mg)
4219# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4220#elif defined(MFC_OpenMP)
4221# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4222!$omp target exit data map(release:gas_mg)
4223# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4224#endif
4225# 1781 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4226 deallocate (gas_mg)
4227#ifdef MFC_DEBUG
4228# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4229 block
4230# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4231 use iso_fortran_env, only: output_unit
4232# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4233
4234# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4235 print *, 'm_bubbles_EL.fpp:1782: ', '@:DEALLOCATE(gas_betaT)'
4236# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4237
4238# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4239 call flush (output_unit)
4240# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4241 end block
4242# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4243#endif
4244# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4245
4246# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4247#if defined(MFC_OpenACC)
4248# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4249!$acc exit data delete(gas_betaT)
4250# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4251#elif defined(MFC_OpenMP)
4252# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4253!$omp target exit data map(release:gas_betaT)
4254# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4255#endif
4256# 1782 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4257 deallocate (gas_betat)
4258#ifdef MFC_DEBUG
4259# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4260 block
4261# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4262 use iso_fortran_env, only: output_unit
4263# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4264
4265# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4266 print *, 'm_bubbles_EL.fpp:1783: ', '@:DEALLOCATE(gas_betaC)'
4267# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4268
4269# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4270 call flush (output_unit)
4271# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4272 end block
4273# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4274#endif
4275# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4276
4277# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4278#if defined(MFC_OpenACC)
4279# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4280!$acc exit data delete(gas_betaC)
4281# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4282#elif defined(MFC_OpenMP)
4283# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4284!$omp target exit data map(release:gas_betaC)
4285# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4286#endif
4287# 1783 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4288 deallocate (gas_betac)
4289#ifdef MFC_DEBUG
4290# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4291 block
4292# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4293 use iso_fortran_env, only: output_unit
4294# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4295
4296# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4297 print *, 'm_bubbles_EL.fpp:1784: ', '@:DEALLOCATE(bub_dphidt)'
4298# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4299
4300# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4301 call flush (output_unit)
4302# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4303 end block
4304# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4305#endif
4306# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4307
4308# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4309#if defined(MFC_OpenACC)
4310# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4311!$acc exit data delete(bub_dphidt)
4312# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4313#elif defined(MFC_OpenMP)
4314# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4315!$omp target exit data map(release:bub_dphidt)
4316# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4317#endif
4318# 1784 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4319 deallocate (bub_dphidt)
4320#ifdef MFC_DEBUG
4321# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4322 block
4323# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4324 use iso_fortran_env, only: output_unit
4325# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4326
4327# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4328 print *, 'm_bubbles_EL.fpp:1785: ', '@:DEALLOCATE(gas_p)'
4329# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4330
4331# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4332 call flush (output_unit)
4333# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4334 end block
4335# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4336#endif
4337# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4338
4339# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4340#if defined(MFC_OpenACC)
4341# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4342!$acc exit data delete(gas_p)
4343# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4344#elif defined(MFC_OpenMP)
4345# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4346!$omp target exit data map(release:gas_p)
4347# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4348#endif
4349# 1785 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4350 deallocate (gas_p)
4351#ifdef MFC_DEBUG
4352# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4353 block
4354# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4355 use iso_fortran_env, only: output_unit
4356# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4357
4358# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4359 print *, 'm_bubbles_EL.fpp:1786: ', '@:DEALLOCATE(gas_mv)'
4360# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4361
4362# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4363 call flush (output_unit)
4364# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4365 end block
4366# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4367#endif
4368# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4369
4370# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4371#if defined(MFC_OpenACC)
4372# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4373!$acc exit data delete(gas_mv)
4374# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4375#elif defined(MFC_OpenMP)
4376# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4377!$omp target exit data map(release:gas_mv)
4378# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4379#endif
4380# 1786 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4381 deallocate (gas_mv)
4382#ifdef MFC_DEBUG
4383# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4384 block
4385# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4386 use iso_fortran_env, only: output_unit
4387# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4388
4389# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4390 print *, 'm_bubbles_EL.fpp:1787: ', '@:DEALLOCATE(intfc_rad)'
4391# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4392
4393# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4394 call flush (output_unit)
4395# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4396 end block
4397# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4398#endif
4399# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4400
4401# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4402#if defined(MFC_OpenACC)
4403# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4404!$acc exit data delete(intfc_rad)
4405# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4406#elif defined(MFC_OpenMP)
4407# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4408!$omp target exit data map(release:intfc_rad)
4409# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4410#endif
4411# 1787 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4412 deallocate (intfc_rad)
4413#ifdef MFC_DEBUG
4414# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4415 block
4416# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4417 use iso_fortran_env, only: output_unit
4418# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4419
4420# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4421 print *, 'm_bubbles_EL.fpp:1788: ', '@:DEALLOCATE(intfc_vel)'
4422# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4423
4424# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4425 call flush (output_unit)
4426# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4427 end block
4428# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4429#endif
4430# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4431
4432# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4433#if defined(MFC_OpenACC)
4434# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4435!$acc exit data delete(intfc_vel)
4436# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4437#elif defined(MFC_OpenMP)
4438# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4439!$omp target exit data map(release:intfc_vel)
4440# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4441#endif
4442# 1788 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4443 deallocate (intfc_vel)
4444#ifdef MFC_DEBUG
4445# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4446 block
4447# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4448 use iso_fortran_env, only: output_unit
4449# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4450
4451# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4452 print *, 'm_bubbles_EL.fpp:1789: ', '@:DEALLOCATE(mtn_pos)'
4453# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4454
4455# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4456 call flush (output_unit)
4457# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4458 end block
4459# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4460#endif
4461# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4462
4463# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4464#if defined(MFC_OpenACC)
4465# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4466!$acc exit data delete(mtn_pos)
4467# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4468#elif defined(MFC_OpenMP)
4469# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4470!$omp target exit data map(release:mtn_pos)
4471# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4472#endif
4473# 1789 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4474 deallocate (mtn_pos)
4475#ifdef MFC_DEBUG
4476# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4477 block
4478# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4479 use iso_fortran_env, only: output_unit
4480# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4481
4482# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4483 print *, 'm_bubbles_EL.fpp:1790: ', '@:DEALLOCATE(mtn_posPrev)'
4484# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4485
4486# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4487 call flush (output_unit)
4488# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4489 end block
4490# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4491#endif
4492# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4493
4494# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4495#if defined(MFC_OpenACC)
4496# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4497!$acc exit data delete(mtn_posPrev)
4498# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4499#elif defined(MFC_OpenMP)
4500# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4501!$omp target exit data map(release:mtn_posPrev)
4502# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4503#endif
4504# 1790 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4505 deallocate (mtn_posprev)
4506#ifdef MFC_DEBUG
4507# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4508 block
4509# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4510 use iso_fortran_env, only: output_unit
4511# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4512
4513# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4514 print *, 'm_bubbles_EL.fpp:1791: ', '@:DEALLOCATE(mtn_vel)'
4515# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4516
4517# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4518 call flush (output_unit)
4519# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4520 end block
4521# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4522#endif
4523# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4524
4525# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4526#if defined(MFC_OpenACC)
4527# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4528!$acc exit data delete(mtn_vel)
4529# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4530#elif defined(MFC_OpenMP)
4531# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4532!$omp target exit data map(release:mtn_vel)
4533# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4534#endif
4535# 1791 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4536 deallocate (mtn_vel)
4537#ifdef MFC_DEBUG
4538# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4539 block
4540# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4541 use iso_fortran_env, only: output_unit
4542# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4543
4544# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4545 print *, 'm_bubbles_EL.fpp:1792: ', '@:DEALLOCATE(mtn_s)'
4546# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4547
4548# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4549 call flush (output_unit)
4550# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4551 end block
4552# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4553#endif
4554# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4555
4556# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4557#if defined(MFC_OpenACC)
4558# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4559!$acc exit data delete(mtn_s)
4560# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4561#elif defined(MFC_OpenMP)
4562# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4563!$omp target exit data map(release:mtn_s)
4564# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4565#endif
4566# 1792 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4567 deallocate (mtn_s)
4568#ifdef MFC_DEBUG
4569# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4570 block
4571# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4572 use iso_fortran_env, only: output_unit
4573# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4574
4575# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4576 print *, 'm_bubbles_EL.fpp:1793: ', '@:DEALLOCATE(intfc_draddt)'
4577# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4578
4579# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4580 call flush (output_unit)
4581# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4582 end block
4583# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4584#endif
4585# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4586
4587# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4588#if defined(MFC_OpenACC)
4589# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4590!$acc exit data delete(intfc_draddt)
4591# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4592#elif defined(MFC_OpenMP)
4593# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4594!$omp target exit data map(release:intfc_draddt)
4595# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4596#endif
4597# 1793 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4598 deallocate (intfc_draddt)
4599#ifdef MFC_DEBUG
4600# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4601 block
4602# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4603 use iso_fortran_env, only: output_unit
4604# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4605
4606# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4607 print *, 'm_bubbles_EL.fpp:1794: ', '@:DEALLOCATE(intfc_dveldt)'
4608# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4609
4610# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4611 call flush (output_unit)
4612# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4613 end block
4614# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4615#endif
4616# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4617
4618# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4619#if defined(MFC_OpenACC)
4620# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4621!$acc exit data delete(intfc_dveldt)
4622# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4623#elif defined(MFC_OpenMP)
4624# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4625!$omp target exit data map(release:intfc_dveldt)
4626# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4627#endif
4628# 1794 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4629 deallocate (intfc_dveldt)
4630#ifdef MFC_DEBUG
4631# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4632 block
4633# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4634 use iso_fortran_env, only: output_unit
4635# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4636
4637# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4638 print *, 'm_bubbles_EL.fpp:1795: ', '@:DEALLOCATE(gas_dpdt)'
4639# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4640
4641# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4642 call flush (output_unit)
4643# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4644 end block
4645# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4646#endif
4647# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4648
4649# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4650#if defined(MFC_OpenACC)
4651# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4652!$acc exit data delete(gas_dpdt)
4653# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4654#elif defined(MFC_OpenMP)
4655# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4656!$omp target exit data map(release:gas_dpdt)
4657# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4658#endif
4659# 1795 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4660 deallocate (gas_dpdt)
4661#ifdef MFC_DEBUG
4662# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4663 block
4664# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4665 use iso_fortran_env, only: output_unit
4666# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4667
4668# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4669 print *, 'm_bubbles_EL.fpp:1796: ', '@:DEALLOCATE(gas_dmvdt)'
4670# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4671
4672# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4673 call flush (output_unit)
4674# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4675 end block
4676# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4677#endif
4678# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4679
4680# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4681#if defined(MFC_OpenACC)
4682# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4683!$acc exit data delete(gas_dmvdt)
4684# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4685#elif defined(MFC_OpenMP)
4686# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4687!$omp target exit data map(release:gas_dmvdt)
4688# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4689#endif
4690# 1796 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4691 deallocate (gas_dmvdt)
4692#ifdef MFC_DEBUG
4693# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4694 block
4695# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4696 use iso_fortran_env, only: output_unit
4697# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4698
4699# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4700 print *, 'm_bubbles_EL.fpp:1797: ', '@:DEALLOCATE(mtn_dposdt)'
4701# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4702
4703# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4704 call flush (output_unit)
4705# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4706 end block
4707# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4708#endif
4709# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4710
4711# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4712#if defined(MFC_OpenACC)
4713# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4714!$acc exit data delete(mtn_dposdt)
4715# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4716#elif defined(MFC_OpenMP)
4717# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4718!$omp target exit data map(release:mtn_dposdt)
4719# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4720#endif
4721# 1797 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4722 deallocate (mtn_dposdt)
4723#ifdef MFC_DEBUG
4724# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4725 block
4726# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4727 use iso_fortran_env, only: output_unit
4728# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4729
4730# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4731 print *, 'm_bubbles_EL.fpp:1798: ', '@:DEALLOCATE(mtn_dveldt)'
4732# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4733
4734# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4735 call flush (output_unit)
4736# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4737 end block
4738# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4739#endif
4740# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4741
4742# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4743#if defined(MFC_OpenACC)
4744# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4745!$acc exit data delete(mtn_dveldt)
4746# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4747#elif defined(MFC_OpenMP)
4748# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4749!$omp target exit data map(release:mtn_dveldt)
4750# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4751#endif
4752# 1798 "/home/runner/work/MFC/MFC/src/simulation/m_bubbles_EL.fpp"
4753 deallocate (mtn_dveldt)
4754
4755 end subroutine s_finalize_lagrangian_solver
4756
4757end 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.
impure subroutine s_write_lag_bubble_stats()
Subroutine that writes the maximum and minimum radius of each bubble.
subroutine s_gradient_dir(q, dq, dir)
The purpose of this procedure is to calculate the gradient of a scalar field along the x,...
real(wp), dimension(:, :, :), allocatable mtn_s
Bubble's computational cell position in real format.
real(wp) rmin_glb
Maximum and minimum bubbe size in the local domain Projection of the lagrangian particles in the Eule...
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 gas_dpdt
Time derivative of gas pressure.
integer q_beta_idx
Size of the q_beta vector field.
real(wp), dimension(:), allocatable gas_mg
Bubble's gas mass.
subroutine s_compute_bubble_el_dynamics(q_prim_vf, stage)
Contains the bubble dynamics subroutines.
impure subroutine s_write_restart_lag_bubbles(t_step)
Subroutine that writes the restarting files for the particles in the lagrangian solver.
impure subroutine s_read_input_bubbles(q_cons_vf)
The purpose of this procedure is to obtain the initial bubbles' information.
integer nbubs
Number of bubbles in the local domain.
integer, private lag_num_ts
Number of time stages in the time-stepping scheme.
real(wp), dimension(:), allocatable bub_r0
Initial bubble radius.
real(wp), dimension(:, :, :), allocatable mtn_pos
Bubble's position.
impure subroutine s_add_bubbles(inputbubble, q_cons_vf, bub_id)
The purpose of this procedure is to obtain the information of the bubbles when starting fresh.
impure subroutine s_initialize_bubbles_el_module(q_cons_vf)
Initializes the lagrangian subgrid bubble solver.
real(wp), dimension(:), allocatable rmin_stats
Minimum radius.
impure subroutine s_update_lagrange_tdv_rk(stage)
This subroutine updates the Lagrange variables using the tvd RK time steppers. The time derivative of...
real(wp), dimension(:, :), allocatable intfc_rad
Bubble radius.
logical function particle_in_domain_physical(pos_part)
The purpose of this procedure is to determine if the lagrangian bubble is located in the physical dom...
real(wp), dimension(:, :, :), allocatable mtn_dposdt
Time derivative of the bubble's position.
real(wp), dimension(:, :), allocatable gas_dmvdt
Time derivative of the vapor mass in the bubble.
real(wp), dimension(:, :), allocatable intfc_vel
Velocity of the bubble interface.
impure subroutine s_restart_bubbles(bub_id, save_count)
The purpose of this procedure is to obtain the information of the bubbles from a restart point.
real(wp), dimension(:, :), allocatable gas_p
Pressure in the bubble.
subroutine s_smear_voidfraction()
The purpose of this subroutine is to smear the effect of the bubbles in the Eulerian framework.
logical function particle_in_domain(pos_part)
The purpose of this procedure is to determine if the global coordinates of the bubbles are present in...
subroutine s_compute_bubbles_el_source(q_cons_vf, q_prim_vf, rhs_vf)
The purpose of this subroutine is to obtain the bubble source terms based on Maeda and Colonius (2018...
real(wp), dimension(:, :), allocatable gas_mv
Vapor mass in the bubble.
integer, dimension(:, :), allocatable lag_id
Global and local IDs.
subroutine s_locate_cell(pos, cell, scoord)
This subroutine returns the computational coordinate of the cell for the given position.
subroutine s_compute_cson_from_pinf(q_prim_vf, pinf, cell, rhol, gamma, pi_inf, cson)
This procedure computes the speed of sound from a given driving pressure.
real(wp), dimension(:), allocatable rmax_stats
Maximum radius.
impure subroutine s_write_void_evol(qtime)
Subroutine that writes some useful statistics related to the volume fraction of the particles (void f...
impure subroutine s_transfer_data_to_tmp()
This subroutine transfer data into the temporal variables.
real(wp), dimension(:, :, :), allocatable mtn_posprev
Bubble's previous position.
subroutine s_calculate_lag_bubble_stats()
This procedure calculates the maximum and minimum radius of each bubble.
real(wp), dimension(:, :), allocatable intfc_dveldt
Time derivative of bubble's interface velocity.
impure subroutine s_remove_lag_bubble(bub_id)
The purpose of this subroutine is to remove one specific particle if dt is too small.
type(scalar_field), dimension(:), allocatable q_beta
real(wp), dimension(:), allocatable gas_betac
massflux model (Preston et al., 2007)
real(wp), dimension(:, :, :), allocatable mtn_dveldt
Time derivative of the bubble's velocity.
real(wp), dimension(:, :), allocatable intfc_draddt
Time derivative of bubble's radius.
impure subroutine s_write_lag_particles(qtime)
Subroutine that writes on each time step the changes of the lagrangian bubbles.
impure subroutine s_finalize_lagrangian_solver()
The purpose of this subroutine is to deallocate variables.
real(wp), dimension(:, :, :), allocatable mtn_vel
Bubble's velocity.
subroutine s_get_pinf(bub_id, q_prim_vf, ptype, f_pinfl, cell, preterm1, term2, romega)
The purpose of this procedure is obtain the bubble driving pressure p_inf.
Shared bubble-dynamics procedures (radial acceleration, wall pressure, sound speed) for ensemble- and...
Platform-specific file and directory operations: create, delete, inquire, getcwd, and basename.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
type(bubbles_lagrange_parameters) lag_params
Lagrange bubbles' parameters.
integer time_stepper
Time-stepper algorithm.
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Simulation helper routines for enthalpy computation, CFL calculation, and stability checks.
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.