MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_surface_tension.fpp.f90
Go to the documentation of this file.
1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
2!>
3!! @file
4!! @brief Contains module m_surface_tension
5
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
7! This file exists so that Fypp can be run without generating case.fpp files for
8! each target. This is useful when generating documentation, for example. This
9! should also let MFC be built with CMake directly, without invoking mfc.sh.
10
11! For pre-process.
12# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
13
14! For moving immersed boundaries in simulation
15# 14 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp" 2
17# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
18# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
19# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
20# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25
26# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29
30# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31
32# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33
34# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35
36# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37
38# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39
40# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41
42# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43! New line at end of file is required for FYPP
44# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
45# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
46# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
47# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52
53# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56
57# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58
59# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60
61# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62
63# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64
65# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66
67# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68
69# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70! New line at end of file is required for FYPP
71# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
72
73# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78
79# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80
81# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82
83# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84
85# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86
87# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88
89# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90
91# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92
93# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94
95# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96
97# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98
99# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100
101# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102
103# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104
105# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106
107# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108
109# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110
111# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112
113# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114
115# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116
117# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125
126# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149! New line at end of file is required for FYPP
150# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
151# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
152# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
153# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158
159# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162
163# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164
165# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166
167# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168
169# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170
171# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172
173# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174
175# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176! New line at end of file is required for FYPP
177# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
178
179# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180
181# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182
183# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184
185# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186
187# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188
189# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190
191# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192
193# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194
195# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196
197# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198
199# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200
201# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202
203# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204
205# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206
207# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208
209# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210
211# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212
213# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214
215# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216
217# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234! New line at end of file is required for FYPP
235# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
236
237# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
238
239# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
240
241# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242
243# 76 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244
245# 91 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246
247# 102 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249# 115 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250
251# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252
253# 154 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255# 165 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256
257# 176 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258
259# 187 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261# 198 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262
263# 208 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264
265# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267# 220 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268
269# 226 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
270
271# 232 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273# 234 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274# 235 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275! New line at end of file is required for FYPP
276# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
277
278# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
279
280! Caution:
281! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
282! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
283! For an example see misc/nvidia_uvm/bind.sh.
284# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
285
286# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
287
288# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289
290# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
291
292# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
293
294# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
295
296# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
297
298# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299! New line at end of file is required for FYPP
300# 7 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp" 2
301# 1 "/home/runner/work/MFC/MFC/src/simulation/include/inline_capillary.fpp" 1
302# 25 "/home/runner/work/MFC/MFC/src/simulation/include/inline_capillary.fpp"
303# 8 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp" 2
304
305!> @brief Computes capillary source fluxes and color-function gradients for the diffuse-interface surface tension model
307
308 use m_derived_types !< definitions of the derived types
309
310 use m_global_parameters !< definitions of the global parameters
311
312 use m_mpi_proxy !< message passing interface (mpi) module proxy
313
315
316 use m_weno
317
318 use m_muscl !< monotonic upstream-centered (muscl)
319 !! schemes for conservation laws
320
321 use m_helper
322
324
325 implicit none
326
327 private; public :: s_initialize_surface_tension_module, &
331
332 !> @name color function gradient components and magnitude
333 !> @{
334 type(scalar_field), allocatable, dimension(:) :: c_divs
335 !> @}
336
337# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
338#if defined(MFC_OpenACC)
339# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
340!$acc declare create(c_divs)
341# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
342#elif defined(MFC_OpenMP)
343# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
344!$omp declare target (c_divs)
345# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
346#endif
347
348 !> @name cell boundary reconstructed gradient components and magnitude
349 !> @{
350 real(wp), allocatable, dimension(:, :, :, :) :: gl_x, gr_x, gl_y, gr_y, gl_z, gr_z
351 !> @}
352
353# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
354#if defined(MFC_OpenACC)
355# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
356!$acc declare create(gL_x, gR_x, gL_y, gR_y, gL_z, gR_z)
357# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
358#elif defined(MFC_OpenMP)
359# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
360!$omp declare target (gL_x, gR_x, gL_y, gR_y, gL_z, gR_z)
361# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
362#endif
363
365
366# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
367#if defined(MFC_OpenACC)
368# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
369!$acc declare create(is1, is2, is3, iv)
370# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
371#elif defined(MFC_OpenMP)
372# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
373!$omp declare target (is1, is2, is3, iv)
374# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
375#endif
376
377contains
378
380
381 integer :: j
382
383#ifdef MFC_DEBUG
384# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
385 block
386# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
387 use iso_fortran_env, only: output_unit
388# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
389
390# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
391 print *, 'm_surface_tension.fpp:57: ', '@:ALLOCATE(c_divs(1:num_dims + 1))'
392# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
393
394# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
395 call flush (output_unit)
396# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
397 end block
398# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
399#endif
400# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
401 allocate (c_divs(1:num_dims + 1))
402# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
403
404# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
405
406# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
407#if defined(MFC_OpenACC)
408# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
409!$acc enter data create(c_divs)
410# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
411#elif defined(MFC_OpenMP)
412# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
413!$omp target enter data map(always,alloc:c_divs)
414# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
415#endif
416
417 do j = 1, num_dims + 1
418#ifdef MFC_DEBUG
419# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
420 block
421# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
422 use iso_fortran_env, only: output_unit
423# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
424
425# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
426 print *, 'm_surface_tension.fpp:60: ', '@:ALLOCATE(c_divs(j)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
427# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
428
429# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
430 call flush (output_unit)
431# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
432 end block
433# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
434#endif
435# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
436 allocate (c_divs(j)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
437# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
438
439# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
440
441# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
442#if defined(MFC_OpenACC)
443# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
444!$acc enter data create(c_divs(j)%sf)
445# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
446#elif defined(MFC_OpenMP)
447# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
448!$omp target enter data map(always,alloc:c_divs(j)%sf)
449# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
450#endif
451#ifdef _CRAYFTN
452# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
453 block
454# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
455
456# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
457#ifdef MFC_DEBUG
458# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
459 block
460# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
461 use iso_fortran_env, only: output_unit
462# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
463
464# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
465 print *, 'm_surface_tension.fpp:61: ', '@:ACC_SETUP_SFs(c_divs(j))'
466# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
467
468# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
469 call flush (output_unit)
470# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
471 end block
472# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
473#endif
474# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
475
476# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
477
478# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
479#if defined(MFC_OpenACC)
480# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
481!$acc enter data copyin(c_divs(j))
482# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
483#elif defined(MFC_OpenMP)
484# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
485!$omp target enter data map(to:c_divs(j))
486# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
487#endif
488# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
489 if (associated(c_divs(j)%sf)) then
490# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
491
492# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
493#if defined(MFC_OpenACC)
494# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
495!$acc enter data copyin(c_divs(j)%sf)
496# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
497#elif defined(MFC_OpenMP)
498# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
499!$omp target enter data map(to:c_divs(j)%sf)
500# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
501#endif
502# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
503 end if
504# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
505 end block
506# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
507#endif
508 end do
509
510#ifdef MFC_DEBUG
511# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
512 block
513# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
514 use iso_fortran_env, only: output_unit
515# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
516
517# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
518 print *, 'm_surface_tension.fpp:64: ', '@:ALLOCATE(gL_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))'
519# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
520
521# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
522 call flush (output_unit)
523# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
524 end block
525# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
526#endif
527# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
528 allocate (gl_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
529# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
530
531# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
532
533# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
534#if defined(MFC_OpenACC)
535# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
536!$acc enter data create(gL_x)
537# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
538#elif defined(MFC_OpenMP)
539# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
540!$omp target enter data map(always,alloc:gL_x)
541# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
542#endif
543#ifdef MFC_DEBUG
544# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
545 block
546# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
547 use iso_fortran_env, only: output_unit
548# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
549
550# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
551 print *, 'm_surface_tension.fpp:65: ', '@:ALLOCATE(gR_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))'
552# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
553
554# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
555 call flush (output_unit)
556# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
557 end block
558# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
559#endif
560# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
561 allocate (gr_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
562# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
563
564# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
565
566# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
567#if defined(MFC_OpenACC)
568# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
569!$acc enter data create(gR_x)
570# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
571#elif defined(MFC_OpenMP)
572# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
573!$omp target enter data map(always,alloc:gR_x)
574# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
575#endif
576
577#ifdef MFC_DEBUG
578# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
579 block
580# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
581 use iso_fortran_env, only: output_unit
582# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
583
584# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
585 print *, 'm_surface_tension.fpp:67: ', '@:ALLOCATE(gL_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))'
586# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
587
588# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
589 call flush (output_unit)
590# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
591 end block
592# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
593#endif
594# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
595 allocate (gl_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
596# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
597
598# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
599
600# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
601#if defined(MFC_OpenACC)
602# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
603!$acc enter data create(gL_y)
604# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
605#elif defined(MFC_OpenMP)
606# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
607!$omp target enter data map(always,alloc:gL_y)
608# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
609#endif
610#ifdef MFC_DEBUG
611# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
612 block
613# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
614 use iso_fortran_env, only: output_unit
615# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
616
617# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
618 print *, 'm_surface_tension.fpp:68: ', '@:ALLOCATE(gR_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))'
619# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
620
621# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
622 call flush (output_unit)
623# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
624 end block
625# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
626#endif
627# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
628 allocate (gr_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
629# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
630
631# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
632
633# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
634#if defined(MFC_OpenACC)
635# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
636!$acc enter data create(gR_y)
637# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
638#elif defined(MFC_OpenMP)
639# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
640!$omp target enter data map(always,alloc:gR_y)
641# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
642#endif
643
644 if (p > 0) then
645#ifdef MFC_DEBUG
646# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
647 block
648# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
649 use iso_fortran_env, only: output_unit
650# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
651
652# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
653 print *, 'm_surface_tension.fpp:71: ', '@:ALLOCATE(gL_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))'
654# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
655
656# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
657 call flush (output_unit)
658# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
659 end block
660# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
661#endif
662# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
663 allocate (gl_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))
664# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
665
666# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
667
668# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
669#if defined(MFC_OpenACC)
670# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
671!$acc enter data create(gL_z)
672# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
673#elif defined(MFC_OpenMP)
674# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
675!$omp target enter data map(always,alloc:gL_z)
676# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
677#endif
678#ifdef MFC_DEBUG
679# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
680 block
681# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
682 use iso_fortran_env, only: output_unit
683# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
684
685# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
686 print *, 'm_surface_tension.fpp:72: ', '@:ALLOCATE(gR_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))'
687# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
688
689# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
690 call flush (output_unit)
691# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
692 end block
693# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
694#endif
695# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
696 allocate (gr_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))
697# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
698
699# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
700
701# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
702#if defined(MFC_OpenACC)
703# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
704!$acc enter data create(gR_z)
705# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
706#elif defined(MFC_OpenMP)
707# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
708!$omp target enter data map(always,alloc:gR_z)
709# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
710#endif
711 end if
713
714 !> @brief Computes the capillary (surface-tension) source flux from reconstructed color-gradient fields.
716 vSrc_rsx_vf, vSrc_rsy_vf, vSrc_rsz_vf, &
717 flux_src_vf, &
718 id, isx, isy, isz)
719
720 real(wp), dimension(-1:, 0:, 0:, 1:), intent(in) :: vsrc_rsx_vf
721 real(wp), dimension(-1:, 0:, 0:, 1:), intent(in) :: vsrc_rsy_vf
722 real(wp), dimension(-1:, 0:, 0:, 1:), intent(in) :: vsrc_rsz_vf
723 type(scalar_field), &
724 dimension(sys_size), &
725 intent(inout) :: flux_src_vf
726 integer, intent(in) :: id
727 type(int_bounds_info), intent(in) :: isx, isy, isz
728# 93 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
729 real(wp), dimension(num_dims, num_dims) :: omega
730# 95 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
731 real(wp) :: w1l, w1r, w2l, w2r, w3l, w3r, w1, w2, w3
732 real(wp) :: normwl, normwr, normw
733 integer :: j, k, l, i
734
735 if (id == 1) then
736
737# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
738
739# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
740#if defined(MFC_OpenACC)
741# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
742!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
743# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
744#elif defined(MFC_OpenMP)
745# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
746
747# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
748
749# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
750
751# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
752!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
753# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
754#endif
755# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
756
757 do l = isz%beg, isz%end
758 do k = isy%beg, isy%end
759 do j = isx%beg, isx%end
760
761 w1l = gl_x(j, k, l, 1)
762 w2l = gl_x(j, k, l, 2)
763 w3l = 0._wp
764 if (p > 0) w3l = gl_x(j, k, l, 3)
765
766 w1r = gr_x(j + 1, k, l, 1)
767 w2r = gr_x(j + 1, k, l, 2)
768 w3r = 0._wp
769 if (p > 0) w3r = gr_x(j + 1, k, l, 3)
770
771 normwl = gl_x(j, k, l, num_dims + 1)
772 normwr = gr_x(j + 1, k, l, num_dims + 1)
773
774 w1 = (w1l + w1r)/2._wp
775 w2 = (w2l + w2r)/2._wp
776 w3 = (w3l + w3r)/2._wp
777 normw = (normwl + normwr)/2._wp
778
779 if (normw > capillary_cutoff) then
780
781# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
782 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
783# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
784 omega(2, 1) = sigma*w1*w2/normw
785# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
786 omega(1, 2) = omega(2, 1)
787# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
788
789# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
790 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
791# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
792
793# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
794 if (p > 0) then
795# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
796 omega(3, 1) = sigma*w1*w3/normw
797# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
798 omega(1, 3) = omega(3, 1)
799# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
800
801# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
802 omega(3, 2) = sigma*w2*w3/normw
803# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
804 omega(2, 3) = omega(3, 2)
805# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
806
807# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
808 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
809# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
810
811# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
812 end if
813# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
814
815
816 do i = 1, num_dims
817
818 flux_src_vf(momxb + i - 1)%sf(j, k, l) = &
819 flux_src_vf(momxb + i - 1)%sf(j, k, l) + omega(1, i)
820
821 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
822 omega(1, i)*vsrc_rsx_vf(j, k, l, i)
823
824 end do
825
826 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
827 sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsx_vf(j, k, l, 1)
828 end if
829 end do
830 end do
831 end do
832
833# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
834
835# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
836#if defined(MFC_OpenACC)
837# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
838!$acc end parallel loop
839# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
840#elif defined(MFC_OpenMP)
841# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
842
843# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
844
845# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
846!$omp end target teams loop
847# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
848#endif
849# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
850
851
852 elseif (id == 2) then
853# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
854
855# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
856
857# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
858#if defined(MFC_OpenACC)
859# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
860!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
861# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
862#elif defined(MFC_OpenMP)
863# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
864
865# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
866
867# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
868
869# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
870!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
871# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
872#endif
873# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
874
875 do l = isz%beg, isz%end
876 do k = isy%beg, isy%end
877 do j = isx%beg, isx%end
878
879 w1l = gl_y(k, j, l, 1)
880 w2l = gl_y(k, j, l, 2)
881 w3l = 0._wp
882 if (p > 0) w3l = gl_y(k, j, l, 3)
883
884 w1r = gr_y(k + 1, j, l, 1)
885 w2r = gr_y(k + 1, j, l, 2)
886 w3r = 0._wp
887 if (p > 0) w3r = gr_y(k + 1, j, l, 3)
888
889 normwl = gl_y(k, j, l, num_dims + 1)
890 normwr = gr_y(k + 1, j, l, num_dims + 1)
891
892 w1 = (w1l + w1r)/2._wp
893 w2 = (w2l + w2r)/2._wp
894 w3 = (w3l + w3r)/2._wp
895 normw = (normwl + normwr)/2._wp
896
897 if (normw > capillary_cutoff) then
898
899# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
900 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
901# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
902 omega(2, 1) = sigma*w1*w2/normw
903# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
904 omega(1, 2) = omega(2, 1)
905# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
906
907# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
908 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
909# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
910
911# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
912 if (p > 0) then
913# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
914 omega(3, 1) = sigma*w1*w3/normw
915# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
916 omega(1, 3) = omega(3, 1)
917# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
918
919# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
920 omega(3, 2) = sigma*w2*w3/normw
921# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
922 omega(2, 3) = omega(3, 2)
923# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
924
925# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
926 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
927# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
928
929# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
930 end if
931# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
932
933
934 do i = 1, num_dims
935
936 flux_src_vf(momxb + i - 1)%sf(j, k, l) = &
937 flux_src_vf(momxb + i - 1)%sf(j, k, l) + omega(2, i)
938
939 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
940 omega(2, i)*vsrc_rsy_vf(k, j, l, i)
941
942 end do
943
944 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
945 sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsy_vf(k, j, l, 2)
946 end if
947 end do
948 end do
949 end do
950
951# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
952
953# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
954#if defined(MFC_OpenACC)
955# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
956!$acc end parallel loop
957# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
958#elif defined(MFC_OpenMP)
959# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
960
961# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
962
963# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
964!$omp end target teams loop
965# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
966#endif
967# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
968
969# 190 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
970
971 elseif (id == 3) then
972# 193 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
973
974
975# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
976
977# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
978#if defined(MFC_OpenACC)
979# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
980!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
981# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
982#elif defined(MFC_OpenMP)
983# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
984
985# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
986
987# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
988
989# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
990!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
991# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
992#endif
993# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
994
995 do l = isz%beg, isz%end
996 do k = isy%beg, isy%end
997 do j = isx%beg, isx%end
998
999 w1l = gl_z(l, k, j, 1)
1000 w2l = gl_z(l, k, j, 2)
1001 w3l = 0._wp
1002 if (p > 0) w3l = gl_z(l, k, j, 3)
1003
1004 w1r = gr_z(l + 1, k, j, 1)
1005 w2r = gr_z(l + 1, k, j, 2)
1006 w3r = 0._wp
1007 if (p > 0) w3r = gr_z(l + 1, k, j, 3)
1008
1009 normwl = gl_z(l, k, j, num_dims + 1)
1010 normwr = gr_z(l + 1, k, j, num_dims + 1)
1011
1012 w1 = (w1l + w1r)/2._wp
1013 w2 = (w2l + w2r)/2._wp
1014 w3 = (w3l + w3r)/2._wp
1015 normw = (normwl + normwr)/2._wp
1016
1017 if (normw > capillary_cutoff) then
1018
1019# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1020 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
1021# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1022 omega(2, 1) = sigma*w1*w2/normw
1023# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1024 omega(1, 2) = omega(2, 1)
1025# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1026
1027# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1028 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
1029# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1030
1031# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1032 if (p > 0) then
1033# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1034 omega(3, 1) = sigma*w1*w3/normw
1035# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1036 omega(1, 3) = omega(3, 1)
1037# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1038
1039# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1040 omega(3, 2) = sigma*w2*w3/normw
1041# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1042 omega(2, 3) = omega(3, 2)
1043# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1044
1045# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1046 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
1047# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1048
1049# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1050 end if
1051# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1052
1053
1054 do i = 1, num_dims
1055
1056 flux_src_vf(momxb + i - 1)%sf(j, k, l) = &
1057 flux_src_vf(momxb + i - 1)%sf(j, k, l) + omega(3, i)
1058
1059 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
1060 omega(3, i)*vsrc_rsz_vf(l, k, j, i)
1061
1062 end do
1063
1064 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
1065 sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsz_vf(l, k, j, 3)
1066 end if
1067 end do
1068 end do
1069 end do
1070
1071# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1072
1073# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1074#if defined(MFC_OpenACC)
1075# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1076!$acc end parallel loop
1077# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1078#elif defined(MFC_OpenMP)
1079# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1080
1081# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1082
1083# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1084!$omp end target teams loop
1085# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1086#endif
1087# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1088
1089# 238 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1090 end if
1091
1092 end subroutine s_compute_capillary_source_flux
1093
1094 !> @brief Computes color-function gradients and their norms, then reconstructs them at cell boundaries.
1095 impure subroutine s_get_capillary(q_prim_vf, bc_type)
1096
1097 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
1098 type(integer_field), dimension(1:num_dims, 1:2), intent(in) :: bc_type
1099
1100 type(int_bounds_info) :: isx, isy, isz
1101 integer :: j, k, l, i
1102
1103 isx%beg = -1; isy%beg = 0; isz%beg = 0
1104
1105 if (m > 0) isy%beg = -1; if (p > 0) isz%beg = -1
1106
1107 isx%end = m; isy%end = n; isz%end = p
1108
1109 ! compute gradient components
1110
1111# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1112
1113# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1114#if defined(MFC_OpenACC)
1115# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1116!$acc parallel loop collapse(3) gang vector default(present)
1117# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1118#elif defined(MFC_OpenMP)
1119# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1120
1121# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1122
1123# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1124
1125# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1126!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1127# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1128#endif
1129# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1130
1131 do l = 0, p
1132 do k = 0, n
1133 do j = 0, m
1134 c_divs(1)%sf(j, k, l) = 1._wp/(x_cc(j + 1) - x_cc(j - 1))* &
1135 (q_prim_vf(c_idx)%sf(j + 1, k, l) - q_prim_vf(c_idx)%sf(j - 1, k, l))
1136 end do
1137 end do
1138 end do
1139
1140# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1141
1142# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1143#if defined(MFC_OpenACC)
1144# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1145!$acc end parallel loop
1146# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1147#elif defined(MFC_OpenMP)
1148# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1149
1150# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1151
1152# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1153!$omp end target teams loop
1154# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1155#endif
1156# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1157
1158
1159
1160# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1161
1162# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1163#if defined(MFC_OpenACC)
1164# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1165!$acc parallel loop collapse(3) gang vector default(present)
1166# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1167#elif defined(MFC_OpenMP)
1168# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1169
1170# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1171
1172# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1173
1174# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1175!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1176# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1177#endif
1178# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1179
1180 do l = 0, p
1181 do k = 0, n
1182 do j = 0, m
1183 c_divs(2)%sf(j, k, l) = 1._wp/(y_cc(k + 1) - y_cc(k - 1))* &
1184 (q_prim_vf(c_idx)%sf(j, k + 1, l) - q_prim_vf(c_idx)%sf(j, k - 1, l))
1185 end do
1186 end do
1187 end do
1188
1189# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1190
1191# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1192#if defined(MFC_OpenACC)
1193# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1194!$acc end parallel loop
1195# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1196#elif defined(MFC_OpenMP)
1197# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1198
1199# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1200
1201# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1202!$omp end target teams loop
1203# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1204#endif
1205# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1206
1207
1208 if (p > 0) then
1209
1210# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1211
1212# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1213#if defined(MFC_OpenACC)
1214# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1215!$acc parallel loop collapse(3) gang vector default(present)
1216# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1217#elif defined(MFC_OpenMP)
1218# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1219
1220# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1221
1222# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1223
1224# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1225!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1226# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1227#endif
1228# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1229
1230 do l = 0, p
1231 do k = 0, n
1232 do j = 0, m
1233 c_divs(3)%sf(j, k, l) = 1._wp/(z_cc(l + 1) - z_cc(l - 1))* &
1234 (q_prim_vf(c_idx)%sf(j, k, l + 1) - q_prim_vf(c_idx)%sf(j, k, l - 1))
1235 end do
1236 end do
1237 end do
1238
1239# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1240
1241# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1242#if defined(MFC_OpenACC)
1243# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1244!$acc end parallel loop
1245# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1246#elif defined(MFC_OpenMP)
1247# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1248
1249# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1250
1251# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1252!$omp end target teams loop
1253# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1254#endif
1255# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1256
1257 end if
1258
1259
1260# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1261
1262# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1263#if defined(MFC_OpenACC)
1264# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1265!$acc parallel loop collapse(3) gang vector default(present)
1266# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1267#elif defined(MFC_OpenMP)
1268# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1269
1270# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1271
1272# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1273
1274# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1275!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1276# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1277#endif
1278# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1279
1280 do l = 0, p
1281 do k = 0, n
1282 do j = 0, m
1283 c_divs(num_dims + 1)%sf(j, k, l) = 0._wp
1284
1285# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1286#if defined(MFC_OpenACC)
1287# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1288!$acc loop seq
1289# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1290#elif defined(MFC_OpenMP)
1291# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1292
1293# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1294#endif
1295 do i = 1, num_dims
1296 c_divs(num_dims + 1)%sf(j, k, l) = &
1297 c_divs(num_dims + 1)%sf(j, k, l) + &
1298 c_divs(i)%sf(j, k, l)**2._wp
1299 end do
1300 !c_divs(num_dims + 1)%sf(j, k, l) = &
1301 !sqrt(c_divs(num_dims + 1)%sf(j, k, l))
1302 c_divs(num_dims + 1)%sf(j, k, l) = &
1303 sqrt(real(c_divs(num_dims + 1)%sf(j, k, l), kind=wp))
1304 end do
1305 end do
1306 end do
1307
1308# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1309
1310# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1311#if defined(MFC_OpenACC)
1312# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1313!$acc end parallel loop
1314# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1315#elif defined(MFC_OpenMP)
1316# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1317
1318# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1319
1320# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1321!$omp end target teams loop
1322# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1323#endif
1324# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1325
1326
1327 call s_populate_capillary_buffers(c_divs, bc_type)
1328
1329 iv%beg = 1; iv%end = num_dims + 1
1330
1331 ! reconstruct gradient components at cell boundaries
1332 do i = 1, num_dims
1334 end do
1335
1336 end subroutine s_get_capillary
1337
1338 !> @brief Reconstructs left and right cell-boundary values of capillary (color-gradient) variables using WENO or MUSCL.
1339 subroutine s_reconstruct_cell_boundary_values_capillary(v_vf, vL_x, vL_y, vL_z, vR_x, vR_y, vR_z, &
1340 norm_dir)
1341 type(scalar_field), dimension(iv%beg:iv%end), intent(in) :: v_vf
1342
1343 real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, iv%beg:), intent(out) :: vL_x, vL_y, vL_z
1344 real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, iv%beg:), intent(out) :: vR_x, vR_y, vR_z
1345 integer, intent(in) :: norm_dir
1346
1347 integer :: recon_dir !< Coordinate direction of the reconstruction
1348
1349 integer :: i, j, k, l
1350
1351# 338 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1352 if (recon_type == weno_type .or. dummy) then
1353 ! Reconstruction in s1-direction
1354
1355 if (norm_dir == 1) then
1356 is1 = idwbuff(1); is2 = idwbuff(2); is3 = idwbuff(3)
1357 recon_dir = 1; is1%beg = is1%beg + weno_polyn
1358 is1%end = is1%end - weno_polyn
1359
1360 elseif (norm_dir == 2) then
1361 is1 = idwbuff(2); is2 = idwbuff(1); is3 = idwbuff(3)
1362 recon_dir = 2; is1%beg = is1%beg + weno_polyn
1363 is1%end = is1%end - weno_polyn
1364
1365 else
1366 is1 = idwbuff(3); is2 = idwbuff(2); is3 = idwbuff(1)
1367 recon_dir = 3; is1%beg = is1%beg + weno_polyn
1368 is1%end = is1%end - weno_polyn
1369
1370 end if
1371
1372
1373# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1374#if defined(MFC_OpenACC)
1375# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1376!$acc update device(is1, is2, is3, iv)
1377# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1378#elif defined(MFC_OpenMP)
1379# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1380!$omp target update to(is1, is2, is3, iv)
1381# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1382#endif
1383 end if
1384# 338 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1385 if (recon_type == muscl_type .or. dummy) then
1386 ! Reconstruction in s1-direction
1387
1388 if (norm_dir == 1) then
1389 is1 = idwbuff(1); is2 = idwbuff(2); is3 = idwbuff(3)
1390 recon_dir = 1; is1%beg = is1%beg + muscl_polyn
1391 is1%end = is1%end - muscl_polyn
1392
1393 elseif (norm_dir == 2) then
1394 is1 = idwbuff(2); is2 = idwbuff(1); is3 = idwbuff(3)
1395 recon_dir = 2; is1%beg = is1%beg + muscl_polyn
1396 is1%end = is1%end - muscl_polyn
1397
1398 else
1399 is1 = idwbuff(3); is2 = idwbuff(2); is3 = idwbuff(1)
1400 recon_dir = 3; is1%beg = is1%beg + muscl_polyn
1401 is1%end = is1%end - muscl_polyn
1402
1403 end if
1404
1405
1406# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1407#if defined(MFC_OpenACC)
1408# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1409!$acc update device(is1, is2, is3, iv)
1410# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1411#elif defined(MFC_OpenMP)
1412# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1413!$omp target update to(is1, is2, is3, iv)
1414# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1415#endif
1416 end if
1417# 361 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1418
1419 if (recon_dir == 1) then
1420
1421# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1422
1423# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1424#if defined(MFC_OpenACC)
1425# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1426!$acc parallel loop collapse(4) gang vector default(present)
1427# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1428#elif defined(MFC_OpenMP)
1429# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1430
1431# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1432
1433# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1434
1435# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1436!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1437# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1438#endif
1439# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1440
1441 do i = iv%beg, iv%end
1442 do l = is3%beg, is3%end
1443 do k = is2%beg, is2%end
1444 do j = is1%beg, is1%end
1445 vl_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
1446 vr_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
1447 end do
1448 end do
1449 end do
1450 end do
1451
1452# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1453
1454# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1455#if defined(MFC_OpenACC)
1456# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1457!$acc end parallel loop
1458# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1459#elif defined(MFC_OpenMP)
1460# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1461
1462# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1463
1464# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1465!$omp end target teams loop
1466# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1467#endif
1468# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1469
1470 else if (recon_dir == 2) then
1471
1472# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1473
1474# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1475#if defined(MFC_OpenACC)
1476# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1477!$acc parallel loop collapse(4) gang vector default(present)
1478# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1479#elif defined(MFC_OpenMP)
1480# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1481
1482# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1483
1484# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1485
1486# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1487!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1488# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1489#endif
1490# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1491
1492 do i = iv%beg, iv%end
1493 do l = is3%beg, is3%end
1494 do k = is2%beg, is2%end
1495 do j = is1%beg, is1%end
1496 vl_y(j, k, l, i) = v_vf(i)%sf(k, j, l)
1497 vr_y(j, k, l, i) = v_vf(i)%sf(k, j, l)
1498 end do
1499 end do
1500 end do
1501 end do
1502
1503# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1504
1505# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1506#if defined(MFC_OpenACC)
1507# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1508!$acc end parallel loop
1509# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1510#elif defined(MFC_OpenMP)
1511# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1512
1513# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1514
1515# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1516!$omp end target teams loop
1517# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1518#endif
1519# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1520
1521 else if (recon_dir == 3) then
1522
1523# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1524
1525# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1526#if defined(MFC_OpenACC)
1527# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1528!$acc parallel loop collapse(4) gang vector default(present)
1529# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1530#elif defined(MFC_OpenMP)
1531# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1532
1533# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1534
1535# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1536
1537# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1538!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1539# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1540#endif
1541# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1542
1543 do i = iv%beg, iv%end
1544 do l = is3%beg, is3%end
1545 do k = is2%beg, is2%end
1546 do j = is1%beg, is1%end
1547 vl_z(j, k, l, i) = v_vf(i)%sf(l, k, j)
1548 vr_z(j, k, l, i) = v_vf(i)%sf(l, k, j)
1549 end do
1550 end do
1551 end do
1552 end do
1553
1554# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1555
1556# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1557#if defined(MFC_OpenACC)
1558# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1559!$acc end parallel loop
1560# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1561#elif defined(MFC_OpenMP)
1562# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1563
1564# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1565
1566# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1567!$omp end target teams loop
1568# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1569#endif
1570# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1571
1572 end if
1573
1575
1576 !> @brief Deallocates the color-gradient divergence and reconstructed boundary arrays for surface tension.
1578 integer :: j
1579
1580 do j = 1, num_dims
1581#ifdef MFC_DEBUG
1582# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1583 block
1584# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1585 use iso_fortran_env, only: output_unit
1586# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1587
1588# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1589 print *, 'm_surface_tension.fpp:410: ', '@:DEALLOCATE(c_divs(j)%sf)'
1590# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1591
1592# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1593 call flush (output_unit)
1594# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1595 end block
1596# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1597#endif
1598# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1599
1600# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1601#if defined(MFC_OpenACC)
1602# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1603!$acc exit data delete(c_divs(j)%sf)
1604# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1605#elif defined(MFC_OpenMP)
1606# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1607!$omp target exit data map(release:c_divs(j)%sf)
1608# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1609#endif
1610# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1611 deallocate (c_divs(j)%sf)
1612 end do
1613
1614#ifdef MFC_DEBUG
1615# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1616 block
1617# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1618 use iso_fortran_env, only: output_unit
1619# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1620
1621# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1622 print *, 'm_surface_tension.fpp:413: ', '@:DEALLOCATE(c_divs)'
1623# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1624
1625# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1626 call flush (output_unit)
1627# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1628 end block
1629# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1630#endif
1631# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1632
1633# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1634#if defined(MFC_OpenACC)
1635# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1636!$acc exit data delete(c_divs)
1637# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1638#elif defined(MFC_OpenMP)
1639# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1640!$omp target exit data map(release:c_divs)
1641# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1642#endif
1643# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1644 deallocate (c_divs)
1645
1646#ifdef MFC_DEBUG
1647# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1648 block
1649# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1650 use iso_fortran_env, only: output_unit
1651# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1652
1653# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1654 print *, 'm_surface_tension.fpp:415: ', '@:DEALLOCATE(gL_x, gR_x)'
1655# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1656
1657# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1658 call flush (output_unit)
1659# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1660 end block
1661# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1662#endif
1663# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1664
1665# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1666#if defined(MFC_OpenACC)
1667# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1668!$acc exit data delete(gL_x, gR_x)
1669# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1670#elif defined(MFC_OpenMP)
1671# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1672!$omp target exit data map(release:gL_x, gR_x)
1673# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1674#endif
1675# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1676 deallocate (gl_x, gr_x)
1677
1678#ifdef MFC_DEBUG
1679# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1680 block
1681# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1682 use iso_fortran_env, only: output_unit
1683# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1684
1685# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1686 print *, 'm_surface_tension.fpp:417: ', '@:DEALLOCATE(gL_y, gR_y)'
1687# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1688
1689# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1690 call flush (output_unit)
1691# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1692 end block
1693# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1694#endif
1695# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1696
1697# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1698#if defined(MFC_OpenACC)
1699# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1700!$acc exit data delete(gL_y, gR_y)
1701# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1702#elif defined(MFC_OpenMP)
1703# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1704!$omp target exit data map(release:gL_y, gR_y)
1705# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1706#endif
1707# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1708 deallocate (gl_y, gr_y)
1709 if (p > 0) then
1710#ifdef MFC_DEBUG
1711# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1712 block
1713# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1714 use iso_fortran_env, only: output_unit
1715# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1716
1717# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1718 print *, 'm_surface_tension.fpp:419: ', '@:DEALLOCATE(gL_z, gR_z)'
1719# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1720
1721# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1722 call flush (output_unit)
1723# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1724 end block
1725# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1726#endif
1727# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1728
1729# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1730#if defined(MFC_OpenACC)
1731# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1732!$acc exit data delete(gL_z, gR_z)
1733# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1734#elif defined(MFC_OpenMP)
1735# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1736!$omp target exit data map(release:gL_z, gR_z)
1737# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1738#endif
1739# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1740 deallocate (gl_z, gr_z)
1741 end if
1742
1744
1745end module m_surface_tension
integer, intent(in) k
integer, intent(in) j
integer, intent(in) l
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
integer num_dims
Number of spatial dimensions.
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.
MUSCL reconstruction with interface sharpening for contact-preserving advection.
Computes capillary source fluxes and color-function gradients for the diffuse-interface surface tensi...
real(wp), dimension(:, :, :, :), allocatable gr_y
type(int_bounds_info) is3
subroutine s_reconstruct_cell_boundary_values_capillary(v_vf, vl_x, vl_y, vl_z, vr_x, vr_y, vr_z, norm_dir)
Reconstructs left and right cell-boundary values of capillary (color-gradient) variables using WENO o...
type(scalar_field), dimension(:), allocatable c_divs
real(wp), dimension(:, :, :, :), allocatable gl_z
impure subroutine, public s_get_capillary(q_prim_vf, bc_type)
Computes color-function gradients and their norms, then reconstructs them at cell boundaries.
real(wp), dimension(:, :, :, :), allocatable gr_z
subroutine, public s_compute_capillary_source_flux(vsrc_rsx_vf, vsrc_rsy_vf, vsrc_rsz_vf, flux_src_vf, id, isx, isy, isz)
Computes the capillary (surface-tension) source flux from reconstructed color-gradient fields.
impure subroutine, public s_initialize_surface_tension_module
real(wp), dimension(:, :, :, :), allocatable gl_x
real(wp), dimension(:, :, :, :), allocatable gr_x
impure subroutine, public s_finalize_surface_tension_module
Deallocates the color-gradient divergence and reconstructed boundary arrays for surface tension.
real(wp), dimension(:, :, :, :), allocatable gl_y
type(int_bounds_info) is2
type(int_bounds_info) is1
type(int_bounds_info) iv
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
WENO/WENO-Z/TENO reconstruction with optional monotonicity-preserving bounds and mapped weights.
Integer bounds for variables.
Derived type annexing a scalar field (SF).