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# 199 "/home/runner/work/MFC/MFC/src/common/include/ExtrusionHardcodedIC.fpp"
59# 210 "/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# 67 "/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# 19 "/home/runner/work/MFC/MFC/src/common/include/2dHardcodedIC.fpp"
69# 343 "/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# 69 "/home/runner/work/MFC/MFC/src/common/include/3dHardcodedIC.fpp"
74# 198 "/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# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
178# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
180# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
182# 245 "/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# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
187# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
189# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
191# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
193# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
195# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
197# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
199# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
201# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
203# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
205# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
207# 376 "/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# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
278# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
280# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
282# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
284# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
286# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
288# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
290# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
292# 308 "/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
296# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
298# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
300# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
304# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
306# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
308# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
310# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
312# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
314# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
316# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
318# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
320# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
322# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
324# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
326# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
328# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
330# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
332# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
334# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
335# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
337# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
339# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
345# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
347# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
349# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
351# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
353# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
355# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
357# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
359# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
361# 11 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp" 2
385# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
386#if defined(MFC_OpenACC)
387# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
389# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
390#elif defined(MFC_OpenMP)
391# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
393# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
396# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
397#if defined(MFC_OpenACC)
398# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
400# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
401#elif defined(MFC_OpenMP)
402# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
404# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
410# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
411#if defined(MFC_OpenACC)
412# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
414# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
415#elif defined(MFC_OpenMP)
416# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
418# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
428# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
429#if defined(MFC_OpenACC)
430# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
432# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
433#elif defined(MFC_OpenMP)
434# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
436# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
443# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
444#if defined(MFC_OpenACC)
445# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
447# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
448#elif defined(MFC_OpenMP)
449# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
451# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
467 integer :: i, xp, yp, zp
468 integer :: xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper
476 do xp = xp_lower, xp_upper
477 do yp = yp_lower, yp_upper
478 do zp = zp_lower, zp_upper
482 elseif (
patch_ib(i)%geometry == 9)
then
484 elseif (
patch_ib(i)%geometry == 10)
then
486 elseif (
patch_ib(i)%geometry == 11)
then
488 elseif (
patch_ib(i)%geometry == 12)
then
503 do xp = xp_lower, xp_upper
504 do yp = yp_lower, yp_upper
508 elseif (
patch_ib(i)%geometry == 3)
then
510 elseif (
patch_ib(i)%geometry == 4)
then
512 elseif (
patch_ib(i)%geometry == 5)
then
514 elseif (
patch_ib(i)%geometry == 6)
then
536 integer,
intent(in) :: patch_id
537 integer,
intent(in) :: xp, yp
540 real(wp),
dimension(1:2) :: center
542 integer :: i, j, il, ir, jl, jr
543 integer :: encoded_patch_id
557 ir =
m + gp_layers + 1
558 jr =
n + gp_layers + 1
568# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
570# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
571#if defined(MFC_OpenACC)
572# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
574# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
575#elif defined(MFC_OpenMP)
576# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
578# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
580# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
582# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
584# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
586# 166 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
588# 168 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
591 if ((
x_cc(i) - center(1))**2 &
592 + (
y_cc(j) - center(2))**2 <= radius**2) &
594 ib_markers%sf(i, j, 0) = encoded_patch_id
599# 177 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
601# 177 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
602#if defined(MFC_OpenACC)
603# 177 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
605# 177 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
606#elif defined(MFC_OpenMP)
607# 177 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
609# 177 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
611# 177 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
613# 177 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
615# 177 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
625 integer,
intent(in) :: patch_id
627 integer,
intent(in) :: xp, yp
629 real(wp) :: f, ca_in, pa, ma, ta
630 real(wp) :: xa, yt, xu, yu, xl, yl, xc, yc, dycdxc, sin_c, cos_c
631 integer :: i, j, k, il, ir, jl, jr
633 integer :: encoded_patch_id
635 real(wp),
dimension(1:3) :: xy_local, offset
636 real(wp),
dimension(1:2) :: center
637 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
645 inverse_rotation(:, :) =
patch_ib(patch_id)%rotation_matrix_inverse(:, :)
646 offset(:) =
patch_ib(patch_id)%centroid_offset(:)
648 np1 = int((pa*ca_in/
dx(0))*20)
649 np2 = int(((ca_in - pa*ca_in)/
dx(0))*20)
652# 212 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
653#if defined(MFC_OpenACC)
654# 212 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
656# 212 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
657#elif defined(MFC_OpenMP)
658# 212 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
660# 212 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
665# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
667# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
668 use iso_fortran_env,
only: output_unit
669# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
671# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
672 print *,
'm_ib_patches.fpp:215: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
673# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
675# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
676 call flush (output_unit)
677# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
679# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
681# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
683# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
685# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
687# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
688#if defined(MFC_OpenACC)
689# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
691# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
692#elif defined(MFC_OpenMP)
693# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
695# 215 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
698# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
700# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
701 use iso_fortran_env,
only: output_unit
702# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
704# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
705 print *,
'm_ib_patches.fpp:216: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
706# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
708# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
709 call flush (output_unit)
710# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
712# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
714# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
715 allocate (airfoil_grid_l(1:np))
716# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
718# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
720# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
721#if defined(MFC_OpenACC)
722# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
724# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
725#elif defined(MFC_OpenMP)
726# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
728# 216 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
732 airfoil_grid_u(1)%x = 0._wp
733 airfoil_grid_u(1)%y = 0._wp
735 airfoil_grid_l(1)%x = 0._wp
736 airfoil_grid_l(1)%y = 0._wp
738 do i = 1, np1 + np2 - 1
741 xc = i*(pa*ca_in/np1)
743 yc = (ma/pa**2)*(2*pa*xa - xa**2)
744 dycdxc = (2*ma/pa**2)*(pa - xa)
746 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
748 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
749 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
752 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)
753 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
754 cos_c = 1/(1 + dycdxc**2)**0.5_wp
768 airfoil_grid_u(i + 1)%x = xu
769 airfoil_grid_u(i + 1)%y = yu
771 airfoil_grid_l(i + 1)%x = xl
772 airfoil_grid_l(i + 1)%y = yl
776 airfoil_grid_u(np)%x = ca_in
777 airfoil_grid_u(np)%y = 0._wp
779 airfoil_grid_l(np)%x = ca_in
780 airfoil_grid_l(np)%y = 0._wp
783# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
784#if defined(MFC_OpenACC)
785# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
787# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
788#elif defined(MFC_OpenMP)
789# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
791# 269 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
802 ir = m + gp_layers + 1
803 jr = n + gp_layers + 1
809# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
811# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
812#if defined(MFC_OpenACC)
813# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
815# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
816#elif defined(MFC_OpenMP)
817# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
819# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
821# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
823# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
825# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
827# 285 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
829# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
832 xy_local = [x_cc(i) - center(1), y_cc(
j) - center(2), 0._wp]
833 xy_local = matmul(inverse_rotation, xy_local)
834 xy_local = xy_local - offset
836 if (xy_local(1) >= 0._wp .and. xy_local(1) <= ca_in)
then
837 xa = xy_local(1)/ca_in
839 yc = (ma/pa**2)*(2*pa*xa - xa**2)
840 dycdxc = (2*ma/pa**2)*(pa - xa)
842 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
843 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
845 if (xy_local(2) >= 0._wp)
then
847 do while (airfoil_grid_u(
k)%x < xy_local(1) .and.
k <= np)
850 if (f_approx_equal(airfoil_grid_u(
k)%x, xy_local(1)))
then
851 if (xy_local(2) <= airfoil_grid_u(
k)%y)
then
853 ib_markers%sf(i,
j, 0) = encoded_patch_id
856 f = (airfoil_grid_u(
k)%x - xy_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
857 if (xy_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
859 ib_markers%sf(i,
j, 0) = encoded_patch_id
864 do while (airfoil_grid_l(
k)%x < xy_local(1))
867 if (f_approx_equal(airfoil_grid_l(
k)%x, xy_local(1)))
then
868 if (xy_local(2) >= airfoil_grid_l(
k)%y)
then
870 ib_markers%sf(i,
j, 0) = encoded_patch_id
873 f = (airfoil_grid_l(
k)%x - xy_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
875 if (xy_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
877 ib_markers%sf(i,
j, 0) = encoded_patch_id
885# 341 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
887# 341 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
888#if defined(MFC_OpenACC)
889# 341 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
891# 341 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
892#elif defined(MFC_OpenMP)
893# 341 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
895# 341 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
897# 341 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
899# 341 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
901# 341 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
912 integer,
intent(in) :: patch_id
913 type(integer_field),
intent(inout) :: ib_markers
914 integer,
intent(in) :: xp, yp, zp
916 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
917 integer :: i, j, k, l, il, ir, jl, jr, ll, lr
919 integer :: encoded_patch_id
921 real(wp),
dimension(1:3) :: xyz_local, center, offset
922 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
924 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
925 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
926 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
927 lz = patch_ib(patch_id)%length_z
928 ca_in = patch_ib(patch_id)%c
929 pa = patch_ib(patch_id)%p
930 ma = patch_ib(patch_id)%m
931 ta = patch_ib(patch_id)%t
932 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
933 offset(:) = patch_ib(patch_id)%centroid_offset(:)
938 np1 = int((pa*ca_in/dx(0))*20)
939 np2 = int(((ca_in - pa*ca_in)/dx(0))*20)
942# 380 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
943#if defined(MFC_OpenACC)
944# 380 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
946# 380 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
947#elif defined(MFC_OpenMP)
948# 380 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
950# 380 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
953 if (.not.
allocated(airfoil_grid_u))
then
956# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
958# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
959 use iso_fortran_env,
only: output_unit
960# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
962# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
963 print *,
'm_ib_patches.fpp:384: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
964# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
966# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
967 call flush (output_unit)
968# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
970# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
972# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
973 allocate (airfoil_grid_u(1:np))
974# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
976# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
978# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
979#if defined(MFC_OpenACC)
980# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
982# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
983#elif defined(MFC_OpenMP)
984# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
986# 384 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
989# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
991# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
992 use iso_fortran_env,
only: output_unit
993# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
995# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
996 print *,
'm_ib_patches.fpp:385: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
997# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
999# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1000 call flush (output_unit)
1001# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1003# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1005# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1006 allocate (airfoil_grid_l(1:np))
1007# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1009# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1011# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1012#if defined(MFC_OpenACC)
1013# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1015# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1016#elif defined(MFC_OpenMP)
1017# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1019# 385 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1022 airfoil_grid_u(1)%x = 0._wp
1023 airfoil_grid_u(1)%y = 0._wp
1025 airfoil_grid_l(1)%x = 0._wp
1026 airfoil_grid_l(1)%y = 0._wp
1028 do i = 1, np1 + np2 - 1
1030 xc = i*(pa*ca_in/np1)
1032 yc = (ma/pa**2)*(2*pa*xa - xa**2)
1033 dycdxc = (2*ma/pa**2)*(pa - xa)
1035 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
1037 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
1038 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
1041 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)
1042 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
1043 cos_c = 1/(1 + dycdxc**2)**0.5_wp
1057 airfoil_grid_u(i + 1)%x = xu
1058 airfoil_grid_u(i + 1)%y = yu
1060 airfoil_grid_l(i + 1)%x = xl
1061 airfoil_grid_l(i + 1)%y = yl
1065 airfoil_grid_u(np)%x = ca_in
1066 airfoil_grid_u(np)%y = 0._wp
1068 airfoil_grid_l(np)%x = ca_in
1069 airfoil_grid_l(np)%y = 0._wp
1072# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1073#if defined(MFC_OpenACC)
1074# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1076# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1077#elif defined(MFC_OpenMP)
1078# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1080# 436 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1091 ir = m + gp_layers + 1
1092 jr = n + gp_layers + 1
1093 lr = p + gp_layers + 1
1100# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1102# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1103#if defined(MFC_OpenACC)
1104# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1106# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1107#elif defined(MFC_OpenMP)
1108# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1110# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1112# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1114# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1116# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1118# 454 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1120# 456 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1124 xyz_local = [x_cc(i) - center(1), y_cc(
j) - center(2), z_cc(
l) - center(3)]
1125 xyz_local = matmul(inverse_rotation, xyz_local)
1126 xyz_local = xyz_local - offset
1128 if (xyz_local(3) >= z_min .and. xyz_local(3) <= z_max)
then
1130 if (xyz_local(1) >= 0._wp .and. xyz_local(1) <= ca_in)
then
1131 if (xyz_local(2) >= 0._wp)
then
1133 do while (airfoil_grid_u(
k)%x < xyz_local(1))
1136 if (f_approx_equal(airfoil_grid_u(
k)%x, xyz_local(1)))
then
1137 if (xyz_local(2) <= airfoil_grid_u(
k)%y)
then
1139 ib_markers%sf(i,
j,
l) = encoded_patch_id
1142 f = (airfoil_grid_u(
k)%x - xyz_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
1143 if (xyz_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
1145 ib_markers%sf(i,
j,
l) = encoded_patch_id
1150 do while (airfoil_grid_l(
k)%x < xyz_local(1))
1153 if (f_approx_equal(airfoil_grid_l(
k)%x, xyz_local(1)))
then
1154 if (xyz_local(2) >= airfoil_grid_l(
k)%y)
then
1156 ib_markers%sf(i,
j,
l) = encoded_patch_id
1159 f = (airfoil_grid_l(
k)%x - xyz_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
1161 if (xyz_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
1163 ib_markers%sf(i,
j,
l) = encoded_patch_id
1173# 507 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1175# 507 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1176#if defined(MFC_OpenACC)
1177# 507 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1179# 507 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1180#elif defined(MFC_OpenMP)
1181# 507 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1183# 507 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1185# 507 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1187# 507 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1189# 507 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1207 integer,
intent(in) :: patch_id
1208 type(integer_field),
intent(inout) :: ib_markers
1209 integer,
intent(in) :: xp, yp
1211 integer :: i, j, il, ir, jl, jr
1212 integer :: encoded_patch_id
1213 real(wp) :: corner_distance
1214 real(wp),
dimension(1:3) :: xy_local
1215 real(wp),
dimension(1:2) :: length, center
1216 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1219 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1220 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1221 length(1) = patch_ib(patch_id)%length_x
1222 length(2) = patch_ib(patch_id)%length_y
1223 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1231 ir = m + gp_layers + 1
1232 jr = n + gp_layers + 1
1233 corner_distance = sqrt(dot_product(length, length))/2._wp
1234 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1235 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1242# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1244# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1245#if defined(MFC_OpenACC)
1246# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1248# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1249#elif defined(MFC_OpenMP)
1250# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1252# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1254# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1256# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1258# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1260# 558 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1262# 560 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1266 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1267 xy_local = matmul(inverse_rotation, xy_local)
1269 if (-0.5_wp*length(1) <= xy_local(1) .and. &
1270 0.5_wp*length(1) >= xy_local(1) .and. &
1271 -0.5_wp*length(2) <= xy_local(2) .and. &
1272 0.5_wp*length(2) >= xy_local(2))
then
1275 ib_markers%sf(i, j, 0) = encoded_patch_id
1281# 577 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1283# 577 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1284#if defined(MFC_OpenACC)
1285# 577 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1287# 577 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1288#elif defined(MFC_OpenMP)
1289# 577 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1291# 577 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1293# 577 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1295# 577 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1297# 577 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1312 integer,
intent(in) :: patch_id
1313 type(integer_field),
intent(inout) :: ib_markers
1314 integer,
intent(in) :: xp, yp, zp
1318 integer :: il, ir, jl, jr, kl, kr
1319 integer :: encoded_patch_id
1321 real(wp),
dimension(1:3) :: center
1328 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1329 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1330 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1331 radius = patch_ib(patch_id)%radius
1340 ir = m + gp_layers + 1
1341 jr = n + gp_layers + 1
1342 kr = p + gp_layers + 1
1352# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1354# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1355#if defined(MFC_OpenACC)
1356# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1358# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1359#elif defined(MFC_OpenMP)
1360# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1362# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1364# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1366# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1368# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1370# 630 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1372# 632 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1377 if (grid_geometry == 3)
then
1384 if (((x_cc(i) - center(1))**2 &
1385 + (
cart_y - center(2))**2 &
1386 + (
cart_z - center(3))**2 <= radius**2))
then
1387 ib_markers%sf(i, j, k) = encoded_patch_id
1393# 651 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1395# 651 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1396#if defined(MFC_OpenACC)
1397# 651 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1399# 651 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1400#elif defined(MFC_OpenMP)
1401# 651 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1403# 651 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1405# 651 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1407# 651 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1409# 651 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1426 integer,
intent(in) :: patch_id
1427 type(integer_field),
intent(inout) :: ib_markers
1428 integer,
intent(in) :: xp, yp, zp
1430 integer :: i, j, k, ir, il, jr, jl, kr, kl
1431 integer :: encoded_patch_id
1432 real(wp),
dimension(1:3) :: xyz_local, center, length
1433 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1434 real(wp) :: corner_distance
1437 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1438 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1439 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1440 length(1) = patch_ib(patch_id)%length_x
1441 length(2) = patch_ib(patch_id)%length_y
1442 length(3) = patch_ib(patch_id)%length_z
1443 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1452 ir = m + gp_layers + 1
1453 jr = n + gp_layers + 1
1454 kr = p + gp_layers + 1
1455 corner_distance = sqrt(dot_product(length, length))/2._wp
1456 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1457 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1458 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1465# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1467# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1468#if defined(MFC_OpenACC)
1469# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1471# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1472#elif defined(MFC_OpenMP)
1473# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1475# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1477# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1479# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1481# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1483# 705 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1485# 707 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1490 if (grid_geometry == 3)
then
1498 xyz_local = matmul(inverse_rotation, xyz_local)
1500 if (-0.5*length(1) <= xyz_local(1) .and. &
1501 0.5*length(1) >= xyz_local(1) .and. &
1502 -0.5*length(2) <= xyz_local(2) .and. &
1503 0.5*length(2) >= xyz_local(2) .and. &
1504 -0.5*length(3) <= xyz_local(3) .and. &
1505 0.5*length(3) >= xyz_local(3))
then
1508 ib_markers%sf(i, j, k) = encoded_patch_id
1514# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1516# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1517#if defined(MFC_OpenACC)
1518# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1520# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1521#elif defined(MFC_OpenMP)
1522# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1524# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1526# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1528# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1530# 734 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1548 integer,
intent(in) :: patch_id
1549 type(integer_field),
intent(inout) :: ib_markers
1550 integer,
intent(in) :: xp, yp, zp
1552 integer :: i, j, k, il, ir, jl, jr, kl, kr
1553 integer :: encoded_patch_id
1555 real(wp),
dimension(1:3) :: xyz_local, center, length
1556 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1557 real(wp) :: corner_distance
1560 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1561 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1562 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1563 length(1) = patch_ib(patch_id)%length_x
1564 length(2) = patch_ib(patch_id)%length_y
1565 length(3) = patch_ib(patch_id)%length_z
1566 radius = patch_ib(patch_id)%radius
1567 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1575 ir = m + gp_layers + 1
1576 jr = n + gp_layers + 1
1577 kr = p + gp_layers + 1
1578 corner_distance = sqrt(radius**2 + maxval(length)**2)
1579 call get_bounding_indices(center(1) - corner_distance, center(1) + corner_distance, x_cc, il, ir)
1580 call get_bounding_indices(center(2) - corner_distance, center(2) + corner_distance, y_cc, jl, jr)
1581 call get_bounding_indices(center(3) - corner_distance, center(3) + corner_distance, z_cc, kl, kr)
1588# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1590# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1591#if defined(MFC_OpenACC)
1592# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1594# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1595#elif defined(MFC_OpenMP)
1596# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1598# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1600# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1602# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1604# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1606# 790 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1608# 792 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1613 if (grid_geometry == 3)
then
1620 xyz_local = matmul(inverse_rotation, xyz_local)
1622 if (((.not. f_is_default(length(1)) .and. &
1624 + xyz_local(3)**2 <= radius**2 .and. &
1625 -0.5_wp*length(1) <= xyz_local(1) .and. &
1626 0.5_wp*length(1) >= xyz_local(1)) &
1628 (.not. f_is_default(length(2)) .and. &
1630 + xyz_local(3)**2 <= radius**2 .and. &
1631 -0.5_wp*length(2) <= xyz_local(2) .and. &
1632 0.5_wp*length(2) >= xyz_local(2)) &
1634 (.not. f_is_default(length(3)) .and. &
1636 + xyz_local(2)**2 <= radius**2 .and. &
1637 -0.5_wp*length(3) <= xyz_local(3) .and. &
1638 0.5_wp*length(3) >= xyz_local(3))))
then
1641 ib_markers%sf(i, j, k) = encoded_patch_id
1647# 829 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1649# 829 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1650#if defined(MFC_OpenACC)
1651# 829 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1653# 829 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1654#elif defined(MFC_OpenMP)
1655# 829 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1657# 829 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1659# 829 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1661# 829 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1663# 829 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1671 integer,
intent(in) :: patch_id
1672 type(integer_field),
intent(inout) :: ib_markers
1673 integer,
intent(in) :: xp, yp
1675 integer :: i, j, il, ir, jl, jr
1676 integer :: encoded_patch_id
1677 real(wp),
dimension(1:3) :: xy_local
1678 real(wp),
dimension(1:2) :: ellipse_coeffs
1679 real(wp),
dimension(1:2) :: center
1680 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1683 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1684 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1685 ellipse_coeffs(1) = 0.5_wp*patch_ib(patch_id)%length_x
1686 ellipse_coeffs(2) = 0.5_wp*patch_ib(patch_id)%length_y
1687 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1695 ir = m + gp_layers + 1
1696 jr = n + gp_layers + 1
1697 call get_bounding_indices(center(1) - maxval(ellipse_coeffs)*2._wp, center(1) + maxval(ellipse_coeffs)*2._wp, x_cc, il, ir)
1698 call get_bounding_indices(center(2) - maxval(ellipse_coeffs)*2._wp, center(2) + maxval(ellipse_coeffs)*2._wp, y_cc, jl, jr)
1703# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1705# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1706#if defined(MFC_OpenACC)
1707# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1709# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1710#elif defined(MFC_OpenMP)
1711# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1713# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1715# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1717# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1719# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1721# 867 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1723# 869 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1727 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1728 xy_local = matmul(inverse_rotation, xy_local)
1731 if ((xy_local(1)/ellipse_coeffs(1))**2 + (xy_local(2)/ellipse_coeffs(2))**2 <= 1._wp)
then
1733 ib_markers%sf(i, j, 0) = encoded_patch_id
1738# 882 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1740# 882 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1741#if defined(MFC_OpenACC)
1742# 882 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1744# 882 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1745#elif defined(MFC_OpenMP)
1746# 882 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1748# 882 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1750# 882 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1752# 882 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1754# 882 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1764 integer,
intent(in) :: patch_id
1765 type(integer_field),
intent(inout) :: ib_markers
1766 integer,
intent(in) :: xp, yp
1768 integer :: i, j, k, il, ir, jl, jr
1769 integer :: spc, encoded_patch_id
1771 real(wp) :: lx(2), ly(2)
1772 real(wp),
dimension(1:2) :: bbox_min, bbox_max
1773 real(wp),
dimension(1:3) :: local_corner, world_corner
1775 real(wp) :: eta, threshold
1776 real(wp),
dimension(1:3) :: point, local_point, offset
1777 real(wp),
dimension(1:3) :: center, xy_local
1778 real(wp),
dimension(1:3, 1:3) :: inverse_rotation, rotation
1781 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1782 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1783 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1784 rotation(:, :) = patch_ib(patch_id)%rotation_matrix(:, :)
1785 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1786 spc = patch_ib(patch_id)%model_spc
1787 threshold = patch_ib(patch_id)%model_threshold
1794 ir = m + gp_layers + 1
1795 jr = n + gp_layers + 1
1798 lx(1) = stl_bounding_boxes(patch_id, 1, 1) + offset(1)
1799 lx(2) = stl_bounding_boxes(patch_id, 1, 3) + offset(1)
1800 ly(1) = stl_bounding_boxes(patch_id, 2, 1) + offset(2)
1801 ly(2) = stl_bounding_boxes(patch_id, 2, 3) + offset(2)
1809 local_corner = [lx(cx), ly(cy), 0._wp]
1810 world_corner = matmul(rotation, local_corner) + center
1811 bbox_min(1) = min(bbox_min(1), world_corner(1))
1812 bbox_min(2) = min(bbox_min(2), world_corner(2))
1813 bbox_max(1) = max(bbox_max(1), world_corner(1))
1814 bbox_max(2) = max(bbox_max(2), world_corner(2))
1822# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1824# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1825#if defined(MFC_OpenACC)
1826# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1828# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1829#elif defined(MFC_OpenMP)
1830# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1832# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1834# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1836# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1838# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1840# 948 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1842# 950 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1845 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1846 xy_local = matmul(inverse_rotation, xy_local)
1847 xy_local = xy_local - offset
1849 eta = f_model_is_inside_flat(gpu_ntrs(patch_id), &
1853 if (eta > threshold)
then
1854 ib_markers%sf(i, j, 0) = encoded_patch_id
1859# 965 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1861# 965 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1862#if defined(MFC_OpenACC)
1863# 965 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1865# 965 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1866#elif defined(MFC_OpenMP)
1867# 965 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1869# 965 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1871# 965 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1873# 965 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1875# 965 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1885 integer,
intent(in) :: patch_id
1886 type(integer_field),
intent(inout) :: ib_markers
1887 integer,
intent(in) :: xp, yp, zp
1889 integer :: i, j, k, il, ir, jl, jr, kl, kr
1890 integer :: spc, encoded_patch_id
1892 real(wp) :: eta, threshold, corner_distance
1893 real(wp),
dimension(1:3) :: point, local_point, offset
1894 real(wp),
dimension(1:3) :: center, xyz_local
1895 real(wp),
dimension(1:3, 1:3) :: inverse_rotation, rotation
1896 integer :: cx, cy, cz
1897 real(wp) :: lx(2), ly(2), lz(2)
1898 real(wp),
dimension(1:3) :: bbox_min, bbox_max, local_corner, world_corner
1901 center(1) = patch_ib(patch_id)%x_centroid + real(xp, wp)*(x_domain%end - x_domain%beg)
1902 center(2) = patch_ib(patch_id)%y_centroid + real(yp, wp)*(y_domain%end - y_domain%beg)
1903 center(3) = patch_ib(patch_id)%z_centroid + real(zp, wp)*(z_domain%end - z_domain%beg)
1904 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1905 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1906 spc = patch_ib(patch_id)%model_spc
1907 threshold = patch_ib(patch_id)%model_threshold
1908 rotation(:, :) = patch_ib(patch_id)%rotation_matrix(:, :)
1916 ir = m + gp_layers + 1
1917 jr = n + gp_layers + 1
1918 kr = p + gp_layers + 1
1921 lx(1) = stl_bounding_boxes(patch_id, 1, 1) + offset(1)
1922 lx(2) = stl_bounding_boxes(patch_id, 1, 3) + offset(1)
1923 ly(1) = stl_bounding_boxes(patch_id, 2, 1) + offset(2)
1924 ly(2) = stl_bounding_boxes(patch_id, 2, 3) + offset(2)
1925 lz(1) = stl_bounding_boxes(patch_id, 3, 1) + offset(3)
1926 lz(2) = stl_bounding_boxes(patch_id, 3, 3) + offset(3)
1935 local_corner = [lx(cx), ly(cy), lz(cz)]
1936 world_corner = matmul(rotation, local_corner) + center
1937 bbox_min(1) = min(bbox_min(1), world_corner(1))
1938 bbox_min(2) = min(bbox_min(2), world_corner(2))
1939 bbox_min(3) = min(bbox_min(3), world_corner(3))
1940 bbox_max(1) = max(bbox_max(1), world_corner(1))
1941 bbox_max(2) = max(bbox_max(2), world_corner(2))
1942 bbox_max(3) = max(bbox_max(3), world_corner(3))
1952# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1954# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1955#if defined(MFC_OpenACC)
1956# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1958# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1959#elif defined(MFC_OpenMP)
1960# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1962# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1964# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1966# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1968# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1970# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1972# 1042 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1976 xyz_local = [x_cc(i) - center(1), y_cc(j) - center(2), z_cc(k) - center(3)]
1977 xyz_local = matmul(inverse_rotation, xyz_local)
1978 xyz_local = xyz_local - offset
1980 eta = f_model_is_inside_flat(gpu_ntrs(patch_id), &
1981 patch_id, xyz_local)
1983 if (eta > patch_ib(patch_id)%model_threshold)
then
1984 ib_markers%sf(i, j, k) = encoded_patch_id
1990# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1992# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1993#if defined(MFC_OpenACC)
1994# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1996# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1997#elif defined(MFC_OpenMP)
1998# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2000# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2002# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2004# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2006# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2014 integer,
intent(in) :: patch_id
2017 real(wp),
dimension(3, 3, 3) :: rotation
2021 if (num_dims == 3)
then
2023 angle = patch_ib(patch_id)%angles(1)
2024 rotation(1, 1, :) = [1._wp, 0._wp, 0._wp]
2025 rotation(1, 2, :) = [0._wp, cos(angle), -sin(angle)]
2026 rotation(1, 3, :) = [0._wp, sin(angle), cos(angle)]
2028 angle = patch_ib(patch_id)%angles(2)
2029 rotation(2, 1, :) = [cos(angle), 0._wp, sin(angle)]
2030 rotation(2, 2, :) = [0._wp, 1._wp, 0._wp]
2031 rotation(2, 3, :) = [-sin(angle), 0._wp, cos(angle)]
2034 patch_ib(patch_id)%rotation_matrix(:, :) = matmul(rotation(1, :, :), rotation(2, :, :))
2035 patch_ib(patch_id)%rotation_matrix_inverse(:, :) = matmul(transpose(rotation(2, :, :)), transpose(rotation(1, :, :)))
2039 angle = patch_ib(patch_id)%angles(3)
2040 rotation(3, 1, :) = [cos(angle), -sin(angle), 0._wp]
2041 rotation(3, 2, :) = [sin(angle), cos(angle), 0._wp]
2042 rotation(3, 3, :) = [0._wp, 0._wp, 1._wp]
2044 if (num_dims == 3)
then
2046 patch_ib(patch_id)%rotation_matrix(:, :) = matmul(patch_ib(patch_id)%rotation_matrix(:, :), rotation(3, :, :))
2047 patch_ib(patch_id)%rotation_matrix_inverse(:, :) = matmul(transpose(rotation(3, :, :)), patch_ib(patch_id)%rotation_matrix_inverse(:, :))
2050 patch_ib(patch_id)%rotation_matrix(:, :) = rotation(3, :, :)
2051 patch_ib(patch_id)%rotation_matrix_inverse(:, :) = transpose(rotation(3, :, :))
2059# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2061# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2063# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2065# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2067# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2069# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2071# 1109 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2074 real(wp),
intent(in) :: cyl_y, cyl_z
2076 cart_y = cyl_y*sin(cyl_z)
2077 cart_z = cyl_y*cos(cyl_z)
2085# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2087# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2089# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2091# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2093# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2095# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2097# 1121 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2100 real(wp),
dimension(1:3),
intent(in) :: cyl
2101 real(wp),
dimension(1:3) :: cart
2104 cyl(2)*sin(cyl(3)), &
2105 cyl(2)*cos(cyl(3))/)
2112# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2114# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2116# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2118# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2120# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2122# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2124# 1134 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2127 real(wp),
intent(IN) :: cyl_x, cyl_y
2135 real(wp),
intent(in) :: left_bound, right_bound
2136 integer,
intent(inout) :: left_index, right_index
2137 real(wp),
dimension(-buff_size:),
intent(in) :: cell_centers
2139 integer :: itr_left, itr_middle, itr_right
2141 itr_left = left_index
2142 itr_right = right_index
2144 do while (itr_left + 1 < itr_right)
2145 itr_middle = (itr_left + itr_right)/2
2146 if (cell_centers(itr_middle) < left_bound)
then
2147 itr_left = itr_middle
2148 else if (cell_centers(itr_middle) > left_bound)
then
2149 itr_right = itr_middle
2151 itr_left = itr_middle
2155 left_index = itr_left
2157 itr_right = right_index
2158 do while (itr_left + 1 < itr_right)
2159 itr_middle = (itr_left + itr_right)/2
2160 if (cell_centers(itr_middle) < right_bound)
then
2161 itr_left = itr_middle
2162 else if (cell_centers(itr_middle) > right_bound)
then
2163 itr_right = itr_middle
2165 itr_right = itr_middle
2169 right_index = itr_right
2176 integer,
intent(in) :: patch_id, x_periodicity, y_periodicity, z_periodicity
2177 integer,
intent(out) :: encoded_patch_id
2179 integer :: temp_x_per, temp_y_per, temp_z_per, offset
2181 encoded_patch_id = patch_id
2183 temp_x_per = x_periodicity;
if (x_periodicity == -1) temp_x_per = 2
2184 temp_y_per = y_periodicity;
if (y_periodicity == -1) temp_y_per = 2
2185 temp_z_per = z_periodicity;
if (z_periodicity == -1) temp_z_per = 2
2187 offset = (num_ibs + 1)*temp_x_per + 3*(num_ibs + 1)*temp_y_per + 9*(num_ibs + 1)*temp_z_per
2188 encoded_patch_id = patch_id + offset
2196# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2198# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2200# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2202# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2204# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2206# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2208# 1204 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2211 integer,
intent(in) :: encoded_patch_id
2212 integer,
intent(out) :: patch_id, x_periodicity, y_periodicity, z_periodicity
2214 integer :: offset, remainder, xp, yp, zp, base
2218 patch_id = mod(encoded_patch_id - 1, base) + 1
2219 offset = (encoded_patch_id - patch_id)/base
2222 remainder = offset/3
2223 yp = mod(remainder, 3)
2227 x_periodicity = xp;
if (xp == 2) x_periodicity = -1
2228 y_periodicity = yp;
if (yp == 2) y_periodicity = -1
2229 z_periodicity = zp;
if (zp == 2) z_periodicity = -1
2236 integer,
intent(out) :: xp_lower, xp_upper, yp_lower, yp_upper
2237 integer,
intent(out),
optional :: zp_lower, zp_upper
2240# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2242 if (bc_x%beg == bc_periodic)
then
2250# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2252 if (bc_y%beg == bc_periodic)
then
2260# 1246 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2263 if (
present(zp_lower) .and. p /= 0)
then
2264 if (bc_z%beg == bc_periodic)
then
2279 pure elemental function f_r(myth, offset, a)
2281# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2283# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2285# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2287# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2289# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2291# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2293# 1265 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
2295 real(wp),
intent(in) :: myth, offset, a
2301 b = 2._wp*a/(2._wp*pi)
2302 f_r = a + b*myth + offset
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
type(ib_patch_parameters), dimension(num_patches_max) patch_ib
type(bounds_info) x_domain
type(vec3_dt), dimension(:), allocatable airfoil_grid_u
real(wp), dimension(:), allocatable, target y_cc
type(bounds_info) y_domain
real(wp), dimension(:), allocatable, target x_cc
real(wp), dimension(:), allocatable, target dx
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
Allocate memory and read initial condition data for IC extrusion.
subroutine s_ib_cylinder(patch_id, ib_markers, xp, yp, zp)
The cylindrical patch is a 3D geometry that may be used, for example, in setting up a cylindrical sol...
subroutine, public s_update_ib_rotation_matrix(patch_id)
Subroutine that computes a rotation matrix for converting to the rotating frame of the boundary.
subroutine s_ib_airfoil(patch_id, ib_markers, xp, yp)
Marks cells inside a 2D NACA 4-digit airfoil immersed boundary using upper and lower surface grids.
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)
The circular patch is a 2D geometry that may be used, for example, in creating a bubble or a droplet....
type(bounds_info) z_boundary
subroutine s_get_periodicities(xp_lower, xp_upper, yp_lower, yp_upper, zp_lower, zp_upper)
Determines if we should wrap periodically.
subroutine s_ib_ellipse(patch_id, ib_markers, xp, yp)
Marks cells inside a 2D elliptical immersed boundary defined by semi-axis lengths and rotation.
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)
Marks 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)
Converts cylindrical (r, theta) coordinates to Cartesian (y, z) and stores in module variables.
type(bounds_info) y_boundary
subroutine s_ib_model(patch_id, ib_markers, xp, yp)
The STL patch is a 2D geometry that is imported from an STL file.
subroutine s_encode_patch_periodicity(patch_id, x_periodicity, y_periodicity, z_periodicity, encoded_patch_id)
encodes the patch id with a unique offset that contains information on how the IB marker wraps period...
type(bounds_info) x_boundary
impure subroutine, public s_apply_ib_patches(ib_markers)
Applies all immersed boundary patch geometries to mark interior cells in the IB marker array.
subroutine s_ib_rectangle(patch_id, ib_markers, xp, yp)
The rectangular patch is a 2D geometry that may be used, for example, in creating a solid boundary,...
pure real(wp) function, dimension(1:3), public f_convert_cyl_to_cart(cyl)
Converts a 3D cylindrical coordinate vector (x, r, theta) to Cartesian (x, y, z).
subroutine, public s_decode_patch_periodicity(encoded_patch_id, patch_id, x_periodicity, y_periodicity, z_periodicity)
decodes the encoded id to get out the original id and the way in which it is periodic
subroutine s_ib_sphere(patch_id, ib_markers, xp, yp, zp)
The spherical patch is a 3D geometry that may be used, for example, in creating a bubble or a droplet...
pure elemental real(wp) function f_r(myth, offset, a)
Archimedes spiral function.
subroutine s_convert_cylindrical_to_spherical_coord(cyl_x, cyl_y)
Converts cylindrical coordinates (x, r) to the spherical azimuthal angle phi and stores in a module v...
subroutine s_ib_cuboid(patch_id, ib_markers, xp, yp, zp)
The cuboidal patch is a 3D geometry that may be used, for example, in creating a solid boundary,...
Binary STL file reader and processor for immersed boundary geometry.
subroutine, public s_instantiate_stl_models()
MPI communication layer: domain decomposition, halo exchange, reductions, and parallel I/O setup.
Derived type adding beginning (beg) and end bounds info as attributes.
Derived type annexing an integer scalar field (SF).