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# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118
119# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120
121# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122
123# 244 "/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# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127
128# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129
130# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131
132# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133
134# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135
136# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137
138# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139
140# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141
142# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143
144# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145
146# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147
148# 377 "/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# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218
219# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220
221# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222
223# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224
225# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226
227# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228
229# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230
231# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232
233# 311 "/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! GPU parallel region (scalar reductions, maxval/minval)
238# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239
240! GPU parallel loop over threads (most common GPU macro)
241# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242
243! Required closing for GPU_PARALLEL_LOOP
244# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245
246! Mark routine for device compilation
247# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248
249! Declare device-resident data
250# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251
252! Inner loop within a GPU parallel region
253# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254
255! Scoped GPU data region
256# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257
258! Host code with device pointers (for MPI with GPU buffers)
259# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260
261! Allocate device memory (unscoped)
262# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263
264! Free device memory
265# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266
267! Atomic operation on device
268# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269
270! End atomic capture block
271# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272
273! Copy data between host and device
274# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275
276! Synchronization barrier
277# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278
279! Import GPU library module (openacc or omp_lib)
280# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281
282! Emit code only for AMD compiler
283# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284
285! Emit code for non-Cray compilers
286# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287
288! Emit code only for Cray compiler
289# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290
291! Emit code for non-NVIDIA compilers
292# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293
294# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296! New line at end of file is required for FYPP
297# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
298
299# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
300
301! Caution: This macro requires the use of a binding script to set CUDA_VISIBLE_DEVICES, such that we have one GPU device per MPI
302! rank. That's because for both cudaMemAdvise (preferred location) and cudaMemPrefetchAsync we use location = device_id = 0. For an
303! example see misc/nvidia_uvm/bind.sh. NVIDIA unified memory page placement hint
304# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305
306! Allocate and create GPU device memory
307# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308
309! Free GPU device memory and deallocate
310# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311
312! Cray-specific GPU pointer setup for vector fields
313# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314
315! Cray-specific GPU pointer setup for scalar fields
316# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317
318! Cray-specific GPU pointer setup for acoustic source spatials
319# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320
321# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
322
323# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
324! New line at end of file is required for FYPP
325# 7 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp" 2
326# 1 "/home/runner/work/MFC/MFC/src/simulation/include/inline_capillary.fpp" 1
327# 22 "/home/runner/work/MFC/MFC/src/simulation/include/inline_capillary.fpp"
328# 8 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp" 2
329
330!> @brief Computes capillary source fluxes and color-function gradients for the diffuse-interface surface tension model
332
335 use m_mpi_proxy
337 use m_weno
338 use m_muscl
339 use m_helper
341
342 implicit none
343
346
347 !> @name color function gradient components and magnitude
348 !> @{
349 type(scalar_field), allocatable, dimension(:) :: c_divs
350 !> @}
351
352# 30 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
353#if defined(MFC_OpenACC)
354# 30 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
355!$acc declare create(c_divs)
356# 30 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
357#elif defined(MFC_OpenMP)
358# 30 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
359!$omp declare target (c_divs)
360# 30 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
361#endif
362
363 !> @name cell boundary reconstructed gradient components and magnitude
364 !> @{
365 real(wp), allocatable, dimension(:,:,:,:) :: gl_x, gr_x, gl_y, gr_y, gl_z, gr_z
366 !> @}
367
368# 36 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
369#if defined(MFC_OpenACC)
370# 36 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
371!$acc declare create(gL_x, gR_x, gL_y, gR_y, gL_z, gR_z)
372# 36 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
373#elif defined(MFC_OpenMP)
374# 36 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
375!$omp declare target (gL_x, gR_x, gL_y, gR_y, gL_z, gR_z)
376# 36 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
377#endif
378
380
381# 39 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
382#if defined(MFC_OpenACC)
383# 39 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
384!$acc declare create(is1, is2, is3, iv)
385# 39 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
386#elif defined(MFC_OpenMP)
387# 39 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
388!$omp declare target (is1, is2, is3, iv)
389# 39 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
390#endif
391
392contains
393
394 !> Allocate and initialize surface tension module arrays
396
397 integer :: j
398
399#ifdef MFC_DEBUG
400# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
401 block
402# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
403 use iso_fortran_env, only: output_unit
404# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
405
406# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
407 print *, 'm_surface_tension.fpp:48: ', '@:ALLOCATE(c_divs(1:num_dims + 1))'
408# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
409
410# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
411 call flush (output_unit)
412# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
413 end block
414# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
415#endif
416# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
417 allocate (c_divs(1:num_dims + 1))
418# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
419
420# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
421
422# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
423#if defined(MFC_OpenACC)
424# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
425!$acc enter data create(c_divs)
426# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
427#elif defined(MFC_OpenMP)
428# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
429!$omp target enter data map(always,alloc:c_divs)
430# 48 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
431#endif
432
433 do j = 1, num_dims + 1
434#ifdef MFC_DEBUG
435# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
436 block
437# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
438 use iso_fortran_env, only: output_unit
439# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
440
441# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
442 print *, 'm_surface_tension.fpp:51: ', '@:ALLOCATE(c_divs(j)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))'
443# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
444
445# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
446 call flush (output_unit)
447# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
448 end block
449# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
450#endif
451# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
452 allocate (c_divs(j)%sf(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end))
453# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
454
455# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
456
457# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
458#if defined(MFC_OpenACC)
459# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
460!$acc enter data create(c_divs(j)%sf)
461# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
462#elif defined(MFC_OpenMP)
463# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
464!$omp target enter data map(always,alloc:c_divs(j)%sf)
465# 51 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
466#endif
467#ifdef _CRAYFTN
468# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
469 block
470# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
471#ifdef MFC_DEBUG
472# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
473 block
474# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
475 use iso_fortran_env, only: output_unit
476# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
477
478# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
479 print *, 'm_surface_tension.fpp:52: ', '@:ACC_SETUP_SFs(c_divs(j))'
480# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
481
482# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
483 call flush (output_unit)
484# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
485 end block
486# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
487#endif
488# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
489
490# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
491
492# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
493#if defined(MFC_OpenACC)
494# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
495!$acc enter data copyin(c_divs(j))
496# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
497#elif defined(MFC_OpenMP)
498# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
499!$omp target enter data map(to:c_divs(j))
500# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
501#endif
502# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
503 if (associated(c_divs(j)%sf)) then
504# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
505
506# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
507#if defined(MFC_OpenACC)
508# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
509!$acc enter data copyin(c_divs(j)%sf)
510# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
511#elif defined(MFC_OpenMP)
512# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
513!$omp target enter data map(to:c_divs(j)%sf)
514# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
515#endif
516# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
517 end if
518# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
519 end block
520# 52 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
521#endif
522 end do
523
524#ifdef MFC_DEBUG
525# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
526 block
527# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
528 use iso_fortran_env, only: output_unit
529# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
530
531# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
532 print *, 'm_surface_tension.fpp:55: ', '@:ALLOCATE(gL_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))'
533# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
534
535# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
536 call flush (output_unit)
537# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
538 end block
539# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
540#endif
541# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
542 allocate (gl_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
543# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
544
545# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
546
547# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
548#if defined(MFC_OpenACC)
549# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
550!$acc enter data create(gL_x)
551# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
552#elif defined(MFC_OpenMP)
553# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
554!$omp target enter data map(always,alloc:gL_x)
555# 55 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
556#endif
557#ifdef MFC_DEBUG
558# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
559 block
560# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
561 use iso_fortran_env, only: output_unit
562# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
563
564# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
565 print *, 'm_surface_tension.fpp:56: ', '@:ALLOCATE(gR_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))'
566# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
567
568# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
569 call flush (output_unit)
570# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
571 end block
572# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
573#endif
574# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
575 allocate (gr_x(idwbuff(1)%beg:idwbuff(1)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
576# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
577
578# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
579
580# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
581#if defined(MFC_OpenACC)
582# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
583!$acc enter data create(gR_x)
584# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
585#elif defined(MFC_OpenMP)
586# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
587!$omp target enter data map(always,alloc:gR_x)
588# 56 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
589#endif
590
591#ifdef MFC_DEBUG
592# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
593 block
594# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
595 use iso_fortran_env, only: output_unit
596# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
597
598# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
599 print *, 'm_surface_tension.fpp:58: ', '@:ALLOCATE(gL_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))'
600# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
601
602# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
603 call flush (output_unit)
604# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
605 end block
606# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
607#endif
608# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
609 allocate (gl_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
610# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
611
612# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
613
614# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
615#if defined(MFC_OpenACC)
616# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
617!$acc enter data create(gL_y)
618# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
619#elif defined(MFC_OpenMP)
620# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
621!$omp target enter data map(always,alloc:gL_y)
622# 58 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
623#endif
624#ifdef MFC_DEBUG
625# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
626 block
627# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
628 use iso_fortran_env, only: output_unit
629# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
630
631# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
632 print *, 'm_surface_tension.fpp:59: ', '@:ALLOCATE(gR_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))'
633# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
634
635# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
636 call flush (output_unit)
637# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
638 end block
639# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
640#endif
641# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
642 allocate (gr_y(idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, idwbuff(3)%beg:idwbuff(3)%end, num_dims + 1))
643# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
644
645# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
646
647# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
648#if defined(MFC_OpenACC)
649# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
650!$acc enter data create(gR_y)
651# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
652#elif defined(MFC_OpenMP)
653# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
654!$omp target enter data map(always,alloc:gR_y)
655# 59 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
656#endif
657
658 if (p > 0) then
659#ifdef MFC_DEBUG
660# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
661 block
662# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
663 use iso_fortran_env, only: output_unit
664# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
665
666# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
667 print *, 'm_surface_tension.fpp:62: ', '@:ALLOCATE(gL_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))'
668# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
669
670# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
671 call flush (output_unit)
672# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
673 end block
674# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
675#endif
676# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
677 allocate (gl_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))
678# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
679
680# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
681
682# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
683#if defined(MFC_OpenACC)
684# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
685!$acc enter data create(gL_z)
686# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
687#elif defined(MFC_OpenMP)
688# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
689!$omp target enter data map(always,alloc:gL_z)
690# 62 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
691#endif
692# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
693#ifdef MFC_DEBUG
694# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
695 block
696# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
697 use iso_fortran_env, only: output_unit
698# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
699
700# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
701 print *, 'm_surface_tension.fpp:64: ', '@:ALLOCATE(gR_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))'
702# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
703
704# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
705 call flush (output_unit)
706# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
707 end block
708# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
709#endif
710# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
711 allocate (gr_z(idwbuff(3)%beg:idwbuff(3)%end, idwbuff(2)%beg:idwbuff(2)%end, idwbuff(1)%beg:idwbuff(1)%end, num_dims + 1))
712# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
713
714# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
715
716# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
717#if defined(MFC_OpenACC)
718# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
719!$acc enter data create(gR_z)
720# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
721#elif defined(MFC_OpenMP)
722# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
723!$omp target enter data map(always,alloc:gR_z)
724# 64 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
725#endif
726# 66 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
727 end if
728
730
731 !> Compute the capillary source flux from reconstructed color-gradient fields
732 subroutine s_compute_capillary_source_flux(vSrc_rsx_vf, vSrc_rsy_vf, vSrc_rsz_vf, flux_src_vf, id, isx, isy, isz)
733
734 real(wp), dimension(-1:,0:,0:,1:), intent(in) :: vsrc_rsx_vf
735 real(wp), dimension(-1:,0:,0:,1:), intent(in) :: vsrc_rsy_vf
736 real(wp), dimension(-1:,0:,0:,1:), intent(in) :: vsrc_rsz_vf
737 type(scalar_field), dimension(sys_size), intent(inout) :: flux_src_vf
738 integer, intent(in) :: id
739 type(int_bounds_info), intent(in) :: isx, isy, isz
740
741# 83 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
742 real(wp), dimension(num_dims, num_dims) :: omega
743# 85 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
744 real(wp) :: w1l, w1r, w2l, w2r, w3l, w3r, w1, w2, w3
745 real(wp) :: normwl, normwr, normw
746 integer :: j, k, l, i
747
748 if (id == 1) then
749
750# 90 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
751
752# 90 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
753#if defined(MFC_OpenACC)
754# 90 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
755!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
756# 90 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
757#elif defined(MFC_OpenMP)
758# 90 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
759
760# 90 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
761
762# 90 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
763
764# 90 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
765!$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)
766# 90 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
767#endif
768 do l = isz%beg, isz%end
769 do k = isy%beg, isy%end
770 do j = isx%beg, isx%end
771 w1l = gl_x(j, k, l, 1)
772 w2l = gl_x(j, k, l, 2)
773 w3l = 0._wp
774 if (p > 0) w3l = gl_x(j, k, l, 3)
775
776 w1r = gr_x(j + 1, k, l, 1)
777 w2r = gr_x(j + 1, k, l, 2)
778 w3r = 0._wp
779 if (p > 0) w3r = gr_x(j + 1, k, l, 3)
780
781 normwl = gl_x(j, k, l, num_dims + 1)
782 normwr = gr_x(j + 1, k, l, num_dims + 1)
783
784 w1 = (w1l + w1r)/2._wp
785 w2 = (w2l + w2r)/2._wp
786 w3 = (w3l + w3r)/2._wp
787 normw = (normwl + normwr)/2._wp
788
789 if (normw > capillary_cutoff) then
790 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
791# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
792 omega(2, 1) = sigma*w1*w2/normw
793# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
794 omega(1, 2) = omega(2, 1)
795# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
796
797# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
798 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
799# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
800
801# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
802 if (p > 0) then
803# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
804 omega(3, 1) = sigma*w1*w3/normw
805# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
806 omega(1, 3) = omega(3, 1)
807# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
808
809# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
810 omega(3, 2) = sigma*w2*w3/normw
811# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
812 omega(2, 3) = omega(3, 2)
813# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
814
815# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
816 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
817# 113 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
818 end if
819
820 do i = 1, num_dims
821 flux_src_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, &
822 & l) + omega(1, i)
823
824 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, l) + omega(1, &
825 & i)*vsrc_rsx_vf(j, k, l, i)
826 end do
827
828 ! Continuum surface force capillary stress, Schmidmayer et al. JCP (2017)
829 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
830 & l) + sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsx_vf(j, k, l, 1)
831 end if
832 end do
833 end do
834 end do
835
836# 130 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
837#if defined(MFC_OpenACC)
838# 130 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
839!$acc end parallel loop
840# 130 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
841#elif defined(MFC_OpenMP)
842# 130 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
843
844# 130 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
845!$omp end target teams loop
846# 130 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
847#endif
848 else if (id == 2) then
849# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
850
851# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
852
853# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
854#if defined(MFC_OpenACC)
855# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
856!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
857# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
858#elif defined(MFC_OpenMP)
859# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
860
861# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
862
863# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
864
865# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
866!$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)
867# 133 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
868#endif
869 do l = isz%beg, isz%end
870 do k = isy%beg, isy%end
871 do j = isx%beg, isx%end
872 w1l = gl_y(k, j, l, 1)
873 w2l = gl_y(k, j, l, 2)
874 w3l = 0._wp
875 if (p > 0) w3l = gl_y(k, j, l, 3)
876
877 w1r = gr_y(k + 1, j, l, 1)
878 w2r = gr_y(k + 1, j, l, 2)
879 w3r = 0._wp
880 if (p > 0) w3r = gr_y(k + 1, j, l, 3)
881
882 normwl = gl_y(k, j, l, num_dims + 1)
883 normwr = gr_y(k + 1, j, l, num_dims + 1)
884
885 w1 = (w1l + w1r)/2._wp
886 w2 = (w2l + w2r)/2._wp
887 w3 = (w3l + w3r)/2._wp
888 normw = (normwl + normwr)/2._wp
889
890 if (normw > capillary_cutoff) then
891 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
892# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
893 omega(2, 1) = sigma*w1*w2/normw
894# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
895 omega(1, 2) = omega(2, 1)
896# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
897
898# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
899 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
900# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
901
902# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
903 if (p > 0) then
904# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
905 omega(3, 1) = sigma*w1*w3/normw
906# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
907 omega(1, 3) = omega(3, 1)
908# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
909
910# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
911 omega(3, 2) = sigma*w2*w3/normw
912# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
913 omega(2, 3) = omega(3, 2)
914# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
915
916# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
917 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
918# 156 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
919 end if
920
921 do i = 1, num_dims
922 flux_src_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + i - 1)%sf(j, &
923 & k, l) + omega(2, i)
924
925 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, l) + omega(2, &
926 & i)*vsrc_rsy_vf(k, j, l, i)
927 end do
928
929 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
930 & l) + sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsy_vf(k, j, l, 2)
931 end if
932 end do
933 end do
934 end do
935
936# 172 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
937#if defined(MFC_OpenACC)
938# 172 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
939!$acc end parallel loop
940# 172 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
941#elif defined(MFC_OpenMP)
942# 172 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
943
944# 172 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
945!$omp end target teams loop
946# 172 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
947#endif
948# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
949 else if (id == 3) then
950# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
951
952# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
953
954# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
955#if defined(MFC_OpenACC)
956# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
957!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
958# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
959#elif defined(MFC_OpenMP)
960# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
961
962# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
963
964# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
965
966# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
967!$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)
968# 176 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
969#endif
970 do l = isz%beg, isz%end
971 do k = isy%beg, isy%end
972 do j = isx%beg, isx%end
973 w1l = gl_z(l, k, j, 1)
974 w2l = gl_z(l, k, j, 2)
975 w3l = 0._wp
976 if (p > 0) w3l = gl_z(l, k, j, 3)
977
978 w1r = gr_z(l + 1, k, j, 1)
979 w2r = gr_z(l + 1, k, j, 2)
980 w3r = 0._wp
981 if (p > 0) w3r = gr_z(l + 1, k, j, 3)
982
983 normwl = gl_z(l, k, j, num_dims + 1)
984 normwr = gr_z(l + 1, k, j, num_dims + 1)
985
986 w1 = (w1l + w1r)/2._wp
987 w2 = (w2l + w2r)/2._wp
988 w3 = (w3l + w3r)/2._wp
989 normw = (normwl + normwr)/2._wp
990
991 if (normw > capillary_cutoff) then
992 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
993# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
994 omega(2, 1) = sigma*w1*w2/normw
995# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
996 omega(1, 2) = omega(2, 1)
997# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
998
999# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1000 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
1001# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1002
1003# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1004 if (p > 0) then
1005# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1006 omega(3, 1) = sigma*w1*w3/normw
1007# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1008 omega(1, 3) = omega(3, 1)
1009# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1010
1011# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1012 omega(3, 2) = sigma*w2*w3/normw
1013# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1014 omega(2, 3) = omega(3, 2)
1015# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1016
1017# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1018 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
1019# 199 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1020 end if
1021
1022 do i = 1, num_dims
1023 flux_src_vf(eqn_idx%mom%beg + i - 1)%sf(j, k, l) = flux_src_vf(eqn_idx%mom%beg + i - 1)%sf(j, &
1024 & k, l) + omega(3, i)
1025
1026 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, l) + omega(3, &
1027 & i)*vsrc_rsz_vf(l, k, j, i)
1028 end do
1029
1030 flux_src_vf(eqn_idx%E)%sf(j, k, l) = flux_src_vf(eqn_idx%E)%sf(j, k, &
1031 & l) + sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsz_vf(l, k, j, 3)
1032 end if
1033 end do
1034 end do
1035 end do
1036
1037# 215 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1038#if defined(MFC_OpenACC)
1039# 215 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1040!$acc end parallel loop
1041# 215 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1042#elif defined(MFC_OpenMP)
1043# 215 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1044
1045# 215 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1046!$omp end target teams loop
1047# 215 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1048#endif
1049# 217 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1050 end if
1051
1052 end subroutine s_compute_capillary_source_flux
1053
1054 !> Compute color-function gradients and reconstruct them at cell boundaries
1055 impure subroutine s_get_capillary(q_prim_vf, bc_type)
1056
1057 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
1058 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
1059 type(int_bounds_info) :: isx, isy, isz
1060 integer :: j, k, l, i
1061
1062 isx%beg = -1; isy%beg = 0; isz%beg = 0
1063
1064 if (m > 0) isy%beg = -1; if (p > 0) isz%beg = -1
1065
1066 isx%end = m; isy%end = n; isz%end = p
1067
1068 ! compute gradient components
1069
1070# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1071
1072# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1073#if defined(MFC_OpenACC)
1074# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1075!$acc parallel loop collapse(3) gang vector default(present)
1076# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1077#elif defined(MFC_OpenMP)
1078# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1079
1080# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1081
1082# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1083
1084# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1085!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1086# 236 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1087#endif
1088 do l = 0, p
1089 do k = 0, n
1090 do j = 0, m
1091 c_divs(1)%sf(j, k, l) = 1._wp/(x_cc(j + 1) - x_cc(j - 1))*(q_prim_vf(eqn_idx%c)%sf(j + 1, k, &
1092 & l) - q_prim_vf(eqn_idx%c)%sf(j - 1, k, l))
1093 end do
1094 end do
1095 end do
1096
1097# 245 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1098#if defined(MFC_OpenACC)
1099# 245 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1100!$acc end parallel loop
1101# 245 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1102#elif defined(MFC_OpenMP)
1103# 245 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1104
1105# 245 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1106!$omp end target teams loop
1107# 245 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1108#endif
1109
1110
1111# 247 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1112
1113# 247 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1114#if defined(MFC_OpenACC)
1115# 247 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1116!$acc parallel loop collapse(3) gang vector default(present)
1117# 247 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1118#elif defined(MFC_OpenMP)
1119# 247 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1120
1121# 247 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1122
1123# 247 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1124
1125# 247 "/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# 247 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1128#endif
1129 do l = 0, p
1130 do k = 0, n
1131 do j = 0, m
1132 c_divs(2)%sf(j, k, l) = 1._wp/(y_cc(k + 1) - y_cc(k - 1))*(q_prim_vf(eqn_idx%c)%sf(j, k + 1, &
1133 & l) - q_prim_vf(eqn_idx%c)%sf(j, k - 1, l))
1134 end do
1135 end do
1136 end do
1137
1138# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1139#if defined(MFC_OpenACC)
1140# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1141!$acc end parallel loop
1142# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1143#elif defined(MFC_OpenMP)
1144# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1145
1146# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1147!$omp end target teams loop
1148# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1149#endif
1150
1151 if (p > 0) then
1152
1153# 259 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1154
1155# 259 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1156#if defined(MFC_OpenACC)
1157# 259 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1158!$acc parallel loop collapse(3) gang vector default(present)
1159# 259 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1160#elif defined(MFC_OpenMP)
1161# 259 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1162
1163# 259 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1164
1165# 259 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1166
1167# 259 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1168!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1169# 259 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1170#endif
1171 do l = 0, p
1172 do k = 0, n
1173 do j = 0, m
1174 c_divs(3)%sf(j, k, l) = 1._wp/(z_cc(l + 1) - z_cc(l - 1))*(q_prim_vf(eqn_idx%c)%sf(j, k, &
1175 & l + 1) - q_prim_vf(eqn_idx%c)%sf(j, k, l - 1))
1176 end do
1177 end do
1178 end do
1179
1180# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1181#if defined(MFC_OpenACC)
1182# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1183!$acc end parallel loop
1184# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1185#elif defined(MFC_OpenMP)
1186# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1187
1188# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1189!$omp end target teams loop
1190# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1191#endif
1192 end if
1193
1194
1195# 271 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1196
1197# 271 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1198#if defined(MFC_OpenACC)
1199# 271 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1200!$acc parallel loop collapse(3) gang vector default(present)
1201# 271 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1202#elif defined(MFC_OpenMP)
1203# 271 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1204
1205# 271 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1206
1207# 271 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1208
1209# 271 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1210!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1211# 271 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1212#endif
1213 do l = 0, p
1214 do k = 0, n
1215 do j = 0, m
1216 c_divs(num_dims + 1)%sf(j, k, l) = 0._wp
1217
1218# 276 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1219#if defined(MFC_OpenACC)
1220# 276 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1221!$acc loop seq
1222# 276 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1223#elif defined(MFC_OpenMP)
1224# 276 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1225
1226# 276 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1227#endif
1228 do i = 1, num_dims
1229 c_divs(num_dims + 1)%sf(j, k, l) = c_divs(num_dims + 1)%sf(j, k, l) + c_divs(i)%sf(j, k, l)**2._wp
1230 end do
1231
1232 c_divs(num_dims + 1)%sf(j, k, l) = sqrt(real(c_divs(num_dims + 1)%sf(j, k, l), kind=wp))
1233 end do
1234 end do
1235 end do
1236
1237# 285 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1238#if defined(MFC_OpenACC)
1239# 285 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1240!$acc end parallel loop
1241# 285 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1242#elif defined(MFC_OpenMP)
1243# 285 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1244
1245# 285 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1246!$omp end target teams loop
1247# 285 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1248#endif
1249
1250 call s_populate_capillary_buffers(c_divs, bc_type, bc_xyz_info(bc_x, bc_y, bc_z))
1251
1252 iv%beg = 1; iv%end = num_dims + 1
1253
1254 ! reconstruct gradient components at cell boundaries
1255 do i = 1, num_dims
1257 end do
1258
1259 end subroutine s_get_capillary
1260
1261 !> Reconstruct left and right cell-boundary values of capillary variables
1262 subroutine s_reconstruct_cell_boundary_values_capillary(v_vf, vL_x, vL_y, vL_z, vR_x, vR_y, vR_z, norm_dir)
1263
1264 type(scalar_field), dimension(iv%beg:iv%end), intent(in) :: v_vf
1265 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,iv%beg:), intent(out) :: vL_x, vL_y, vL_z
1266 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,iv%beg:), intent(out) :: vR_x, vR_y, vR_z
1267 integer, intent(in) :: norm_dir
1268 integer :: recon_dir !< Coordinate direction of the reconstruction
1269 integer :: i, j, k, l
1270
1271# 309 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1272 if (recon_type == weno_type .or. dummy) then
1273 ! Reconstruction in s1-direction
1274
1275 if (norm_dir == 1) then
1276 is1 = idwbuff(1); is2 = idwbuff(2); is3 = idwbuff(3)
1277 recon_dir = 1; is1%beg = is1%beg + weno_polyn
1278 is1%end = is1%end - weno_polyn
1279 else if (norm_dir == 2) then
1280 is1 = idwbuff(2); is2 = idwbuff(1); is3 = idwbuff(3)
1281 recon_dir = 2; is1%beg = is1%beg + weno_polyn
1282 is1%end = is1%end - weno_polyn
1283 else
1284 is1 = idwbuff(3); is2 = idwbuff(2); is3 = idwbuff(1)
1285 recon_dir = 3; is1%beg = is1%beg + weno_polyn
1286 is1%end = is1%end - weno_polyn
1287 end if
1288
1289
1290# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1291#if defined(MFC_OpenACC)
1292# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1293!$acc update device(is1, is2, is3, iv)
1294# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1295#elif defined(MFC_OpenMP)
1296# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1297!$omp target update to(is1, is2, is3, iv)
1298# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1299#endif
1300 end if
1301# 309 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1302 if (recon_type == muscl_type .or. dummy) then
1303 ! Reconstruction in s1-direction
1304
1305 if (norm_dir == 1) then
1306 is1 = idwbuff(1); is2 = idwbuff(2); is3 = idwbuff(3)
1307 recon_dir = 1; is1%beg = is1%beg + muscl_polyn
1308 is1%end = is1%end - muscl_polyn
1309 else if (norm_dir == 2) then
1310 is1 = idwbuff(2); is2 = idwbuff(1); is3 = idwbuff(3)
1311 recon_dir = 2; is1%beg = is1%beg + muscl_polyn
1312 is1%end = is1%end - muscl_polyn
1313 else
1314 is1 = idwbuff(3); is2 = idwbuff(2); is3 = idwbuff(1)
1315 recon_dir = 3; is1%beg = is1%beg + muscl_polyn
1316 is1%end = is1%end - muscl_polyn
1317 end if
1318
1319
1320# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1321#if defined(MFC_OpenACC)
1322# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1323!$acc update device(is1, is2, is3, iv)
1324# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1325#elif defined(MFC_OpenMP)
1326# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1327!$omp target update to(is1, is2, is3, iv)
1328# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1329#endif
1330 end if
1331# 329 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1332
1333 if (recon_dir == 1) then
1334
1335# 331 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1336
1337# 331 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1338#if defined(MFC_OpenACC)
1339# 331 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1340!$acc parallel loop collapse(4) gang vector default(present)
1341# 331 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1342#elif defined(MFC_OpenMP)
1343# 331 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1344
1345# 331 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1346
1347# 331 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1348
1349# 331 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1350!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1351# 331 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1352#endif
1353 do i = iv%beg, iv%end
1354 do l = is3%beg, is3%end
1355 do k = is2%beg, is2%end
1356 do j = is1%beg, is1%end
1357 vl_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
1358 vr_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
1359 end do
1360 end do
1361 end do
1362 end do
1363
1364# 342 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1365#if defined(MFC_OpenACC)
1366# 342 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1367!$acc end parallel loop
1368# 342 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1369#elif defined(MFC_OpenMP)
1370# 342 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1371
1372# 342 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1373!$omp end target teams loop
1374# 342 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1375#endif
1376 else if (recon_dir == 2) then
1377
1378# 344 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1379
1380# 344 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1381#if defined(MFC_OpenACC)
1382# 344 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1383!$acc parallel loop collapse(4) gang vector default(present)
1384# 344 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1385#elif defined(MFC_OpenMP)
1386# 344 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1387
1388# 344 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1389
1390# 344 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1391
1392# 344 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1393!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1394# 344 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1395#endif
1396 do i = iv%beg, iv%end
1397 do l = is3%beg, is3%end
1398 do k = is2%beg, is2%end
1399 do j = is1%beg, is1%end
1400 vl_y(j, k, l, i) = v_vf(i)%sf(k, j, l)
1401 vr_y(j, k, l, i) = v_vf(i)%sf(k, j, l)
1402 end do
1403 end do
1404 end do
1405 end do
1406
1407# 355 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1408#if defined(MFC_OpenACC)
1409# 355 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1410!$acc end parallel loop
1411# 355 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1412#elif defined(MFC_OpenMP)
1413# 355 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1414
1415# 355 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1416!$omp end target teams loop
1417# 355 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1418#endif
1419 else if (recon_dir == 3) then
1420
1421# 357 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1422
1423# 357 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1424#if defined(MFC_OpenACC)
1425# 357 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1426!$acc parallel loop collapse(4) gang vector default(present)
1427# 357 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1428#elif defined(MFC_OpenMP)
1429# 357 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1430
1431# 357 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1432
1433# 357 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1434
1435# 357 "/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# 357 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1438#endif
1439 do i = iv%beg, iv%end
1440 do l = is3%beg, is3%end
1441 do k = is2%beg, is2%end
1442 do j = is1%beg, is1%end
1443 vl_z(j, k, l, i) = v_vf(i)%sf(l, k, j)
1444 vr_z(j, k, l, i) = v_vf(i)%sf(l, k, j)
1445 end do
1446 end do
1447 end do
1448 end do
1449
1450# 368 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1451#if defined(MFC_OpenACC)
1452# 368 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1453!$acc end parallel loop
1454# 368 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1455#elif defined(MFC_OpenMP)
1456# 368 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1457
1458# 368 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1459!$omp end target teams loop
1460# 368 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1461#endif
1462 end if
1463
1465
1466 !> Finalize the surface tension module
1468
1469 integer :: j
1470
1471 do j = 1, num_dims
1472#ifdef MFC_DEBUG
1473# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1474 block
1475# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1476 use iso_fortran_env, only: output_unit
1477# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1478
1479# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1480 print *, 'm_surface_tension.fpp:379: ', '@:DEALLOCATE(c_divs(j)%sf)'
1481# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1482
1483# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1484 call flush (output_unit)
1485# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1486 end block
1487# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1488#endif
1489# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1490
1491# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1492#if defined(MFC_OpenACC)
1493# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1494!$acc exit data delete(c_divs(j)%sf)
1495# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1496#elif defined(MFC_OpenMP)
1497# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1498!$omp target exit data map(release:c_divs(j)%sf)
1499# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1500#endif
1501# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1502 deallocate (c_divs(j)%sf)
1503 end do
1504
1505#ifdef MFC_DEBUG
1506# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1507 block
1508# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1509 use iso_fortran_env, only: output_unit
1510# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1511
1512# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1513 print *, 'm_surface_tension.fpp:382: ', '@:DEALLOCATE(c_divs)'
1514# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1515
1516# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1517 call flush (output_unit)
1518# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1519 end block
1520# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1521#endif
1522# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1523
1524# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1525#if defined(MFC_OpenACC)
1526# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1527!$acc exit data delete(c_divs)
1528# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1529#elif defined(MFC_OpenMP)
1530# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1531!$omp target exit data map(release:c_divs)
1532# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1533#endif
1534# 382 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1535 deallocate (c_divs)
1536
1537#ifdef MFC_DEBUG
1538# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1539 block
1540# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1541 use iso_fortran_env, only: output_unit
1542# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1543
1544# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1545 print *, 'm_surface_tension.fpp:384: ', '@:DEALLOCATE(gL_x, gR_x)'
1546# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1547
1548# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1549 call flush (output_unit)
1550# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1551 end block
1552# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1553#endif
1554# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1555
1556# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1557#if defined(MFC_OpenACC)
1558# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1559!$acc exit data delete(gL_x, gR_x)
1560# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1561#elif defined(MFC_OpenMP)
1562# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1563!$omp target exit data map(release:gL_x, gR_x)
1564# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1565#endif
1566# 384 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1567 deallocate (gl_x, gr_x)
1568
1569#ifdef MFC_DEBUG
1570# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1571 block
1572# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1573 use iso_fortran_env, only: output_unit
1574# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1575
1576# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1577 print *, 'm_surface_tension.fpp:386: ', '@:DEALLOCATE(gL_y, gR_y)'
1578# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1579
1580# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1581 call flush (output_unit)
1582# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1583 end block
1584# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1585#endif
1586# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1587
1588# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1589#if defined(MFC_OpenACC)
1590# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1591!$acc exit data delete(gL_y, gR_y)
1592# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1593#elif defined(MFC_OpenMP)
1594# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1595!$omp target exit data map(release:gL_y, gR_y)
1596# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1597#endif
1598# 386 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1599 deallocate (gl_y, gr_y)
1600 if (p > 0) then
1601#ifdef MFC_DEBUG
1602# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1603 block
1604# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1605 use iso_fortran_env, only: output_unit
1606# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1607
1608# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1609 print *, 'm_surface_tension.fpp:388: ', '@:DEALLOCATE(gL_z, gR_z)'
1610# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1611
1612# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1613 call flush (output_unit)
1614# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1615 end block
1616# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1617#endif
1618# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1619
1620# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1621#if defined(MFC_OpenACC)
1622# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1623!$acc exit data delete(gL_z, gR_z)
1624# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1625#elif defined(MFC_OpenMP)
1626# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1627!$omp target exit data map(release:gL_z, gR_z)
1628# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1629#endif
1630# 388 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1631 deallocate (gl_z, gr_z)
1632 end if
1633
1635
1636end 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 gl_x
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)
Reconstruct left and right cell-boundary values of capillary variables.
type(scalar_field), dimension(:), allocatable c_divs
impure subroutine, public s_get_capillary(q_prim_vf, bc_type)
Compute color-function gradients and reconstruct them at cell boundaries.
subroutine, public s_compute_capillary_source_flux(vsrc_rsx_vf, vsrc_rsy_vf, vsrc_rsz_vf, flux_src_vf, id, isx, isy, isz)
Compute the capillary source flux from reconstructed color-gradient fields.
impure subroutine, public s_initialize_surface_tension_module
Allocate and initialize surface tension module arrays.
real(wp), dimension(:,:,:,:), allocatable gl_z
real(wp), dimension(:,:,:,:), allocatable gr_z
real(wp), dimension(:,:,:,:), allocatable gl_y
impure subroutine, public s_finalize_surface_tension_module
Finalize the surface tension module.
real(wp), dimension(:,:,:,:), allocatable gr_y
type(int_bounds_info) is2
type(int_bounds_info) is1
type(int_bounds_info) iv
real(wp), dimension(:,:,:,:), allocatable gr_x
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).