1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
12# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
15# 14 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp" 2
17# 1 "/home/runner/work/MFC/MFC/src/common/include/ExtrusionHardcodedIC.fpp" 1
55# 56 "/home/runner/work/MFC/MFC/src/common/include/ExtrusionHardcodedIC.fpp"
57# 194 "/home/runner/work/MFC/MFC/src/common/include/ExtrusionHardcodedIC.fpp"
59# 205 "/home/runner/work/MFC/MFC/src/common/include/ExtrusionHardcodedIC.fpp"
60# 7 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp" 2
61# 1 "/home/runner/work/MFC/MFC/src/common/include/1dHardcodedIC.fpp" 1
62# 5 "/home/runner/work/MFC/MFC/src/common/include/1dHardcodedIC.fpp"
64# 59 "/home/runner/work/MFC/MFC/src/common/include/1dHardcodedIC.fpp"
65# 8 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp" 2
66# 1 "/home/runner/work/MFC/MFC/src/common/include/2dHardcodedIC.fpp" 1
67# 18 "/home/runner/work/MFC/MFC/src/common/include/2dHardcodedIC.fpp"
69# 314 "/home/runner/work/MFC/MFC/src/common/include/2dHardcodedIC.fpp"
70# 9 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp" 2
71# 1 "/home/runner/work/MFC/MFC/src/common/include/3dHardcodedIC.fpp" 1
72# 66 "/home/runner/work/MFC/MFC/src/common/include/3dHardcodedIC.fpp"
74# 186 "/home/runner/work/MFC/MFC/src/common/include/3dHardcodedIC.fpp"
75# 10 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp" 2
76# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
77# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
78# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
79# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
81# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
83# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
85# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
86# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
87# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
89# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
91# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
93# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
95# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
97# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
99# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
101# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
103# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
104# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
105# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
106# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
107# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
108# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
109# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
110# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
112# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
113# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
114# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
116# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
118# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
120# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
122# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
124# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
126# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
128# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
130# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
132# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
150# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
152# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
154# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
156# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
158# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
160# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
162# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
164# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
166# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
168# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
170# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
172# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
174# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
176# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
178# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
180# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
182# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
183# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
185# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
187# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
189# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
191# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
193# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
195# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
197# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
199# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
201# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
203# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
205# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
207# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
209# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
210# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
211# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
212# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
213# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
214# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
215# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
216# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
218# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
219# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
220# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
222# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
224# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
226# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
228# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
230# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
232# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
234# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
236# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
238# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
254# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
256# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
258# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
260# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
262# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
264# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
266# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
268# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
270# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
272# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
274# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
276# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
278# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
280# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
282# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
284# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
286# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
288# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
290# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
292# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
294# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
297# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
300# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
303# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
306# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
309# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
312# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
315# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
318# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
321# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
324# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
327# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
330# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
333# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
336# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
339# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
342# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
345# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
348# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
351# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
353# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
354# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
356# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
358# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
363# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
366# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
369# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
372# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
375# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
378# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
380# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
382# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
384# 11 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp" 2
404# 29 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
405#if defined(MFC_OpenACC)
406# 29 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
408# 29 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
409#elif defined(MFC_OpenMP)
410# 29 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
412# 29 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
415# 30 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
416#if defined(MFC_OpenACC)
417# 30 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
419# 30 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
420#elif defined(MFC_OpenMP)
421# 30 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
423# 30 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
429# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
430#if defined(MFC_OpenACC)
431# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
433# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
434#elif defined(MFC_OpenMP)
435# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
437# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
446# 41 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
447#if defined(MFC_OpenACC)
448# 41 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
450# 41 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
451#elif defined(MFC_OpenMP)
452# 41 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
454# 41 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
460# 45 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
461#if defined(MFC_OpenACC)
462# 45 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
464# 45 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
465#elif defined(MFC_OpenMP)
466# 45 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
468# 45 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
482 integer :: i, xp, yp, zp
483 integer :: xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper
491 do xp = xp_lower, xp_upper
492 do yp = yp_lower, yp_upper
493 do zp = zp_lower, zp_upper
497 else if (
patch_ib(i)%geometry == 9)
then
499 else if (
patch_ib(i)%geometry == 10)
then
501 else if (
patch_ib(i)%geometry == 11)
then
503 else if (
patch_ib(i)%geometry == 12)
then
517 do xp = xp_lower, xp_upper
518 do yp = yp_lower, yp_upper
522 else if (
patch_ib(i)%geometry == 3)
then
524 else if (
patch_ib(i)%geometry == 4)
then
526 else if (
patch_ib(i)%geometry == 5)
then
528 else if (
patch_ib(i)%geometry == 6)
then
542 integer,
intent(in) :: patch_id
543 integer,
intent(in) :: xp, yp
545 real(wp),
dimension(1:2) :: center
547 integer :: i, j, il, ir, jl, jr
548 integer :: encoded_patch_id
562 ir =
m + gp_layers + 1
563 jr =
n + gp_layers + 1
570# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
572# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
573#if defined(MFC_OpenACC)
574# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
576# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
577#elif defined(MFC_OpenMP)
578# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
580# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
582# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
584# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
586# 145 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
590 if ((
x_cc(i) - center(1))**2 + (
y_cc(j) - center(2))**2 <= radius**2)
then
591 ib_markers%sf(i, j, 0) = encoded_patch_id
596# 153 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
597#if defined(MFC_OpenACC)
598# 153 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
600# 153 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
601#elif defined(MFC_OpenMP)
602# 153 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
604# 153 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
606# 153 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
614 integer,
intent(in) :: patch_id
616 integer,
intent(in) :: xp, yp
617 real(wp) :: f, ca_in, pa, ma, ta
618 real(wp) :: xa, yt, xu, yu, xl, yl, xc, yc, dycdxc, sin_c, cos_c
619 integer :: i, j, k, il, ir, jl, jr
621 integer :: encoded_patch_id
622 real(wp),
dimension(1:3) :: xy_local, offset
623 real(wp),
dimension(1:2) :: center
624 real(wp),
dimension(1:3,1:3) :: inverse_rotation
632 inverse_rotation(:,:) =
patch_ib(patch_id)%rotation_matrix_inverse(:,:)
633 offset(:) =
patch_ib(patch_id)%centroid_offset(:)
635 np1 = int((pa*ca_in/
dx(0))*20)
636 np2 = int(((ca_in - pa*ca_in)/
dx(0))*20)
639# 184 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
640#if defined(MFC_OpenACC)
641# 184 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
643# 184 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
644#elif defined(MFC_OpenMP)
645# 184 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
647# 184 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
652# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
654# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
655 use iso_fortran_env,
only: output_unit
656# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
658# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
659 print *,
'm_ib_patches.fpp:187: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
660# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
662# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
663 call flush (output_unit)
664# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
666# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
668# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
670# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
672# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
674# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
675#if defined(MFC_OpenACC)
676# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
678# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
679#elif defined(MFC_OpenMP)
680# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
682# 187 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
685# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
687# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
688 use iso_fortran_env,
only: output_unit
689# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
691# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
692 print *,
'm_ib_patches.fpp:188: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
693# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
695# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
696 call flush (output_unit)
697# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
699# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
701# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
702 allocate (airfoil_grid_l(1:np))
703# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
705# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
707# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
708#if defined(MFC_OpenACC)
709# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
711# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
712#elif defined(MFC_OpenMP)
713# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
715# 188 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
719 airfoil_grid_u(1)%x = 0._wp
720 airfoil_grid_u(1)%y = 0._wp
722 airfoil_grid_l(1)%x = 0._wp
723 airfoil_grid_l(1)%y = 0._wp
725 do i = 1, np1 + np2 - 1
729 xc = i*(pa*ca_in/np1)
731 yc = (ma/pa**2)*(2*pa*xa - xa**2)
732 dycdxc = (2*ma/pa**2)*(pa - xa)
734 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
736 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
737 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
740 yt = (5._wp*ta)*(0.2969_wp*xa**0.5_wp - 0.126_wp*xa - 0.3516_wp*xa**2._wp + 0.2843_wp*xa**3 - 0.1015_wp*xa**4)
741 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
742 cos_c = 1/(1 + dycdxc**2)**0.5_wp
756 airfoil_grid_u(i + 1)%x = xu
757 airfoil_grid_u(i + 1)%y = yu
759 airfoil_grid_l(i + 1)%x = xl
760 airfoil_grid_l(i + 1)%y = yl
763 airfoil_grid_u(np)%x = ca_in
764 airfoil_grid_u(np)%y = 0._wp
766 airfoil_grid_l(np)%x = ca_in
767 airfoil_grid_l(np)%y = 0._wp
770# 241 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
771#if defined(MFC_OpenACC)
772# 241 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
774# 241 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
775#elif defined(MFC_OpenMP)
776# 241 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
778# 241 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
788 ir = m + gp_layers + 1
789 jr = n + gp_layers + 1
795# 256 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
797# 256 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
798#if defined(MFC_OpenACC)
799# 256 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
801# 256 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
802#elif defined(MFC_OpenMP)
803# 256 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
805# 256 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
807# 256 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
809# 256 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
811# 256 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
813# 258 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
816 xy_local = [x_cc(i) - center(1), y_cc(
j) - center(2), 0._wp]
817 xy_local = matmul(inverse_rotation, xy_local)
818 xy_local = xy_local - offset
820 if (xy_local(1) >= 0._wp .and. xy_local(1) <= ca_in)
then
821 xa = xy_local(1)/ca_in
823 yc = (ma/pa**2)*(2*pa*xa - xa**2)
824 dycdxc = (2*ma/pa**2)*(pa - xa)
826 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
827 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
829 if (xy_local(2) >= 0._wp)
then
831 do while (airfoil_grid_u(
k)%x < xy_local(1) .and.
k <= np)
834 if (f_approx_equal(airfoil_grid_u(
k)%x, xy_local(1)))
then
835 if (xy_local(2) <= airfoil_grid_u(
k)%y)
then
836 ib_markers%sf(i,
j, 0) = encoded_patch_id
839 f = (airfoil_grid_u(
k)%x - xy_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
840 if (xy_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
841 ib_markers%sf(i,
j, 0) = encoded_patch_id
846 do while (airfoil_grid_l(
k)%x < xy_local(1))
849 if (f_approx_equal(airfoil_grid_l(
k)%x, xy_local(1)))
then
850 if (xy_local(2) >= airfoil_grid_l(
k)%y)
then
851 ib_markers%sf(i,
j, 0) = encoded_patch_id
854 f = (airfoil_grid_l(
k)%x - xy_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
856 if (xy_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
857 ib_markers%sf(i,
j, 0) = encoded_patch_id
865# 308 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
866#if defined(MFC_OpenACC)
867# 308 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
869# 308 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
870#elif defined(MFC_OpenMP)
871# 308 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
873# 308 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
875# 308 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
883 integer,
intent(in) :: patch_id
884 type(integer_field),
intent(inout) :: ib_markers
885 integer,
intent(in) :: xp, yp, zp
886 real(wp) :: lz, z_max, z_min, f, ca_in, pa, ma, ta, xa, yt, xu, yu, xl, yl, xc, yc, dycdxc, sin_c, cos_c
887 integer :: i, j, k, l, il, ir, jl, jr, ll, lr
889 integer :: encoded_patch_id
890 real(wp),
dimension(1:3) :: xyz_local, center, offset
891 real(wp),
dimension(1:3,1:3) :: inverse_rotation
893 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
894 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
895 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
896 lz = patch_ib(patch_id)%length_z
897 ca_in = patch_ib(patch_id)%c
898 pa = patch_ib(patch_id)%p
899 ma = patch_ib(patch_id)%m
900 ta = patch_ib(patch_id)%t
901 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
902 offset(:) = patch_ib(patch_id)%centroid_offset(:)
907 np1 = int((pa*ca_in/dx(0))*20)
908 np2 = int(((ca_in - pa*ca_in)/dx(0))*20)
911# 342 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
912#if defined(MFC_OpenACC)
913# 342 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
915# 342 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
916#elif defined(MFC_OpenMP)
917# 342 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
919# 342 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
922 if (.not.
allocated(airfoil_grid_u))
then
924# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
926# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
927 use iso_fortran_env,
only: output_unit
928# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
930# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
931 print *,
'm_ib_patches.fpp:345: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
932# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
934# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
935 call flush (output_unit)
936# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
938# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
940# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
941 allocate (airfoil_grid_u(1:np))
942# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
944# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
946# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
947#if defined(MFC_OpenACC)
948# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
950# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
951#elif defined(MFC_OpenMP)
952# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
954# 345 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
957# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
959# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
960 use iso_fortran_env,
only: output_unit
961# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
963# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
964 print *,
'm_ib_patches.fpp:346: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
965# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
967# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
968 call flush (output_unit)
969# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
971# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
973# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
974 allocate (airfoil_grid_l(1:np))
975# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
977# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
979# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
980#if defined(MFC_OpenACC)
981# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
983# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
984#elif defined(MFC_OpenMP)
985# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
987# 346 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
990 airfoil_grid_u(1)%x = 0._wp
991 airfoil_grid_u(1)%y = 0._wp
993 airfoil_grid_l(1)%x = 0._wp
994 airfoil_grid_l(1)%y = 0._wp
996 do i = 1, np1 + np2 - 1
998 xc = i*(pa*ca_in/np1)
1000 yc = (ma/pa**2)*(2*pa*xa - xa**2)
1001 dycdxc = (2*ma/pa**2)*(pa - xa)
1003 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
1005 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
1006 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
1009 yt = (5._wp*ta)*(0.2969_wp*xa**0.5_wp - 0.126_wp*xa - 0.3516_wp*xa**2._wp + 0.2843_wp*xa**3 - 0.1015_wp*xa**4)
1010 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
1011 cos_c = 1/(1 + dycdxc**2)**0.5_wp
1025 airfoil_grid_u(i + 1)%x = xu
1026 airfoil_grid_u(i + 1)%y = yu
1028 airfoil_grid_l(i + 1)%x = xl
1029 airfoil_grid_l(i + 1)%y = yl
1032 airfoil_grid_u(np)%x = ca_in
1033 airfoil_grid_u(np)%y = 0._wp
1035 airfoil_grid_l(np)%x = ca_in
1036 airfoil_grid_l(np)%y = 0._wp
1039# 396 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1040#if defined(MFC_OpenACC)
1041# 396 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1043# 396 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1044#elif defined(MFC_OpenMP)
1045# 396 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1047# 396 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1058 ir = m + gp_layers + 1
1059 jr = n + gp_layers + 1
1060 lr = p + gp_layers + 1
1067# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1069# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1070#if defined(MFC_OpenACC)
1071# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1073# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1074#elif defined(MFC_OpenMP)
1075# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1077# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1079# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1081# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1083# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1085# 416 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1089 xyz_local = [x_cc(i) - center(1), y_cc(
j) - center(2), &
1090 & z_cc(
l) - center(3)]
1091 xyz_local = matmul(inverse_rotation, xyz_local)
1092 xyz_local = xyz_local - offset
1094 if (xyz_local(3) >= z_min .and. xyz_local(3) <= z_max)
then
1095 if (xyz_local(1) >= 0._wp .and. xyz_local(1) <= ca_in)
then
1096 if (xyz_local(2) >= 0._wp)
then
1098 do while (airfoil_grid_u(
k)%x < xyz_local(1))
1101 if (f_approx_equal(airfoil_grid_u(
k)%x, xyz_local(1)))
then
1102 if (xyz_local(2) <= airfoil_grid_u(
k)%y)
then
1104 ib_markers%sf(i,
j,
l) = encoded_patch_id
1107 f = (airfoil_grid_u(
k)%x - xyz_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
1108 if (xyz_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
1109 ib_markers%sf(i,
j,
l) = encoded_patch_id
1114 do while (airfoil_grid_l(
k)%x < xyz_local(1))
1117 if (f_approx_equal(airfoil_grid_l(
k)%x, xyz_local(1)))
then
1118 if (xyz_local(2) >= airfoil_grid_l(
k)%y)
then
1119 ib_markers%sf(i,
j,
l) = encoded_patch_id
1122 f = (airfoil_grid_l(
k)%x - xyz_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
1124 if (xyz_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
1125 ib_markers%sf(i,
j,
l) = encoded_patch_id
1135# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1136#if defined(MFC_OpenACC)
1137# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1139# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1140#elif defined(MFC_OpenMP)
1141# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1143# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1145# 464 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1153 integer,
intent(in) :: patch_id
1154 type(integer_field),
intent(inout) :: ib_markers
1155 integer,
intent(in) :: xp, yp
1156 integer :: i, j, il, ir, jl, jr
1157 integer :: encoded_patch_id
1158 real(wp) :: corner_distance
1159 real(wp),
dimension(1:3) :: xy_local
1160 real(wp),
dimension(1:2) :: length, center
1161 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1165 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1166 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1167 length(1) = patch_ib(patch_id)%length_x
1168 length(2) = patch_ib(patch_id)%length_y
1169 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1177 ir = m + gp_layers + 1
1178 jr = n + gp_layers + 1
1179 corner_distance = sqrt(dot_product(length, length))/2._wp
1180 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1181 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1185# 502 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1187# 502 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1188#if defined(MFC_OpenACC)
1189# 502 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1191# 502 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1192#elif defined(MFC_OpenMP)
1193# 502 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1195# 502 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1197# 502 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1199# 502 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1201# 502 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1203# 504 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1207 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1208 xy_local = matmul(inverse_rotation, xy_local)
1210 if (-0.5_wp*length(1) <= xy_local(1) .and. 0.5_wp*length(1) >= xy_local(1) .and. -0.5_wp*length(2) <= xy_local(2) &
1211 & .and. 0.5_wp*length(2) >= xy_local(2))
then
1213 ib_markers%sf(i, j, 0) = encoded_patch_id
1218# 517 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1219#if defined(MFC_OpenACC)
1220# 517 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1222# 517 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1223#elif defined(MFC_OpenMP)
1224# 517 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1226# 517 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1228# 517 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1236 integer,
intent(in) :: patch_id
1237 type(integer_field),
intent(inout) :: ib_markers
1238 integer,
intent(in) :: xp, yp, zp
1241 integer :: il, ir, jl, jr, kl, kr
1242 integer :: encoded_patch_id
1244 real(wp),
dimension(1:3) :: center
1250 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1251 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1252 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1253 radius = patch_ib(patch_id)%radius
1262 ir = m + gp_layers + 1
1263 jr = n + gp_layers + 1
1264 kr = p + gp_layers + 1
1272# 559 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1274# 559 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1275#if defined(MFC_OpenACC)
1276# 559 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1278# 559 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1279#elif defined(MFC_OpenMP)
1280# 559 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1282# 559 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1284# 559 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1286# 559 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1288# 559 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1293 if (grid_geometry == 3)
then
1300 if (((x_cc(i) - center(1))**2 + (
cart_y - center(2))**2 + (
cart_z - center(3))**2 <= radius**2))
then
1301 ib_markers%sf(i, j, k) = encoded_patch_id
1307# 576 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1308#if defined(MFC_OpenACC)
1309# 576 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1311# 576 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1312#elif defined(MFC_OpenMP)
1313# 576 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1315# 576 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1317# 576 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1325 integer,
intent(in) :: patch_id
1326 type(integer_field),
intent(inout) :: ib_markers
1327 integer,
intent(in) :: xp, yp, zp
1328 integer :: i, j, k, ir, il, jr, jl, kr, kl
1329 integer :: encoded_patch_id
1330 real(wp),
dimension(1:3) :: xyz_local, center, length
1331 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1332 real(wp) :: corner_distance
1336 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1337 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1338 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1339 length(1) = patch_ib(patch_id)%length_x
1340 length(2) = patch_ib(patch_id)%length_y
1341 length(3) = patch_ib(patch_id)%length_z
1342 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1351 ir = m + gp_layers + 1
1352 jr = n + gp_layers + 1
1353 kr = p + gp_layers + 1
1354 corner_distance = sqrt(dot_product(length, length))/2._wp
1355 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1356 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1357 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1363# 620 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1365# 620 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1366#if defined(MFC_OpenACC)
1367# 620 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1369# 620 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1370#elif defined(MFC_OpenMP)
1371# 620 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1373# 620 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1375# 620 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1377# 620 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1379# 620 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1381# 622 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1385 if (grid_geometry == 3)
then
1393 xyz_local = matmul(inverse_rotation, xyz_local)
1395 if (-0.5*length(1) <= xyz_local(1) .and. 0.5*length(1) >= xyz_local(1) .and. -0.5*length(2) <= xyz_local(2) &
1396 & .and. 0.5*length(2) >= xyz_local(2) .and. -0.5*length(3) <= xyz_local(3) .and. 0.5*length(3) &
1397 & >= xyz_local(3))
then
1399 ib_markers%sf(i, j, k) = encoded_patch_id
1405# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1406#if defined(MFC_OpenACC)
1407# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1409# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1410#elif defined(MFC_OpenMP)
1411# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1413# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1415# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1423 integer,
intent(in) :: patch_id
1424 type(integer_field),
intent(inout) :: ib_markers
1425 integer,
intent(in) :: xp, yp, zp
1426 integer :: i, j, k, il, ir, jl, jr, kl, kr
1427 integer :: encoded_patch_id
1429 real(wp),
dimension(1:3) :: xyz_local, center, length
1430 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1431 real(wp) :: corner_distance
1435 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1436 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1437 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1438 length(1) = patch_ib(patch_id)%length_x
1439 length(2) = patch_ib(patch_id)%length_y
1440 length(3) = patch_ib(patch_id)%length_z
1441 radius = patch_ib(patch_id)%radius
1442 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1450 ir = m + gp_layers + 1
1451 jr = n + gp_layers + 1
1452 kr = p + gp_layers + 1
1453 corner_distance = sqrt(radius**2 + maxval(length)**2)
1454 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1455 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1456 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1462# 689 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1464# 689 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1465#if defined(MFC_OpenACC)
1466# 689 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1468# 689 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1469#elif defined(MFC_OpenMP)
1470# 689 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1472# 689 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1474# 689 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1476# 689 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1478# 689 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1480# 691 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1484 if (grid_geometry == 3)
then
1491 xyz_local = matmul(inverse_rotation, xyz_local)
1493 if (((.not. f_is_default(length(1)) .and. xyz_local(2)**2 + xyz_local(3)**2 <= radius**2 .and. &
1494 & -0.5_wp*length(1) <= xyz_local(1) .and. 0.5_wp*length(1) >= xyz_local(1)) &
1495 & .or. (.not. f_is_default(length(2)) .and. xyz_local(1)**2 + xyz_local(3)**2 <= radius**2 .and. &
1496 & -0.5_wp*length(2) <= xyz_local(2) .and. 0.5_wp*length(2) >= xyz_local(2)) &
1497 & .or. (.not. f_is_default(length(3)) .and. xyz_local(1)**2 + xyz_local(2)**2 <= radius**2 .and. &
1498 & -0.5_wp*length(3) <= xyz_local(3) .and. 0.5_wp*length(3) >= xyz_local(3))))
then
1500 ib_markers%sf(i, j, k) = encoded_patch_id
1506# 715 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1507#if defined(MFC_OpenACC)
1508# 715 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1510# 715 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1511#elif defined(MFC_OpenMP)
1512# 715 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1514# 715 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1516# 715 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1524 integer,
intent(in) :: patch_id
1525 type(integer_field),
intent(inout) :: ib_markers
1526 integer,
intent(in) :: xp, yp
1527 integer :: i, j, il, ir, jl, jr
1528 integer :: encoded_patch_id
1529 real(wp),
dimension(1:3) :: xy_local
1530 real(wp),
dimension(1:2) :: ellipse_coeffs
1531 real(wp),
dimension(1:2) :: center
1532 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1536 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1537 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1538 ellipse_coeffs(1) = 0.5_wp*patch_ib(patch_id)%length_x
1539 ellipse_coeffs(2) = 0.5_wp*patch_ib(patch_id)%length_y
1540 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1548 ir = m + gp_layers + 1
1549 jr = n + gp_layers + 1
1550 call get_bounding_indices(center(1) - maxval(ellipse_coeffs)*2._wp, center(1) + maxval(ellipse_coeffs)*2._wp, x_cc, il, ir)
1551 call get_bounding_indices(center(2) - maxval(ellipse_coeffs)*2._wp, center(2) + maxval(ellipse_coeffs)*2._wp, y_cc, jl, jr)
1555# 752 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1557# 752 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1558#if defined(MFC_OpenACC)
1559# 752 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1561# 752 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1562#elif defined(MFC_OpenMP)
1563# 752 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1565# 752 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1567# 752 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1569# 752 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1571# 752 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1573# 754 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1577 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1578 xy_local = matmul(inverse_rotation, xy_local)
1581 if ((xy_local(1)/ellipse_coeffs(1))**2 + (xy_local(2)/ellipse_coeffs(2))**2 <= 1._wp)
then
1583 ib_markers%sf(i, j, 0) = encoded_patch_id
1588# 767 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1589#if defined(MFC_OpenACC)
1590# 767 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1592# 767 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1593#elif defined(MFC_OpenMP)
1594# 767 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1596# 767 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1598# 767 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1606 integer,
intent(in) :: patch_id
1607 type(integer_field),
intent(inout) :: ib_markers
1608 integer,
intent(in) :: xp, yp
1609 integer :: i, j, k, il, ir, jl, jr
1610 integer :: spc, encoded_patch_id
1612 real(wp) :: lx(2), ly(2)
1613 real(wp),
dimension(1:2) :: bbox_min, bbox_max
1614 real(wp),
dimension(1:3) :: local_corner, world_corner
1615 real(wp) :: eta, threshold
1616 real(wp),
dimension(1:3) :: point, local_point, offset
1617 real(wp),
dimension(1:3) :: center, xy_local
1618 real(wp),
dimension(1:3,1:3) :: inverse_rotation, rotation
1621 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1622 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1623 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1624 rotation(:,:) = patch_ib(patch_id)%rotation_matrix(:,:)
1625 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1626 spc = patch_ib(patch_id)%model_spc
1627 threshold = patch_ib(patch_id)%model_threshold
1634 ir = m + gp_layers + 1
1635 jr = n + gp_layers + 1
1638 lx(1) = stl_bounding_boxes(patch_id, 1, 1) + offset(1)
1639 lx(2) = stl_bounding_boxes(patch_id, 1, 3) + offset(1)
1640 ly(1) = stl_bounding_boxes(patch_id, 2, 1) + offset(2)
1641 ly(2) = stl_bounding_boxes(patch_id, 2, 3) + offset(2)
1648 local_corner = [lx(cx), ly(cy), 0._wp]
1649 world_corner = matmul(rotation, local_corner) + center
1650 bbox_min(1) = min(bbox_min(1), world_corner(1))
1651 bbox_min(2) = min(bbox_min(2), world_corner(2))
1652 bbox_max(1) = max(bbox_max(1), world_corner(1))
1653 bbox_max(2) = max(bbox_max(2), world_corner(2))
1661# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1663# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1664#if defined(MFC_OpenACC)
1665# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1667# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1668#elif defined(MFC_OpenMP)
1669# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1671# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1673# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1675# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1677# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1679# 830 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1682 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1683 xy_local = matmul(inverse_rotation, xy_local)
1684 xy_local = xy_local - offset
1686 eta = f_model_is_inside_flat(gpu_ntrs(patch_id), patch_id, xy_local)
1689 if (eta > threshold)
then
1690 ib_markers%sf(i, j, 0) = encoded_patch_id
1695# 844 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1696#if defined(MFC_OpenACC)
1697# 844 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1699# 844 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1700#elif defined(MFC_OpenMP)
1701# 844 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1703# 844 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1705# 844 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1713 integer,
intent(in) :: patch_id
1714 type(integer_field),
intent(inout) :: ib_markers
1715 integer,
intent(in) :: xp, yp, zp
1716 integer :: i, j, k, il, ir, jl, jr, kl, kr
1717 integer :: spc, encoded_patch_id
1718 real(wp) :: eta, threshold, corner_distance
1719 real(wp),
dimension(1:3) :: point, local_point, offset
1720 real(wp),
dimension(1:3) :: center, xyz_local
1721 real(wp),
dimension(1:3,1:3) :: inverse_rotation, rotation
1722 integer :: cx, cy, cz
1723 real(wp) :: lx(2), ly(2), lz(2)
1724 real(wp),
dimension(1:3) :: bbox_min, bbox_max, local_corner, world_corner
1727 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1728 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1729 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1730 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1731 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1732 spc = patch_ib(patch_id)%model_spc
1733 threshold = patch_ib(patch_id)%model_threshold
1734 rotation(:,:) = patch_ib(patch_id)%rotation_matrix(:,:)
1742 ir = m + gp_layers + 1
1743 jr = n + gp_layers + 1
1744 kr = p + gp_layers + 1
1747 lx(1) = stl_bounding_boxes(patch_id, 1, 1) + offset(1)
1748 lx(2) = stl_bounding_boxes(patch_id, 1, 3) + offset(1)
1749 ly(1) = stl_bounding_boxes(patch_id, 2, 1) + offset(2)
1750 ly(2) = stl_bounding_boxes(patch_id, 2, 3) + offset(2)
1751 lz(1) = stl_bounding_boxes(patch_id, 3, 1) + offset(3)
1752 lz(2) = stl_bounding_boxes(patch_id, 3, 3) + offset(3)
1760 local_corner = [lx(cx), ly(cy), lz(cz)]
1761 world_corner = matmul(rotation, local_corner) + center
1762 bbox_min(1) = min(bbox_min(1), world_corner(1))
1763 bbox_min(2) = min(bbox_min(2), world_corner(2))
1764 bbox_min(3) = min(bbox_min(3), world_corner(3))
1765 bbox_max(1) = max(bbox_max(1), world_corner(1))
1766 bbox_max(2) = max(bbox_max(2), world_corner(2))
1767 bbox_max(3) = max(bbox_max(3), world_corner(3))
1777# 914 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1779# 914 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1780#if defined(MFC_OpenACC)
1781# 914 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1783# 914 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1784#elif defined(MFC_OpenMP)
1785# 914 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1787# 914 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1789# 914 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1791# 914 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1793# 914 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1795# 916 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1799 xyz_local = [x_cc(i) - center(1), y_cc(j) - center(2), z_cc(k) - center(3)]
1800 xyz_local = matmul(inverse_rotation, xyz_local)
1801 xyz_local = xyz_local - offset
1803 eta = f_model_is_inside_flat(gpu_ntrs(patch_id), patch_id, xyz_local)
1805 if (eta > patch_ib(patch_id)%model_threshold)
then
1806 ib_markers%sf(i, j, k) = encoded_patch_id
1812# 931 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1813#if defined(MFC_OpenACC)
1814# 931 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1816# 931 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1817#elif defined(MFC_OpenMP)
1818# 931 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1820# 931 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1822# 931 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1830 integer,
intent(in) :: patch_id
1832 real(wp),
dimension(3, 3, 3) :: rotation
1837 if (num_dims == 3)
then
1839 angle = patch_ib(patch_id)%angles(1)
1840 rotation(1, 1,:) = [1._wp, 0._wp, 0._wp]
1841 rotation(1, 2,:) = [0._wp, cos(angle), -sin(angle)]
1842 rotation(1, 3,:) = [0._wp, sin(angle), cos(angle)]
1844 angle = patch_ib(patch_id)%angles(2)
1845 rotation(2, 1,:) = [cos(angle), 0._wp, sin(angle)]
1846 rotation(2, 2,:) = [0._wp, 1._wp, 0._wp]
1847 rotation(2, 3,:) = [-sin(angle), 0._wp, cos(angle)]
1850 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(rotation(1,:,:), rotation(2,:,:))
1851 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(2,:,:)), transpose(rotation(1,:,:)))
1855 angle = patch_ib(patch_id)%angles(3)
1856 rotation(3, 1,:) = [cos(angle), -sin(angle), 0._wp]
1857 rotation(3, 2,:) = [sin(angle), cos(angle), 0._wp]
1858 rotation(3, 3,:) = [0._wp, 0._wp, 1._wp]
1860 if (num_dims == 3)
then
1862 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(patch_ib(patch_id)%rotation_matrix(:,:), rotation(3,:,:))
1863 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(3,:,:)), &
1864 & patch_ib(patch_id)%rotation_matrix_inverse(:,:))
1867 patch_ib(patch_id)%rotation_matrix(:,:) = rotation(3,:,:)
1868 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = transpose(rotation(3,:,:))
1877# 984 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1879# 984 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1881# 984 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1883# 984 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1885# 984 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1887# 984 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1889# 984 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1892 real(wp),
intent(in) :: cyl_y, cyl_z
1894 cart_y = cyl_y*sin(cyl_z)
1895 cart_z = cyl_y*cos(cyl_z)
1903# 996 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1905# 996 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1907# 996 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1909# 996 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1911# 996 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1913# 996 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1915# 996 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1918 real(wp),
dimension(1:3),
intent(in) :: cyl
1919 real(wp),
dimension(1:3) :: cart
1921 cart = (/cyl(1), cyl(2)*sin(cyl(3)), cyl(2)*cos(cyl(3))/)
1929# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1931# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1933# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1935# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1937# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1939# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1941# 1008 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1944 real(wp),
intent(in) :: cyl_x, cyl_y
1952 real(wp),
intent(in) :: left_bound, right_bound
1953 integer,
intent(inout) :: left_index, right_index
1954 real(wp),
dimension(-buff_size:),
intent(in) :: cell_centers
1955 integer :: itr_left, itr_middle, itr_right
1957 itr_left = left_index
1958 itr_right = right_index
1960 do while (itr_left + 1 < itr_right)
1961 itr_middle = (itr_left + itr_right)/2
1962 if (cell_centers(itr_middle) < left_bound)
then
1963 itr_left = itr_middle
1964 else if (cell_centers(itr_middle) > left_bound)
then
1965 itr_right = itr_middle
1967 itr_left = itr_middle
1971 left_index = itr_left
1973 itr_right = right_index
1974 do while (itr_left + 1 < itr_right)
1975 itr_middle = (itr_left + itr_right)/2
1976 if (cell_centers(itr_middle) < right_bound)
then
1977 itr_left = itr_middle
1978 else if (cell_centers(itr_middle) > right_bound)
then
1979 itr_right = itr_middle
1981 itr_right = itr_middle
1985 right_index = itr_right
1992 integer,
intent(in) :: patch_id, x_periodicity, y_periodicity, z_periodicity
1993 integer,
intent(out) :: encoded_patch_id
1994 integer :: temp_x_per, temp_y_per, temp_z_per, offset
1996 encoded_patch_id = patch_id
1998 temp_x_per = x_periodicity;
if (x_periodicity == -1) temp_x_per = 2
1999 temp_y_per = y_periodicity;
if (y_periodicity == -1) temp_y_per = 2
2000 temp_z_per = z_periodicity;
if (z_periodicity == -1) temp_z_per = 2
2002 offset = (num_ibs + 1)*temp_x_per + 3*(num_ibs + 1)*temp_y_per + 9*(num_ibs + 1)*temp_z_per
2003 encoded_patch_id = patch_id + offset
2011# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2013# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2015# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2017# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2019# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2021# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2023# 1076 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2026 integer,
intent(in) :: encoded_patch_id
2027 integer,
intent(out) :: patch_id, x_periodicity, y_periodicity, z_periodicity
2028 integer :: offset, remainder, xp, yp, zp, base
2032 patch_id = mod(encoded_patch_id - 1, base) + 1
2033 offset = (encoded_patch_id - patch_id)/base
2036 remainder = offset/3
2037 yp = mod(remainder, 3)
2041 x_periodicity = xp;
if (xp == 2) x_periodicity = -1
2042 y_periodicity = yp;
if (yp == 2) y_periodicity = -1
2043 z_periodicity = zp;
if (zp == 2) z_periodicity = -1
2050 integer,
intent(out) :: xp_lower, xp_upper, yp_lower, yp_upper
2051 integer,
intent(out),
optional :: zp_lower, zp_upper
2055# 1108 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2058 if (bc_x%beg == bc_periodic)
then
2066# 1108 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2069 if (bc_y%beg == bc_periodic)
then
2077# 1119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2080 if (
present(zp_lower) .and. p /= 0)
then
2081 if (bc_z%beg == bc_periodic)
then
2093 pure elemental function f_r(myth, offset, a)
2096# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2098# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2100# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2102# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2104# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2106# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2108# 1136 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2110 real(wp),
intent(in) :: myth, offset, a
2116 b = 2._wp*a/(2._wp*pi)
2117 f_r = a + b*myth + offset
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
Immersed boundary patch parameters.
type(bounds_info) x_domain
type(vec3_dt), dimension(:), allocatable airfoil_grid_u
real(wp), dimension(:), allocatable, target y_cc
type(bounds_info) y_domain
real(wp), dimension(:), allocatable, target x_cc
real(wp), dimension(:), allocatable, target dx
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
Allocate memory and read initial condition data for IC extrusion.
subroutine s_ib_cylinder(patch_id, ib_markers, xp, yp, zp)
Mark cells inside a cylindrical immersed boundary.
subroutine, public s_update_ib_rotation_matrix(patch_id)
Compute a rotation matrix for converting to the rotating frame of the boundary.
subroutine s_ib_airfoil(patch_id, ib_markers, xp, yp)
Mark cells inside a 2D NACA 4-digit airfoil immersed boundary.
subroutine s_ib_3d_model(patch_id, ib_markers, xp, yp, zp)
The STL patch is a 3D geometry that is imported from an STL file.
subroutine s_ib_circle(patch_id, ib_markers, xp, yp)
Mark cells inside a circular immersed boundary.
type(bounds_info) z_boundary
subroutine s_get_periodicities(xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper)
Determine the periodic wrapping bounds in each direction.
subroutine s_ib_ellipse(patch_id, ib_markers, xp, yp)
Mark cells inside a 2D elliptical immersed boundary.
subroutine get_bounding_indices(left_bound, right_bound, cell_centers, left_index, right_index)
subroutine s_ib_3d_airfoil(patch_id, ib_markers, xp, yp, zp)
Mark cells inside a 3D extruded NACA 4-digit airfoil immersed boundary with finite span.
subroutine s_convert_cylindrical_to_cartesian_coord(cyl_y, cyl_z)
Convert cylindrical (r, theta) coordinates to Cartesian (y, z).
type(bounds_info) y_boundary
subroutine s_ib_model(patch_id, ib_markers, xp, yp)
The STL patch is a 2D geometry that is imported from an STL file.
character(len=5) istr
string to store int to string result for error checking
subroutine s_encode_patch_periodicity(patch_id, x_periodicity, y_periodicity, z_periodicity, encoded_patch_id)
Encode the patch ID with a unique offset containing periodicity information.
type(bounds_info) x_boundary
impure subroutine, public s_apply_ib_patches(ib_markers)
Apply all immersed boundary patch geometries to mark interior cells in the IB marker array.
subroutine s_ib_rectangle(patch_id, ib_markers, xp, yp)
Mark cells inside a rectangular immersed boundary.
pure real(wp) function, dimension(1:3), public f_convert_cyl_to_cart(cyl)
Convert a 3D cylindrical coordinate vector (x, r, theta) to Cartesian (x, y, z).
subroutine, public s_decode_patch_periodicity(encoded_patch_id, patch_id, x_periodicity, y_periodicity, z_periodicity)
Decode the encoded ID to recover the original patch ID and periodicity.
subroutine s_ib_sphere(patch_id, ib_markers, xp, yp, zp)
Mark cells inside a spherical immersed boundary.
pure elemental real(wp) function f_r(myth, offset, a)
Archimedes spiral function.
subroutine s_convert_cylindrical_to_spherical_coord(cyl_x, cyl_y)
Convert cylindrical coordinates (x, r) to the spherical azimuthal angle phi.
subroutine s_ib_cuboid(patch_id, ib_markers, xp, yp, zp)
Mark cells inside a cuboidal immersed boundary.
Binary STL file reader and processor for immersed boundary geometry.
subroutine, public s_instantiate_stl_models()
Load, transform, and register STL/OBJ immersed-boundary models onto the simulation grid.
MPI communication layer: domain decomposition, halo exchange, reductions, and parallel I/O setup.
Derived type adding beginning (beg) and end bounds info as attributes.
Derived type annexing an integer scalar field (SF).