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# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
15# 12 "/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
407 integer :: i,
j, airfoil_id
408 integer :: np, np1, np2
409 real(wp) :: ca_in, pa, ma, ta
410 real(wp) :: xc, xa, yc, dycdxc, yt, xu, yu, xl, yl, sin_c, cos_c
421 np1 = int((pa*ca_in/
dx(0))*20)
422 np2 = int(((ca_in - pa*ca_in)/
dx(0))*20)
426# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
427#if defined(MFC_OpenACC)
428# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
430# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
431#elif defined(MFC_OpenMP)
432# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
434# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
439# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
441# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
442 use iso_fortran_env,
only: output_unit
443# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
445# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
446 print *,
'm_ib_patches.fpp:54: ',
'@:ALLOCATE(ib_airfoil_grids(airfoil_id)%upper(1:Np))'
447# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
449# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
450 call flush (output_unit)
451# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
453# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
455# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
457# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
459# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
461# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
462#if defined(MFC_OpenACC)
463# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
465# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
466#elif defined(MFC_OpenMP)
467# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
469# 54 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
472# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
474# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
475 use iso_fortran_env,
only: output_unit
476# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
478# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
479 print *,
'm_ib_patches.fpp:55: ',
'@:ALLOCATE(ib_airfoil_grids(airfoil_id)%lower(1:Np))'
480# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
482# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
483 call flush (output_unit)
484# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
486# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
488# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
489 allocate (ib_airfoil_grids(airfoil_id)%lower(1:np))
490# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
492# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
494# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
495#if defined(MFC_OpenACC)
496# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
498# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
499#elif defined(MFC_OpenMP)
500# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
502# 55 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
505 ib_airfoil_grids(airfoil_id)%upper(1)%x = 0._wp
506 ib_airfoil_grids(airfoil_id)%upper(1)%y = 0._wp
507 ib_airfoil_grids(airfoil_id)%lower(1)%x = 0._wp
508 ib_airfoil_grids(airfoil_id)%lower(1)%y = 0._wp
510 do j = 1, np1 + np2 - 1
512 xc =
j*(pa*ca_in/np1)
514 yc = (ma/pa**2)*(2*pa*xa - xa**2)
515 dycdxc = (2*ma/pa**2)*(pa - xa)
517 xc = pa*ca_in + (
j - np1)*((ca_in - pa*ca_in)/np2)
519 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
520 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
523 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)
524 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
525 cos_c = 1/(1 + dycdxc**2)**0.5_wp
527 xu = (xa - yt*sin_c)*ca_in
528 yu = (yc + yt*cos_c)*ca_in
529 xl = (xa + yt*sin_c)*ca_in
530 yl = (yc - yt*cos_c)*ca_in
532 ib_airfoil_grids(airfoil_id)%upper(
j + 1)%x = xu
533 ib_airfoil_grids(airfoil_id)%upper(
j + 1)%y = yu
534 ib_airfoil_grids(airfoil_id)%lower(
j + 1)%x = xl
535 ib_airfoil_grids(airfoil_id)%lower(
j + 1)%y = yl
538 ib_airfoil_grids(airfoil_id)%upper(np)%x = ca_in
539 ib_airfoil_grids(airfoil_id)%upper(np)%y = 0._wp
540 ib_airfoil_grids(airfoil_id)%lower(np)%x = ca_in
541 ib_airfoil_grids(airfoil_id)%lower(np)%y = 0._wp
544# 95 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
545#if defined(MFC_OpenACC)
546# 95 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
548# 95 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
549#elif defined(MFC_OpenMP)
550# 95 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
552# 95 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
562 type(integer_field),
intent(inout) :: ib_markers
563 integer :: i, xp, yp, zp
564 integer :: xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper
572 do xp = xp_lower, xp_upper
573 do yp = yp_lower, yp_upper
574 do zp = zp_lower, zp_upper
576 if (patch_ib(i)%geometry == 8)
then
578 else if (patch_ib(i)%geometry == 9)
then
580 else if (patch_ib(i)%geometry == 10)
then
582 else if (patch_ib(i)%geometry == 11)
then
584 else if (patch_ib(i)%geometry == 12)
then
598 do xp = xp_lower, xp_upper
599 do yp = yp_lower, yp_upper
601 if (patch_ib(i)%geometry == 2)
then
603 else if (patch_ib(i)%geometry == 3)
then
605 else if (patch_ib(i)%geometry == 4)
then
607 else if (patch_ib(i)%geometry == 5)
then
609 else if (patch_ib(i)%geometry == 6)
then
623 integer,
intent(in) :: patch_id
624 integer,
intent(in) :: xp, yp
625 type(integer_field),
intent(inout) :: ib_markers
626 real(wp),
dimension(1:2) :: center
628 integer :: i, j, il, ir, jl, jr
629 integer :: encoded_patch_id
633 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
634 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
635 radius = patch_ib(patch_id)%radius
643 ir = m + gp_layers + 1
644 jr = n + gp_layers + 1
651# 192 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
653# 192 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
654#if defined(MFC_OpenACC)
655# 192 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
657# 192 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
658#elif defined(MFC_OpenMP)
659# 192 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
661# 192 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
663# 192 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
665# 192 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
667# 192 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
671 if ((x_cc(i) - center(1))**2 + (y_cc(j) - center(2))**2 <= radius**2)
then
672 ib_markers%sf(i, j, 0) = encoded_patch_id
677# 200 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
678#if defined(MFC_OpenACC)
679# 200 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
681# 200 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
682#elif defined(MFC_OpenMP)
683# 200 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
685# 200 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
687# 200 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
695 integer,
intent(in) :: patch_id
696 type(integer_field),
intent(inout) :: ib_markers
697 integer,
intent(in) :: xp, yp
699 integer :: i, j, k, il, ir, jl, jr
700 integer :: Np_local, airfoil_id
701 integer :: encoded_patch_id
702 real(wp),
dimension(1:3) :: xy_local, offset
703 real(wp),
dimension(1:2) :: center
705 airfoil_id = patch_ib(patch_id)%airfoil_id
706 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
707 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
708 ca_in = ib_airfoil(airfoil_id)%c
709 np_local = ib_airfoil_grids(airfoil_id)%Np
710 offset(:) = patch_ib(patch_id)%centroid_offset(:)
718 ir = m + gp_layers + 1
719 jr = n + gp_layers + 1
725# 236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
727# 236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
728#if defined(MFC_OpenACC)
729# 236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
731# 236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
732#elif defined(MFC_OpenMP)
733# 236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
735# 236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
737# 236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
739# 236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
741# 236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
743# 238 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
746 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
747 xy_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xy_local)
748 xy_local = xy_local - offset
750 if (xy_local(1) >= 0._wp .and. xy_local(1) <= ca_in)
then
751 if (xy_local(2) >= 0._wp)
then
753 do while (ib_airfoil_grids(airfoil_id)%upper(k)%x < xy_local(1) .and. k <= np_local)
756 if (f_approx_equal(ib_airfoil_grids(airfoil_id)%upper(k)%x, xy_local(1)))
then
757 if (xy_local(2) <= ib_airfoil_grids(airfoil_id)%upper(k)%y)
then
758 ib_markers%sf(i, j, 0) = encoded_patch_id
761 f = (ib_airfoil_grids(airfoil_id)%upper(k)%x - xy_local(1))/(ib_airfoil_grids(airfoil_id)%upper(k)%x &
762 & - ib_airfoil_grids(airfoil_id)%upper(k - 1)%x)
763 if (xy_local(2) <= ((1._wp - f)*ib_airfoil_grids(airfoil_id)%upper(k)%y &
764 & + f*ib_airfoil_grids(airfoil_id)%upper(k - 1)%y))
then
765 ib_markers%sf(i, j, 0) = encoded_patch_id
770 do while (ib_airfoil_grids(airfoil_id)%lower(k)%x < xy_local(1))
773 if (f_approx_equal(ib_airfoil_grids(airfoil_id)%lower(k)%x, xy_local(1)))
then
774 if (xy_local(2) >= ib_airfoil_grids(airfoil_id)%lower(k)%y)
then
775 ib_markers%sf(i, j, 0) = encoded_patch_id
778 f = (ib_airfoil_grids(airfoil_id)%lower(k)%x - xy_local(1))/(ib_airfoil_grids(airfoil_id)%lower(k)%x &
779 & - ib_airfoil_grids(airfoil_id)%lower(k - 1)%x)
780 if (xy_local(2) >= ((1._wp - f)*ib_airfoil_grids(airfoil_id)%lower(k)%y &
781 & + f*ib_airfoil_grids(airfoil_id)%lower(k - 1)%y))
then
782 ib_markers%sf(i, j, 0) = encoded_patch_id
790# 283 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
791#if defined(MFC_OpenACC)
792# 283 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
794# 283 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
795#elif defined(MFC_OpenMP)
796# 283 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
798# 283 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
800# 283 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
808 integer,
intent(in) :: patch_id
809 type(integer_field),
intent(inout) :: ib_markers
810 integer,
intent(in) :: xp, yp, zp
811 real(wp) :: lz, z_max, z_min, f, ca_in
812 integer :: i, j, k, l, il, ir, jl, jr, ll, lr
813 integer :: airfoil_id
814 integer :: encoded_patch_id
815 real(wp),
dimension(1:3) :: xyz_local, center, offset
817 airfoil_id = patch_ib(patch_id)%airfoil_id
818 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
819 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
820 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
821 lz = patch_ib(patch_id)%length_z
822 ca_in = ib_airfoil(airfoil_id)%c
823 offset(:) = patch_ib(patch_id)%centroid_offset(:)
835 ir = m + gp_layers + 1
836 jr = n + gp_layers + 1
837 lr = p + gp_layers + 1
844# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
846# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
847#if defined(MFC_OpenACC)
848# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
850# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
851#elif defined(MFC_OpenMP)
852# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
854# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
856# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
858# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
860# 325 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
862# 327 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
867 xyz_local = [x_cc(i) - center(1), y_cc(j) - center(2), z_cc(l) - center(3)]
869 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
870 xyz_local = xyz_local - offset
872 if (xyz_local(3) >= z_min .and. xyz_local(3) <= z_max)
then
873 if (xyz_local(1) >= 0._wp .and. xyz_local(1) <= ca_in)
then
874 if (xyz_local(2) >= 0._wp)
then
876 do while (ib_airfoil_grids(airfoil_id)%upper(k)%x < xyz_local(1))
879 if (f_approx_equal(ib_airfoil_grids(airfoil_id)%upper(k)%x, xyz_local(1)))
then
880 if (xyz_local(2) <= ib_airfoil_grids(airfoil_id)%upper(k)%y)
then
882 ib_markers%sf(i, j, l) = encoded_patch_id
885 f = (ib_airfoil_grids(airfoil_id)%upper(k)%x - xyz_local(1)) &
886 & /(ib_airfoil_grids(airfoil_id)%upper(k)%x - ib_airfoil_grids(airfoil_id)%upper(k - 1)%x)
887 if (xyz_local(2) <= ((1._wp - f)*ib_airfoil_grids(airfoil_id)%upper(k)%y &
888 & + f*ib_airfoil_grids(airfoil_id)%upper(k - 1)%y))
then
889 ib_markers%sf(i, j, l) = encoded_patch_id
894 do while (ib_airfoil_grids(airfoil_id)%lower(k)%x < xyz_local(1))
897 if (f_approx_equal(ib_airfoil_grids(airfoil_id)%lower(k)%x, xyz_local(1)))
then
898 if (xyz_local(2) >= ib_airfoil_grids(airfoil_id)%lower(k)%y)
then
899 ib_markers%sf(i, j, l) = encoded_patch_id
902 f = (ib_airfoil_grids(airfoil_id)%lower(k)%x - xyz_local(1)) &
903 & /(ib_airfoil_grids(airfoil_id)%lower(k)%x - ib_airfoil_grids(airfoil_id)%lower(k - 1)%x)
904 if (xyz_local(2) >= ((1._wp - f)*ib_airfoil_grids(airfoil_id)%lower(k)%y &
905 & + f*ib_airfoil_grids(airfoil_id)%lower(k - 1)%y))
then
906 ib_markers%sf(i, j, l) = encoded_patch_id
916# 379 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
917#if defined(MFC_OpenACC)
918# 379 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
920# 379 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
921#elif defined(MFC_OpenMP)
922# 379 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
924# 379 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
926# 379 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
934 integer,
intent(in) :: patch_id
935 type(integer_field),
intent(inout) :: ib_markers
936 integer,
intent(in) :: xp, yp
937 integer :: i, j, il, ir, jl, jr
938 integer :: encoded_patch_id
939 real(wp) :: corner_distance
940 real(wp),
dimension(1:3) :: xy_local
941 real(wp),
dimension(1:2) :: length, center
945 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
946 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
954 ir = m + gp_layers + 1
955 jr = n + gp_layers + 1
957 corner_distance = 0.5_wp*sqrt(patch_ib(patch_id)%length_x**2 + patch_ib(patch_id)%length_y**2)
958 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
959 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
963# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
965# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
966#if defined(MFC_OpenACC)
967# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
969# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
970#elif defined(MFC_OpenMP)
971# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
973# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
975# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
977# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
979# 414 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
984 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
985 xy_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xy_local)
987 if (-0.5_wp*patch_ib(patch_id)%length_x <= xy_local(1) .and. 0.5_wp*patch_ib(patch_id)%length_x >= xy_local(1) &
988 & .and. -0.5_wp*patch_ib(patch_id)%length_y <= xy_local(2) &
989 & .and. 0.5_wp*patch_ib(patch_id)%length_y >= xy_local(2))
then
991 ib_markers%sf(i, j, 0) = encoded_patch_id
996# 429 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
997#if defined(MFC_OpenACC)
998# 429 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1000# 429 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1001#elif defined(MFC_OpenMP)
1002# 429 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1004# 429 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1006# 429 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1014 integer,
intent(in) :: patch_id
1015 type(integer_field),
intent(inout) :: ib_markers
1016 integer,
intent(in) :: xp, yp, zp
1019 integer :: il, ir, jl, jr, kl, kr
1020 integer :: encoded_patch_id
1022 real(wp),
dimension(1:3) :: center
1024 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1025 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1026 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1027 radius = patch_ib(patch_id)%radius
1030 if (center(1) - radius > x_cc(m + gp_layers + 1) .or. center(1) + radius < x_cc(-gp_layers - 1) .or. center(2) &
1031 & - radius > y_cc(n + gp_layers + 1) .or. center(2) + radius < y_cc(-gp_layers - 1) .or. center(3) - radius > z_cc(p &
1032 & + gp_layers + 1) .or. center(3) + radius < z_cc(-gp_layers - 1))
then
1043 ir = m + gp_layers + 1
1044 jr = n + gp_layers + 1
1045 kr = p + gp_layers + 1
1053# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1055# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1056#if defined(MFC_OpenACC)
1057# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1059# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1060#elif defined(MFC_OpenMP)
1061# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1063# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1065# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1067# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1069# 474 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1075 if (((x_cc(i) - center(1))**2 + (y_cc(j) - center(2))**2 + (z_cc(k) - center(3))**2 <= radius**2))
then
1076 ib_markers%sf(i, j, k) = encoded_patch_id
1082# 485 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1083#if defined(MFC_OpenACC)
1084# 485 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1086# 485 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1087#elif defined(MFC_OpenMP)
1088# 485 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1090# 485 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1092# 485 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1100 integer,
intent(in) :: patch_id
1101 type(integer_field),
intent(inout) :: ib_markers
1102 integer,
intent(in) :: xp, yp, zp
1103 integer :: i, j, k, ir, il, jr, jl, kr, kl
1104 integer :: encoded_patch_id
1105 real(wp),
dimension(1:3) :: xyz_local, center
1106 real(wp) :: corner_distance
1110 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1111 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1112 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1121 ir = m + gp_layers + 1
1122 jr = n + gp_layers + 1
1123 kr = p + gp_layers + 1
1124 corner_distance = 0.5_wp*sqrt(patch_ib(patch_id)%length_x**2 + patch_ib(patch_id)%length_y**2 &
1125 & + patch_ib(patch_id)%length_z**2)
1126 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1127 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1128 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1134# 525 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1136# 525 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1137#if defined(MFC_OpenACC)
1138# 525 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1140# 525 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1141#elif defined(MFC_OpenMP)
1142# 525 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1144# 525 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1146# 525 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1148# 525 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1150# 525 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1155 xyz_local = [x_cc(i), y_cc(j), z_cc(k)] - center
1157 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
1159 if (-0.5_wp*patch_ib(patch_id)%length_x <= xyz_local(1) &
1160 & .and. 0.5_wp*patch_ib(patch_id)%length_x >= xyz_local(1) .and. &
1161 & -0.5_wp*patch_ib(patch_id)%length_y <= xyz_local(2) &
1162 & .and. 0.5_wp*patch_ib(patch_id)%length_y >= xyz_local(2) .and. &
1163 & -0.5_wp*patch_ib(patch_id)%length_z <= xyz_local(3) &
1164 & .and. 0.5_wp*patch_ib(patch_id)%length_z >= xyz_local(3))
then
1166 ib_markers%sf(i, j, k) = encoded_patch_id
1172# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1173#if defined(MFC_OpenACC)
1174# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1176# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1177#elif defined(MFC_OpenMP)
1178# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1180# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1182# 545 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1190 integer,
intent(in) :: patch_id
1191 type(integer_field),
intent(inout) :: ib_markers
1192 integer,
intent(in) :: xp, yp, zp
1193 integer :: i, j, k, il, ir, jl, jr, kl, kr
1194 integer :: encoded_patch_id
1195 real(wp),
dimension(1:3) :: xyz_local, center, length
1196 real(wp),
dimension(1:3,1:3) :: inverse_rotation
1197 real(wp) :: corner_distance
1201 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1202 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1203 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1204 length = [patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y, patch_ib(patch_id)%length_z]
1212 ir = m + gp_layers + 1
1213 jr = n + gp_layers + 1
1214 kr = p + gp_layers + 1
1215 corner_distance = sqrt(patch_ib(patch_id)%radius**2 + maxval(length)**2)
1216 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1217 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1218 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1224# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1226# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1227#if defined(MFC_OpenACC)
1228# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1230# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1231#elif defined(MFC_OpenMP)
1232# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1234# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1236# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1238# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1240# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1245 xyz_local = [x_cc(i), y_cc(j), z_cc(k)] - center
1247 xyz_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse, xyz_local)
1249 if (((.not. f_is_default(patch_ib(patch_id)%length_x) .and. xyz_local(2)**2 + xyz_local(3) &
1250 & **2 <= patch_ib(patch_id)%radius**2 .and. -0.5_wp*patch_ib(patch_id)%length_x <= xyz_local(1) &
1251 & .and. 0.5_wp*patch_ib(patch_id)%length_x >= xyz_local(1)) &
1252 & .or. (.not. f_is_default(patch_ib(patch_id)%length_y) .and. xyz_local(1)**2 + xyz_local(3) &
1253 & **2 <= patch_ib(patch_id)%radius**2 .and. -0.5_wp*patch_ib(patch_id)%length_y <= xyz_local(2) &
1254 & .and. 0.5_wp*patch_ib(patch_id)%length_y >= xyz_local(2)) &
1255 & .or. (.not. f_is_default(patch_ib(patch_id)%length_z) .and. xyz_local(1)**2 + xyz_local(2) &
1256 & **2 <= patch_ib(patch_id)%radius**2 .and. -0.5_wp*patch_ib(patch_id)%length_z <= xyz_local(3) &
1257 & .and. 0.5_wp*patch_ib(patch_id)%length_z >= xyz_local(3))))
then
1259 ib_markers%sf(i, j, k) = encoded_patch_id
1265# 608 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1266#if defined(MFC_OpenACC)
1267# 608 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1269# 608 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1270#elif defined(MFC_OpenMP)
1271# 608 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1273# 608 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1275# 608 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1283 integer,
intent(in) :: patch_id
1284 type(integer_field),
intent(inout) :: ib_markers
1285 integer,
intent(in) :: xp, yp
1286 integer :: i, j, il, ir, jl, jr
1287 integer :: encoded_patch_id
1288 real(wp),
dimension(1:3) :: xy_local
1289 real(wp),
dimension(1:2) :: center
1290 real(wp) :: bounding_radius
1294 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1295 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1301 bounding_radius = 0.5_wp*max(patch_ib(patch_id)%length_x, patch_ib(patch_id)%length_y)
1304 ir = m + gp_layers + 1
1305 jr = n + gp_layers + 1
1306 call get_bounding_indices(center(1) - bounding_radius*2._wp, center(1) + bounding_radius*2._wp, x_cc, il, ir)
1307 call get_bounding_indices(center(2) - bounding_radius*2._wp, center(2) + bounding_radius*2._wp, y_cc, jl, jr)
1311# 642 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1313# 642 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1314#if defined(MFC_OpenACC)
1315# 642 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1317# 642 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1318#elif defined(MFC_OpenMP)
1319# 642 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1321# 642 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1323# 642 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1325# 642 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1327# 642 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1332 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1333 xy_local = matmul(patch_ib(patch_id)%rotation_matrix_inverse(:,:), xy_local)
1336 if ((xy_local(1)/(0.5_wp*patch_ib(patch_id)%length_x))**2 + (xy_local(2)/(0.5_wp*patch_ib(patch_id)%length_y)) &
1337 & **2 <= 1._wp)
then
1339 ib_markers%sf(i, j, 0) = encoded_patch_id
1344# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1345#if defined(MFC_OpenACC)
1346# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1348# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1349#elif defined(MFC_OpenMP)
1350# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1352# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1354# 657 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1362 integer,
intent(in) :: patch_id
1363 type(integer_field),
intent(inout) :: ib_markers
1364 integer,
intent(in) :: xp, yp
1365 integer :: i, j, il, ir, jl, jr
1366 integer :: model_id, encoded_patch_id
1368 real(wp) :: lx(2), ly(2)
1369 real(wp),
dimension(1:2) :: bbox_min, bbox_max
1370 real(wp),
dimension(1:3) :: local_corner, world_corner
1371 real(wp) :: eta, threshold
1372 real(wp),
dimension(1:3) :: offset
1373 real(wp),
dimension(1:3) :: center, xy_local
1374 real(wp),
dimension(1:3,1:3) :: inverse_rotation, rotation
1377 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1378 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1379 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1380 rotation(:,:) = patch_ib(patch_id)%rotation_matrix(:,:)
1381 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1382 model_id = patch_ib(patch_id)%model_id
1383 threshold = stl_models(model_id)%model_threshold
1390 ir = m + gp_layers + 1
1391 jr = n + gp_layers + 1
1394 lx(1) = stl_bounding_boxes(model_id, 1, 1) + offset(1)
1395 lx(2) = stl_bounding_boxes(model_id, 1, 3) + offset(1)
1396 ly(1) = stl_bounding_boxes(model_id, 2, 1) + offset(2)
1397 ly(2) = stl_bounding_boxes(model_id, 2, 3) + offset(2)
1404 local_corner = [lx(cx), ly(cy), 0._wp]
1405 world_corner = matmul(rotation, local_corner) + center
1406 bbox_min(1) = min(bbox_min(1), world_corner(1))
1407 bbox_min(2) = min(bbox_min(2), world_corner(2))
1408 bbox_max(1) = max(bbox_max(1), world_corner(1))
1409 bbox_max(2) = max(bbox_max(2), world_corner(2))
1417# 718 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1419# 718 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1420#if defined(MFC_OpenACC)
1421# 718 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1423# 718 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1424#elif defined(MFC_OpenMP)
1425# 718 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1427# 718 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1429# 718 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1431# 718 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1433# 718 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1435# 720 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1438 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1439 xy_local = matmul(inverse_rotation, xy_local)
1440 xy_local = xy_local - offset
1442 eta = f_model_is_inside_flat(gpu_ntrs(model_id), model_id, xy_local)
1445 if (eta > threshold)
then
1446 ib_markers%sf(i, j, 0) = encoded_patch_id
1451# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1452#if defined(MFC_OpenACC)
1453# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1455# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1456#elif defined(MFC_OpenMP)
1457# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1459# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1461# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1469 integer,
intent(in) :: patch_id
1470 type(integer_field),
intent(inout) :: ib_markers
1471 integer,
intent(in) :: xp, yp, zp
1472 integer :: i, j, k, il, ir, jl, jr, kl, kr
1473 integer :: model_id, encoded_patch_id
1474 real(wp) :: eta, threshold
1475 real(wp),
dimension(1:3) :: offset
1476 real(wp),
dimension(1:3) :: center, xyz_local
1477 real(wp),
dimension(1:3,1:3) :: inverse_rotation, rotation
1478 integer :: cx, cy, cz
1479 real(wp) :: lx(2), ly(2), lz(2)
1480 real(wp),
dimension(1:3) :: bbox_min, bbox_max, local_corner, world_corner
1483 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1484 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1485 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1486 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1487 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1488 model_id = patch_ib(patch_id)%model_id
1489 threshold = stl_models(model_id)%model_threshold
1490 rotation(:,:) = patch_ib(patch_id)%rotation_matrix(:,:)
1498 ir = m + gp_layers + 1
1499 jr = n + gp_layers + 1
1500 kr = p + gp_layers + 1
1503 lx(1) = stl_bounding_boxes(model_id, 1, 1) + offset(1)
1504 lx(2) = stl_bounding_boxes(model_id, 1, 3) + offset(1)
1505 ly(1) = stl_bounding_boxes(model_id, 2, 1) + offset(2)
1506 ly(2) = stl_bounding_boxes(model_id, 2, 3) + offset(2)
1507 lz(1) = stl_bounding_boxes(model_id, 3, 1) + offset(3)
1508 lz(2) = stl_bounding_boxes(model_id, 3, 3) + offset(3)
1516 local_corner = [lx(cx), ly(cy), lz(cz)]
1517 world_corner = matmul(rotation, local_corner) + center
1518 bbox_min(1) = min(bbox_min(1), world_corner(1))
1519 bbox_min(2) = min(bbox_min(2), world_corner(2))
1520 bbox_min(3) = min(bbox_min(3), world_corner(3))
1521 bbox_max(1) = max(bbox_max(1), world_corner(1))
1522 bbox_max(2) = max(bbox_max(2), world_corner(2))
1523 bbox_max(3) = max(bbox_max(3), world_corner(3))
1533# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1535# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1536#if defined(MFC_OpenACC)
1537# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1539# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1540#elif defined(MFC_OpenMP)
1541# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1543# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1545# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1547# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1549# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1551# 806 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1555 xyz_local = [x_cc(i) - center(1), y_cc(j) - center(2), z_cc(k) - center(3)]
1556 xyz_local = matmul(inverse_rotation, xyz_local)
1557 xyz_local = xyz_local - offset
1559 eta = f_model_is_inside_flat(gpu_ntrs(model_id), model_id, xyz_local)
1561 if (eta > threshold)
then
1562 ib_markers%sf(i, j, k) = encoded_patch_id
1568# 821 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1569#if defined(MFC_OpenACC)
1570# 821 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1572# 821 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1573#elif defined(MFC_OpenMP)
1574# 821 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1576# 821 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1578# 821 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1587# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1589# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1591# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1593# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1595# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1597# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1599# 828 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1602 integer,
intent(in) :: patch_id
1603 real(wp),
dimension(3, 3, 3) :: rotation
1608 if (num_dims == 3)
then
1610 angle = patch_ib(patch_id)%angles(1)
1611 rotation(1, 1,:) = [1._wp, 0._wp, 0._wp]
1612 rotation(1, 2,:) = [0._wp, cos(angle), -sin(angle)]
1613 rotation(1, 3,:) = [0._wp, sin(angle), cos(angle)]
1615 angle = patch_ib(patch_id)%angles(2)
1616 rotation(2, 1,:) = [cos(angle), 0._wp, sin(angle)]
1617 rotation(2, 2,:) = [0._wp, 1._wp, 0._wp]
1618 rotation(2, 3,:) = [-sin(angle), 0._wp, cos(angle)]
1621 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(rotation(1,:,:), rotation(2,:,:))
1622 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(2,:,:)), transpose(rotation(1,:,:)))
1626 angle = patch_ib(patch_id)%angles(3)
1627 rotation(3, 1,:) = [cos(angle), -sin(angle), 0._wp]
1628 rotation(3, 2,:) = [sin(angle), cos(angle), 0._wp]
1629 rotation(3, 3,:) = [0._wp, 0._wp, 1._wp]
1631 if (num_dims == 3)
then
1633 patch_ib(patch_id)%rotation_matrix(:,:) = matmul(patch_ib(patch_id)%rotation_matrix(:,:), rotation(3,:,:))
1634 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = matmul(transpose(rotation(3,:,:)), &
1635 & patch_ib(patch_id)%rotation_matrix_inverse(:,:))
1638 patch_ib(patch_id)%rotation_matrix(:,:) = rotation(3,:,:)
1639 patch_ib(patch_id)%rotation_matrix_inverse(:,:) = transpose(rotation(3,:,:))
1646 real(wp),
intent(in) :: left_bound, right_bound
1647 integer,
intent(inout) :: left_index, right_index
1648 real(wp),
dimension(-buff_size:),
intent(in) :: cell_centers
1649 integer :: itr_left, itr_middle, itr_right
1651 itr_left = left_index
1652 itr_right = right_index
1654 do while (itr_left + 1 < itr_right)
1655 itr_middle = (itr_left + itr_right)/2
1656 if (cell_centers(itr_middle) < left_bound)
then
1657 itr_left = itr_middle
1658 else if (cell_centers(itr_middle) > left_bound)
then
1659 itr_right = itr_middle
1661 itr_left = itr_middle
1665 left_index = itr_left
1667 itr_right = right_index
1668 do while (itr_left + 1 < itr_right)
1669 itr_middle = (itr_left + itr_right)/2
1670 if (cell_centers(itr_middle) < right_bound)
then
1671 itr_left = itr_middle
1672 else if (cell_centers(itr_middle) > right_bound)
then
1673 itr_right = itr_middle
1675 itr_right = itr_middle
1679 right_index = itr_right
1686 integer,
intent(in) :: patch_id, x_periodicity, y_periodicity, z_periodicity
1687 integer,
intent(out) :: encoded_patch_id
1688 integer :: temp_x_per, temp_y_per, temp_z_per, offset
1690 encoded_patch_id = patch_id
1692 temp_x_per = x_periodicity;
if (x_periodicity == -1) temp_x_per = 2
1693 temp_y_per = y_periodicity;
if (y_periodicity == -1) temp_y_per = 2
1694 temp_z_per = z_periodicity;
if (z_periodicity == -1) temp_z_per = 2
1696 offset = (num_gbl_ibs + 1)*temp_x_per + 3*(num_gbl_ibs + 1)*temp_y_per + 9*(num_gbl_ibs + 1)*temp_z_per
1697 encoded_patch_id = patch_id + offset
1705# 932 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1707# 932 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1709# 932 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1711# 932 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1713# 932 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1715# 932 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1717# 932 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1720 integer,
intent(in) :: encoded_patch_id
1721 integer,
intent(out) :: patch_id
1722 integer,
intent(out),
optional :: x_periodicity, y_periodicity, z_periodicity
1723 integer :: offset, remainder, xp, yp, zp, base
1725 base = num_gbl_ibs + 1
1727 patch_id = mod(encoded_patch_id - 1, base) + 1
1728 offset = (encoded_patch_id - patch_id)/base
1731 remainder = offset/3
1732 yp = mod(remainder, 3)
1736 if (
present(x_periodicity) .and.
present(y_periodicity) .and.
present(z_periodicity))
then
1737 x_periodicity = xp;
if (xp == 2) x_periodicity = -1
1738 y_periodicity = yp;
if (yp == 2) y_periodicity = -1
1739 z_periodicity = zp;
if (zp == 2) z_periodicity = -1
1747 integer,
intent(out) :: xp_lower, xp_upper, yp_lower, yp_upper
1748 integer,
intent(out),
optional :: zp_lower, zp_upper
1752# 967 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1754 if (ib_bc_x%beg == bc_periodic)
then
1762# 967 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1764 if (ib_bc_y%beg == bc_periodic)
then
1772# 977 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1775 if (
present(zp_lower) .and. p /= 0)
then
1776 if (ib_bc_z%beg == bc_periodic)
then
1788 pure elemental function f_r(myth, offset, a)
1791# 994 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1793# 994 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1795# 994 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1797# 994 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1799# 994 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1801# 994 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1803# 994 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1805 real(wp),
intent(in) :: myth, offset, a
1811 b = 2._wp*a/(2._wp*pi)
1812 f_r = a + b*myth + offset
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
type(ib_airfoil_parameters), dimension(num_ib_airfoils_max) ib_airfoil
Per-airfoil NACA user inputs (namelist).
type(ib_patch_parameters), dimension(num_ib_patches_max_namelist) patch_ib
Immersed boundary patch parameters.
type(ib_airfoil_grid), dimension(num_ib_airfoils_max) ib_airfoil_grids
Per-airfoil computed surface grids.
real(wp), dimension(:), allocatable, target dx
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
Allocate memory and read initial condition data for IC extrusion.
subroutine s_ib_cylinder(patch_id, ib_markers, xp, yp, zp)
Mark cells inside a cylindrical immersed boundary.
subroutine, public s_update_ib_rotation_matrix(patch_id)
Compute a rotation matrix for converting to the rotating frame of the boundary.
subroutine s_ib_airfoil(patch_id, ib_markers, xp, yp)
Mark cells inside a 2D NACA 4-digit airfoil immersed boundary.
subroutine s_ib_3d_model(patch_id, ib_markers, xp, yp, zp)
The STL patch is a 3D geometry that is imported from an STL file.
subroutine s_ib_circle(patch_id, ib_markers, xp, yp)
Mark cells inside a circular immersed boundary.
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, public s_initialize_ib_airfoils()
Initialize the NACA surface grids for all airfoil IB patches. Must be called after the grid is establ...
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.