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