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(momxb + i - 1)%sf(j, k, l) = 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) + omega(1, i)*vsrc_rsx_vf(j, k, &
824 & l, i)
825 end do
826
827 ! Continuum surface force capillary stress, Schmidmayer et al. JCP (2017)
828 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + sigma*c_divs(num_dims + 1)%sf(j, k, &
829 & l)*vsrc_rsx_vf(j, k, l, 1)
830 end if
831 end do
832 end do
833 end do
834
835# 129 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
836#if defined(MFC_OpenACC)
837# 129 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
838!$acc end parallel loop
839# 129 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
840#elif defined(MFC_OpenMP)
841# 129 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
842
843# 129 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
844!$omp end target teams loop
845# 129 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
846#endif
847 else if (id == 2) then
848# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
849
850# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
851
852# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
853#if defined(MFC_OpenACC)
854# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
855!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
856# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
857#elif defined(MFC_OpenMP)
858# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
859
860# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
861
862# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
863
864# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
865!$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)
866# 132 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
867#endif
868 do l = isz%beg, isz%end
869 do k = isy%beg, isy%end
870 do j = isx%beg, isx%end
871 w1l = gl_y(k, j, l, 1)
872 w2l = gl_y(k, j, l, 2)
873 w3l = 0._wp
874 if (p > 0) w3l = gl_y(k, j, l, 3)
875
876 w1r = gr_y(k + 1, j, l, 1)
877 w2r = gr_y(k + 1, j, l, 2)
878 w3r = 0._wp
879 if (p > 0) w3r = gr_y(k + 1, j, l, 3)
880
881 normwl = gl_y(k, j, l, num_dims + 1)
882 normwr = gr_y(k + 1, j, l, num_dims + 1)
883
884 w1 = (w1l + w1r)/2._wp
885 w2 = (w2l + w2r)/2._wp
886 w3 = (w3l + w3r)/2._wp
887 normw = (normwl + normwr)/2._wp
888
889 if (normw > capillary_cutoff) then
890 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
891# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
892 omega(2, 1) = sigma*w1*w2/normw
893# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
894 omega(1, 2) = omega(2, 1)
895# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
896
897# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
898 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
899# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
900
901# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
902 if (p > 0) then
903# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
904 omega(3, 1) = sigma*w1*w3/normw
905# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
906 omega(1, 3) = omega(3, 1)
907# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
908
909# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
910 omega(3, 2) = sigma*w2*w3/normw
911# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
912 omega(2, 3) = omega(3, 2)
913# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
914
915# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
916 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
917# 155 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
918 end if
919
920 do i = 1, num_dims
921 flux_src_vf(momxb + i - 1)%sf(j, k, l) = flux_src_vf(momxb + i - 1)%sf(j, k, l) + omega(2, i)
922
923 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + omega(2, i)*vsrc_rsy_vf(k, &
924 & j, l, i)
925 end do
926
927 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, &
928 & l) + sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsy_vf(k, j, l, 2)
929 end if
930 end do
931 end do
932 end do
933
934# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
935#if defined(MFC_OpenACC)
936# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
937!$acc end parallel loop
938# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
939#elif defined(MFC_OpenMP)
940# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
941
942# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
943!$omp end target teams loop
944# 170 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
945#endif
946# 172 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
947 else if (id == 3) then
948# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
949
950# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
951
952# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
953#if defined(MFC_OpenACC)
954# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
955!$acc parallel loop collapse(3) gang vector default(present) private(Omega, w1L, w2L, w3L, w1R, w2R, w3R, w1, w2, w3, normWL, normWR, normW)
956# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
957#elif defined(MFC_OpenMP)
958# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
959
960# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
961
962# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
963
964# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
965!$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)
966# 174 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
967#endif
968 do l = isz%beg, isz%end
969 do k = isy%beg, isy%end
970 do j = isx%beg, isx%end
971 w1l = gl_z(l, k, j, 1)
972 w2l = gl_z(l, k, j, 2)
973 w3l = 0._wp
974 if (p > 0) w3l = gl_z(l, k, j, 3)
975
976 w1r = gr_z(l + 1, k, j, 1)
977 w2r = gr_z(l + 1, k, j, 2)
978 w3r = 0._wp
979 if (p > 0) w3r = gr_z(l + 1, k, j, 3)
980
981 normwl = gl_z(l, k, j, num_dims + 1)
982 normwr = gr_z(l + 1, k, j, num_dims + 1)
983
984 w1 = (w1l + w1r)/2._wp
985 w2 = (w2l + w2r)/2._wp
986 w3 = (w3l + w3r)/2._wp
987 normw = (normwl + normwr)/2._wp
988
989 if (normw > capillary_cutoff) then
990 omega(1, 1) = -sigma*(w2*w2 + w3*w3)/normw
991# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
992 omega(2, 1) = sigma*w1*w2/normw
993# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
994 omega(1, 2) = omega(2, 1)
995# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
996
997# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
998 omega(2, 2) = -sigma*(w1*w1 + w3*w3)/normw
999# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1000
1001# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1002 if (p > 0) then
1003# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1004 omega(3, 1) = sigma*w1*w3/normw
1005# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1006 omega(1, 3) = omega(3, 1)
1007# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1008
1009# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1010 omega(3, 2) = sigma*w2*w3/normw
1011# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1012 omega(2, 3) = omega(3, 2)
1013# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1014
1015# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1016 omega(3, 3) = -sigma*(w1*w1 + w2*w2)/normw
1017# 197 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1018 end if
1019
1020 do i = 1, num_dims
1021 flux_src_vf(momxb + i - 1)%sf(j, k, l) = flux_src_vf(momxb + i - 1)%sf(j, k, l) + omega(3, i)
1022
1023 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, l) + omega(3, i)*vsrc_rsz_vf(l, &
1024 & k, j, i)
1025 end do
1026
1027 flux_src_vf(e_idx)%sf(j, k, l) = flux_src_vf(e_idx)%sf(j, k, &
1028 & l) + sigma*c_divs(num_dims + 1)%sf(j, k, l)*vsrc_rsz_vf(l, k, j, 3)
1029 end if
1030 end do
1031 end do
1032 end do
1033
1034# 212 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1035#if defined(MFC_OpenACC)
1036# 212 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1037!$acc end parallel loop
1038# 212 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1039#elif defined(MFC_OpenMP)
1040# 212 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1041
1042# 212 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1043!$omp end target teams loop
1044# 212 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1045#endif
1046# 214 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1047 end if
1048
1049 end subroutine s_compute_capillary_source_flux
1050
1051 !> Compute color-function gradients and reconstruct them at cell boundaries
1052 impure subroutine s_get_capillary(q_prim_vf, bc_type)
1053
1054 type(scalar_field), dimension(sys_size), intent(in) :: q_prim_vf
1055 type(integer_field), dimension(1:num_dims,1:2), intent(in) :: bc_type
1056 type(int_bounds_info) :: isx, isy, isz
1057 integer :: j, k, l, i
1058
1059 isx%beg = -1; isy%beg = 0; isz%beg = 0
1060
1061 if (m > 0) isy%beg = -1; if (p > 0) isz%beg = -1
1062
1063 isx%end = m; isy%end = n; isz%end = p
1064
1065 ! compute gradient components
1066
1067# 233 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1068
1069# 233 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1070#if defined(MFC_OpenACC)
1071# 233 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1072!$acc parallel loop collapse(3) gang vector default(present)
1073# 233 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1074#elif defined(MFC_OpenMP)
1075# 233 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1076
1077# 233 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1078
1079# 233 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1080
1081# 233 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1082!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1083# 233 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1084#endif
1085 do l = 0, p
1086 do k = 0, n
1087 do j = 0, m
1088 c_divs(1)%sf(j, k, l) = 1._wp/(x_cc(j + 1) - x_cc(j - 1))*(q_prim_vf(c_idx)%sf(j + 1, k, &
1089 & l) - q_prim_vf(c_idx)%sf(j - 1, k, l))
1090 end do
1091 end do
1092 end do
1093
1094# 242 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1095#if defined(MFC_OpenACC)
1096# 242 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1097!$acc end parallel loop
1098# 242 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1099#elif defined(MFC_OpenMP)
1100# 242 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1101
1102# 242 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1103!$omp end target teams loop
1104# 242 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1105#endif
1106
1107
1108# 244 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1109
1110# 244 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1111#if defined(MFC_OpenACC)
1112# 244 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1113!$acc parallel loop collapse(3) gang vector default(present)
1114# 244 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1115#elif defined(MFC_OpenMP)
1116# 244 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1117
1118# 244 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1119
1120# 244 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1121
1122# 244 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1123!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1124# 244 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1125#endif
1126 do l = 0, p
1127 do k = 0, n
1128 do j = 0, m
1129 c_divs(2)%sf(j, k, l) = 1._wp/(y_cc(k + 1) - y_cc(k - 1))*(q_prim_vf(c_idx)%sf(j, k + 1, &
1130 & l) - q_prim_vf(c_idx)%sf(j, k - 1, l))
1131 end do
1132 end do
1133 end do
1134
1135# 253 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1136#if defined(MFC_OpenACC)
1137# 253 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1138!$acc end parallel loop
1139# 253 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1140#elif defined(MFC_OpenMP)
1141# 253 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1142
1143# 253 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1144!$omp end target teams loop
1145# 253 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1146#endif
1147
1148 if (p > 0) then
1149
1150# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1151
1152# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1153#if defined(MFC_OpenACC)
1154# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1155!$acc parallel loop collapse(3) gang vector default(present)
1156# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1157#elif defined(MFC_OpenMP)
1158# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1159
1160# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1161
1162# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1163
1164# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1165!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1166# 256 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1167#endif
1168 do l = 0, p
1169 do k = 0, n
1170 do j = 0, m
1171 c_divs(3)%sf(j, k, l) = 1._wp/(z_cc(l + 1) - z_cc(l - 1))*(q_prim_vf(c_idx)%sf(j, k, &
1172 & l + 1) - q_prim_vf(c_idx)%sf(j, k, l - 1))
1173 end do
1174 end do
1175 end do
1176
1177# 265 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1178#if defined(MFC_OpenACC)
1179# 265 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1180!$acc end parallel loop
1181# 265 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1182#elif defined(MFC_OpenMP)
1183# 265 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1184
1185# 265 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1186!$omp end target teams loop
1187# 265 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1188#endif
1189 end if
1190
1191
1192# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1193
1194# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1195#if defined(MFC_OpenACC)
1196# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1197!$acc parallel loop collapse(3) gang vector default(present)
1198# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1199#elif defined(MFC_OpenMP)
1200# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1201
1202# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1203
1204# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1205
1206# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1207!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(3) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1208# 268 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1209#endif
1210 do l = 0, p
1211 do k = 0, n
1212 do j = 0, m
1213 c_divs(num_dims + 1)%sf(j, k, l) = 0._wp
1214
1215# 273 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1216#if defined(MFC_OpenACC)
1217# 273 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1218!$acc loop seq
1219# 273 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1220#elif defined(MFC_OpenMP)
1221# 273 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1222
1223# 273 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1224#endif
1225 do i = 1, num_dims
1226 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
1227 end do
1228
1229 c_divs(num_dims + 1)%sf(j, k, l) = sqrt(real(c_divs(num_dims + 1)%sf(j, k, l), kind=wp))
1230 end do
1231 end do
1232 end do
1233
1234# 282 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1235#if defined(MFC_OpenACC)
1236# 282 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1237!$acc end parallel loop
1238# 282 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1239#elif defined(MFC_OpenMP)
1240# 282 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1241
1242# 282 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1243!$omp end target teams loop
1244# 282 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1245#endif
1246
1247 call s_populate_capillary_buffers(c_divs, bc_type)
1248
1249 iv%beg = 1; iv%end = num_dims + 1
1250
1251 ! reconstruct gradient components at cell boundaries
1252 do i = 1, num_dims
1254 end do
1255
1256 end subroutine s_get_capillary
1257
1258 !> Reconstruct left and right cell-boundary values of capillary variables
1259 subroutine s_reconstruct_cell_boundary_values_capillary(v_vf, vL_x, vL_y, vL_z, vR_x, vR_y, vR_z, norm_dir)
1260
1261 type(scalar_field), dimension(iv%beg:iv%end), intent(in) :: v_vf
1262 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,iv%beg:), intent(out) :: vL_x, vL_y, vL_z
1263 real(wp), dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,iv%beg:), intent(out) :: vR_x, vR_y, vR_z
1264 integer, intent(in) :: norm_dir
1265 integer :: recon_dir !< Coordinate direction of the reconstruction
1266 integer :: i, j, k, l
1267
1268# 306 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1269 if (recon_type == weno_type .or. dummy) then
1270 ! Reconstruction in s1-direction
1271
1272 if (norm_dir == 1) then
1273 is1 = idwbuff(1); is2 = idwbuff(2); is3 = idwbuff(3)
1274 recon_dir = 1; is1%beg = is1%beg + weno_polyn
1275 is1%end = is1%end - weno_polyn
1276 else if (norm_dir == 2) then
1277 is1 = idwbuff(2); is2 = idwbuff(1); is3 = idwbuff(3)
1278 recon_dir = 2; is1%beg = is1%beg + weno_polyn
1279 is1%end = is1%end - weno_polyn
1280 else
1281 is1 = idwbuff(3); is2 = idwbuff(2); is3 = idwbuff(1)
1282 recon_dir = 3; is1%beg = is1%beg + weno_polyn
1283 is1%end = is1%end - weno_polyn
1284 end if
1285
1286
1287# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1288#if defined(MFC_OpenACC)
1289# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1290!$acc update device(is1, is2, is3, iv)
1291# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1292#elif defined(MFC_OpenMP)
1293# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1294!$omp target update to(is1, is2, is3, iv)
1295# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1296#endif
1297 end if
1298# 306 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1299 if (recon_type == muscl_type .or. dummy) then
1300 ! Reconstruction in s1-direction
1301
1302 if (norm_dir == 1) then
1303 is1 = idwbuff(1); is2 = idwbuff(2); is3 = idwbuff(3)
1304 recon_dir = 1; is1%beg = is1%beg + muscl_polyn
1305 is1%end = is1%end - muscl_polyn
1306 else if (norm_dir == 2) then
1307 is1 = idwbuff(2); is2 = idwbuff(1); is3 = idwbuff(3)
1308 recon_dir = 2; is1%beg = is1%beg + muscl_polyn
1309 is1%end = is1%end - muscl_polyn
1310 else
1311 is1 = idwbuff(3); is2 = idwbuff(2); is3 = idwbuff(1)
1312 recon_dir = 3; is1%beg = is1%beg + muscl_polyn
1313 is1%end = is1%end - muscl_polyn
1314 end if
1315
1316
1317# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1318#if defined(MFC_OpenACC)
1319# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1320!$acc update device(is1, is2, is3, iv)
1321# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1322#elif defined(MFC_OpenMP)
1323# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1324!$omp target update to(is1, is2, is3, iv)
1325# 323 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1326#endif
1327 end if
1328# 326 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1329
1330 if (recon_dir == 1) then
1331
1332# 328 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1333
1334# 328 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1335#if defined(MFC_OpenACC)
1336# 328 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1337!$acc parallel loop collapse(4) gang vector default(present)
1338# 328 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1339#elif defined(MFC_OpenMP)
1340# 328 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1341
1342# 328 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1343
1344# 328 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1345
1346# 328 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1347!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1348# 328 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1349#endif
1350 do i = iv%beg, iv%end
1351 do l = is3%beg, is3%end
1352 do k = is2%beg, is2%end
1353 do j = is1%beg, is1%end
1354 vl_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
1355 vr_x(j, k, l, i) = v_vf(i)%sf(j, k, l)
1356 end do
1357 end do
1358 end do
1359 end do
1360
1361# 339 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1362#if defined(MFC_OpenACC)
1363# 339 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1364!$acc end parallel loop
1365# 339 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1366#elif defined(MFC_OpenMP)
1367# 339 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1368
1369# 339 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1370!$omp end target teams loop
1371# 339 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1372#endif
1373 else if (recon_dir == 2) then
1374
1375# 341 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1376
1377# 341 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1378#if defined(MFC_OpenACC)
1379# 341 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1380!$acc parallel loop collapse(4) gang vector default(present)
1381# 341 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1382#elif defined(MFC_OpenMP)
1383# 341 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1384
1385# 341 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1386
1387# 341 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1388
1389# 341 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1390!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1391# 341 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1392#endif
1393 do i = iv%beg, iv%end
1394 do l = is3%beg, is3%end
1395 do k = is2%beg, is2%end
1396 do j = is1%beg, is1%end
1397 vl_y(j, k, l, i) = v_vf(i)%sf(k, j, l)
1398 vr_y(j, k, l, i) = v_vf(i)%sf(k, j, l)
1399 end do
1400 end do
1401 end do
1402 end do
1403
1404# 352 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1405#if defined(MFC_OpenACC)
1406# 352 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1407!$acc end parallel loop
1408# 352 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1409#elif defined(MFC_OpenMP)
1410# 352 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1411
1412# 352 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1413!$omp end target teams loop
1414# 352 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1415#endif
1416 else if (recon_dir == 3) then
1417
1418# 354 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1419
1420# 354 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1421#if defined(MFC_OpenACC)
1422# 354 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1423!$acc parallel loop collapse(4) gang vector default(present)
1424# 354 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1425#elif defined(MFC_OpenMP)
1426# 354 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1427
1428# 354 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1429
1430# 354 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1431
1432# 354 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1433!$omp target teams loop defaultmap(firstprivate:scalar) bind(teams,parallel) collapse(4) defaultmap(tofrom:aggregate) defaultmap(tofrom:allocatable) defaultmap(tofrom:pointer)
1434# 354 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1435#endif
1436 do i = iv%beg, iv%end
1437 do l = is3%beg, is3%end
1438 do k = is2%beg, is2%end
1439 do j = is1%beg, is1%end
1440 vl_z(j, k, l, i) = v_vf(i)%sf(l, k, j)
1441 vr_z(j, k, l, i) = v_vf(i)%sf(l, k, j)
1442 end do
1443 end do
1444 end do
1445 end do
1446
1447# 365 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1448#if defined(MFC_OpenACC)
1449# 365 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1450!$acc end parallel loop
1451# 365 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1452#elif defined(MFC_OpenMP)
1453# 365 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1454
1455# 365 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1456!$omp end target teams loop
1457# 365 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1458#endif
1459 end if
1460
1462
1463 !> Finalize the surface tension module
1465
1466 integer :: j
1467
1468 do j = 1, num_dims
1469#ifdef MFC_DEBUG
1470# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1471 block
1472# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1473 use iso_fortran_env, only: output_unit
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 print *, 'm_surface_tension.fpp:376: ', '@:DEALLOCATE(c_divs(j)%sf)'
1478# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1479
1480# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1481 call flush (output_unit)
1482# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1483 end block
1484# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1485#endif
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#if defined(MFC_OpenACC)
1490# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1491!$acc exit data delete(c_divs(j)%sf)
1492# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1493#elif defined(MFC_OpenMP)
1494# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1495!$omp target exit data map(release:c_divs(j)%sf)
1496# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1497#endif
1498# 376 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1499 deallocate (c_divs(j)%sf)
1500 end do
1501
1502#ifdef MFC_DEBUG
1503# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1504 block
1505# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1506 use iso_fortran_env, only: output_unit
1507# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1508
1509# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1510 print *, 'm_surface_tension.fpp:379: ', '@:DEALLOCATE(c_divs)'
1511# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1512
1513# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1514 call flush (output_unit)
1515# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1516 end block
1517# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1518#endif
1519# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1520
1521# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1522#if defined(MFC_OpenACC)
1523# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1524!$acc exit data delete(c_divs)
1525# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1526#elif defined(MFC_OpenMP)
1527# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1528!$omp target exit data map(release:c_divs)
1529# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1530#endif
1531# 379 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1532 deallocate (c_divs)
1533
1534#ifdef MFC_DEBUG
1535# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1536 block
1537# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1538 use iso_fortran_env, only: output_unit
1539# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1540
1541# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1542 print *, 'm_surface_tension.fpp:381: ', '@:DEALLOCATE(gL_x, gR_x)'
1543# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1544
1545# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1546 call flush (output_unit)
1547# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1548 end block
1549# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1550#endif
1551# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1552
1553# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1554#if defined(MFC_OpenACC)
1555# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1556!$acc exit data delete(gL_x, gR_x)
1557# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1558#elif defined(MFC_OpenMP)
1559# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1560!$omp target exit data map(release:gL_x, gR_x)
1561# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1562#endif
1563# 381 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1564 deallocate (gl_x, gr_x)
1565
1566#ifdef MFC_DEBUG
1567# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1568 block
1569# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1570 use iso_fortran_env, only: output_unit
1571# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1572
1573# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1574 print *, 'm_surface_tension.fpp:383: ', '@:DEALLOCATE(gL_y, gR_y)'
1575# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1576
1577# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1578 call flush (output_unit)
1579# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1580 end block
1581# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1582#endif
1583# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1584
1585# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1586#if defined(MFC_OpenACC)
1587# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1588!$acc exit data delete(gL_y, gR_y)
1589# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1590#elif defined(MFC_OpenMP)
1591# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1592!$omp target exit data map(release:gL_y, gR_y)
1593# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1594#endif
1595# 383 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1596 deallocate (gl_y, gr_y)
1597 if (p > 0) then
1598#ifdef MFC_DEBUG
1599# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1600 block
1601# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1602 use iso_fortran_env, only: output_unit
1603# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1604
1605# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1606 print *, 'm_surface_tension.fpp:385: ', '@:DEALLOCATE(gL_z, gR_z)'
1607# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1608
1609# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1610 call flush (output_unit)
1611# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1612 end block
1613# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1614#endif
1615# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1616
1617# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1618#if defined(MFC_OpenACC)
1619# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1620!$acc exit data delete(gL_z, gR_z)
1621# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1622#elif defined(MFC_OpenMP)
1623# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1624!$omp target exit data map(release:gL_z, gR_z)
1625# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1626#endif
1627# 385 "/home/runner/work/MFC/MFC/src/simulation/m_surface_tension.fpp"
1628 deallocate (gl_z, gr_z)
1629 end if
1630
1632
1633end 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).