1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
6# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
7# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
8# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
9# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
10# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
11# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
12# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
13# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
15# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
16# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
19# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
34# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
35# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
36# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
62# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
63# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
64# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
65# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
66# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
68# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
70# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 245 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 376 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
140# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
141# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
142# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
143# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
144# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
145# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
146# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
148# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
149# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
168# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
170# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
172# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
174# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
176# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
178# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 308 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
226# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
228# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
230# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
232# 76 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
234# 91 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
236# 102 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
238# 115 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
240# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242# 154 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244# 165 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
246# 176 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 187 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250# 198 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
252# 208 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256# 220 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
258# 226 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 232 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262# 234 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 235 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
267# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
273# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
275# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
277# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
279# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
281# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
283# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
285# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
287# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289# 6 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp" 2
296 use m_model !< subroutine(s) related to stl files
302 use m_mpi_proxy !< message passing interface (mpi) module proxy
315 type(
ghost_point),
dimension(:),
intent(inout) :: gps
316 integer,
intent(in) :: num_gps
318 integer :: i, patch_id, patch_geometry
320 if (num_gps < 1)
then
325# 40 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
326#if defined(MFC_OpenACC)
327# 40 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
329# 40 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
330#elif defined(MFC_OpenMP)
331# 40 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
333# 40 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
340# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
342# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
343#if defined(MFC_OpenACC)
344# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
346# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
347#elif defined(MFC_OpenMP)
348# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
350# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
352# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
354# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
356# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
358# 45 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
362 patch_id = gps(i)%ib_patch_id
363 patch_geometry =
patch_ib(patch_id)%geometry
365 if (patch_geometry == 8)
then
367 elseif (patch_geometry == 9)
then
369 elseif (patch_geometry == 10)
then
371 elseif (patch_geometry == 11)
then
376# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
378# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
379#if defined(MFC_OpenACC)
380# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
382# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
383#elif defined(MFC_OpenMP)
384# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
386# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
388# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
390# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
392# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
399# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
401# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
402#if defined(MFC_OpenACC)
403# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
405# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
406#elif defined(MFC_OpenMP)
407# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
409# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
411# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
413# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
415# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
417# 66 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
421 patch_id = gps(i)%ib_patch_id
422 patch_geometry =
patch_ib(patch_id)%geometry
424 if (patch_geometry == 2)
then
426 elseif (patch_geometry == 3)
then
428 elseif (patch_geometry == 4)
then
430 elseif (patch_geometry == 6)
then
435# 82 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
437# 82 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
438#if defined(MFC_OpenACC)
439# 82 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
441# 82 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
442#elif defined(MFC_OpenMP)
443# 82 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
445# 82 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
447# 82 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
449# 82 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
451# 82 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
458 patch_id = gps(i)%ib_patch_id
459 patch_geometry =
patch_ib(patch_id)%geometry
461 if (patch_geometry == 5 .or. patch_geometry == 12)
then
464# 93 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
465#if defined(MFC_OpenACC)
466# 93 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
468# 93 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
469#elif defined(MFC_OpenMP)
470# 93 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
472# 93 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
478# 97 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
479#if defined(MFC_OpenACC)
480# 97 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
482# 97 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
483#elif defined(MFC_OpenMP)
484# 97 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
486# 97 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
495# 104 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
497# 104 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
499# 104 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
501# 104 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
503# 104 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
505# 104 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
507# 104 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
512 real(wp) :: radius, dist
513 real(wp),
dimension(2) :: center
514 real(wp),
dimension(3) :: dist_vec
516 integer :: i, j, ib_patch_id
518 ib_patch_id = gp%ib_patch_id
522 radius =
patch_ib(ib_patch_id)%radius
524 dist_vec(1) =
x_cc(i) -
patch_ib(ib_patch_id)%x_centroid
525 dist_vec(2) =
y_cc(j) -
patch_ib(ib_patch_id)%y_centroid
527 dist = sqrt(sum(dist_vec**2))
529 gp%levelset = dist - radius
531 gp%levelset_norm = 0._wp
533 gp%levelset_norm = dist_vec(:)/dist
542# 137 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
544# 137 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
546# 137 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
548# 137 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
550# 137 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
552# 137 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
554# 137 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
559 real(wp) :: dist, global_dist
561 real(wp),
dimension(3) :: dist_vec
563 real(wp),
dimension(1:3) :: xy_local, offset
564 real(wp),
dimension(1:2) :: center
565 real(wp),
dimension(1:3, 1:3) :: rotation, inverse_rotation
567 integer :: i, j, k, ib_patch_id
569 ib_patch_id = gp%ib_patch_id
573 center(1) =
patch_ib(ib_patch_id)%x_centroid
574 center(2) =
patch_ib(ib_patch_id)%y_centroid
575 inverse_rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix_inverse(:, :)
576 rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix(:, :)
577 offset(:) =
patch_ib(ib_patch_id)%centroid_offset(:)
579 xy_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
580 xy_local = matmul(inverse_rotation, xy_local)
581 xy_local = xy_local - offset
583 if (xy_local(2) >= 0._wp)
then
589 dist = sqrt(sum(dist_vec**2))
594 if (dist < global_dist)
then
609 dist = sqrt(sum(dist_vec**2))
614 if (dist < global_dist)
then
628 gp%levelset_norm = 0._wp
630 gp%levelset_norm = matmul(rotation, dist_vec(:))/dist
639# 220 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
641# 220 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
643# 220 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
645# 220 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
647# 220 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
649# 220 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
651# 220 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
656 real(wp) :: dist, dist_surf, dist_side, global_dist
658 real(wp) :: lz, z_max, z_min
659 real(wp),
dimension(3) :: dist_vec
661 real(wp),
dimension(1:3) :: xyz_local, center, offset, normal
662 real(wp),
dimension(1:3, 1:3) :: rotation, inverse_rotation
666 integer :: i, j, k, l, ib_patch_id
668 ib_patch_id = gp%ib_patch_id
673 center(1) =
patch_ib(ib_patch_id)%x_centroid
674 center(2) =
patch_ib(ib_patch_id)%y_centroid
675 center(3) =
patch_ib(ib_patch_id)%z_centroid
677 inverse_rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix_inverse(:, :)
678 rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix(:, :)
679 offset(:) =
patch_ib(ib_patch_id)%centroid_offset(:)
685 xyz_local = matmul(inverse_rotation, xyz_local)
686 xyz_local = xyz_local - offset
688 if (xyz_local(2) >= 0._wp)
then
693 dist_surf = sqrt(sum(dist_vec**2))
695 global_dist = dist_surf
698 if (dist_surf < global_dist)
then
699 global_dist = dist_surf
707 dist_surf = global_dist
713 dist_surf = sqrt(sum(dist_vec**2))
715 global_dist = dist_surf
718 if (dist_surf < global_dist)
then
719 global_dist = dist_surf
727 dist_surf = global_dist
730 dist_side = min(abs(xyz_local(3) - z_min), abs(z_max - xyz_local(3)))
732 if (dist_side < dist_surf)
then
733 gp%levelset = dist_side
740 gp%levelset_norm = matmul(rotation, normal)
742 gp%levelset = dist_surf
744 gp%levelset_norm = 0._wp
746 gp%levelset_norm = matmul(rotation, dist_vec(:)/dist_surf)
756# 323 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
758# 323 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
760# 323 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
762# 323 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
764# 323 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
766# 323 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
768# 323 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
773 real(wp) :: top_right(2), bottom_left(2)
775 real(wp) :: side_dists(4)
777 real(wp) :: length_x, length_y
778 real(wp),
dimension(1:3) :: xy_local, dist_vec
779 real(wp),
dimension(2) :: center
780 real(wp),
dimension(1:3, 1:3) :: rotation, inverse_rotation
784 integer :: ib_patch_id
786 ib_patch_id = gp%ib_patch_id
790 length_x =
patch_ib(ib_patch_id)%length_x
791 length_y =
patch_ib(ib_patch_id)%length_y
792 center(1) =
patch_ib(ib_patch_id)%x_centroid
793 center(2) =
patch_ib(ib_patch_id)%y_centroid
794 inverse_rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix_inverse(:, :)
795 rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix(:, :)
797 top_right(1) = length_x/2
798 top_right(2) = length_y/2
799 bottom_left(1) = -length_x/2
800 bottom_left(2) = -length_y/2
803 xy_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
804 xy_local = matmul(inverse_rotation, xy_local)
806 side_dists(1) = bottom_left(1) - xy_local(1)
807 side_dists(2) = top_right(1) - xy_local(1)
808 side_dists(3) = bottom_left(2) - xy_local(2)
809 side_dists(4) = top_right(2) - xy_local(2)
810 min_dist = side_dists(1)
814 if (abs(side_dists(k)) < abs(min_dist))
then
816 min_dist = side_dists(idx)
820 gp%levelset = side_dists(idx)
823 if (idx == 1 .or. idx == 2)
then
825 dist_vec(1) = side_dists(idx)/abs(side_dists(idx))
828 dist_vec(2) = side_dists(idx)/abs(side_dists(idx))
831 gp%levelset_norm = matmul(rotation, dist_vec)
833 gp%levelset_norm = 0._wp
842# 395 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
844# 395 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
846# 395 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
848# 395 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
850# 395 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
852# 395 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
854# 395 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
859 real(wp) :: ellipse_coeffs(2)
860 real(wp) :: quadratic_coeffs(3)
862 real(wp) :: length_x, length_y
863 real(wp),
dimension(1:3) :: xy_local, normal_vector
864 real(wp),
dimension(2) :: center
865 real(wp),
dimension(1:3, 1:3) :: rotation, inverse_rotation
869 integer :: ib_patch_id
871 ib_patch_id = gp%ib_patch_id
875 length_x =
patch_ib(ib_patch_id)%length_x
876 length_y =
patch_ib(ib_patch_id)%length_y
877 center(1) =
patch_ib(ib_patch_id)%x_centroid
878 center(2) =
patch_ib(ib_patch_id)%y_centroid
879 inverse_rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix_inverse(:, :)
880 rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix(:, :)
882 ellipse_coeffs(1) = 0.5_wp*length_x
883 ellipse_coeffs(2) = 0.5_wp*length_y
885 xy_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
886 xy_local = matmul(inverse_rotation, xy_local)
888 normal_vector = xy_local
889 normal_vector(2) = normal_vector(2)*(ellipse_coeffs(1)/ellipse_coeffs(2))**2._wp
890 normal_vector = normal_vector/sqrt(dot_product(normal_vector, normal_vector))
891 gp%levelset_norm = matmul(rotation, normal_vector)
894 quadratic_coeffs(1) = (normal_vector(1)/ellipse_coeffs(1))**2 + (normal_vector(2)/ellipse_coeffs(2))**2
895 quadratic_coeffs(2) = 2._wp*((xy_local(1)*normal_vector(1)/(ellipse_coeffs(1)**2)) + (xy_local(2)*normal_vector(2)/(ellipse_coeffs(2)**2)))
896 quadratic_coeffs(3) = (xy_local(1)/ellipse_coeffs(1))**2._wp + (xy_local(2)/ellipse_coeffs(2))**2._wp - 1._wp
899 gp%levelset = -0.5_wp*(-quadratic_coeffs(2) + sqrt(quadratic_coeffs(2)**2._wp - 4._wp*quadratic_coeffs(1)*quadratic_coeffs(3)))/quadratic_coeffs(1)
907# 446 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
909# 446 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
911# 446 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
913# 446 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
915# 446 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
917# 446 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
919# 446 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
924 real(wp) :: Right, Left, Bottom, Top, Front, Back
926 real(wp) :: dist_left, dist_right, dist_bottom, dist_top, dist_back, dist_front
928 real(wp),
dimension(3) :: center
929 real(wp) :: length_x, length_y, length_z
930 real(wp),
dimension(1:3) :: xyz_local, dist_vec
931 real(wp),
dimension(1:3, 1:3) :: rotation, inverse_rotation
934 integer :: ib_patch_id
936 ib_patch_id = gp%ib_patch_id
941 length_x =
patch_ib(ib_patch_id)%length_x
942 length_y =
patch_ib(ib_patch_id)%length_y
943 length_z =
patch_ib(ib_patch_id)%length_z
945 center(1) =
patch_ib(ib_patch_id)%x_centroid
946 center(2) =
patch_ib(ib_patch_id)%y_centroid
947 center(3) =
patch_ib(ib_patch_id)%z_centroid
949 inverse_rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix_inverse(:, :)
950 rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix(:, :)
960 xyz_local = matmul(inverse_rotation, xyz_local)
962 dist_left = left - xyz_local(1)
963 dist_right = xyz_local(1) - right
964 dist_bottom = bottom - xyz_local(2)
965 dist_top = xyz_local(2) - top
966 dist_back = back - xyz_local(3)
967 dist_front = xyz_local(3) - front
969 min_dist = min(abs(dist_left), abs(dist_right), abs(dist_bottom), &
970 abs(dist_top), abs(dist_back), abs(dist_front))
983 gp%levelset = dist_left
985 dist_vec(1) = dist_left/abs(dist_left)
988 gp%levelset = dist_right
990 dist_vec(1) = -dist_right/abs(dist_right)
993 gp%levelset = dist_bottom
995 dist_vec(2) = dist_bottom/abs(dist_bottom)
998 gp%levelset = dist_top
1000 dist_vec(2) = -dist_top/abs(dist_top)
1003 gp%levelset = dist_back
1005 dist_vec(3) = dist_back/abs(dist_back)
1008 gp%levelset = dist_front
1010 dist_vec(3) = -dist_front/abs(dist_front)
1014 gp%levelset_norm = matmul(rotation, dist_vec)
1022# 547 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1024# 547 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1026# 547 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1028# 547 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1030# 547 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1032# 547 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1034# 547 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1039 real(wp) :: radius, dist
1040 real(wp),
dimension(3) :: dist_vec, center
1042 integer :: i, j, k, ib_patch_id
1044 ib_patch_id = gp%ib_patch_id
1049 radius =
patch_ib(ib_patch_id)%radius
1050 center(1) =
patch_ib(ib_patch_id)%x_centroid
1051 center(2) =
patch_ib(ib_patch_id)%y_centroid
1052 center(3) =
patch_ib(ib_patch_id)%z_centroid
1054 dist_vec(1) =
x_cc(i) - center(1)
1055 dist_vec(2) =
y_cc(j) - center(2)
1056 dist_vec(3) =
z_cc(k) - center(3)
1057 dist = sqrt(sum(dist_vec**2))
1058 gp%levelset = dist - radius
1060 gp%levelset_norm = (/1, 0, 0/)
1062 gp%levelset_norm = dist_vec(:)/dist
1071# 582 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1073# 582 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1075# 582 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1077# 582 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1079# 582 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1081# 582 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1083# 582 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1089 real(wp),
dimension(3) :: dist_sides_vec, dist_surface_vec, length
1090 real(wp),
dimension(2) :: boundary
1091 real(wp) :: dist_side, dist_surface, side_pos
1093 integer :: ib_patch_id
1095 real(wp),
dimension(1:3) :: xyz_local, center
1096 real(wp),
dimension(1:3, 1:3) :: rotation, inverse_rotation
1098 ib_patch_id = gp%ib_patch_id
1103 radius =
patch_ib(ib_patch_id)%radius
1104 center(1) =
patch_ib(ib_patch_id)%x_centroid
1105 center(2) =
patch_ib(ib_patch_id)%y_centroid
1106 center(3) =
patch_ib(ib_patch_id)%z_centroid
1107 length(1) =
patch_ib(ib_patch_id)%length_x
1108 length(2) =
patch_ib(ib_patch_id)%length_y
1109 length(3) =
patch_ib(ib_patch_id)%length_z
1111 inverse_rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix_inverse(:, :)
1112 rotation(:, :) =
patch_ib(ib_patch_id)%rotation_matrix(:, :)
1115 boundary(1) = -0.5_wp*length(1)
1116 boundary(2) = 0.5_wp*length(1)
1117 dist_sides_vec = (/1, 0, 0/)
1118 dist_surface_vec = (/0, 1, 1/)
1120 boundary(1) = -0.5_wp*length(2)
1121 boundary(2) = 0.5_wp*length(2)
1122 dist_sides_vec = (/0, 1, 0/)
1123 dist_surface_vec = (/1, 0, 1/)
1125 boundary(1) = -0.5_wp*length(3)
1126 boundary(2) = 0.5_wp*length(3)
1127 dist_sides_vec = (/0, 0, 1/)
1128 dist_surface_vec = (/1, 1, 0/)
1132 xyz_local = matmul(inverse_rotation, xyz_local)
1135 side_pos = dot_product(xyz_local, dist_sides_vec)
1136 dist_side = min(abs(side_pos - boundary(1)), &
1137 abs(boundary(2) - side_pos))
1139 dist_surface = norm2(xyz_local*dist_surface_vec) &
1142 if (dist_side < abs(dist_surface))
then
1144 gp%levelset = -dist_side
1146 gp%levelset_norm = matmul(rotation, -dist_sides_vec)
1148 gp%levelset_norm = matmul(rotation, dist_sides_vec)
1151 gp%levelset = dist_surface
1152 xyz_local = xyz_local*dist_surface_vec
1153 xyz_local = xyz_local/max(norm2(xyz_local), sgm_eps)
1154 gp%levelset_norm = matmul(rotation, xyz_local)
1163# 660 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1165# 660 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1167# 660 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1169# 660 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1171# 660 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1173# 660 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1175# 660 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1180 integer :: i, j, k, patch_id, boundary_edge_count, total_vertices
1181 logical :: interpolate
1182 real(wp),
dimension(1:3) :: center, xyz_local
1183 real(wp) :: normals(1:3)
1184 real(wp) :: distance
1185 real(wp),
dimension(1:3, 1:3) :: inverse_rotation, rotation
1187 patch_id = gp%ib_patch_id
1193 interpolate =
models(patch_id)%interpolate
1194 boundary_edge_count =
models(patch_id)%boundary_edge_count
1195 total_vertices =
models(patch_id)%total_vertices
1203 inverse_rotation(:, :) =
patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1204 rotation(:, :) =
patch_ib(patch_id)%rotation_matrix(:, :)
1207 xyz_local = (/
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp/)
1209 xyz_local(3) =
z_cc(k) - center(3)
1211 xyz_local = matmul(inverse_rotation, xyz_local)
1224 if (interpolate)
then
1227 gp%levelset = distance
1231 gp%levelset = -abs(gp%levelset)
1234 gp%levelset_norm = matmul(rotation, normals(1:3))
1237 if (interpolate)
then
1242 gp%levelset =
f_distance(
models(patch_id)%boundary_v, boundary_edge_count, xyz_local)
1246 gp%levelset = -abs(gp%levelset)
1250 boundary_edge_count, &
1255 gp%levelset_norm = matmul(rotation, normals(1:3))
Computes signed-distance level-set fields and surface normals for immersed-boundary patch geometries.
impure subroutine, public s_apply_levelset(gps, num_gps)
Dispatches level-set distance and normal computations for all ghost points based on their patch geome...
subroutine s_airfoil_levelset(gp)
Computes the signed distance and outward normal from a ghost point to a 2D NACA airfoil surface.
subroutine s_sphere_levelset(gp)
Computes the signed distance and outward normal from a ghost point to a spherical immersed boundary.
subroutine s_circle_levelset(gp)
Computes the signed distance and outward normal from a ghost point to a circular immersed boundary.
subroutine s_ellipse_levelset(gp)
Computes the signed distance and outward normal from a ghost point to an elliptical immersed boundary...
subroutine s_cylinder_levelset(gp)
Computes the signed distance and outward normal from a ghost point to a cylindrical immersed boundary...
subroutine s_3d_airfoil_levelset(gp)
Computes the signed distance and outward normal from a ghost point to a 3D extruded airfoil surface i...
subroutine s_rectangle_levelset(gp)
Subroutine for computing the levelset values at a ghost point belonging to the rectangle IB.
subroutine s_model_levelset(gp)
The STL patch is a 2/3D geometry that is imported from an STL file.
subroutine s_cuboid_levelset(gp)
Computes the signed distance and outward normal from a ghost point to the nearest face of a cuboid im...
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...
type(ib_patch_parameters), dimension(num_patches_max) patch_ib
type(vec3_dt), dimension(:), allocatable airfoil_grid_u
real(wp), dimension(:), allocatable, target y_cc
real(wp), dimension(:), allocatable, target z_cc
type(vec3_dt), dimension(:), allocatable airfoil_grid_l
real(wp), dimension(:), allocatable, target x_cc
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
logical elemental function, public f_approx_equal(a, b, tol_input)
This procedure checks if two floating point numbers of wp are within tolerance.
logical elemental function, public f_is_default(var)
Checks if a real(wp) variable is of default value.
Allocate memory and read initial condition data for IC extrusion.
type(t_model_array), dimension(:), allocatable, target, public models
pure real(wp) function, dimension(1:3), public f_convert_cyl_to_cart(cyl)
Converts a 3D cylindrical coordinate vector (x, r, theta) to Cartesian (x, y, z).
Binary STL file reader and processor for immersed boundary geometry.
subroutine, public f_distance_normals_3d(model, point, normals, distance)
This procedure determines the levelset distance and normals of the 3D models without interpolation.
real(wp) function, public f_interpolated_distance(interpolated_boundary_v, total_vertices, point)
This procedure determines the levelset of interpolated 2D models.
subroutine, public f_normals(boundary_v, boundary_edge_count, point, normals)
This procedure determines the levelset normals of 2D models without interpolation.
real(wp) function, public f_distance(boundary_v, boundary_edge_count, point)
This procedure determines the levelset distance of 2D models without interpolation.
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Ghost Point for Immersed Boundaries.