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# 74 "/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# 32 "/home/runner/work/MFC/MFC/src/common/include/2dHardcodedIC.fpp"
69# 395 "/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
406 integer :: i, xp, yp, zp
407 integer :: xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper
415 do xp = xp_lower, xp_upper
416 do yp = yp_lower, yp_upper
417 do zp = zp_lower, zp_upper
421 else if (
patch_ib(i)%geometry == 9)
then
423 else if (
patch_ib(i)%geometry == 10)
then
425 else if (
patch_ib(i)%geometry == 11)
then
427 else if (
patch_ib(i)%geometry == 12)
then
441 do xp = xp_lower, xp_upper
442 do yp = yp_lower, yp_upper
446 else if (
patch_ib(i)%geometry == 3)
then
448 else if (
patch_ib(i)%geometry == 4)
then
450 else if (
patch_ib(i)%geometry == 5)
then
452 else if (
patch_ib(i)%geometry == 6)
then
466 integer,
intent(in) :: patch_id
467 integer,
intent(in) :: xp, yp
469 real(wp),
dimension(1:2) :: center
471 integer :: i, j, il, ir, jl, jr
472 integer :: encoded_patch_id
486 ir =
m + gp_layers + 1
487 jr =
n + gp_layers + 1
494# 119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
496# 119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
497#if defined(MFC_OpenACC)
498# 119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
500# 119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
501#elif defined(MFC_OpenMP)
502# 119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
504# 119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
506# 119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
508# 119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
510# 119 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
514 if ((
x_cc(i) - center(1))**2 + (
y_cc(j) - center(2))**2 <= radius**2)
then
515 ib_markers%sf(i, j, 0) = encoded_patch_id
520# 127 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
521#if defined(MFC_OpenACC)
522# 127 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
524# 127 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
525#elif defined(MFC_OpenMP)
526# 127 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
528# 127 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
530# 127 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
538 integer,
intent(in) :: patch_id
540 integer,
intent(in) :: xp, yp
541 real(wp) :: f, ca_in, pa, ma, ta
542 real(wp) :: xa, yt, xu, yu, xl, yl, xc, yc, dycdxc, sin_c, cos_c
543 integer :: i, j, k, il, ir, jl, jr
545 integer :: encoded_patch_id
546 real(wp),
dimension(1:3) :: xy_local, offset
547 real(wp),
dimension(1:2) :: center
548 real(wp),
dimension(1:3,1:3) :: inverse_rotation
556 inverse_rotation(:,:) =
patch_ib(patch_id)%rotation_matrix_inverse(:,:)
557 offset(:) =
patch_ib(patch_id)%centroid_offset(:)
559 np1 = int((pa*ca_in/
dx(0))*20)
560 np2 = int(((ca_in - pa*ca_in)/
dx(0))*20)
563# 158 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
564#if defined(MFC_OpenACC)
565# 158 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
567# 158 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
568#elif defined(MFC_OpenMP)
569# 158 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
571# 158 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
576# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
578# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
579 use iso_fortran_env,
only: output_unit
580# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
582# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
583 print *,
'm_ib_patches.fpp:161: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
584# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
586# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
587 call flush (output_unit)
588# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
590# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
592# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
594# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
596# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
598# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
599#if defined(MFC_OpenACC)
600# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
602# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
603#elif defined(MFC_OpenMP)
604# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
606# 161 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
609# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
611# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
612 use iso_fortran_env,
only: output_unit
613# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
615# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
616 print *,
'm_ib_patches.fpp:162: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
617# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
619# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
620 call flush (output_unit)
621# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
623# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
625# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
626 allocate (airfoil_grid_l(1:np))
627# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
629# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
631# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
632#if defined(MFC_OpenACC)
633# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
635# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
636#elif defined(MFC_OpenMP)
637# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
639# 162 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
643 airfoil_grid_u(1)%x = 0._wp
644 airfoil_grid_u(1)%y = 0._wp
646 airfoil_grid_l(1)%x = 0._wp
647 airfoil_grid_l(1)%y = 0._wp
649 do i = 1, np1 + np2 - 1
653 xc = i*(pa*ca_in/np1)
655 yc = (ma/pa**2)*(2*pa*xa - xa**2)
656 dycdxc = (2*ma/pa**2)*(pa - xa)
658 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
660 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
661 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
664 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)
665 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
666 cos_c = 1/(1 + dycdxc**2)**0.5_wp
680 airfoil_grid_u(i + 1)%x = xu
681 airfoil_grid_u(i + 1)%y = yu
683 airfoil_grid_l(i + 1)%x = xl
684 airfoil_grid_l(i + 1)%y = yl
687 airfoil_grid_u(np)%x = ca_in
688 airfoil_grid_u(np)%y = 0._wp
690 airfoil_grid_l(np)%x = ca_in
691 airfoil_grid_l(np)%y = 0._wp
694# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
695#if defined(MFC_OpenACC)
696# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
698# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
699#elif defined(MFC_OpenMP)
700# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
702# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
712 ir = m + gp_layers + 1
713 jr = n + gp_layers + 1
719# 230 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
721# 230 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
722#if defined(MFC_OpenACC)
723# 230 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
725# 230 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
726#elif defined(MFC_OpenMP)
727# 230 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
729# 230 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
731# 230 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
733# 230 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
735# 230 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
737# 232 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
740 xy_local = [x_cc(i) - center(1), y_cc(
j) - center(2), 0._wp]
741 xy_local = matmul(inverse_rotation, xy_local)
742 xy_local = xy_local - offset
744 if (xy_local(1) >= 0._wp .and. xy_local(1) <= ca_in)
then
745 xa = xy_local(1)/ca_in
747 yc = (ma/pa**2)*(2*pa*xa - xa**2)
748 dycdxc = (2*ma/pa**2)*(pa - xa)
750 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
751 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
753 if (xy_local(2) >= 0._wp)
then
755 do while (airfoil_grid_u(
k)%x < xy_local(1) .and.
k <= np)
758 if (f_approx_equal(airfoil_grid_u(
k)%x, xy_local(1)))
then
759 if (xy_local(2) <= airfoil_grid_u(
k)%y)
then
760 ib_markers%sf(i,
j, 0) = encoded_patch_id
763 f = (airfoil_grid_u(
k)%x - xy_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
764 if (xy_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
765 ib_markers%sf(i,
j, 0) = encoded_patch_id
770 do while (airfoil_grid_l(
k)%x < xy_local(1))
773 if (f_approx_equal(airfoil_grid_l(
k)%x, xy_local(1)))
then
774 if (xy_local(2) >= airfoil_grid_l(
k)%y)
then
775 ib_markers%sf(i,
j, 0) = encoded_patch_id
778 f = (airfoil_grid_l(
k)%x - xy_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
780 if (xy_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
781 ib_markers%sf(i,
j, 0) = encoded_patch_id
789# 282 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
790#if defined(MFC_OpenACC)
791# 282 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
793# 282 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
794#elif defined(MFC_OpenMP)
795# 282 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
797# 282 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
799# 282 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
807 integer,
intent(in) :: patch_id
808 type(integer_field),
intent(inout) :: ib_markers
809 integer,
intent(in) :: xp, yp, zp
810 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
811 integer :: i, j, k, l, il, ir, jl, jr, ll, lr
813 integer :: encoded_patch_id
814 real(wp),
dimension(1:3) :: xyz_local, center, offset
815 real(wp),
dimension(1:3,1:3) :: inverse_rotation
817 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
818 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
819 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
820 lz = patch_ib(patch_id)%length_z
821 ca_in = patch_ib(patch_id)%c
822 pa = patch_ib(patch_id)%p
823 ma = patch_ib(patch_id)%m
824 ta = patch_ib(patch_id)%t
825 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
826 offset(:) = patch_ib(patch_id)%centroid_offset(:)
831 np1 = int((pa*ca_in/dx(0))*20)
832 np2 = int(((ca_in - pa*ca_in)/dx(0))*20)
835# 316 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
836#if defined(MFC_OpenACC)
837# 316 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
839# 316 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
840#elif defined(MFC_OpenMP)
841# 316 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
843# 316 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
846 if (.not.
allocated(airfoil_grid_u))
then
848# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
850# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
851 use iso_fortran_env,
only: output_unit
852# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
854# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
855 print *,
'm_ib_patches.fpp:319: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
856# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
858# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
859 call flush (output_unit)
860# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
862# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
864# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
865 allocate (airfoil_grid_u(1:np))
866# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
868# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
870# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
871#if defined(MFC_OpenACC)
872# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
874# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
875#elif defined(MFC_OpenMP)
876# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
878# 319 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
881# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
883# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
884 use iso_fortran_env,
only: output_unit
885# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
887# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
888 print *,
'm_ib_patches.fpp:320: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
889# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
891# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
892 call flush (output_unit)
893# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
895# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
897# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
898 allocate (airfoil_grid_l(1:np))
899# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
901# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
903# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
904#if defined(MFC_OpenACC)
905# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
907# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
908#elif defined(MFC_OpenMP)
909# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
911# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
914 airfoil_grid_u(1)%x = 0._wp
915 airfoil_grid_u(1)%y = 0._wp
917 airfoil_grid_l(1)%x = 0._wp
918 airfoil_grid_l(1)%y = 0._wp
920 do i = 1, np1 + np2 - 1
922 xc = i*(pa*ca_in/np1)
924 yc = (ma/pa**2)*(2*pa*xa - xa**2)
925 dycdxc = (2*ma/pa**2)*(pa - xa)
927 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
929 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
930 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
933 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)
934 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
935 cos_c = 1/(1 + dycdxc**2)**0.5_wp
949 airfoil_grid_u(i + 1)%x = xu
950 airfoil_grid_u(i + 1)%y = yu
952 airfoil_grid_l(i + 1)%x = xl
953 airfoil_grid_l(i + 1)%y = yl
956 airfoil_grid_u(np)%x = ca_in
957 airfoil_grid_u(np)%y = 0._wp
959 airfoil_grid_l(np)%x = ca_in
960 airfoil_grid_l(np)%y = 0._wp
963# 370 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
964#if defined(MFC_OpenACC)
965# 370 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
967# 370 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
968#elif defined(MFC_OpenMP)
969# 370 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
971# 370 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
982 ir = m + gp_layers + 1
983 jr = n + gp_layers + 1
984 lr = p + gp_layers + 1
991# 388 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
993# 388 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
994#if defined(MFC_OpenACC)
995# 388 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
997# 388 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
998#elif defined(MFC_OpenMP)
999# 388 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1001# 388 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1003# 388 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1005# 388 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1007# 388 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1009# 390 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1014 xyz_local = [x_cc(i) - center(1), y_cc(
j) - center(2), z_cc(
l) - center(3)]
1015 xyz_local = matmul(inverse_rotation, xyz_local)
1016 xyz_local = xyz_local - offset
1018 if (xyz_local(3) >= z_min .and. xyz_local(3) <= z_max)
then
1019 if (xyz_local(1) >= 0._wp .and. xyz_local(1) <= ca_in)
then
1020 if (xyz_local(2) >= 0._wp)
then
1022 do while (airfoil_grid_u(
k)%x < xyz_local(1))
1025 if (f_approx_equal(airfoil_grid_u(
k)%x, xyz_local(1)))
then
1026 if (xyz_local(2) <= airfoil_grid_u(
k)%y)
then
1028 ib_markers%sf(i,
j,
l) = encoded_patch_id
1031 f = (airfoil_grid_u(
k)%x - xyz_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
1032 if (xyz_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
1033 ib_markers%sf(i,
j,
l) = encoded_patch_id
1038 do while (airfoil_grid_l(
k)%x < xyz_local(1))
1041 if (f_approx_equal(airfoil_grid_l(
k)%x, xyz_local(1)))
then
1042 if (xyz_local(2) >= airfoil_grid_l(
k)%y)
then
1043 ib_markers%sf(i,
j,
l) = encoded_patch_id
1046 f = (airfoil_grid_l(
k)%x - xyz_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
1048 if (xyz_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
1049 ib_markers%sf(i,
j,
l) = encoded_patch_id
1059# 438 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1060#if defined(MFC_OpenACC)
1061# 438 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1063# 438 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1064#elif defined(MFC_OpenMP)
1065# 438 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1067# 438 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1069# 438 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1077 integer,
intent(in) :: patch_id
1078 type(integer_field),
intent(inout) :: ib_markers
1079 integer,
intent(in) :: xp, yp
1080 integer :: i, j, il, ir, jl, jr
1081 integer :: encoded_patch_id
1082 real(wp) :: corner_distance
1083 real(wp),
dimension(1:3) :: xy_local
1084 real(wp),
dimension(1:2) :: length, center
1085 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1089 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1090 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1091 length(1) = patch_ib(patch_id)%length_x
1092 length(2) = patch_ib(patch_id)%length_y
1093 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1101 ir = m + gp_layers + 1
1102 jr = n + gp_layers + 1
1103 corner_distance = sqrt(dot_product(length, length))/2._wp
1104 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1105 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1109# 476 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1111# 476 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1112#if defined(MFC_OpenACC)
1113# 476 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1115# 476 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1116#elif defined(MFC_OpenMP)
1117# 476 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1119# 476 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1121# 476 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1123# 476 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1125# 476 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1127# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1131 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1132 xy_local = matmul(inverse_rotation, xy_local)
1134 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) &
1135 & .and. 0.5_wp*length(2) >= xy_local(2))
then
1137 ib_markers%sf(i, j, 0) = encoded_patch_id
1142# 491 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1143#if defined(MFC_OpenACC)
1144# 491 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1146# 491 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1147#elif defined(MFC_OpenMP)
1148# 491 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1150# 491 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1152# 491 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1160 integer,
intent(in) :: patch_id
1161 type(integer_field),
intent(inout) :: ib_markers
1162 integer,
intent(in) :: xp, yp, zp
1165 integer :: il, ir, jl, jr, kl, kr
1166 integer :: encoded_patch_id
1168 real(wp),
dimension(1:3) :: center
1174 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1175 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1176 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1177 radius = patch_ib(patch_id)%radius
1180 if (center(1) - radius > x_cc(m + gp_layers + 1) .or. center(1) + radius < x_cc(-gp_layers - 1) .or. center(2) &
1181 & - radius > y_cc(n + gp_layers + 1) .or. center(2) + radius < y_cc(-gp_layers - 1) .or. center(3) - radius > z_cc(p &
1182 & + gp_layers + 1) .or. center(3) + radius < z_cc(-gp_layers - 1))
then
1193 ir = m + gp_layers + 1
1194 jr = n + gp_layers + 1
1195 kr = p + gp_layers + 1
1203# 540 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1205# 540 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1206#if defined(MFC_OpenACC)
1207# 540 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1209# 540 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1210#elif defined(MFC_OpenMP)
1211# 540 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1213# 540 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1215# 540 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1217# 540 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1219# 540 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1225 if (((x_cc(i) - center(1))**2 + (y_cc(j) - center(2))**2 + (z_cc(k) - center(3))**2 <= radius**2))
then
1226 ib_markers%sf(i, j, k) = encoded_patch_id
1232# 551 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1233#if defined(MFC_OpenACC)
1234# 551 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1236# 551 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1237#elif defined(MFC_OpenMP)
1238# 551 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1240# 551 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1242# 551 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1250 integer,
intent(in) :: patch_id
1251 type(integer_field),
intent(inout) :: ib_markers
1252 integer,
intent(in) :: xp, yp, zp
1253 integer :: i, j, k, ir, il, jr, jl, kr, kl
1254 integer :: encoded_patch_id
1255 real(wp),
dimension(1:3) :: xyz_local, center, length
1256 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1257 real(wp) :: corner_distance
1261 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1262 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1263 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1264 length(1) = patch_ib(patch_id)%length_x
1265 length(2) = patch_ib(patch_id)%length_y
1266 length(3) = patch_ib(patch_id)%length_z
1267 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1276 ir = m + gp_layers + 1
1277 jr = n + gp_layers + 1
1278 kr = p + gp_layers + 1
1279 corner_distance = sqrt(dot_product(length, length))/2._wp
1280 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1281 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1282 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1288# 595 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1290# 595 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1291#if defined(MFC_OpenACC)
1292# 595 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1294# 595 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1295#elif defined(MFC_OpenMP)
1296# 595 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1298# 595 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1300# 595 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1302# 595 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1304# 595 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1306# 597 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1310 xyz_local = [x_cc(i), y_cc(j), z_cc(k)] - center
1311 xyz_local = matmul(inverse_rotation, xyz_local)
1313 if (-0.5*length(1) <= xyz_local(1) .and. 0.5*length(1) >= xyz_local(1) .and. -0.5*length(2) <= xyz_local(2) &
1314 & .and. 0.5*length(2) >= xyz_local(2) .and. -0.5*length(3) <= xyz_local(3) .and. 0.5*length(3) &
1315 & >= xyz_local(3))
then
1317 ib_markers%sf(i, j, k) = encoded_patch_id
1323# 612 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1324#if defined(MFC_OpenACC)
1325# 612 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1327# 612 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1328#elif defined(MFC_OpenMP)
1329# 612 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1331# 612 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1333# 612 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1341 integer,
intent(in) :: patch_id
1342 type(integer_field),
intent(inout) :: ib_markers
1343 integer,
intent(in) :: xp, yp, zp
1344 integer :: i, j, k, il, ir, jl, jr, kl, kr
1345 integer :: encoded_patch_id
1347 real(wp),
dimension(1:3) :: xyz_local, center, length
1348 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1349 real(wp) :: corner_distance
1353 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1354 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1355 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1356 length(1) = patch_ib(patch_id)%length_x
1357 length(2) = patch_ib(patch_id)%length_y
1358 length(3) = patch_ib(patch_id)%length_z
1359 radius = patch_ib(patch_id)%radius
1360 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1368 ir = m + gp_layers + 1
1369 jr = n + gp_layers + 1
1370 kr = p + gp_layers + 1
1371 corner_distance = sqrt(radius**2 + maxval(length)**2)
1372 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1373 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1374 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1380# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1382# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1383#if defined(MFC_OpenACC)
1384# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1386# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1387#elif defined(MFC_OpenMP)
1388# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1390# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1392# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1394# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1396# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1398# 659 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1402 xyz_local = [x_cc(i), y_cc(j), z_cc(k)] - center
1403 xyz_local = matmul(inverse_rotation, xyz_local)
1405 if (((.not. f_is_default(length(1)) .and. xyz_local(2)**2 + xyz_local(3)**2 <= radius**2 .and. &
1406 & -0.5_wp*length(1) <= xyz_local(1) .and. 0.5_wp*length(1) >= xyz_local(1)) &
1407 & .or. (.not. f_is_default(length(2)) .and. xyz_local(1)**2 + xyz_local(3)**2 <= radius**2 .and. &
1408 & -0.5_wp*length(2) <= xyz_local(2) .and. 0.5_wp*length(2) >= xyz_local(2)) &
1409 & .or. (.not. f_is_default(length(3)) .and. xyz_local(1)**2 + xyz_local(2)**2 <= radius**2 .and. &
1410 & -0.5_wp*length(3) <= xyz_local(3) .and. 0.5_wp*length(3) >= xyz_local(3))))
then
1412 ib_markers%sf(i, j, k) = encoded_patch_id
1418# 677 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1419#if defined(MFC_OpenACC)
1420# 677 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1422# 677 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1423#elif defined(MFC_OpenMP)
1424# 677 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1426# 677 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1428# 677 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1436 integer,
intent(in) :: patch_id
1437 type(integer_field),
intent(inout) :: ib_markers
1438 integer,
intent(in) :: xp, yp
1439 integer :: i, j, il, ir, jl, jr
1440 integer :: encoded_patch_id
1441 real(wp),
dimension(1:3) :: xy_local
1442 real(wp),
dimension(1:2) :: ellipse_coeffs
1443 real(wp),
dimension(1:2) :: center
1444 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1448 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1449 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1450 ellipse_coeffs(1) = 0.5_wp*patch_ib(patch_id)%length_x
1451 ellipse_coeffs(2) = 0.5_wp*patch_ib(patch_id)%length_y
1452 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1460 ir = m + gp_layers + 1
1461 jr = n + gp_layers + 1
1462 call get_bounding_indices(center(1) - maxval(ellipse_coeffs)*2._wp, center(1) + maxval(ellipse_coeffs)*2._wp, x_cc, il, ir)
1463 call get_bounding_indices(center(2) - maxval(ellipse_coeffs)*2._wp, center(2) + maxval(ellipse_coeffs)*2._wp, y_cc, jl, jr)
1467# 714 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1469# 714 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1470#if defined(MFC_OpenACC)
1471# 714 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1473# 714 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1474#elif defined(MFC_OpenMP)
1475# 714 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1477# 714 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1479# 714 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1481# 714 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1483# 714 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1485# 716 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1489 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1490 xy_local = matmul(inverse_rotation, xy_local)
1493 if ((xy_local(1)/ellipse_coeffs(1))**2 + (xy_local(2)/ellipse_coeffs(2))**2 <= 1._wp)
then
1495 ib_markers%sf(i, j, 0) = encoded_patch_id
1500# 729 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1501#if defined(MFC_OpenACC)
1502# 729 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1504# 729 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1505#elif defined(MFC_OpenMP)
1506# 729 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1508# 729 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1510# 729 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1518 integer,
intent(in) :: patch_id
1519 type(integer_field),
intent(inout) :: ib_markers
1520 integer,
intent(in) :: xp, yp
1521 integer :: i, j, il, ir, jl, jr
1522 integer :: spc, encoded_patch_id
1524 real(wp) :: lx(2), ly(2)
1525 real(wp),
dimension(1:2) :: bbox_min, bbox_max
1526 real(wp),
dimension(1:3) :: local_corner, world_corner
1527 real(wp) :: eta, threshold
1528 real(wp),
dimension(1:3) :: offset
1529 real(wp),
dimension(1:3) :: center, xy_local
1530 real(wp),
dimension(1:3,1:3) :: inverse_rotation, rotation
1533 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1534 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1535 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1536 rotation(:,:) = patch_ib(patch_id)%rotation_matrix(:,:)
1537 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1538 spc = patch_ib(patch_id)%model_spc
1539 threshold = patch_ib(patch_id)%model_threshold
1546 ir = m + gp_layers + 1
1547 jr = n + gp_layers + 1
1550 lx(1) = stl_bounding_boxes(patch_id, 1, 1) + offset(1)
1551 lx(2) = stl_bounding_boxes(patch_id, 1, 3) + offset(1)
1552 ly(1) = stl_bounding_boxes(patch_id, 2, 1) + offset(2)
1553 ly(2) = stl_bounding_boxes(patch_id, 2, 3) + offset(2)
1560 local_corner = [lx(cx), ly(cy), 0._wp]
1561 world_corner = matmul(rotation, local_corner) + center
1562 bbox_min(1) = min(bbox_min(1), world_corner(1))
1563 bbox_min(2) = min(bbox_min(2), world_corner(2))
1564 bbox_max(1) = max(bbox_max(1), world_corner(1))
1565 bbox_max(2) = max(bbox_max(2), world_corner(2))
1573# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1575# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1576#if defined(MFC_OpenACC)
1577# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1579# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1580#elif defined(MFC_OpenMP)
1581# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1583# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1585# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1587# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1589# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1591# 792 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1594 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1595 xy_local = matmul(inverse_rotation, xy_local)
1596 xy_local = xy_local - offset
1598 eta = f_model_is_inside_flat(gpu_ntrs(patch_id), patch_id, xy_local)
1601 if (eta > threshold)
then
1602 ib_markers%sf(i, j, 0) = encoded_patch_id
1607# 806 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1608#if defined(MFC_OpenACC)
1609# 806 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1611# 806 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1612#elif defined(MFC_OpenMP)
1613# 806 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1615# 806 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1617# 806 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1625 integer,
intent(in) :: patch_id
1626 type(integer_field),
intent(inout) :: ib_markers
1627 integer,
intent(in) :: xp, yp, zp
1628 integer :: i, j, k, il, ir, jl, jr, kl, kr
1629 integer :: spc, encoded_patch_id
1630 real(wp) :: eta, threshold
1631 real(wp),
dimension(1:3) :: offset
1632 real(wp),
dimension(1:3) :: center, xyz_local
1633 real(wp),
dimension(1:3,1:3) :: inverse_rotation, rotation
1634 integer :: cx, cy, cz
1635 real(wp) :: lx(2), ly(2), lz(2)
1636 real(wp),
dimension(1:3) :: bbox_min, bbox_max, local_corner, world_corner
1639 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1640 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1641 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1642 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1643 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1644 spc = patch_ib(patch_id)%model_spc
1645 threshold = patch_ib(patch_id)%model_threshold
1646 rotation(:,:) = patch_ib(patch_id)%rotation_matrix(:,:)
1654 ir = m + gp_layers + 1
1655 jr = n + gp_layers + 1
1656 kr = p + gp_layers + 1
1659 lx(1) = stl_bounding_boxes(patch_id, 1, 1) + offset(1)
1660 lx(2) = stl_bounding_boxes(patch_id, 1, 3) + offset(1)
1661 ly(1) = stl_bounding_boxes(patch_id, 2, 1) + offset(2)
1662 ly(2) = stl_bounding_boxes(patch_id, 2, 3) + offset(2)
1663 lz(1) = stl_bounding_boxes(patch_id, 3, 1) + offset(3)
1664 lz(2) = stl_bounding_boxes(patch_id, 3, 3) + offset(3)
1672 local_corner = [lx(cx), ly(cy), lz(cz)]
1673 world_corner = matmul(rotation, local_corner) + center
1674 bbox_min(1) = min(bbox_min(1), world_corner(1))
1675 bbox_min(2) = min(bbox_min(2), world_corner(2))
1676 bbox_min(3) = min(bbox_min(3), world_corner(3))
1677 bbox_max(1) = max(bbox_max(1), world_corner(1))
1678 bbox_max(2) = max(bbox_max(2), world_corner(2))
1679 bbox_max(3) = max(bbox_max(3), world_corner(3))
1689# 876 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1691# 876 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1692#if defined(MFC_OpenACC)
1693# 876 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1695# 876 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1696#elif defined(MFC_OpenMP)
1697# 876 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1699# 876 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1701# 876 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1703# 876 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1705# 876 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1707# 878 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1711 xyz_local = [x_cc(i) - center(1), y_cc(j) - center(2), z_cc(k) - center(3)]
1712 xyz_local = matmul(inverse_rotation, xyz_local)
1713 xyz_local = xyz_local - offset
1715 eta = f_model_is_inside_flat(gpu_ntrs(patch_id), patch_id, xyz_local)
1717 if (eta > patch_ib(patch_id)%model_threshold)
then
1718 ib_markers%sf(i, j, k) = encoded_patch_id
1724# 893 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1725#if defined(MFC_OpenACC)
1726# 893 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1728# 893 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1729#elif defined(MFC_OpenMP)
1730# 893 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1732# 893 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1734# 893 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1742 integer,
intent(in) :: patch_id
1743 real(wp),
dimension(3, 3, 3) :: rotation
1748 if (num_dims == 3)
then
1750 angle = patch_ib(patch_id)%angles(1)
1751 rotation(1, 1,:) = [1._wp, 0._wp, 0._wp]
1752 rotation(1, 2,:) = [0._wp, cos(angle), -sin(angle)]
1753 rotation(1, 3,:) = [0._wp, sin(angle), cos(angle)]
1755 angle = patch_ib(patch_id)%angles(2)
1756 rotation(2, 1,:) = [cos(angle), 0._wp, sin(angle)]
1757 rotation(2, 2,:) = [0._wp, 1._wp, 0._wp]
1758 rotation(2, 3,:) = [-sin(angle), 0._wp, cos(angle)]
1761 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(rotation(1,:,:), rotation(2,:,:))
1762 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(2,:,:)), transpose(rotation(1,:,:)))
1766 angle = patch_ib(patch_id)%angles(3)
1767 rotation(3, 1,:) = [cos(angle), -sin(angle), 0._wp]
1768 rotation(3, 2,:) = [sin(angle), cos(angle), 0._wp]
1769 rotation(3, 3,:) = [0._wp, 0._wp, 1._wp]
1771 if (num_dims == 3)
then
1773 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(patch_ib(patch_id)%rotation_matrix(:,:), rotation(3,:,:))
1774 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(3,:,:)), &
1775 & patch_ib(patch_id)%rotation_matrix_inverse(:,:))
1778 patch_ib(patch_id)%rotation_matrix(:,:) = rotation(3,:,:)
1779 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = transpose(rotation(3,:,:))
1786 real(wp),
intent(in) :: left_bound, right_bound
1787 integer,
intent(inout) :: left_index, right_index
1788 real(wp),
dimension(-buff_size:),
intent(in) :: cell_centers
1789 integer :: itr_left, itr_middle, itr_right
1791 itr_left = left_index
1792 itr_right = right_index
1794 do while (itr_left + 1 < itr_right)
1795 itr_middle = (itr_left + itr_right)/2
1796 if (cell_centers(itr_middle) < left_bound)
then
1797 itr_left = itr_middle
1798 else if (cell_centers(itr_middle) > left_bound)
then
1799 itr_right = itr_middle
1801 itr_left = itr_middle
1805 left_index = itr_left
1807 itr_right = right_index
1808 do while (itr_left + 1 < itr_right)
1809 itr_middle = (itr_left + itr_right)/2
1810 if (cell_centers(itr_middle) < right_bound)
then
1811 itr_left = itr_middle
1812 else if (cell_centers(itr_middle) > right_bound)
then
1813 itr_right = itr_middle
1815 itr_right = itr_middle
1819 right_index = itr_right
1826 integer,
intent(in) :: patch_id, x_periodicity, y_periodicity, z_periodicity
1827 integer,
intent(out) :: encoded_patch_id
1828 integer :: temp_x_per, temp_y_per, temp_z_per, offset
1830 encoded_patch_id = patch_id
1832 temp_x_per = x_periodicity;
if (x_periodicity == -1) temp_x_per = 2
1833 temp_y_per = y_periodicity;
if (y_periodicity == -1) temp_y_per = 2
1834 temp_z_per = z_periodicity;
if (z_periodicity == -1) temp_z_per = 2
1836 offset = (num_ibs + 1)*temp_x_per + 3*(num_ibs + 1)*temp_y_per + 9*(num_ibs + 1)*temp_z_per
1837 encoded_patch_id = patch_id + offset
1845# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1847# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1849# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1851# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1853# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1855# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1857# 1002 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1860 integer,
intent(in) :: encoded_patch_id
1861 integer,
intent(out) :: patch_id
1862 integer,
intent(out),
optional :: x_periodicity, y_periodicity, z_periodicity
1863 integer :: offset, remainder, xp, yp, zp, base
1867 patch_id = mod(encoded_patch_id - 1, base) + 1
1868 offset = (encoded_patch_id - patch_id)/base
1871 remainder = offset/3
1872 yp = mod(remainder, 3)
1876 if (
present(x_periodicity) .and.
present(y_periodicity) .and.
present(z_periodicity))
then
1877 x_periodicity = xp;
if (xp == 2) x_periodicity = -1
1878 y_periodicity = yp;
if (yp == 2) y_periodicity = -1
1879 z_periodicity = zp;
if (zp == 2) z_periodicity = -1
1887 integer,
intent(out) :: xp_lower, xp_upper, yp_lower, yp_upper
1888 integer,
intent(out),
optional :: zp_lower, zp_upper
1892# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1894 if (ib_bc_x%beg == bc_periodic)
then
1902# 1037 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1904 if (ib_bc_y%beg == bc_periodic)
then
1912# 1047 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1915 if (
present(zp_lower) .and. p /= 0)
then
1916 if (ib_bc_z%beg == bc_periodic)
then
1928 pure elemental function f_r(myth, offset, a)
1931# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1933# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1935# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1937# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1939# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1941# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1943# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1945 real(wp),
intent(in) :: myth, offset, a
1951 b = 2._wp*a/(2._wp*pi)
1952 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(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
type(ib_patch_parameters), dimension(num_ib_patches_max) patch_ib
Immersed boundary patch parameters.
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.
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_ib_model(patch_id, ib_markers, xp, yp)
The STL patch is a 2D geometry that is imported from an STL file.
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.
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.
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_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 annexing an integer scalar field (SF).