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# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244
245# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246
247# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250
251# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252
253# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256
257# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258
259# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262
263# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
264
265# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268
269# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
270
271# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274
275# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277! New line at end of file is required for FYPP
278# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
279
280# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
281
282! Caution:
283! This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI rank.
284! That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0.
285! For an example see misc/nvidia_uvm/bind.sh.
286# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
287
288# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289
290# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
291
292# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
293
294# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
295
296# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
297
298# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
299
300# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
301! New line at end of file is required for FYPP
302# 7 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp" 2
303# 1 "/home/runner/work/MFC/MFC/src/simulation/include/inline_capillary.fpp" 1
304# 25 "/home/runner/work/MFC/MFC/src/simulation/include/inline_capillary.fpp"
305# 8 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp" 2
306
307!> @brief Computes capillary source fluxes and color-function gradients for the diffuse-interface surface tension model
309
310 use m_derived_types !< definitions of the derived types
311
312 use m_global_parameters !< definitions of the global parameters
313
314 use m_mpi_proxy !< message passing interface (mpi) module proxy
315
317
318 use m_weno
319
320 use m_muscl !< monotonic upstream-centered (muscl)
321 !! schemes for conservation laws
322
323 use m_helper
324
326
327 implicit none
328
329 private; public :: s_initialize_surface_tension_module, &
333
334 !> @name color function gradient components and magnitude
335 !> @{
336 type(scalar_field), allocatable, dimension(:) :: c_divs
337 !> @}
338
339# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
340#if defined(MFC_OpenACC)
341# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
342!$acc declare create(c_divs)
343# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
344#elif defined(MFC_OpenMP)
345# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
346!$omp declare target (c_divs)
347# 40 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
348#endif
349
350 !> @name cell boundary reconstructed gradient components and magnitude
351 !> @{
352 real(wp), allocatable, dimension(:, :, :, :) :: gl_x, gr_x, gl_y, gr_y, gl_z, gr_z
353 !> @}
354
355# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
356#if defined(MFC_OpenACC)
357# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
358!$acc declare create(gL_x, gR_x, gL_y, gR_y, gL_z, gR_z)
359# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
360#elif defined(MFC_OpenMP)
361# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
362!$omp declare target (gL_x, gR_x, gL_y, gR_y, gL_z, gR_z)
363# 46 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
364#endif
365
367
368# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
369#if defined(MFC_OpenACC)
370# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
371!$acc declare create(is1, is2, is3, iv)
372# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
373#elif defined(MFC_OpenMP)
374# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
375!$omp declare target (is1, is2, is3, iv)
376# 49 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
377#endif
378
379contains
380
382
383 integer :: j
384
385#ifdef MFC_DEBUG
386# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
387 block
388# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
389 use iso_fortran_env, only: output_unit
390# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
391
392# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
393 print *, 'm_surface_tension.fpp:57: ', '@:ALLOCATE(c_divs(1:num_dims + 1))'
394# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
395
396# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
397 call flush (output_unit)
398# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
399 end block
400# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
401#endif
402# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
403 allocate (c_divs(1:num_dims + 1))
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
408# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
409#if defined(MFC_OpenACC)
410# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
411!$acc enter data create(c_divs)
412# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
413#elif defined(MFC_OpenMP)
414# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
415!$omp target enter data map(always,alloc:c_divs)
416# 57 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
417#endif
418
419 do j = 1, num_dims + 1
420#ifdef MFC_DEBUG
421# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
422 block
423# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
424 use iso_fortran_env, only: output_unit
425# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
426
427# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
428 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))'
429# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
430
431# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
432 call flush (output_unit)
433# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
434 end block
435# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
436#endif
437# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
438 allocate (c_divs(j)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
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
443# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
444#if defined(MFC_OpenACC)
445# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
446!$acc enter data create(c_divs(j)%sf)
447# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
448#elif defined(MFC_OpenMP)
449# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
450!$omp target enter data map(always,alloc:c_divs(j)%sf)
451# 60 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
452#endif
453#ifdef _CRAYFTN
454# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
455 block
456# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
457
458# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
459#ifdef MFC_DEBUG
460# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
461 block
462# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
463 use iso_fortran_env, only: output_unit
464# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
465
466# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
467 print *, 'm_surface_tension.fpp:61: ', '@:ACC_SETUP_SFs(c_divs(j))'
468# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
469
470# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
471 call flush (output_unit)
472# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
473 end block
474# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
475#endif
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
480# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
481#if defined(MFC_OpenACC)
482# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
483!$acc enter data copyin(c_divs(j))
484# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
485#elif defined(MFC_OpenMP)
486# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
487!$omp target enter data map(to:c_divs(j))
488# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
489#endif
490# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
491 if (associated(c_divs(j)%sf)) then
492# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
493
494# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
495#if defined(MFC_OpenACC)
496# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
497!$acc enter data copyin(c_divs(j)%sf)
498# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
499#elif defined(MFC_OpenMP)
500# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
501!$omp target enter data map(to:c_divs(j)%sf)
502# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
503#endif
504# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
505 end if
506# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
507 end block
508# 61 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
509#endif
510 end do
511
512#ifdef MFC_DEBUG
513# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
514 block
515# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
516 use iso_fortran_env, only: output_unit
517# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
518
519# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
520 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))'
521# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
522
523# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
524 call flush (output_unit)
525# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
526 end block
527# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
528#endif
529# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
530 allocate (gl_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
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
535# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
536#if defined(MFC_OpenACC)
537# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
538!$acc enter data create(gL_x)
539# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
540#elif defined(MFC_OpenMP)
541# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
542!$omp target enter data map(always,alloc:gL_x)
543# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
544#endif
545#ifdef MFC_DEBUG
546# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
547 block
548# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
549 use iso_fortran_env, only: output_unit
550# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
551
552# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
553 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))'
554# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
555
556# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
557 call flush (output_unit)
558# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
559 end block
560# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
561#endif
562# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
563 allocate (gr_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
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
568# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
569#if defined(MFC_OpenACC)
570# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
571!$acc enter data create(gR_x)
572# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
573#elif defined(MFC_OpenMP)
574# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
575!$omp target enter data map(always,alloc:gR_x)
576# 65 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
577#endif
578
579#ifdef MFC_DEBUG
580# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
581 block
582# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
583 use iso_fortran_env, only: output_unit
584# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
585
586# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
587 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))'
588# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
589
590# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
591 call flush (output_unit)
592# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
593 end block
594# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
595#endif
596# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
597 allocate (gl_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
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
602# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
603#if defined(MFC_OpenACC)
604# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
605!$acc enter data create(gL_y)
606# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
607#elif defined(MFC_OpenMP)
608# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
609!$omp target enter data map(always,alloc:gL_y)
610# 67 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
611#endif
612#ifdef MFC_DEBUG
613# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
614 block
615# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
616 use iso_fortran_env, only: output_unit
617# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
618
619# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
620 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))'
621# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
622
623# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
624 call flush (output_unit)
625# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
626 end block
627# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
628#endif
629# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
630 allocate (gr_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
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
635# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
636#if defined(MFC_OpenACC)
637# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
638!$acc enter data create(gR_y)
639# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
640#elif defined(MFC_OpenMP)
641# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
642!$omp target enter data map(always,alloc:gR_y)
643# 68 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
644#endif
645
646 if (p > 0) then
647#ifdef MFC_DEBUG
648# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
649 block
650# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
651 use iso_fortran_env, only: output_unit
652# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
653
654# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
655 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))'
656# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
657
658# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
659 call flush (output_unit)
660# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
661 end block
662# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
663#endif
664# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
665 allocate (gl_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))
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
670# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
671#if defined(MFC_OpenACC)
672# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
673!$acc enter data create(gL_z)
674# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
675#elif defined(MFC_OpenMP)
676# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
677!$omp target enter data map(always,alloc:gL_z)
678# 71 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
679#endif
680#ifdef MFC_DEBUG
681# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
682 block
683# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
684 use iso_fortran_env, only: output_unit
685# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
686
687# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
688 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))'
689# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
690
691# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
692 call flush (output_unit)
693# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
694 end block
695# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
696#endif
697# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
698 allocate (gr_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))
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
703# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
704#if defined(MFC_OpenACC)
705# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
706!$acc enter data create(gR_z)
707# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
708#elif defined(MFC_OpenMP)
709# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
710!$omp target enter data map(always,alloc:gR_z)
711# 72 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
712#endif
713 end if
715
716 !> @brief Computes the capillary (surface-tension) source flux from reconstructed color-gradient fields.
718 vSrc_rsx_vf, vSrc_rsy_vf, vSrc_rsz_vf, &
719 flux_src_vf, &
720 id, isx, isy, isz)
721
722 real(wp), dimension(-1:, 0:, 0:, 1:), intent(in) :: vsrc_rsx_vf
723 real(wp), dimension(-1:, 0:, 0:, 1:), intent(in) :: vsrc_rsy_vf
724 real(wp), dimension(-1:, 0:, 0:, 1:), intent(in) :: vsrc_rsz_vf
725 type(scalar_field), &
726 dimension(sys_size), &
727 intent(inout) :: flux_src_vf
728 integer, intent(in) :: id
729 type(int_bounds_info), intent(in) :: isx, isy, isz
730# 93 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
731 real(wp), dimension(num_dims, num_dims) :: omega
732# 95 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
733 real(wp) :: w1l, w1r, w2l, w2r, w3l, w3r, w1, w2, w3
734 real(wp) :: normwl, normwr, normw
735 integer :: j, k, l, i
736
737 if (id == 1) then
738
739# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
740
741# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
742#if defined(MFC_OpenACC)
743# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
744!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
745# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
746#elif defined(MFC_OpenMP)
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
753# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
754!$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)
755# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
756#endif
757# 100 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
758
759 do l = isz%beg, isz%end
760 do k = isy%beg, isy%end
761 do j = isx%beg, isx%end
762
763 w1l = gl_x(j, k, l, 1)
764 w2l = gl_x(j, k, l, 2)
765 w3l = 0._wp
766 if (p > 0) w3l = gl_x(j, k, l, 3)
767
768 w1r = gr_x(j + 1, k, l, 1)
769 w2r = gr_x(j + 1, k, l, 2)
770 w3r = 0._wp
771 if (p > 0) w3r = gr_x(j + 1, k, l, 3)
772
773 normwl = gl_x(j, k, l, num_dims + 1)
774 normwr = gr_x(j + 1, k, l, num_dims + 1)
775
776 w1 = (w1l + w1r)/2._wp
777 w2 = (w2l + w2r)/2._wp
778 w3 = (w3l + w3r)/2._wp
779 normw = (normwl + normwr)/2._wp
780
781 if (normw > capillary_cutoff) then
782
783# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
784 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
785# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
786 omega(2, 1) = sigma*w1*w2/normw
787# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
788 omega(1, 2) = omega(2, 1)
789# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
790
791# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
792 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
793# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
794
795# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
796 if (p > 0) then
797# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
798 omega(3, 1) = sigma*w1*w3/normw
799# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
800 omega(1, 3) = omega(3, 1)
801# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
802
803# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
804 omega(3, 2) = sigma*w2*w3/normw
805# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
806 omega(2, 3) = omega(3, 2)
807# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
808
809# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
810 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
811# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
812
813# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
814 end if
815# 124 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
816
817
818 do i = 1, num_dims
819
820 flux_src_vf(momxb + i - 1)%sf(j, k, l) = &
821 flux_src_vf(momxb + i - 1)%sf(j, k, l) + omega(1, i)
822
823 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
824 omega(1, i)*vsrc_rsx_vf(j, k, l, i)
825
826 end do
827
828 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
829 sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsx_vf(j, k, l, 1)
830 end if
831 end do
832 end do
833 end do
834
835# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
836
837# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
838#if defined(MFC_OpenACC)
839# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
840!$acc end parallel loop
841# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
842#elif defined(MFC_OpenMP)
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
847# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
848!$omp end target teams loop
849# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
850#endif
851# 142 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
852
853
854 elseif (id == 2) then
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
859# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
860#if defined(MFC_OpenACC)
861# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
862!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
863# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
864#elif defined(MFC_OpenMP)
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
871# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
872!$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)
873# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
874#endif
875# 146 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
876
877 do l = isz%beg, isz%end
878 do k = isy%beg, isy%end
879 do j = isx%beg, isx%end
880
881 w1l = gl_y(k, j, l, 1)
882 w2l = gl_y(k, j, l, 2)
883 w3l = 0._wp
884 if (p > 0) w3l = gl_y(k, j, l, 3)
885
886 w1r = gr_y(k + 1, j, l, 1)
887 w2r = gr_y(k + 1, j, l, 2)
888 w3r = 0._wp
889 if (p > 0) w3r = gr_y(k + 1, j, l, 3)
890
891 normwl = gl_y(k, j, l, num_dims + 1)
892 normwr = gr_y(k + 1, j, l, num_dims + 1)
893
894 w1 = (w1l + w1r)/2._wp
895 w2 = (w2l + w2r)/2._wp
896 w3 = (w3l + w3r)/2._wp
897 normw = (normwl + normwr)/2._wp
898
899 if (normw > capillary_cutoff) then
900
901# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
902 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
903# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
904 omega(2, 1) = sigma*w1*w2/normw
905# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
906 omega(1, 2) = omega(2, 1)
907# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
908
909# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
910 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
911# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
912
913# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
914 if (p > 0) then
915# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
916 omega(3, 1) = sigma*w1*w3/normw
917# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
918 omega(1, 3) = omega(3, 1)
919# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
920
921# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
922 omega(3, 2) = sigma*w2*w3/normw
923# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
924 omega(2, 3) = omega(3, 2)
925# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
926
927# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
928 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
929# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
930
931# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
932 end if
933# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
934
935
936 do i = 1, num_dims
937
938 flux_src_vf(momxb + i - 1)%sf(j, k, l) = &
939 flux_src_vf(momxb + i - 1)%sf(j, k, l) + omega(2, i)
940
941 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
942 omega(2, i)*vsrc_rsy_vf(k, j, l, i)
943
944 end do
945
946 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
947 sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsy_vf(k, j, l, 2)
948 end if
949 end do
950 end do
951 end do
952
953# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
954
955# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
956#if defined(MFC_OpenACC)
957# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
958!$acc end parallel loop
959# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
960#elif defined(MFC_OpenMP)
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
965# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
966!$omp end target teams loop
967# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
968#endif
969# 188 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
970
971# 190 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
972
973 elseif (id == 3) then
974# 193 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
975
976
977# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
978
979# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
980#if defined(MFC_OpenACC)
981# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
982!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
983# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
984#elif defined(MFC_OpenMP)
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
991# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
992!$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)
993# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
994#endif
995# 194 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
996
997 do l = isz%beg, isz%end
998 do k = isy%beg, isy%end
999 do j = isx%beg, isx%end
1000
1001 w1l = gl_z(l, k, j, 1)
1002 w2l = gl_z(l, k, j, 2)
1003 w3l = 0._wp
1004 if (p > 0) w3l = gl_z(l, k, j, 3)
1005
1006 w1r = gr_z(l + 1, k, j, 1)
1007 w2r = gr_z(l + 1, k, j, 2)
1008 w3r = 0._wp
1009 if (p > 0) w3r = gr_z(l + 1, k, j, 3)
1010
1011 normwl = gl_z(l, k, j, num_dims + 1)
1012 normwr = gr_z(l + 1, k, j, num_dims + 1)
1013
1014 w1 = (w1l + w1r)/2._wp
1015 w2 = (w2l + w2r)/2._wp
1016 w3 = (w3l + w3r)/2._wp
1017 normw = (normwl + normwr)/2._wp
1018
1019 if (normw > capillary_cutoff) then
1020
1021# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1022 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
1023# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1024 omega(2, 1) = sigma*w1*w2/normw
1025# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1026 omega(1, 2) = omega(2, 1)
1027# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1028
1029# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1030 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
1031# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1032
1033# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1034 if (p > 0) then
1035# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1036 omega(3, 1) = sigma*w1*w3/normw
1037# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1038 omega(1, 3) = omega(3, 1)
1039# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1040
1041# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1042 omega(3, 2) = sigma*w2*w3/normw
1043# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1044 omega(2, 3) = omega(3, 2)
1045# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1046
1047# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1048 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
1049# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1050
1051# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1052 end if
1053# 218 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1054
1055
1056 do i = 1, num_dims
1057
1058 flux_src_vf(momxb + i - 1)%sf(j, k, l) = &
1059 flux_src_vf(momxb + i - 1)%sf(j, k, l) + omega(3, i)
1060
1061 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
1062 omega(3, i)*vsrc_rsz_vf(l, k, j, i)
1063
1064 end do
1065
1066 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + &
1067 sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsz_vf(l, k, j, 3)
1068 end if
1069 end do
1070 end do
1071 end do
1072
1073# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1074
1075# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1076#if defined(MFC_OpenACC)
1077# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1078!$acc end parallel loop
1079# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1080#elif defined(MFC_OpenMP)
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
1085# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1086!$omp end target teams loop
1087# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1088#endif
1089# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1090
1091# 238 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1092 end if
1093
1094 end subroutine s_compute_capillary_source_flux
1095
1096 !> @brief Computes color-function gradients and their norms, then reconstructs them at cell boundaries.
1097 impure subroutine s_get_capillary(q_prim_vf, bc_type)
1098
1099 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
1100 type(integer_field), dimension(1:num_dims, 1:2), intent(in) :: bc_type
1101
1102 type(int_bounds_info) :: isx, isy, isz
1103 integer :: j, k, l, i
1104
1105 isx%beg = -1; isy%beg = 0; isz%beg = 0
1106
1107 if (m > 0) isy%beg = -1; if (p > 0) isz%beg = -1
1108
1109 isx%end = m; isy%end = n; isz%end = p
1110
1111 ! compute gradient components
1112
1113# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1114
1115# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1116#if defined(MFC_OpenACC)
1117# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1118!$acc parallel loop collapse(3) gang vector default(present)
1119# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1120#elif defined(MFC_OpenMP)
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
1127# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1128!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1129# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1130#endif
1131# 258 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1132
1133 do l = 0, p
1134 do k = 0, n
1135 do j = 0, m
1136 c_divs(1)%sf(j, k, l) = 1._wp/(x_cc(j + 1) - x_cc(j - 1))* &
1137 (q_prim_vf(c_idx)%sf(j + 1, k, l) - q_prim_vf(c_idx)%sf(j - 1, k, l))
1138 end do
1139 end do
1140 end do
1141
1142# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1143
1144# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1145#if defined(MFC_OpenACC)
1146# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1147!$acc end parallel loop
1148# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1149#elif defined(MFC_OpenMP)
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
1154# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1155!$omp end target teams loop
1156# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1157#endif
1158# 267 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1159
1160
1161
1162# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1163
1164# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1165#if defined(MFC_OpenACC)
1166# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1167!$acc parallel loop collapse(3) gang vector default(present)
1168# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1169#elif defined(MFC_OpenMP)
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
1176# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1177!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1178# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1179#endif
1180# 269 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1181
1182 do l = 0, p
1183 do k = 0, n
1184 do j = 0, m
1185 c_divs(2)%sf(j, k, l) = 1._wp/(y_cc(k + 1) - y_cc(k - 1))* &
1186 (q_prim_vf(c_idx)%sf(j, k + 1, l) - q_prim_vf(c_idx)%sf(j, k - 1, l))
1187 end do
1188 end do
1189 end do
1190
1191# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1192
1193# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1194#if defined(MFC_OpenACC)
1195# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1196!$acc end parallel loop
1197# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1198#elif defined(MFC_OpenMP)
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
1203# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1204!$omp end target teams loop
1205# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1206#endif
1207# 278 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1208
1209
1210 if (p > 0) then
1211
1212# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1213
1214# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1215#if defined(MFC_OpenACC)
1216# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1217!$acc parallel loop collapse(3) gang vector default(present)
1218# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1219#elif defined(MFC_OpenMP)
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
1226# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1227!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1228# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1229#endif
1230# 281 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1231
1232 do l = 0, p
1233 do k = 0, n
1234 do j = 0, m
1235 c_divs(3)%sf(j, k, l) = 1._wp/(z_cc(l + 1) - z_cc(l - 1))* &
1236 (q_prim_vf(c_idx)%sf(j, k, l + 1) - q_prim_vf(c_idx)%sf(j, k, l - 1))
1237 end do
1238 end do
1239 end do
1240
1241# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1242
1243# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1244#if defined(MFC_OpenACC)
1245# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1246!$acc end parallel loop
1247# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1248#elif defined(MFC_OpenMP)
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
1253# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1254!$omp end target teams loop
1255# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1256#endif
1257# 290 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1258
1259 end if
1260
1261
1262# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1263
1264# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1265#if defined(MFC_OpenACC)
1266# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1267!$acc parallel loop collapse(3) gang vector default(present)
1268# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1269#elif defined(MFC_OpenMP)
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
1276# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1277!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1278# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1279#endif
1280# 293 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1281
1282 do l = 0, p
1283 do k = 0, n
1284 do j = 0, m
1285 c_divs(num_dims + 1)%sf(j, k, l) = 0._wp
1286
1287# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1288#if defined(MFC_OpenACC)
1289# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1290!$acc loop seq
1291# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1292#elif defined(MFC_OpenMP)
1293# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1294
1295# 298 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1296#endif
1297 do i = 1, num_dims
1298 c_divs(num_dims + 1)%sf(j, k, l) = &
1299 c_divs(num_dims + 1)%sf(j, k, l) + &
1300 c_divs(i)%sf(j, k, l)**2._wp
1301 end do
1302 !c_divs(num_dims + 1)%sf(j, k, l) = &
1303 !sqrt(c_divs(num_dims + 1)%sf(j, k, l))
1304 c_divs(num_dims + 1)%sf(j, k, l) = &
1305 sqrt(real(c_divs(num_dims + 1)%sf(j, k, l), kind=wp))
1306 end do
1307 end do
1308 end do
1309
1310# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1311
1312# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1313#if defined(MFC_OpenACC)
1314# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1315!$acc end parallel loop
1316# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1317#elif defined(MFC_OpenMP)
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
1322# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1323!$omp end target teams loop
1324# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1325#endif
1326# 311 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1327
1328
1329 call s_populate_capillary_buffers(c_divs, bc_type)
1330
1331 iv%beg = 1; iv%end = num_dims + 1
1332
1333 ! reconstruct gradient components at cell boundaries
1334 do i = 1, num_dims
1336 end do
1337
1338 end subroutine s_get_capillary
1339
1340 !> @brief Reconstructs left and right cell-boundary values of capillary (color-gradient) variables using WENO or MUSCL.
1341 subroutine s_reconstruct_cell_boundary_values_capillary(v_vf, vL_x, vL_y, vL_z, vR_x, vR_y, vR_z, &
1342 norm_dir)
1343 type(scalar_field), dimension(iv%beg:iv%end), intent(in) :: v_vf
1344
1345 real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, iv%beg:), intent(out) :: vL_x, vL_y, vL_z
1346 real(wp), dimension(idwbuff(1)%beg:, idwbuff(2)%beg:, idwbuff(3)%beg:, iv%beg:), intent(out) :: vR_x, vR_y, vR_z
1347 integer, intent(in) :: norm_dir
1348
1349 integer :: recon_dir !< Coordinate direction of the reconstruction
1350
1351 integer :: i, j, k, l
1352
1353# 338 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1354 if (recon_type == weno_type .or. dummy) then
1355 ! Reconstruction in s1-direction
1356
1357 if (norm_dir == 1) then
1358 is1 = idwbuff(1); is2 = idwbuff(2); is3 = idwbuff(3)
1359 recon_dir = 1; is1%beg = is1%beg + weno_polyn
1360 is1%end = is1%end - weno_polyn
1361
1362 elseif (norm_dir == 2) then
1363 is1 = idwbuff(2); is2 = idwbuff(1); is3 = idwbuff(3)
1364 recon_dir = 2; is1%beg = is1%beg + weno_polyn
1365 is1%end = is1%end - weno_polyn
1366
1367 else
1368 is1 = idwbuff(3); is2 = idwbuff(2); is3 = idwbuff(1)
1369 recon_dir = 3; is1%beg = is1%beg + weno_polyn
1370 is1%end = is1%end - weno_polyn
1371
1372 end if
1373
1374
1375# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1376#if defined(MFC_OpenACC)
1377# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1378!$acc update device(is1, is2, is3, iv)
1379# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1380#elif defined(MFC_OpenMP)
1381# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1382!$omp target update to(is1, is2, is3, iv)
1383# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1384#endif
1385 end if
1386# 338 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1387 if (recon_type == muscl_type .or. dummy) then
1388 ! Reconstruction in s1-direction
1389
1390 if (norm_dir == 1) then
1391 is1 = idwbuff(1); is2 = idwbuff(2); is3 = idwbuff(3)
1392 recon_dir = 1; is1%beg = is1%beg + muscl_polyn
1393 is1%end = is1%end - muscl_polyn
1394
1395 elseif (norm_dir == 2) then
1396 is1 = idwbuff(2); is2 = idwbuff(1); is3 = idwbuff(3)
1397 recon_dir = 2; is1%beg = is1%beg + muscl_polyn
1398 is1%end = is1%end - muscl_polyn
1399
1400 else
1401 is1 = idwbuff(3); is2 = idwbuff(2); is3 = idwbuff(1)
1402 recon_dir = 3; is1%beg = is1%beg + muscl_polyn
1403 is1%end = is1%end - muscl_polyn
1404
1405 end if
1406
1407
1408# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1409#if defined(MFC_OpenACC)
1410# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1411!$acc update device(is1, is2, is3, iv)
1412# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1413#elif defined(MFC_OpenMP)
1414# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1415!$omp target update to(is1, is2, is3, iv)
1416# 358 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1417#endif
1418 end if
1419# 361 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1420
1421 if (recon_dir == 1) then
1422
1423# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1424
1425# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1426#if defined(MFC_OpenACC)
1427# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1428!$acc parallel loop collapse(4) gang vector default(present)
1429# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1430#elif defined(MFC_OpenMP)
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
1437# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1438!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1439# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1440#endif
1441# 363 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1442
1443 do i = iv%beg, iv%end
1444 do l = is3%beg, is3%end
1445 do k = is2%beg, is2%end
1446 do j = is1%beg, is1%end
1447 vl_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
1448 vr_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
1449 end do
1450 end do
1451 end do
1452 end do
1453
1454# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1455
1456# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1457#if defined(MFC_OpenACC)
1458# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1459!$acc end parallel loop
1460# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1461#elif defined(MFC_OpenMP)
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
1466# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1467!$omp end target teams loop
1468# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1469#endif
1470# 374 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1471
1472 else if (recon_dir == 2) then
1473
1474# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1475
1476# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1477#if defined(MFC_OpenACC)
1478# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1479!$acc parallel loop collapse(4) gang vector default(present)
1480# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1481#elif defined(MFC_OpenMP)
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
1488# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1489!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1490# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1491#endif
1492# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1493
1494 do i = iv%beg, iv%end
1495 do l = is3%beg, is3%end
1496 do k = is2%beg, is2%end
1497 do j = is1%beg, is1%end
1498 vl_y(j, k, l, i) = v_vf(i)%sf(k, j, l)
1499 vr_y(j, k, l, i) = v_vf(i)%sf(k, j, l)
1500 end do
1501 end do
1502 end do
1503 end do
1504
1505# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1506
1507# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1508#if defined(MFC_OpenACC)
1509# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1510!$acc end parallel loop
1511# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1512#elif defined(MFC_OpenMP)
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
1517# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1518!$omp end target teams loop
1519# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1520#endif
1521# 387 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1522
1523 else if (recon_dir == 3) then
1524
1525# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1526
1527# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1528#if defined(MFC_OpenACC)
1529# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1530!$acc parallel loop collapse(4) gang vector default(present)
1531# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1532#elif defined(MFC_OpenMP)
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
1539# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1540!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1541# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1542#endif
1543# 389 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1544
1545 do i = iv%beg, iv%end
1546 do l = is3%beg, is3%end
1547 do k = is2%beg, is2%end
1548 do j = is1%beg, is1%end
1549 vl_z(j, k, l, i) = v_vf(i)%sf(l, k, j)
1550 vr_z(j, k, l, i) = v_vf(i)%sf(l, k, j)
1551 end do
1552 end do
1553 end do
1554 end do
1555
1556# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1557
1558# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1559#if defined(MFC_OpenACC)
1560# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1561!$acc end parallel loop
1562# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1563#elif defined(MFC_OpenMP)
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
1568# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1569!$omp end target teams loop
1570# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1571#endif
1572# 400 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1573
1574 end if
1575
1577
1578 !> @brief Deallocates the color-gradient divergence and reconstructed boundary arrays for surface tension.
1580 integer :: j
1581
1582 do j = 1, num_dims
1583#ifdef MFC_DEBUG
1584# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1585 block
1586# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1587 use iso_fortran_env, only: output_unit
1588# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1589
1590# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1591 print *, 'm_surface_tension.fpp:410: ', '@:DEALLOCATE(c_divs(j)%sf)'
1592# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1593
1594# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1595 call flush (output_unit)
1596# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1597 end block
1598# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1599#endif
1600# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1601
1602# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1603#if defined(MFC_OpenACC)
1604# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1605!$acc exit data delete(c_divs(j)%sf)
1606# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1607#elif defined(MFC_OpenMP)
1608# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1609!$omp target exit data map(release:c_divs(j)%sf)
1610# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1611#endif
1612# 410 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1613 deallocate (c_divs(j)%sf)
1614 end do
1615
1616#ifdef MFC_DEBUG
1617# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1618 block
1619# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1620 use iso_fortran_env, only: output_unit
1621# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1622
1623# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1624 print *, 'm_surface_tension.fpp:413: ', '@:DEALLOCATE(c_divs)'
1625# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1626
1627# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1628 call flush (output_unit)
1629# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1630 end block
1631# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1632#endif
1633# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1634
1635# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1636#if defined(MFC_OpenACC)
1637# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1638!$acc exit data delete(c_divs)
1639# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1640#elif defined(MFC_OpenMP)
1641# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1642!$omp target exit data map(release:c_divs)
1643# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1644#endif
1645# 413 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1646 deallocate (c_divs)
1647
1648#ifdef MFC_DEBUG
1649# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1650 block
1651# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1652 use iso_fortran_env, only: output_unit
1653# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1654
1655# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1656 print *, 'm_surface_tension.fpp:415: ', '@:DEALLOCATE(gL_x, gR_x)'
1657# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1658
1659# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1660 call flush (output_unit)
1661# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1662 end block
1663# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1664#endif
1665# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1666
1667# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1668#if defined(MFC_OpenACC)
1669# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1670!$acc exit data delete(gL_x, gR_x)
1671# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1672#elif defined(MFC_OpenMP)
1673# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1674!$omp target exit data map(release:gL_x, gR_x)
1675# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1676#endif
1677# 415 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1678 deallocate (gl_x, gr_x)
1679
1680#ifdef MFC_DEBUG
1681# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1682 block
1683# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1684 use iso_fortran_env, only: output_unit
1685# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1686
1687# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1688 print *, 'm_surface_tension.fpp:417: ', '@:DEALLOCATE(gL_y, gR_y)'
1689# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1690
1691# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1692 call flush (output_unit)
1693# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1694 end block
1695# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1696#endif
1697# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1698
1699# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1700#if defined(MFC_OpenACC)
1701# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1702!$acc exit data delete(gL_y, gR_y)
1703# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1704#elif defined(MFC_OpenMP)
1705# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1706!$omp target exit data map(release:gL_y, gR_y)
1707# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1708#endif
1709# 417 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1710 deallocate (gl_y, gr_y)
1711 if (p > 0) then
1712#ifdef MFC_DEBUG
1713# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1714 block
1715# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1716 use iso_fortran_env, only: output_unit
1717# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1718
1719# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1720 print *, 'm_surface_tension.fpp:419: ', '@:DEALLOCATE(gL_z, gR_z)'
1721# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1722
1723# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1724 call flush (output_unit)
1725# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1726 end block
1727# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1728#endif
1729# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1730
1731# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1732#if defined(MFC_OpenACC)
1733# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1734!$acc exit data delete(gL_z, gR_z)
1735# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1736#elif defined(MFC_OpenMP)
1737# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1738!$omp target exit data map(release:gL_z, gR_z)
1739# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1740#endif
1741# 419 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1742 deallocate (gl_z, gr_z)
1743 end if
1744
1746
1747end 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).