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# 76 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
304# 91 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
306# 102 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
308# 115 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
310# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
312# 154 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
314# 165 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
316# 176 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
318# 187 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
320# 198 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
322# 208 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
324# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
326# 220 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
328# 226 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
330# 232 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
332# 234 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
333# 235 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
335# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
337# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
343# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
345# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
347# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
349# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
351# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
353# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
355# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
357# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
359# 11 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp" 2
383# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
384#if defined(MFC_OpenACC)
385# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
387# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
388#elif defined(MFC_OpenMP)
389# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
391# 33 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
394# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
395#if defined(MFC_OpenACC)
396# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
398# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
399#elif defined(MFC_OpenMP)
400# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
402# 34 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
408# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
409#if defined(MFC_OpenACC)
410# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
412# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
413#elif defined(MFC_OpenMP)
414# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
416# 38 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
426# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
427#if defined(MFC_OpenACC)
428# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
430# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
431#elif defined(MFC_OpenMP)
432# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
434# 46 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
441# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
442#if defined(MFC_OpenACC)
443# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
445# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
446#elif defined(MFC_OpenMP)
447# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
449# 51 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
460# 60 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
461#if defined(MFC_OpenACC)
462# 60 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
464# 60 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
465#elif defined(MFC_OpenMP)
466# 60 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
468# 60 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
477 integer,
dimension(:, :, :),
intent(inout),
optional :: ib_markers_sf
491 elseif (
patch_ib(i)%geometry == 9)
then
493 elseif (
patch_ib(i)%geometry == 10)
then
495 elseif (
patch_ib(i)%geometry == 11)
then
498 elseif (
patch_ib(i)%geometry == 12)
then
512 elseif (
patch_ib(i)%geometry == 3)
then
514 elseif (
patch_ib(i)%geometry == 4)
then
517 elseif (
patch_ib(i)%geometry == 5)
then
519 elseif (
patch_ib(i)%geometry == 6)
then
532 real(wp) :: normals(1:3)
533 integer :: boundary_vertex_count, boundary_edge_count, total_vertices
534 real(wp),
allocatable,
dimension(:, :, :) :: boundary_v
535 real(wp),
allocatable,
dimension(:, :) :: interpolated_boundary_v
537 logical :: interpolate
542 type(
t_bbox) :: bbox, bbox_old
547 real(wp),
dimension(1:3) :: point, model_center
548 real(wp) :: grid_mm(1:3, 1:2)
550 real(wp),
dimension(1:4, 1:4) :: transform, transform_n
555 if (
patch_ib(patch_id)%geometry == 5 .or.
patch_ib(patch_id)%geometry == 12)
then
556 allocate (
models(patch_id)%model)
557 print *,
" * Reading model: "//trim(
patch_ib(patch_id)%model_filepath)
560 params%scale(:) =
patch_ib(patch_id)%model_scale(:)
561 params%translate(:) =
patch_ib(patch_id)%model_translate(:)
562 params%rotate(:) =
patch_ib(patch_id)%model_rotate(:)
563 params%spc =
patch_ib(patch_id)%model_spc
564 params%threshold =
patch_ib(patch_id)%model_threshold
566 if (
f_approx_equal(dot_product(params%scale, params%scale), 0._wp))
then
567 params%scale(:) = 1._wp
571 print *,
" * Transforming model."
576 model_center(1:3) = (bbox_old%min(1:3) + bbox_old%max(1:3))/2._wp
589 print *,
' * Number of input model vertices:', 3*model%ntrs
592 call f_check_boundary(model, boundary_v, boundary_vertex_count, boundary_edge_count)
603 print *,
' * Number of 2D model boundary edges:', boundary_edge_count
607 if (interpolate)
then
609 print *,
' * Interpolating STL vertices.'
615 call f_interpolate_2d(boundary_v, boundary_edge_count, (/
dx,
dy,
dz/), interpolated_boundary_v, total_vertices)
619 print *,
' * Total number of interpolated boundary vertices:', total_vertices
624 write (*,
"(A, 3(2X, F20.10))")
" > Model: Min:", bbox%min(1:3)
625 write (*,
"(A, 3(2X, F20.10))")
" > Cen:", (bbox%min(1:3) + bbox%max(1:3))/2._wp
626 write (*,
"(A, 3(2X, F20.10))")
" > Max:", bbox%max(1:3)
628 grid_mm(1, :) = (/minval(
x_cc(0:
m)) - 0.e5_wp*
dx(0), maxval(
x_cc(0:
m)) + 0.e5_wp*
dx(
m)/)
629 grid_mm(2, :) = (/minval(
y_cc(0:
n)) - 0.e5_wp*
dy(0), maxval(
y_cc(0:
n)) + 0.e5_wp*
dy(
n)/)
632 grid_mm(3, :) = (/minval(
z_cc(0:
p)) - 0.e5_wp*
dz(0), maxval(
z_cc(0:
p)) + 0.e5_wp*
dz(
p)/)
634 grid_mm(3, :) = (/0._wp, 0._wp/)
637 write (*,
"(A, 3(2X, F20.10))")
" > Domain: Min:", grid_mm(:, 1)
638 write (*,
"(A, 3(2X, F20.10))")
" > Cen:", (grid_mm(:, 1) + grid_mm(:, 2))/2._wp
639 write (*,
"(A, 3(2X, F20.10))")
" > Max:", grid_mm(:, 2)
642 models(patch_id)%model = model
643 models(patch_id)%boundary_v = boundary_v
644 models(patch_id)%boundary_edge_count = boundary_edge_count
645 models(patch_id)%interpolate = interpolate
646 if (interpolate)
then
647 models(patch_id)%interpolated_boundary_v = interpolated_boundary_v
648 models(patch_id)%total_vertices = total_vertices
665 integer,
intent(in) :: patch_id
666 integer,
dimension(0:m, 0:n, 0:p),
intent(inout) :: ib_markers_sf
668 real(wp),
dimension(1:2) :: center
676 center(1) =
patch_ib(patch_id)%x_centroid
677 center(2) =
patch_ib(patch_id)%y_centroid
686# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
688# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
689#if defined(MFC_OpenACC)
690# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
692# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
693#elif defined(MFC_OpenMP)
694# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
696# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
698# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
700# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
702# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
704# 276 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
706# 278 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
709 if ((
x_cc(i) - center(1))**2 &
710 + (
y_cc(j) - center(2))**2 <= radius**2) &
712 ib_markers_sf(i, j, 0) = patch_id
717# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
719# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
720#if defined(MFC_OpenACC)
721# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
723# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
724#elif defined(MFC_OpenMP)
725# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
727# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
729# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
731# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
733# 287 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
743 integer,
intent(in) :: patch_id
744 integer,
dimension(0:m, 0:n, 0:p),
intent(inout) :: ib_markers_sf
746 real(wp) :: f, ca_in, pa, ma, ta
747 real(wp) :: xa, yt, xu, yu, xl, yl, xc, yc, dycdxc, sin_c, cos_c
751 real(wp),
dimension(1:3) :: xy_local, offset
752 real(wp),
dimension(1:2) :: center
753 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
755 center(1) =
patch_ib(patch_id)%x_centroid
756 center(2) =
patch_ib(patch_id)%y_centroid
761 inverse_rotation(:, :) =
patch_ib(patch_id)%rotation_matrix_inverse(:, :)
762 offset(:) =
patch_ib(patch_id)%centroid_offset(:)
764 np1 = int((pa*ca_in/
dx(0))*20)
765 np2 = int(((ca_in - pa*ca_in)/
dx(0))*20)
768# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
769#if defined(MFC_OpenACC)
770# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
772# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
773#elif defined(MFC_OpenMP)
774# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
776# 320 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
781# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
783# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
784 use iso_fortran_env,
only: output_unit
785# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
787# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
788 print *,
'm_ib_patches.fpp:323: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
789# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
791# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
792 call flush (output_unit)
793# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
795# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
797# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
799# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
801# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
803# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
804#if defined(MFC_OpenACC)
805# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
807# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
808#elif defined(MFC_OpenMP)
809# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
811# 323 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
814# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
816# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
817 use iso_fortran_env,
only: output_unit
818# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
820# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
821 print *,
'm_ib_patches.fpp:324: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
822# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
824# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
825 call flush (output_unit)
826# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
828# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
830# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
831 allocate (airfoil_grid_l(1:np))
832# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
834# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
836# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
837#if defined(MFC_OpenACC)
838# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
840# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
841#elif defined(MFC_OpenMP)
842# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
844# 324 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
848 airfoil_grid_u(1)%x = 0._wp
849 airfoil_grid_u(1)%y = 0._wp
851 airfoil_grid_l(1)%x = 0._wp
852 airfoil_grid_l(1)%y = 0._wp
854 do i = 1, np1 + np2 - 1
857 xc = i*(pa*ca_in/np1)
859 yc = (ma/pa**2)*(2*pa*xa - xa**2)
860 dycdxc = (2*ma/pa**2)*(pa - xa)
862 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
864 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
865 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
868 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)
869 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
870 cos_c = 1/(1 + dycdxc**2)**0.5_wp
884 airfoil_grid_u(i + 1)%x = xu
885 airfoil_grid_u(i + 1)%y = yu
887 airfoil_grid_l(i + 1)%x = xl
888 airfoil_grid_l(i + 1)%y = yl
892 airfoil_grid_u(np)%x = ca_in
893 airfoil_grid_u(np)%y = 0._wp
895 airfoil_grid_l(np)%x = ca_in
896 airfoil_grid_l(np)%y = 0._wp
899# 377 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
900#if defined(MFC_OpenACC)
901# 377 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
903# 377 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
904#elif defined(MFC_OpenMP)
905# 377 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
907# 377 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
913# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
915# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
916#if defined(MFC_OpenACC)
917# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
919# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
920#elif defined(MFC_OpenMP)
921# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
923# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
925# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
927# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
929# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
931# 381 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
933# 383 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
936 xy_local = [x_cc(i) - center(1), y_cc(
j) - center(2), 0._wp]
937 xy_local = matmul(inverse_rotation, xy_local)
938 xy_local = xy_local - offset
940 if (xy_local(1) >= 0._wp .and. xy_local(1) <= ca_in)
then
941 xa = xy_local(1)/ca_in
943 yc = (ma/pa**2)*(2*pa*xa - xa**2)
944 dycdxc = (2*ma/pa**2)*(pa - xa)
946 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
947 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
949 if (xy_local(2) >= 0._wp)
then
951 do while (airfoil_grid_u(
k)%x < xy_local(1) .and.
k <= np)
954 if (f_approx_equal(airfoil_grid_u(
k)%x, xy_local(1)))
then
955 if (xy_local(2) <= airfoil_grid_u(
k)%y)
then
957 ib_markers_sf(i,
j, 0) = patch_id
960 f = (airfoil_grid_u(
k)%x - xy_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
961 if (xy_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
963 ib_markers_sf(i,
j, 0) = patch_id
968 do while (airfoil_grid_l(
k)%x < xy_local(1))
971 if (f_approx_equal(airfoil_grid_l(
k)%x, xy_local(1)))
then
972 if (xy_local(2) >= airfoil_grid_l(
k)%y)
then
974 ib_markers_sf(i,
j, 0) = patch_id
977 f = (airfoil_grid_l(
k)%x - xy_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
979 if (xy_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
981 ib_markers_sf(i,
j, 0) = patch_id
989# 437 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
991# 437 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
992#if defined(MFC_OpenACC)
993# 437 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
995# 437 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
996#elif defined(MFC_OpenMP)
997# 437 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
999# 437 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1001# 437 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1003# 437 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1005# 437 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1015 integer,
intent(in) :: patch_id
1016 integer,
dimension(0:m, 0:n, 0:p),
intent(inout) :: ib_markers_sf
1018 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
1019 integer :: i, j, k, l
1022 real(wp),
dimension(1:3) :: xyz_local, center, offset
1023 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1025 center(1) = patch_ib(patch_id)%x_centroid
1026 center(2) = patch_ib(patch_id)%y_centroid
1027 center(3) = patch_ib(patch_id)%z_centroid
1028 lz = patch_ib(patch_id)%length_z
1029 ca_in = patch_ib(patch_id)%c
1030 pa = patch_ib(patch_id)%p
1031 ma = patch_ib(patch_id)%m
1032 ta = patch_ib(patch_id)%t
1033 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1034 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1039 np1 = int((pa*ca_in/dx(0))*20)
1040 np2 = int(((ca_in - pa*ca_in)/dx(0))*20)
1043# 473 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1044#if defined(MFC_OpenACC)
1045# 473 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1047# 473 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1048#elif defined(MFC_OpenMP)
1049# 473 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1051# 473 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1054 if (.not.
allocated(airfoil_grid_u))
then
1057# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1059# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1060 use iso_fortran_env,
only: output_unit
1061# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1063# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1064 print *,
'm_ib_patches.fpp:477: ',
'@:ALLOCATE(airfoil_grid_u(1:Np))'
1065# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1067# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1068 call flush (output_unit)
1069# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1071# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1073# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1074 allocate (airfoil_grid_u(1:np))
1075# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1077# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1079# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1080#if defined(MFC_OpenACC)
1081# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1083# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1084#elif defined(MFC_OpenMP)
1085# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1087# 477 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1090# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1092# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1093 use iso_fortran_env,
only: output_unit
1094# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1096# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1097 print *,
'm_ib_patches.fpp:478: ',
'@:ALLOCATE(airfoil_grid_l(1:Np))'
1098# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1100# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1101 call flush (output_unit)
1102# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1104# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1106# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1107 allocate (airfoil_grid_l(1:np))
1108# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1110# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1112# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1113#if defined(MFC_OpenACC)
1114# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1116# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1117#elif defined(MFC_OpenMP)
1118# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1120# 478 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1123 airfoil_grid_u(1)%x = 0._wp
1124 airfoil_grid_u(1)%y = 0._wp
1126 airfoil_grid_l(1)%x = 0._wp
1127 airfoil_grid_l(1)%y = 0._wp
1129 do i = 1, np1 + np2 - 1
1131 xc = i*(pa*ca_in/np1)
1133 yc = (ma/pa**2)*(2*pa*xa - xa**2)
1134 dycdxc = (2*ma/pa**2)*(pa - xa)
1136 xc = pa*ca_in + (i - np1)*((ca_in - pa*ca_in)/np2)
1138 yc = (ma/(1 - pa)**2)*(1 - 2*pa + 2*pa*xa - xa**2)
1139 dycdxc = (2*ma/(1 - pa)**2)*(pa - xa)
1142 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)
1143 sin_c = dycdxc/(1 + dycdxc**2)**0.5_wp
1144 cos_c = 1/(1 + dycdxc**2)**0.5_wp
1158 airfoil_grid_u(i + 1)%x = xu
1159 airfoil_grid_u(i + 1)%y = yu
1161 airfoil_grid_l(i + 1)%x = xl
1162 airfoil_grid_l(i + 1)%y = yl
1166 airfoil_grid_u(np)%x = ca_in
1167 airfoil_grid_u(np)%y = 0._wp
1169 airfoil_grid_l(np)%x = ca_in
1170 airfoil_grid_l(np)%y = 0._wp
1173# 529 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1174#if defined(MFC_OpenACC)
1175# 529 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1177# 529 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1178#elif defined(MFC_OpenMP)
1179# 529 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1181# 529 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1186# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1188# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1189#if defined(MFC_OpenACC)
1190# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1192# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1193#elif defined(MFC_OpenMP)
1194# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1196# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1198# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1200# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1202# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1204# 532 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1206# 534 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1210 xyz_local = [x_cc(i) - center(1), y_cc(
j) - center(2), z_cc(
l) - center(3)]
1211 xyz_local = matmul(inverse_rotation, xyz_local)
1212 xyz_local = xyz_local - offset
1214 if (xyz_local(3) >= z_min .and. xyz_local(3) <= z_max)
then
1216 if (xyz_local(1) >= 0._wp .and. xyz_local(1) <= ca_in)
then
1217 if (xyz_local(2) >= 0._wp)
then
1219 do while (airfoil_grid_u(
k)%x < xyz_local(1))
1222 if (f_approx_equal(airfoil_grid_u(
k)%x, xyz_local(1)))
then
1223 if (xyz_local(2) <= airfoil_grid_u(
k)%y)
then
1225 ib_markers_sf(i,
j,
l) = patch_id
1228 f = (airfoil_grid_u(
k)%x - xyz_local(1))/(airfoil_grid_u(
k)%x - airfoil_grid_u(
k - 1)%x)
1229 if (xyz_local(2) <= ((1._wp - f)*airfoil_grid_u(
k)%y + f*airfoil_grid_u(
k - 1)%y))
then
1231 ib_markers_sf(i,
j,
l) = patch_id
1236 do while (airfoil_grid_l(
k)%x < xyz_local(1))
1239 if (f_approx_equal(airfoil_grid_l(
k)%x, xyz_local(1)))
then
1240 if (xyz_local(2) >= airfoil_grid_l(
k)%y)
then
1242 ib_markers_sf(i,
j,
l) = patch_id
1245 f = (airfoil_grid_l(
k)%x - xyz_local(1))/(airfoil_grid_l(
k)%x - airfoil_grid_l(
k - 1)%x)
1247 if (xyz_local(2) >= ((1._wp - f)*airfoil_grid_l(
k)%y + f*airfoil_grid_l(
k - 1)%y))
then
1249 ib_markers_sf(i,
j,
l) = patch_id
1259# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1261# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1262#if defined(MFC_OpenACC)
1263# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1265# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1266#elif defined(MFC_OpenMP)
1267# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1269# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1271# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1273# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1275# 585 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1292 integer,
intent(in) :: patch_id
1293 integer,
dimension(0:m, 0:n, 0:p),
intent(inout) :: ib_markers_sf
1296 real(wp) :: pi_inf, gamma, lit_gamma
1297 real(wp),
dimension(1:3) :: xy_local
1298 real(wp),
dimension(1:2) :: length, center
1299 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1301 pi_inf = fluid_pp(1)%pi_inf
1302 gamma = fluid_pp(1)%gamma
1303 lit_gamma = (1._wp + gamma)/gamma
1306 center(1) = patch_ib(patch_id)%x_centroid
1307 center(2) = patch_ib(patch_id)%y_centroid
1308 length(1) = patch_ib(patch_id)%length_x
1309 length(2) = patch_ib(patch_id)%length_y
1310 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1317# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1319# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1320#if defined(MFC_OpenACC)
1321# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1323# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1324#elif defined(MFC_OpenMP)
1325# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1327# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1329# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1331# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1333# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1335# 625 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1337# 627 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1341 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1342 xy_local = matmul(inverse_rotation, xy_local)
1344 if (-0.5_wp*length(1) <= xy_local(1) .and. &
1345 0.5_wp*length(1) >= xy_local(1) .and. &
1346 -0.5_wp*length(2) <= xy_local(2) .and. &
1347 0.5_wp*length(2) >= xy_local(2))
then
1350 ib_markers_sf(i, j, 0) = patch_id
1356# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1358# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1359#if defined(MFC_OpenACC)
1360# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1362# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1363#elif defined(MFC_OpenMP)
1364# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1366# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1368# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1370# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1372# 644 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1386 integer,
intent(in) :: patch_id
1387 integer,
dimension(0:m, 0:n, 0:p),
intent(inout) :: ib_markers_sf
1392 real(wp),
dimension(1:3) :: center
1399 center(1) = patch_ib(patch_id)%x_centroid
1400 center(2) = patch_ib(patch_id)%y_centroid
1401 center(3) = patch_ib(patch_id)%z_centroid
1402 radius = patch_ib(patch_id)%radius
1409# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1411# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1412#if defined(MFC_OpenACC)
1413# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1415# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1416#elif defined(MFC_OpenMP)
1417# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1419# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1421# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1423# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1425# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1427# 679 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1429# 681 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1433 if (grid_geometry == 3)
then
1440 if (((x_cc(i) - center(1))**2 &
1441 + (
cart_y - center(2))**2 &
1442 + (
cart_z - center(3))**2 <= radius**2))
then
1443 ib_markers_sf(i, j, k) = patch_id
1449# 699 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1451# 699 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1452#if defined(MFC_OpenACC)
1453# 699 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1455# 699 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1456#elif defined(MFC_OpenMP)
1457# 699 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1459# 699 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1461# 699 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1463# 699 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1465# 699 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1482 integer,
intent(in) :: patch_id
1483 integer,
dimension(0:m, 0:n, 0:p),
intent(inout) :: ib_markers_sf
1486 real(wp),
dimension(1:3) :: xyz_local, center, length
1487 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1490 center(1) = patch_ib(patch_id)%x_centroid
1491 center(2) = patch_ib(patch_id)%y_centroid
1492 center(3) = patch_ib(patch_id)%z_centroid
1493 length(1) = patch_ib(patch_id)%length_x
1494 length(2) = patch_ib(patch_id)%length_y
1495 length(3) = patch_ib(patch_id)%length_z
1496 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1503# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1505# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1506#if defined(MFC_OpenACC)
1507# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1509# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1510#elif defined(MFC_OpenMP)
1511# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1513# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1515# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1517# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1519# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1521# 735 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1523# 737 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1528 if (grid_geometry == 3)
then
1536 xyz_local = matmul(inverse_rotation, xyz_local)
1538 if (-0.5*length(1) <= xyz_local(1) .and. &
1539 0.5*length(1) >= xyz_local(1) .and. &
1540 -0.5*length(2) <= xyz_local(2) .and. &
1541 0.5*length(2) >= xyz_local(2) .and. &
1542 -0.5*length(3) <= xyz_local(3) .and. &
1543 0.5*length(3) >= xyz_local(3))
then
1546 ib_markers_sf(i, j, k) = patch_id
1552# 764 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1554# 764 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1555#if defined(MFC_OpenACC)
1556# 764 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1558# 764 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1559#elif defined(MFC_OpenMP)
1560# 764 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1562# 764 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1564# 764 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1566# 764 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1568# 764 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1585 integer,
intent(in) :: patch_id
1586 integer,
dimension(0:m, 0:n, 0:p),
intent(inout) :: ib_markers_sf
1590 real(wp),
dimension(1:3) :: xyz_local, center, length
1591 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1596 center(1) = patch_ib(patch_id)%x_centroid
1597 center(2) = patch_ib(patch_id)%y_centroid
1598 center(3) = patch_ib(patch_id)%z_centroid
1599 length(1) = patch_ib(patch_id)%length_x
1600 length(2) = patch_ib(patch_id)%length_y
1601 length(3) = patch_ib(patch_id)%length_z
1602 radius = patch_ib(patch_id)%radius
1603 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1610# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1612# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1613#if defined(MFC_OpenACC)
1614# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1616# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1617#elif defined(MFC_OpenMP)
1618# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1620# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1622# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1624# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1626# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1628# 804 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1630# 806 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1635 if (grid_geometry == 3)
then
1642 xyz_local = matmul(inverse_rotation, xyz_local)
1644 if (((.not. f_is_default(length(1)) .and. &
1646 + xyz_local(3)**2 <= radius**2 .and. &
1647 -0.5_wp*length(1) <= xyz_local(1) .and. &
1648 0.5_wp*length(1) >= xyz_local(1)) &
1650 (.not. f_is_default(length(2)) .and. &
1652 + xyz_local(3)**2 <= radius**2 .and. &
1653 -0.5_wp*length(2) <= xyz_local(2) .and. &
1654 0.5_wp*length(2) >= xyz_local(2)) &
1656 (.not. f_is_default(length(3)) .and. &
1658 + xyz_local(2)**2 <= radius**2 .and. &
1659 -0.5_wp*length(3) <= xyz_local(3) .and. &
1660 0.5_wp*length(3) >= xyz_local(3))))
then
1663 ib_markers_sf(i, j, k) = patch_id
1669# 843 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1671# 843 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1672#if defined(MFC_OpenACC)
1673# 843 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1675# 843 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1676#elif defined(MFC_OpenMP)
1677# 843 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1679# 843 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1681# 843 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1683# 843 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1685# 843 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1693 integer,
intent(in) :: patch_id
1694 integer,
dimension(0:m, 0:n, 0:p),
intent(inout) :: ib_markers_sf
1697 real(wp),
dimension(1:3) :: xy_local
1698 real(wp),
dimension(1:2) :: ellipse_coeffs
1699 real(wp),
dimension(1:2) :: center
1700 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1703 center(1) = patch_ib(patch_id)%x_centroid
1704 center(2) = patch_ib(patch_id)%y_centroid
1705 ellipse_coeffs(1) = 0.5_wp*patch_ib(patch_id)%length_x
1706 ellipse_coeffs(2) = 0.5_wp*patch_ib(patch_id)%length_y
1707 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1712# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1714# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1715#if defined(MFC_OpenACC)
1716# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1718# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1719#elif defined(MFC_OpenMP)
1720# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1722# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1724# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1726# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1728# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1730# 868 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1732# 870 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1736 xy_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1737 xy_local = matmul(inverse_rotation, xy_local)
1740 if ((xy_local(1)/ellipse_coeffs(1))**2 + (xy_local(2)/ellipse_coeffs(2))**2 <= 1._wp)
then
1742 ib_markers_sf(i, j, 0) = patch_id
1747# 883 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1749# 883 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1750#if defined(MFC_OpenACC)
1751# 883 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1753# 883 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1754#elif defined(MFC_OpenMP)
1755# 883 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1757# 883 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1759# 883 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1761# 883 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1763# 883 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1773 integer,
intent(in) :: patch_id
1774 integer,
dimension(0:m, 0:n, 0:p),
intent(inout) :: ib_markers_sf
1778 type(t_model),
pointer :: model
1781 real(wp),
dimension(1:3) :: point, local_point, offset
1782 real(wp),
dimension(1:3) :: center, xyz_local
1783 real(wp),
dimension(1:3, 1:3) :: inverse_rotation
1785 model =>
models(patch_id)%model
1787 center(1) = patch_ib(patch_id)%x_centroid
1788 center(2) = patch_ib(patch_id)%y_centroid
1789 if (p > 0) center(3) = patch_ib(patch_id)%z_centroid
1790 inverse_rotation(:, :) = patch_ib(patch_id)%rotation_matrix_inverse(:, :)
1791 offset(:) = patch_ib(patch_id)%centroid_offset(:)
1797 xyz_local = [x_cc(i) - center(1), y_cc(j) - center(2), 0._wp]
1799 xyz_local(3) = z_cc(k) - center(3)
1801 xyz_local = matmul(inverse_rotation, xyz_local)
1802 xyz_local = xyz_local - offset
1804 if (grid_geometry == 3)
then
1809 eta = f_model_is_inside(model, xyz_local, (/dx(i), dy(j), 0._wp/), patch_ib(patch_id)%model_spc)
1811 eta = f_model_is_inside(model, xyz_local, (/dx(i), dy(j), dz(k)/), patch_ib(patch_id)%model_spc)
1815 if (eta > patch_ib(patch_id)%model_threshold)
then
1816 ib_markers_sf(i, j, k) = patch_id
1828 integer,
intent(in) :: patch_id
1831 real(wp),
dimension(3, 3, 3) :: rotation
1835 if (num_dims == 3)
then
1837 angle = patch_ib(patch_id)%angles(1)
1838 rotation(1, 1, :) = [1._wp, 0._wp, 0._wp]
1839 rotation(1, 2, :) = [0._wp, cos(angle), -sin(angle)]
1840 rotation(1, 3, :) = [0._wp, sin(angle), cos(angle)]
1842 angle = patch_ib(patch_id)%angles(2)
1843 rotation(2, 1, :) = [cos(angle), 0._wp, sin(angle)]
1844 rotation(2, 2, :) = [0._wp, 1._wp, 0._wp]
1845 rotation(2, 3, :) = [-sin(angle), 0._wp, cos(angle)]
1848 patch_ib(patch_id)%rotation_matrix(:, :) = matmul(rotation(1, :, :), rotation(2, :, :))
1849 patch_ib(patch_id)%rotation_matrix_inverse(:, :) = matmul(transpose(rotation(2, :, :)), transpose(rotation(1, :, :)))
1853 angle = patch_ib(patch_id)%angles(3)
1854 rotation(3, 1, :) = [cos(angle), -sin(angle), 0._wp]
1855 rotation(3, 2, :) = [sin(angle), cos(angle), 0._wp]
1856 rotation(3, 3, :) = [0._wp, 0._wp, 1._wp]
1858 if (num_dims == 3)
then
1860 patch_ib(patch_id)%rotation_matrix(:, :) = matmul(patch_ib(patch_id)%rotation_matrix(:, :), rotation(3, :, :))
1861 patch_ib(patch_id)%rotation_matrix_inverse(:, :) = matmul(transpose(rotation(3, :, :)), patch_ib(patch_id)%rotation_matrix_inverse(:, :))
1864 patch_ib(patch_id)%rotation_matrix(:, :) = rotation(3, :, :)
1865 patch_ib(patch_id)%rotation_matrix_inverse(:, :) = transpose(rotation(3, :, :))
1873# 991 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1875# 991 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1877# 991 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1879# 991 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1881# 991 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1883# 991 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1885# 991 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1888 real(wp),
intent(in) :: cyl_y, cyl_z
1890 cart_y = cyl_y*sin(cyl_z)
1891 cart_z = cyl_y*cos(cyl_z)
1899# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1901# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1903# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1905# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1907# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1909# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1911# 1003 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1914 real(wp),
dimension(1:3),
intent(in) :: cyl
1915 real(wp),
dimension(1:3) :: cart
1918 cyl(2)*sin(cyl(3)), &
1919 cyl(2)*cos(cyl(3))/)
1926# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1928# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1930# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1932# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1934# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1936# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1938# 1016 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1941 real(wp),
intent(IN) :: cyl_x, cyl_y
1951 pure elemental function f_r(myth, offset, a)
1953# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1955# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1957# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1959# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1961# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1963# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1965# 1029 "/home/runner/work/MFC/MFC/src/simulation/m_ib_patches.fpp"
1967 real(wp),
intent(in) :: myth, offset, a
1973 b = 2._wp*a/(2._wp*pi)
1974 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
integer proc_rank
Rank of the local processor.
type(vec3_dt), dimension(:), allocatable airfoil_grid_u
real(wp), dimension(:), allocatable, target y_cc
real(wp), dimension(:), allocatable, target z_cc
real(wp), dimension(:), allocatable, target x_cc
real(wp), dimension(:), allocatable, target dy
real(wp), dimension(:), allocatable, target dz
real(wp), dimension(:), allocatable, target dx
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
logical elemental function, public f_approx_equal(a, b, tol_input)
This procedure checks if two floating point numbers of wp are within tolerance.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
subroutine, public s_transform_model(model, matrix, matrix_n)
This procedure transforms a model by a matrix, one triangle at a time.
type(t_bbox) function, public f_create_bbox(model)
This procedure creates a bounding box for a model.
real(wp) function, dimension(1:4, 1:4), public f_create_transform_matrix(param, center)
This procedure creates a transformation matrix.
Allocate memory and read initial condition data for IC extrusion.
subroutine, public s_update_ib_rotation_matrix(patch_id)
Subroutine that computes a rotation matrix for converting to the rotating frame of the boundary.
type(t_model_array), dimension(:), allocatable, target, public models
subroutine s_ib_rectangle(patch_id, ib_markers_sf)
The rectangular patch is a 2D geometry that may be used, for example, in creating a solid boundary,...
type(bounds_info) z_boundary
impure subroutine, public s_apply_ib_patches(ib_markers_sf)
Applies all immersed boundary patch geometries to mark interior cells in the IB marker array.
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.
subroutine s_ib_ellipse(patch_id, ib_markers_sf)
Marks cells inside a 2D elliptical immersed boundary defined by semi-axis lengths and rotation.
type(bounds_info) y_boundary
type(bounds_info) x_boundary
subroutine s_ib_circle(patch_id, ib_markers_sf)
The circular patch is a 2D geometry that may be used, for example, in creating a bubble or a droplet....
subroutine s_ib_cuboid(patch_id, ib_markers_sf)
The cuboidal patch is a 3D geometry that may be used, for example, in creating a solid boundary,...
subroutine s_ib_sphere(patch_id, ib_markers_sf)
The spherical patch is a 3D geometry that may be used, for example, in creating a bubble or a droplet...
subroutine s_ib_3d_airfoil(patch_id, ib_markers_sf)
Marks cells inside a 3D extruded NACA 4-digit airfoil immersed boundary with finite span.
subroutine s_ib_airfoil(patch_id, ib_markers_sf)
Marks cells inside a 2D NACA 4-digit airfoil immersed boundary using upper and lower surface grids.
subroutine, public s_instantiate_stl_models()
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 s_ib_model(patch_id, ib_markers_sf)
The STL patch is a 2/3D geometry that is imported from an STL file.
subroutine s_ib_cylinder(patch_id, ib_markers_sf)
The cylindrical patch is a 3D geometry that may be used, for example, in setting up a cylindrical sol...
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...
Binary STL file reader and processor for immersed boundary geometry.
subroutine, public f_check_interpolation_2d(boundary_v, boundary_edge_count, spacing, interpolate)
This procedure check if interpolates is needed for 2D models.
subroutine, public f_check_interpolation_3d(model, spacing, interpolate)
This procedure check if interpolates is needed for 3D models.
subroutine, public f_check_boundary(model, boundary_v, boundary_vertex_count, boundary_edge_count)
This procedure checks and labels edges shared by two or more triangles facets of the 2D STL model.
subroutine, public f_interpolate_2d(boundary_v, boundary_edge_count, spacing, interpolated_boundary_v, total_vertices)
This procedure interpolates 2D models.
impure type(t_model) function, public f_model_read(filepath)
This procedure reads a mesh from a file.
impure subroutine, public f_interpolate_3d(model, spacing, interpolated_boundary_v, total_vertices)
This procedure interpolates 3D 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.
Defines parameters for a Model Patch.