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# 26 "/home/runner/work/MFC/MFC/src/common/include/2dHardcodedIC.fpp"
69# 349 "/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
403# 28 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
404#if defined(MFC_OpenACC)
405# 28 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
407# 28 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
408#elif defined(MFC_OpenMP)
409# 28 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
411# 28 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
421 integer :: i, xp, yp, zp
422 integer :: xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper
430 do xp = xp_lower, xp_upper
431 do yp = yp_lower, yp_upper
432 do zp = zp_lower, zp_upper
436 else if (
patch_ib(i)%geometry == 9)
then
438 else if (
patch_ib(i)%geometry == 10)
then
440 else if (
patch_ib(i)%geometry == 11)
then
442 else if (
patch_ib(i)%geometry == 12)
then
456 do xp = xp_lower, xp_upper
457 do yp = yp_lower, yp_upper
461 else if (
patch_ib(i)%geometry == 3)
then
463 else if (
patch_ib(i)%geometry == 4)
then
465 else if (
patch_ib(i)%geometry == 5)
then
467 else if (
patch_ib(i)%geometry == 6)
then
481 integer,
intent(in) :: patch_id
482 integer,
intent(in) :: xp, yp
484 real(wp),
dimension(1:2) :: center
486 integer :: i, j, il, ir, jl, jr
487 integer :: encoded_patch_id
501 ir =
m + gp_layers + 1
502 jr =
n + gp_layers + 1
509# 124 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
511# 124 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
512#if defined(MFC_OpenACC)
513# 124 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
515# 124 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
516#elif defined(MFC_OpenMP)
517# 124 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
519# 124 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
521# 124 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
523# 124 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
525# 124 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
529 if ((
x_cc(i) - center(1))**2 + (
y_cc(j) - center(2))**2 <= radius**2)
then
530 ib_markers%sf(i, j, 0) = encoded_patch_id
535# 132 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
536#if defined(MFC_OpenACC)
537# 132 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
539# 132 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
540#elif defined(MFC_OpenMP)
541# 132 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
543# 132 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
545# 132 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
553 integer,
intent(in) :: patch_id
555 integer,
intent(in) :: xp, yp
556 real(wp) :: f, ca_in, pa, ma, ta
557 real(wp) :: xa, yt, xu, yu, xl, yl, xc, yc, dycdxc, sin_c, cos_c
558 integer :: i, j, k, il, ir, jl, jr
560 integer :: encoded_patch_id
561 real(wp),
dimension(1:3) :: xy_local, offset
562 real(wp),
dimension(1:2) :: center
563 real(wp),
dimension(1:3,1:3) :: inverse_rotation
571 inverse_rotation(:,:) =
patch_ib(patch_id)%rotation_matrix_inverse(:,:)
572 offset(:) =
patch_ib(patch_id)%centroid_offset(:)
574 np1 = int((pa*ca_in/
dx(0))*20)
575 np2 = int(((ca_in - pa*ca_in)/
dx(0))*20)
578# 163 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
579#if defined(MFC_OpenACC)
580# 163 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
582# 163 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
583#elif defined(MFC_OpenMP)
584# 163 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
586# 163 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
591# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
593# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
594 use iso_fortran_env,
only: output_unit
595# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
597# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
598 print *,
'm_ib_patches.fpp:166: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
599# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
601# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
602 call flush (output_unit)
603# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
605# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
607# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
609# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
611# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
613# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
614#if defined(MFC_OpenACC)
615# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
617# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
618#elif defined(MFC_OpenMP)
619# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
621# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
624# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
626# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
627 use iso_fortran_env,
only: output_unit
628# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
630# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
631 print *,
'm_ib_patches.fpp:167: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
632# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
634# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
635 call flush (output_unit)
636# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
638# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
640# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
641 allocate (airfoil_grid_l(1:np))
642# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
644# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
646# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
647#if defined(MFC_OpenACC)
648# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
650# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
651#elif defined(MFC_OpenMP)
652# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
654# 167 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
658 airfoil_grid_u(1)%x = 0._wp
659 airfoil_grid_u(1)%y = 0._wp
661 airfoil_grid_l(1)%x = 0._wp
662 airfoil_grid_l(1)%y = 0._wp
664 do i = 1, np1 + np2 - 1
668 xc = i*(pa*ca_in/np1)
670 yc = (ma/pa**2)*(2*pa*xa - xa**2)
671 dycdxc = (2*ma/pa**2)*(pa - xa)
673 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
675 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
676 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
679 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)
680 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
681 cos_c = 1/(1 + dycdxc**2)**0.5_wp
695 airfoil_grid_u(i + 1)%x = xu
696 airfoil_grid_u(i + 1)%y = yu
698 airfoil_grid_l(i + 1)%x = xl
699 airfoil_grid_l(i + 1)%y = yl
702 airfoil_grid_u(np)%x = ca_in
703 airfoil_grid_u(np)%y = 0._wp
705 airfoil_grid_l(np)%x = ca_in
706 airfoil_grid_l(np)%y = 0._wp
709# 220 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
710#if defined(MFC_OpenACC)
711# 220 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
713# 220 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
714#elif defined(MFC_OpenMP)
715# 220 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
717# 220 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
727 ir = m + gp_layers + 1
728 jr = n + gp_layers + 1
734# 235 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
736# 235 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
737#if defined(MFC_OpenACC)
738# 235 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
740# 235 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
741#elif defined(MFC_OpenMP)
742# 235 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
744# 235 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
746# 235 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
748# 235 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
750# 235 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
752# 237 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
755 xy_local = [x_cc(i) - center(1), y_cc(
j) - center(2), 0._wp]
756 xy_local = matmul(inverse_rotation, xy_local)
757 xy_local = xy_local - offset
759 if (xy_local(1) >= 0._wp .and. xy_local(1) <= ca_in)
then
760 xa = xy_local(1)/ca_in
762 yc = (ma/pa**2)*(2*pa*xa - xa**2)
763 dycdxc = (2*ma/pa**2)*(pa - xa)
765 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
766 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
768 if (xy_local(2) >= 0._wp)
then
770 do while (airfoil_grid_u(
k)%x < xy_local(1) .and.
k <= np)
773 if (f_approx_equal(airfoil_grid_u(
k)%x, xy_local(1)))
then
774 if (xy_local(2) <= airfoil_grid_u(
k)%y)
then
775 ib_markers%sf(i,
j, 0) = encoded_patch_id
778 f = (airfoil_grid_u(
k)%x - xy_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
779 if (xy_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
780 ib_markers%sf(i,
j, 0) = encoded_patch_id
785 do while (airfoil_grid_l(
k)%x < xy_local(1))
788 if (f_approx_equal(airfoil_grid_l(
k)%x, xy_local(1)))
then
789 if (xy_local(2) >= airfoil_grid_l(
k)%y)
then
790 ib_markers%sf(i,
j, 0) = encoded_patch_id
793 f = (airfoil_grid_l(
k)%x - xy_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
795 if (xy_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
796 ib_markers%sf(i,
j, 0) = encoded_patch_id
804# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
805#if defined(MFC_OpenACC)
806# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
808# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
809#elif defined(MFC_OpenMP)
810# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
812# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
814# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
822 integer,
intent(in) :: patch_id
823 type(integer_field),
intent(inout) :: ib_markers
824 integer,
intent(in) :: xp, yp, zp
825 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
826 integer :: i, j, k, l, il, ir, jl, jr, ll, lr
828 integer :: encoded_patch_id
829 real(wp),
dimension(1:3) :: xyz_local, center, offset
830 real(wp),
dimension(1:3,1:3) :: inverse_rotation
832 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
833 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
834 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
835 lz = patch_ib(patch_id)%length_z
836 ca_in = patch_ib(patch_id)%c
837 pa = patch_ib(patch_id)%p
838 ma = patch_ib(patch_id)%m
839 ta = patch_ib(patch_id)%t
840 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
841 offset(:) = patch_ib(patch_id)%centroid_offset(:)
846 np1 = int((pa*ca_in/dx(0))*20)
847 np2 = int(((ca_in - pa*ca_in)/dx(0))*20)
850# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
851#if defined(MFC_OpenACC)
852# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
854# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
855#elif defined(MFC_OpenMP)
856# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
858# 321 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
861 if (.not.
allocated(airfoil_grid_u))
then
863# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
865# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
866 use iso_fortran_env,
only: output_unit
867# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
869# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
870 print *,
'm_ib_patches.fpp:324: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
871# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
873# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
874 call flush (output_unit)
875# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
877# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
879# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
880 allocate (airfoil_grid_u(1:np))
881# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
883# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
885# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
886#if defined(MFC_OpenACC)
887# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
889# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
890#elif defined(MFC_OpenMP)
891# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
893# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
896# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
898# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
899 use iso_fortran_env,
only: output_unit
900# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
902# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
903 print *,
'm_ib_patches.fpp:325: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
904# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
906# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
907 call flush (output_unit)
908# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
910# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
912# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
913 allocate (airfoil_grid_l(1:np))
914# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
916# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
918# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
919#if defined(MFC_OpenACC)
920# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
922# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
923#elif defined(MFC_OpenMP)
924# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
926# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
929 airfoil_grid_u(1)%x = 0._wp
930 airfoil_grid_u(1)%y = 0._wp
932 airfoil_grid_l(1)%x = 0._wp
933 airfoil_grid_l(1)%y = 0._wp
935 do i = 1, np1 + np2 - 1
937 xc = i*(pa*ca_in/np1)
939 yc = (ma/pa**2)*(2*pa*xa - xa**2)
940 dycdxc = (2*ma/pa**2)*(pa - xa)
942 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
944 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
945 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
948 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)
949 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
950 cos_c = 1/(1 + dycdxc**2)**0.5_wp
964 airfoil_grid_u(i + 1)%x = xu
965 airfoil_grid_u(i + 1)%y = yu
967 airfoil_grid_l(i + 1)%x = xl
968 airfoil_grid_l(i + 1)%y = yl
971 airfoil_grid_u(np)%x = ca_in
972 airfoil_grid_u(np)%y = 0._wp
974 airfoil_grid_l(np)%x = ca_in
975 airfoil_grid_l(np)%y = 0._wp
978# 375 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
979#if defined(MFC_OpenACC)
980# 375 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
982# 375 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
983#elif defined(MFC_OpenMP)
984# 375 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
986# 375 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
997 ir = m + gp_layers + 1
998 jr = n + gp_layers + 1
999 lr = p + gp_layers + 1
1006# 393 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1008# 393 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1009#if defined(MFC_OpenACC)
1010# 393 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1012# 393 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1013#elif defined(MFC_OpenMP)
1014# 393 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1016# 393 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1018# 393 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1020# 393 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1022# 393 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1024# 395 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1028 xyz_local = [x_cc(i) - center(1), y_cc(
j) - center(2), &
1029 & z_cc(
l) - center(3)]
1030 xyz_local = matmul(inverse_rotation, xyz_local)
1031 xyz_local = xyz_local - offset
1033 if (xyz_local(3) >= z_min .and. xyz_local(3) <= z_max)
then
1034 if (xyz_local(1) >= 0._wp .and. xyz_local(1) <= ca_in)
then
1035 if (xyz_local(2) >= 0._wp)
then
1037 do while (airfoil_grid_u(
k)%x < xyz_local(1))
1040 if (f_approx_equal(airfoil_grid_u(
k)%x, xyz_local(1)))
then
1041 if (xyz_local(2) <= airfoil_grid_u(
k)%y)
then
1043 ib_markers%sf(i,
j,
l) = encoded_patch_id
1046 f = (airfoil_grid_u(
k)%x - xyz_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
1047 if (xyz_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
1048 ib_markers%sf(i,
j,
l) = encoded_patch_id
1053 do while (airfoil_grid_l(
k)%x < xyz_local(1))
1056 if (f_approx_equal(airfoil_grid_l(
k)%x, xyz_local(1)))
then
1057 if (xyz_local(2) >= airfoil_grid_l(
k)%y)
then
1058 ib_markers%sf(i,
j,
l) = encoded_patch_id
1061 f = (airfoil_grid_l(
k)%x - xyz_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
1063 if (xyz_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
1064 ib_markers%sf(i,
j,
l) = encoded_patch_id
1074# 443 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1075#if defined(MFC_OpenACC)
1076# 443 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1078# 443 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1079#elif defined(MFC_OpenMP)
1080# 443 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1082# 443 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1084# 443 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1092 integer,
intent(in) :: patch_id
1093 type(integer_field),
intent(inout) :: ib_markers
1094 integer,
intent(in) :: xp, yp
1095 integer :: i, j, il, ir, jl, jr
1096 integer :: encoded_patch_id
1097 real(wp) :: corner_distance
1098 real(wp),
dimension(1:3) :: xy_local
1099 real(wp),
dimension(1:2) :: length, center
1100 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1104 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1105 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1106 length(1) = patch_ib(patch_id)%length_x
1107 length(2) = patch_ib(patch_id)%length_y
1108 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1116 ir = m + gp_layers + 1
1117 jr = n + gp_layers + 1
1118 corner_distance = sqrt(dot_product(length, length))/2._wp
1119 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1120 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1124# 481 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1126# 481 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1127#if defined(MFC_OpenACC)
1128# 481 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1130# 481 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1131#elif defined(MFC_OpenMP)
1132# 481 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1134# 481 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1136# 481 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1138# 481 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1140# 481 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1142# 483 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1146 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1147 xy_local = matmul(inverse_rotation, xy_local)
1149 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) &
1150 & .and. 0.5_wp*length(2) >= xy_local(2))
then
1152 ib_markers%sf(i, j, 0) = encoded_patch_id
1157# 496 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1158#if defined(MFC_OpenACC)
1159# 496 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1161# 496 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1162#elif defined(MFC_OpenMP)
1163# 496 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1165# 496 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1167# 496 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1175 integer,
intent(in) :: patch_id
1176 type(integer_field),
intent(inout) :: ib_markers
1177 integer,
intent(in) :: xp, yp, zp
1180 integer :: il, ir, jl, jr, kl, kr
1181 integer :: encoded_patch_id
1183 real(wp),
dimension(1:3) :: center
1189 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1190 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1191 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1192 radius = patch_ib(patch_id)%radius
1195 if (center(1) - radius > x_cc(m + gp_layers + 1) .or. center(1) + radius < x_cc(-gp_layers - 1) .or. center(2) &
1196 & - radius > y_cc(n + gp_layers + 1) .or. center(2) + radius < y_cc(-gp_layers - 1) .or. center(3) - radius > z_cc(p &
1197 & + gp_layers + 1) .or. center(3) + radius < z_cc(-gp_layers - 1))
then
1208 ir = m + gp_layers + 1
1209 jr = n + gp_layers + 1
1210 kr = p + gp_layers + 1
1218# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1220# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1221#if defined(MFC_OpenACC)
1222# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1224# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1225#elif defined(MFC_OpenMP)
1226# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1228# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1230# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1232# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1234# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1239 if (grid_geometry == 3)
then
1246 if (((x_cc(i) - center(1))**2 + (
cart_y - center(2))**2 + (
cart_z - center(3))**2 <= radius**2))
then
1247 ib_markers%sf(i, j, k) = encoded_patch_id
1253# 562 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1254#if defined(MFC_OpenACC)
1255# 562 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1257# 562 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1258#elif defined(MFC_OpenMP)
1259# 562 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1261# 562 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1263# 562 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1271 integer,
intent(in) :: patch_id
1272 type(integer_field),
intent(inout) :: ib_markers
1273 integer,
intent(in) :: xp, yp, zp
1274 integer :: i, j, k, ir, il, jr, jl, kr, kl
1275 integer :: encoded_patch_id
1276 real(wp),
dimension(1:3) :: xyz_local, center, length
1277 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1278 real(wp) :: corner_distance
1282 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1283 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1284 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1285 length(1) = patch_ib(patch_id)%length_x
1286 length(2) = patch_ib(patch_id)%length_y
1287 length(3) = patch_ib(patch_id)%length_z
1288 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1297 ir = m + gp_layers + 1
1298 jr = n + gp_layers + 1
1299 kr = p + gp_layers + 1
1300 corner_distance = sqrt(dot_product(length, length))/2._wp
1301 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1302 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1303 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1309# 606 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1311# 606 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1312#if defined(MFC_OpenACC)
1313# 606 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1315# 606 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1316#elif defined(MFC_OpenMP)
1317# 606 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1319# 606 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1321# 606 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1323# 606 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1325# 606 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1327# 608 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1331 if (grid_geometry == 3)
then
1339 xyz_local = matmul(inverse_rotation, xyz_local)
1341 if (-0.5*length(1) <= xyz_local(1) .and. 0.5*length(1) >= xyz_local(1) .and. -0.5*length(2) <= xyz_local(2) &
1342 & .and. 0.5*length(2) >= xyz_local(2) .and. -0.5*length(3) <= xyz_local(3) .and. 0.5*length(3) &
1343 & >= xyz_local(3))
then
1345 ib_markers%sf(i, j, k) = encoded_patch_id
1351# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1352#if defined(MFC_OpenACC)
1353# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1355# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1356#elif defined(MFC_OpenMP)
1357# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1359# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1361# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1369 integer,
intent(in) :: patch_id
1370 type(integer_field),
intent(inout) :: ib_markers
1371 integer,
intent(in) :: xp, yp, zp
1372 integer :: i, j, k, il, ir, jl, jr, kl, kr
1373 integer :: encoded_patch_id
1375 real(wp),
dimension(1:3) :: xyz_local, center, length
1376 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1377 real(wp) :: corner_distance
1381 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1382 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1383 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1384 length(1) = patch_ib(patch_id)%length_x
1385 length(2) = patch_ib(patch_id)%length_y
1386 length(3) = patch_ib(patch_id)%length_z
1387 radius = patch_ib(patch_id)%radius
1388 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1396 ir = m + gp_layers + 1
1397 jr = n + gp_layers + 1
1398 kr = p + gp_layers + 1
1399 corner_distance = sqrt(radius**2 + maxval(length)**2)
1400 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1401 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1402 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1408# 675 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1410# 675 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1411#if defined(MFC_OpenACC)
1412# 675 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1414# 675 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1415#elif defined(MFC_OpenMP)
1416# 675 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1418# 675 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1420# 675 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1422# 675 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1424# 675 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1426# 677 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1430 if (grid_geometry == 3)
then
1437 xyz_local = matmul(inverse_rotation, xyz_local)
1439 if (((.not. f_is_default(length(1)) .and. xyz_local(2)**2 + xyz_local(3)**2 <= radius**2 .and. &
1440 & -0.5_wp*length(1) <= xyz_local(1) .and. 0.5_wp*length(1) >= xyz_local(1)) &
1441 & .or. (.not. f_is_default(length(2)) .and. xyz_local(1)**2 + xyz_local(3)**2 <= radius**2 .and. &
1442 & -0.5_wp*length(2) <= xyz_local(2) .and. 0.5_wp*length(2) >= xyz_local(2)) &
1443 & .or. (.not. f_is_default(length(3)) .and. xyz_local(1)**2 + xyz_local(2)**2 <= radius**2 .and. &
1444 & -0.5_wp*length(3) <= xyz_local(3) .and. 0.5_wp*length(3) >= xyz_local(3))))
then
1446 ib_markers%sf(i, j, k) = encoded_patch_id
1452# 701 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1453#if defined(MFC_OpenACC)
1454# 701 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1456# 701 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1457#elif defined(MFC_OpenMP)
1458# 701 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1460# 701 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1462# 701 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1470 integer,
intent(in) :: patch_id
1471 type(integer_field),
intent(inout) :: ib_markers
1472 integer,
intent(in) :: xp, yp
1473 integer :: i, j, il, ir, jl, jr
1474 integer :: encoded_patch_id
1475 real(wp),
dimension(1:3) :: xy_local
1476 real(wp),
dimension(1:2) :: ellipse_coeffs
1477 real(wp),
dimension(1:2) :: center
1478 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1482 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1483 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1484 ellipse_coeffs(1) = 0.5_wp*patch_ib(patch_id)%length_x
1485 ellipse_coeffs(2) = 0.5_wp*patch_ib(patch_id)%length_y
1486 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1494 ir = m + gp_layers + 1
1495 jr = n + gp_layers + 1
1496 call get_bounding_indices(center(1) - maxval(ellipse_coeffs)*2._wp, center(1) + maxval(ellipse_coeffs)*2._wp, x_cc, il, ir)
1497 call get_bounding_indices(center(2) - maxval(ellipse_coeffs)*2._wp, center(2) + maxval(ellipse_coeffs)*2._wp, y_cc, jl, jr)
1501# 738 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1503# 738 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1504#if defined(MFC_OpenACC)
1505# 738 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1507# 738 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1508#elif defined(MFC_OpenMP)
1509# 738 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1511# 738 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1513# 738 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1515# 738 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1517# 738 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1519# 740 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1523 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1524 xy_local = matmul(inverse_rotation, xy_local)
1527 if ((xy_local(1)/ellipse_coeffs(1))**2 + (xy_local(2)/ellipse_coeffs(2))**2 <= 1._wp)
then
1529 ib_markers%sf(i, j, 0) = encoded_patch_id
1534# 753 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1535#if defined(MFC_OpenACC)
1536# 753 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1538# 753 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1539#elif defined(MFC_OpenMP)
1540# 753 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1542# 753 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1544# 753 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1552 integer,
intent(in) :: patch_id
1553 type(integer_field),
intent(inout) :: ib_markers
1554 integer,
intent(in) :: xp, yp
1555 integer :: i, j, il, ir, jl, jr
1556 integer :: spc, encoded_patch_id
1558 real(wp) :: lx(2), ly(2)
1559 real(wp),
dimension(1:2) :: bbox_min, bbox_max
1560 real(wp),
dimension(1:3) :: local_corner, world_corner
1561 real(wp) :: eta, threshold
1562 real(wp),
dimension(1:3) :: offset
1563 real(wp),
dimension(1:3) :: center, xy_local
1564 real(wp),
dimension(1:3,1:3) :: inverse_rotation, rotation
1567 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1568 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1569 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1570 rotation(:,:) = patch_ib(patch_id)%rotation_matrix(:,:)
1571 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1572 spc = patch_ib(patch_id)%model_spc
1573 threshold = patch_ib(patch_id)%model_threshold
1580 ir = m + gp_layers + 1
1581 jr = n + gp_layers + 1
1584 lx(1) = stl_bounding_boxes(patch_id, 1, 1) + offset(1)
1585 lx(2) = stl_bounding_boxes(patch_id, 1, 3) + offset(1)
1586 ly(1) = stl_bounding_boxes(patch_id, 2, 1) + offset(2)
1587 ly(2) = stl_bounding_boxes(patch_id, 2, 3) + offset(2)
1594 local_corner = [lx(cx), ly(cy), 0._wp]
1595 world_corner = matmul(rotation, local_corner) + center
1596 bbox_min(1) = min(bbox_min(1), world_corner(1))
1597 bbox_min(2) = min(bbox_min(2), world_corner(2))
1598 bbox_max(1) = max(bbox_max(1), world_corner(1))
1599 bbox_max(2) = max(bbox_max(2), world_corner(2))
1607# 814 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1609# 814 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1610#if defined(MFC_OpenACC)
1611# 814 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1613# 814 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1614#elif defined(MFC_OpenMP)
1615# 814 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1617# 814 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1619# 814 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1621# 814 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1623# 814 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1625# 816 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1628 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1629 xy_local = matmul(inverse_rotation, xy_local)
1630 xy_local = xy_local - offset
1632 eta = f_model_is_inside_flat(gpu_ntrs(patch_id), patch_id, xy_local)
1635 if (eta > threshold)
then
1636 ib_markers%sf(i, j, 0) = encoded_patch_id
1641# 830 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1642#if defined(MFC_OpenACC)
1643# 830 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1645# 830 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1646#elif defined(MFC_OpenMP)
1647# 830 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1649# 830 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1651# 830 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1659 integer,
intent(in) :: patch_id
1660 type(integer_field),
intent(inout) :: ib_markers
1661 integer,
intent(in) :: xp, yp, zp
1662 integer :: i, j, k, il, ir, jl, jr, kl, kr
1663 integer :: spc, encoded_patch_id
1664 real(wp) :: eta, threshold
1665 real(wp),
dimension(1:3) :: offset
1666 real(wp),
dimension(1:3) :: center, xyz_local
1667 real(wp),
dimension(1:3,1:3) :: inverse_rotation, rotation
1668 integer :: cx, cy, cz
1669 real(wp) :: lx(2), ly(2), lz(2)
1670 real(wp),
dimension(1:3) :: bbox_min, bbox_max, local_corner, world_corner
1673 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1674 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1675 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1676 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1677 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1678 spc = patch_ib(patch_id)%model_spc
1679 threshold = patch_ib(patch_id)%model_threshold
1680 rotation(:,:) = patch_ib(patch_id)%rotation_matrix(:,:)
1688 ir = m + gp_layers + 1
1689 jr = n + gp_layers + 1
1690 kr = p + gp_layers + 1
1693 lx(1) = stl_bounding_boxes(patch_id, 1, 1) + offset(1)
1694 lx(2) = stl_bounding_boxes(patch_id, 1, 3) + offset(1)
1695 ly(1) = stl_bounding_boxes(patch_id, 2, 1) + offset(2)
1696 ly(2) = stl_bounding_boxes(patch_id, 2, 3) + offset(2)
1697 lz(1) = stl_bounding_boxes(patch_id, 3, 1) + offset(3)
1698 lz(2) = stl_bounding_boxes(patch_id, 3, 3) + offset(3)
1706 local_corner = [lx(cx), ly(cy), lz(cz)]
1707 world_corner = matmul(rotation, local_corner) + center
1708 bbox_min(1) = min(bbox_min(1), world_corner(1))
1709 bbox_min(2) = min(bbox_min(2), world_corner(2))
1710 bbox_min(3) = min(bbox_min(3), world_corner(3))
1711 bbox_max(1) = max(bbox_max(1), world_corner(1))
1712 bbox_max(2) = max(bbox_max(2), world_corner(2))
1713 bbox_max(3) = max(bbox_max(3), world_corner(3))
1723# 900 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1725# 900 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1726#if defined(MFC_OpenACC)
1727# 900 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1729# 900 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1730#elif defined(MFC_OpenMP)
1731# 900 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1733# 900 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1735# 900 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1737# 900 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1739# 900 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1741# 902 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1745 xyz_local = [x_cc(i) - center(1), y_cc(j) - center(2), z_cc(k) - center(3)]
1746 xyz_local = matmul(inverse_rotation, xyz_local)
1747 xyz_local = xyz_local - offset
1749 eta = f_model_is_inside_flat(gpu_ntrs(patch_id), patch_id, xyz_local)
1751 if (eta > patch_ib(patch_id)%model_threshold)
then
1752 ib_markers%sf(i, j, k) = encoded_patch_id
1758# 917 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1759#if defined(MFC_OpenACC)
1760# 917 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1762# 917 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1763#elif defined(MFC_OpenMP)
1764# 917 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1766# 917 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1768# 917 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1776 integer,
intent(in) :: patch_id
1777 real(wp),
dimension(3, 3, 3) :: rotation
1782 if (num_dims == 3)
then
1784 angle = patch_ib(patch_id)%angles(1)
1785 rotation(1, 1,:) = [1._wp, 0._wp, 0._wp]
1786 rotation(1, 2,:) = [0._wp, cos(angle), -sin(angle)]
1787 rotation(1, 3,:) = [0._wp, sin(angle), cos(angle)]
1789 angle = patch_ib(patch_id)%angles(2)
1790 rotation(2, 1,:) = [cos(angle), 0._wp, sin(angle)]
1791 rotation(2, 2,:) = [0._wp, 1._wp, 0._wp]
1792 rotation(2, 3,:) = [-sin(angle), 0._wp, cos(angle)]
1795 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(rotation(1,:,:), rotation(2,:,:))
1796 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(2,:,:)), transpose(rotation(1,:,:)))
1800 angle = patch_ib(patch_id)%angles(3)
1801 rotation(3, 1,:) = [cos(angle), -sin(angle), 0._wp]
1802 rotation(3, 2,:) = [sin(angle), cos(angle), 0._wp]
1803 rotation(3, 3,:) = [0._wp, 0._wp, 1._wp]
1805 if (num_dims == 3)
then
1807 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(patch_ib(patch_id)%rotation_matrix(:,:), rotation(3,:,:))
1808 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(3,:,:)), &
1809 & patch_ib(patch_id)%rotation_matrix_inverse(:,:))
1812 patch_ib(patch_id)%rotation_matrix(:,:) = rotation(3,:,:)
1813 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = transpose(rotation(3,:,:))
1822# 969 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1824# 969 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1826# 969 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1828# 969 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1830# 969 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1832# 969 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1834# 969 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1837 real(wp),
intent(in) :: cyl_y, cyl_z
1839 cart_y = cyl_y*sin(cyl_z)
1840 cart_z = cyl_y*cos(cyl_z)
1848# 981 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1850# 981 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1852# 981 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1854# 981 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1856# 981 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1858# 981 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1860# 981 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1863 real(wp),
dimension(1:3),
intent(in) :: cyl
1864 real(wp),
dimension(1:3) :: cart
1866 cart = (/cyl(1), cyl(2)*sin(cyl(3)), cyl(2)*cos(cyl(3))/)
1872 real(wp),
intent(in) :: left_bound, right_bound
1873 integer,
intent(inout) :: left_index, right_index
1874 real(wp),
dimension(-buff_size:),
intent(in) :: cell_centers
1875 integer :: itr_left, itr_middle, itr_right
1877 itr_left = left_index
1878 itr_right = right_index
1880 do while (itr_left + 1 < itr_right)
1881 itr_middle = (itr_left + itr_right)/2
1882 if (cell_centers(itr_middle) < left_bound)
then
1883 itr_left = itr_middle
1884 else if (cell_centers(itr_middle) > left_bound)
then
1885 itr_right = itr_middle
1887 itr_left = itr_middle
1891 left_index = itr_left
1893 itr_right = right_index
1894 do while (itr_left + 1 < itr_right)
1895 itr_middle = (itr_left + itr_right)/2
1896 if (cell_centers(itr_middle) < right_bound)
then
1897 itr_left = itr_middle
1898 else if (cell_centers(itr_middle) > right_bound)
then
1899 itr_right = itr_middle
1901 itr_right = itr_middle
1905 right_index = itr_right
1912 integer,
intent(in) :: patch_id, x_periodicity, y_periodicity, z_periodicity
1913 integer,
intent(out) :: encoded_patch_id
1914 integer :: temp_x_per, temp_y_per, temp_z_per, offset
1916 encoded_patch_id = patch_id
1918 temp_x_per = x_periodicity;
if (x_periodicity == -1) temp_x_per = 2
1919 temp_y_per = y_periodicity;
if (y_periodicity == -1) temp_y_per = 2
1920 temp_z_per = z_periodicity;
if (z_periodicity == -1) temp_z_per = 2
1922 offset = (num_ibs + 1)*temp_x_per + 3*(num_ibs + 1)*temp_y_per + 9*(num_ibs + 1)*temp_z_per
1923 encoded_patch_id = patch_id + offset
1931# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1933# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1935# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1937# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1939# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1941# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1943# 1050 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1946 integer,
intent(in) :: encoded_patch_id
1947 integer,
intent(out) :: patch_id
1948 integer,
intent(out),
optional :: x_periodicity, y_periodicity, z_periodicity
1949 integer :: offset, remainder, xp, yp, zp, base
1953 patch_id = mod(encoded_patch_id - 1, base) + 1
1954 offset = (encoded_patch_id - patch_id)/base
1957 remainder = offset/3
1958 yp = mod(remainder, 3)
1962 if (
present(x_periodicity) .and.
present(y_periodicity) .and.
present(z_periodicity))
then
1963 x_periodicity = xp;
if (xp == 2) x_periodicity = -1
1964 y_periodicity = yp;
if (yp == 2) y_periodicity = -1
1965 z_periodicity = zp;
if (zp == 2) z_periodicity = -1
1973 integer,
intent(out) :: xp_lower, xp_upper, yp_lower, yp_upper
1974 integer,
intent(out),
optional :: zp_lower, zp_upper
1978# 1085 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1980 if (ib_bc_x%beg == bc_periodic)
then
1988# 1085 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1990 if (ib_bc_y%beg == bc_periodic)
then
1998# 1095 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2001 if (
present(zp_lower) .and. p /= 0)
then
2002 if (ib_bc_z%beg == bc_periodic)
then
2014 pure elemental function f_r(myth, offset, a)
2017# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2019# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2021# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2023# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2025# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2027# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2029# 1112 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2031 real(wp),
intent(in) :: myth, offset, a
2037 b = 2._wp*a/(2._wp*pi)
2038 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_convert_cylindrical_to_cartesian_coord(cyl_y, cyl_z)
Convert cylindrical (r, theta) coordinates to Cartesian (y, z).
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.
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_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).