1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
6# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
7# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
8# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
9# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
10# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
11# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
12# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
13# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
15# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
16# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
19# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
20# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
23# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
24# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
25# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
27# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
34# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
36# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
47# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
48# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
49# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
63# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
64# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
65# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
67# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
76# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
78# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
84# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
86# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
88# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 95 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 100 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 105 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 110 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118# 115 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120# 120 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122# 125 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 130 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126# 135 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 165 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 219 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132# 233 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 258 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 269 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138# 271 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 282 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 332 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 342 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147# 361 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149# 378 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151# 388 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153# 395 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155# 401 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157# 407 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159# 413 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161# 419 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
163# 425 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
165# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
166# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
167# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
168# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
175# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
179# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
182# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
183# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
184# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
186# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
187# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
189# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
191# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
193# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
195# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
197# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
199# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
201# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
203# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
205# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
207# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
233# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
235# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
237# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
239# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
241# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
243# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
245# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
247# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
249# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
251# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
253# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
255# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
257# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
259# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
261# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
263# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
266# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
305# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
308# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
311# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
314# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
317# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
320# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
322# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
323# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
325# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
327# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
332# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
335# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
338# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
341# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
344# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
347# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
349# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
351# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
353# 6 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp" 2
374 type(
ghost_point),
dimension(:),
intent(inout) :: gps
375 integer,
intent(in) :: num_gps
376 integer :: i, patch_id, patch_geometry
380 if (num_ibs == 0)
return
386# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
388# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
389#if defined(MFC_OpenACC)
390# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
392# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
393#elif defined(MFC_OpenMP)
394# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
396# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
398# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
400# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
402# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
404# 37 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
406# 39 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
408 patch_id = gps(i)%ib_patch_id
409 patch_geometry = patch_ib(patch_id)%geometry
411 if (patch_geometry == 8)
then
413 else if (patch_geometry == 9)
then
415 else if (patch_geometry == 10)
then
417 else if (patch_geometry == 11)
then
419 else if (patch_geometry == 12)
then
424# 55 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
425#if defined(MFC_OpenACC)
426# 55 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
428# 55 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
429#elif defined(MFC_OpenMP)
430# 55 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
432# 55 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
434# 55 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
436# 56 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
441# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
443# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
444#if defined(MFC_OpenACC)
445# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
447# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
448#elif defined(MFC_OpenMP)
449# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
451# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
453# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
455# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
457# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
459# 59 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
461# 61 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
463 patch_id = gps(i)%ib_patch_id
464 patch_geometry = patch_ib(patch_id)%geometry
466 if (patch_geometry == 2)
then
468 else if (patch_geometry == 3)
then
470 else if (patch_geometry == 4)
then
472 else if (patch_geometry == 5)
then
474 else if (patch_geometry == 6)
then
479# 77 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
480#if defined(MFC_OpenACC)
481# 77 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
483# 77 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
484#elif defined(MFC_OpenMP)
485# 77 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
487# 77 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
489# 77 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
491# 78 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
500# 85 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
502# 85 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
504# 85 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
506# 85 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
508# 85 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
510# 85 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
512# 85 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
514# 86 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
517 real(wp) :: radius, dist
518 real(wp),
dimension(3) :: dist_vec
519 integer :: i, j, ib_patch_id
520 ib_patch_id = gp%ib_patch_id
524 radius = patch_ib(ib_patch_id)%radius
526 dist_vec(1) =
x_cc(i) - (patch_ib(ib_patch_id)%x_centroid + real(gp%x_periodicity, &
528 dist_vec(2) =
y_cc(j) - (patch_ib(ib_patch_id)%y_centroid + real(gp%y_periodicity, &
531 dist = sqrt(sum(dist_vec**2))
533 gp%levelset = dist - radius
535 gp%levelset_norm = 0._wp
537 gp%levelset_norm = dist_vec(:)/dist
546# 116 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
548# 116 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
550# 116 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
552# 116 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
554# 116 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
556# 116 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
558# 116 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
560# 117 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
564 integer :: airfoil_id
565 real(wp),
dimension(1:3) :: xy_local, offset, normals
566 real(wp),
dimension(1:2) :: center
567 real(wp),
dimension(1:3,1:3) :: rotation, inverse_rotation
568 integer :: i, j, ib_patch_id
569 ib_patch_id = gp%ib_patch_id
573 airfoil_id = patch_ib(ib_patch_id)%airfoil_id
574 center(1) = patch_ib(ib_patch_id)%x_centroid + real(gp%x_periodicity, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
575 center(2) = patch_ib(ib_patch_id)%y_centroid + real(gp%y_periodicity, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
577 inverse_rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix_inverse(:,:)
578 rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix(:,:)
579 offset(:) = patch_ib(ib_patch_id)%centroid_offset(:)
581 xy_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
582 xy_local = matmul(inverse_rotation, xy_local)
583 xy_local = xy_local - offset
586 gp%levelset = distance
587 gp%levelset_norm = matmul(rotation, normals)
595# 150 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
597# 150 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
599# 150 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
601# 150 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
603# 150 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
605# 150 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
607# 150 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
609# 151 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
612 real(wp) :: dist_surf, dist_side
613 integer :: airfoil_id
614 real(wp) :: lz, z_max, z_min
615 real(wp),
dimension(1:3) :: xyz_local, center, offset, normal
616 real(wp),
dimension(1:3) :: surface_normals
617 real(wp),
dimension(1:3,1:3) :: rotation, inverse_rotation
618 integer :: i, j, l, ib_patch_id
619 ib_patch_id = gp%ib_patch_id
624 airfoil_id = patch_ib(ib_patch_id)%airfoil_id
625 center(1) = patch_ib(ib_patch_id)%x_centroid + real(gp%x_periodicity, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
626 center(2) = patch_ib(ib_patch_id)%y_centroid + real(gp%y_periodicity, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
627 center(3) = patch_ib(ib_patch_id)%z_centroid + real(gp%z_periodicity, wp)*(
glb_bounds(3)%end -
glb_bounds(3)%beg)
629 lz = patch_ib(ib_patch_id)%length_z
630 inverse_rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix_inverse(:,:)
631 rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix(:,:)
632 offset(:) = patch_ib(ib_patch_id)%centroid_offset(:)
638 xyz_local = matmul(inverse_rotation, xyz_local)
639 xyz_local = xyz_local - offset
643 dist_side = min(abs(xyz_local(3) - z_min), abs(z_max - xyz_local(3)))
645 if (dist_side < dist_surf)
then
646 gp%levelset = dist_side
653 gp%levelset_norm = matmul(rotation, normal)
655 gp%levelset = dist_surf
656 gp%levelset_norm = matmul(rotation, surface_normals)
665# 205 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
667# 205 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
669# 205 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
671# 205 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
673# 205 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
675# 205 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
677# 205 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
679# 206 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
681 integer,
intent(in) :: airfoil_id
682 real(wp),
dimension(1:3),
intent(in) :: point
683 real(wp),
dimension(1:3),
intent(out) :: normals
684 real(wp),
intent(out) :: distance
685 integer :: num_segments
688 if (point(2) >= 0._wp)
then
700# 225 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
702# 225 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
704# 225 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
706# 225 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
708# 225 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
710# 225 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
712# 225 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
714# 226 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
717 real(wp) :: top_right(2), bottom_left(2)
719 real(wp) :: side_dists(4)
720 real(wp) :: length_x, length_y
721 real(wp),
dimension(1:3) :: xy_local, dist_vec
722 real(wp),
dimension(2) :: center
723 real(wp),
dimension(1:3,1:3) :: rotation, inverse_rotation
726 integer :: ib_patch_id
727 ib_patch_id = gp%ib_patch_id
731 length_x = patch_ib(ib_patch_id)%length_x
732 length_y = patch_ib(ib_patch_id)%length_y
733 center(1) = patch_ib(ib_patch_id)%x_centroid + real(gp%x_periodicity, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
734 center(2) = patch_ib(ib_patch_id)%y_centroid + real(gp%y_periodicity, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
735 inverse_rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix_inverse(:,:)
736 rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix(:,:)
738 top_right(1) = length_x/2
739 top_right(2) = length_y/2
740 bottom_left(1) = -length_x/2
741 bottom_left(2) = -length_y/2
744 xy_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
745 xy_local = matmul(inverse_rotation, xy_local)
747 side_dists(1) = bottom_left(1) - xy_local(1)
748 side_dists(2) = top_right(1) - xy_local(1)
749 side_dists(3) = bottom_left(2) - xy_local(2)
750 side_dists(4) = top_right(2) - xy_local(2)
751 min_dist = side_dists(1)
755 if (abs(side_dists(k)) < abs(min_dist))
then
757 min_dist = side_dists(idx)
761 gp%levelset = side_dists(idx)
764 if (idx == 1 .or. idx == 2)
then
766 dist_vec(1) = side_dists(idx)/abs(side_dists(idx))
769 dist_vec(2) = side_dists(idx)/abs(side_dists(idx))
772 gp%levelset_norm = matmul(rotation, dist_vec)
774 gp%levelset_norm = 0._wp
783# 293 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
785# 293 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
787# 293 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
789# 293 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
791# 293 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
793# 293 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
795# 293 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
797# 294 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
800 real(wp) :: ellipse_coeffs(2)
801 real(wp) :: quadratic_coeffs(3)
802 real(wp) :: length_x, length_y
803 real(wp),
dimension(1:3) :: xy_local, normal_vector
804 real(wp),
dimension(2) :: center
805 real(wp),
dimension(1:3,1:3) :: rotation, inverse_rotation
807 integer :: ib_patch_id
808 ib_patch_id = gp%ib_patch_id
812 length_x = patch_ib(ib_patch_id)%length_x
813 length_y = patch_ib(ib_patch_id)%length_y
814 center(1) = patch_ib(ib_patch_id)%x_centroid + real(gp%x_periodicity, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
815 center(2) = patch_ib(ib_patch_id)%y_centroid + real(gp%y_periodicity, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
816 inverse_rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix_inverse(:,:)
817 rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix(:,:)
819 ellipse_coeffs(1) = 0.5_wp*length_x
820 ellipse_coeffs(2) = 0.5_wp*length_y
822 xy_local = [
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp]
823 xy_local = matmul(inverse_rotation, xy_local)
825 normal_vector = xy_local
827 normal_vector(2) = normal_vector(2)*(ellipse_coeffs(1)/ellipse_coeffs(2))**2._wp
828 normal_vector = normal_vector/sqrt(dot_product(normal_vector, normal_vector))
829 gp%levelset_norm = matmul(rotation, normal_vector)
832 quadratic_coeffs(1) = (normal_vector(1)/ellipse_coeffs(1))**2 + (normal_vector(2)/ellipse_coeffs(2))**2
833 quadratic_coeffs(2) = 2._wp*((xy_local(1)*normal_vector(1)/(ellipse_coeffs(1)**2)) + (xy_local(2)*normal_vector(2) &
834 & /(ellipse_coeffs(2)**2)))
835 quadratic_coeffs(3) = (xy_local(1)/ellipse_coeffs(1))**2._wp + (xy_local(2)/ellipse_coeffs(2))**2._wp - 1._wp
838 gp%levelset = -0.5_wp*(-quadratic_coeffs(2) + sqrt(quadratic_coeffs(2)**2._wp - 4._wp*quadratic_coeffs(1) &
839 & *quadratic_coeffs(3)))/quadratic_coeffs(1)
847# 342 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
849# 342 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
851# 342 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
853# 342 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
855# 342 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
857# 342 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
859# 342 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
861# 343 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
864 real(wp) :: Right, Left, Bottom, Top, Front, Back
866 real(wp) :: dist_left, dist_right, dist_bottom, dist_top, dist_back, dist_front
867 real(wp),
dimension(3) :: center
868 real(wp) :: length_x, length_y, length_z
869 real(wp),
dimension(1:3) :: xyz_local, dist_vec
870 real(wp),
dimension(1:3,1:3) :: rotation, inverse_rotation
872 integer :: ib_patch_id
873 ib_patch_id = gp%ib_patch_id
878 length_x = patch_ib(ib_patch_id)%length_x
879 length_y = patch_ib(ib_patch_id)%length_y
880 length_z = patch_ib(ib_patch_id)%length_z
882 center(1) = patch_ib(ib_patch_id)%x_centroid + real(gp%x_periodicity, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
883 center(2) = patch_ib(ib_patch_id)%y_centroid + real(gp%y_periodicity, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
884 center(3) = patch_ib(ib_patch_id)%z_centroid + real(gp%z_periodicity, wp)*(
glb_bounds(3)%end -
glb_bounds(3)%beg)
886 inverse_rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix_inverse(:,:)
887 rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix(:,:)
897 xyz_local = matmul(inverse_rotation, xyz_local)
899 dist_left = left - xyz_local(1)
900 dist_right = xyz_local(1) - right
901 dist_bottom = bottom - xyz_local(2)
902 dist_top = xyz_local(2) - top
903 dist_back = back - xyz_local(3)
904 dist_front = xyz_local(3) - front
906 min_dist = min(abs(dist_left), abs(dist_right), abs(dist_bottom), abs(dist_top), abs(dist_back), abs(dist_front))
910 gp%levelset = dist_left
912 dist_vec(1) = dist_left/abs(dist_left)
915 gp%levelset = dist_right
917 dist_vec(1) = -dist_right/abs(dist_right)
920 gp%levelset = dist_bottom
922 dist_vec(2) = dist_bottom/abs(dist_bottom)
925 gp%levelset = dist_top
927 dist_vec(2) = -dist_top/abs(dist_top)
930 gp%levelset = dist_back
932 dist_vec(3) = dist_back/abs(dist_back)
935 gp%levelset = dist_front
937 dist_vec(3) = -dist_front/abs(dist_front)
941 gp%levelset_norm = matmul(rotation, dist_vec)
949# 429 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
951# 429 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
953# 429 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
955# 429 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
957# 429 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
959# 429 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
961# 429 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
963# 430 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
966 real(wp) :: radius, dist
967 real(wp),
dimension(3) :: dist_vec, center, periodicity
968 integer :: i, j, k, ib_patch_id
969 ib_patch_id = gp%ib_patch_id
974 radius = patch_ib(ib_patch_id)%radius
978 center(1) = patch_ib(ib_patch_id)%x_centroid
979 center(2) = patch_ib(ib_patch_id)%y_centroid
980 center(3) = patch_ib(ib_patch_id)%z_centroid
981 center = center + periodicity
983 dist_vec(1) =
x_cc(i) - center(1)
984 dist_vec(2) =
y_cc(j) - center(2)
985 dist_vec(3) =
z_cc(k) - center(3)
986 dist = sqrt(sum(dist_vec**2))
987 gp%levelset = dist - radius
989 gp%levelset_norm = (/1, 0, 0/)
991 gp%levelset_norm = dist_vec(:)/dist
1000# 465 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1002# 465 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1004# 465 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1006# 465 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1008# 465 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1010# 465 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1012# 465 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1014# 466 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1018 real(wp),
dimension(3) :: dist_sides_vec, dist_surface_vec, length
1019 real(wp),
dimension(2) :: boundary
1020 real(wp) :: dist_side, dist_surface, side_pos
1022 integer :: ib_patch_id
1023 real(wp),
dimension(1:3) :: xyz_local, center
1024 real(wp),
dimension(1:3,1:3) :: rotation, inverse_rotation
1026 ib_patch_id = gp%ib_patch_id
1031 radius = patch_ib(ib_patch_id)%radius
1032 center(1) = patch_ib(ib_patch_id)%x_centroid + real(gp%x_periodicity, wp)*(
glb_bounds(1)%end -
glb_bounds(1)%beg)
1033 center(2) = patch_ib(ib_patch_id)%y_centroid + real(gp%y_periodicity, wp)*(
glb_bounds(2)%end -
glb_bounds(2)%beg)
1034 center(3) = patch_ib(ib_patch_id)%z_centroid + real(gp%z_periodicity, wp)*(
glb_bounds(3)%end -
glb_bounds(3)%beg)
1035 length(1) = patch_ib(ib_patch_id)%length_x
1036 length(2) = patch_ib(ib_patch_id)%length_y
1037 length(3) = patch_ib(ib_patch_id)%length_z
1039 inverse_rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix_inverse(:,:)
1040 rotation(:,:) = patch_ib(ib_patch_id)%rotation_matrix(:,:)
1043 boundary(1) = -0.5_wp*length(1)
1044 boundary(2) = 0.5_wp*length(1)
1045 dist_sides_vec = (/1, 0, 0/)
1046 dist_surface_vec = (/0, 1, 1/)
1048 boundary(1) = -0.5_wp*length(2)
1049 boundary(2) = 0.5_wp*length(2)
1050 dist_sides_vec = (/0, 1, 0/)
1051 dist_surface_vec = (/1, 0, 1/)
1053 boundary(1) = -0.5_wp*length(3)
1054 boundary(2) = 0.5_wp*length(3)
1055 dist_sides_vec = (/0, 0, 1/)
1056 dist_surface_vec = (/1, 1, 0/)
1060 xyz_local = matmul(inverse_rotation, xyz_local)
1063 side_pos = dot_product(xyz_local, dist_sides_vec)
1064 dist_side = min(abs(side_pos - boundary(1)), abs(boundary(2) - side_pos))
1066 dist_surface = norm2(xyz_local*dist_surface_vec) - radius
1068 if (dist_side < abs(dist_surface))
then
1070 gp%levelset = -dist_side
1072 gp%levelset_norm = matmul(rotation, -dist_sides_vec)
1074 gp%levelset_norm = matmul(rotation, dist_sides_vec)
1077 gp%levelset = dist_surface
1078 xyz_local = xyz_local*dist_surface_vec
1079 xyz_local = xyz_local/max(norm2(xyz_local), sgm_eps)
1080 gp%levelset_norm = matmul(rotation, xyz_local)
1089# 539 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1091# 539 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1093# 539 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1095# 539 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1097# 539 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1099# 539 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1101# 539 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1103# 540 "/home/runner/work/MFC/MFC/src/simulation/m_compute_levelset.fpp"
1106 integer :: i, j, k, patch_id, boundary_edge_count
1107 real(wp),
dimension(1:3) :: center, xyz_local
1108 real(wp) :: normals(1:3)
1109 real(wp) :: distance
1110 real(wp),
dimension(1:3,1:3) :: inverse_rotation, rotation
1112 patch_id = gp%ib_patch_id
1121 if (.not.
f_is_default(patch_ib(patch_id)%x_centroid)) center(1) = patch_ib(patch_id)%x_centroid + real(gp%x_periodicity, &
1123 if (.not.
f_is_default(patch_ib(patch_id)%y_centroid)) center(2) = patch_ib(patch_id)%y_centroid + real(gp%y_periodicity, &
1126 if (.not.
f_is_default(patch_ib(patch_id)%z_centroid)) center(3) = patch_ib(patch_id)%z_centroid &
1130 inverse_rotation(:,:) = patch_ib(patch_id)%rotation_matrix_inverse(:,:)
1131 rotation(:,:) = patch_ib(patch_id)%rotation_matrix(:,:)
1134 xyz_local = (/
x_cc(i) - center(1),
y_cc(j) - center(2), 0._wp/)
1136 xyz_local(3) =
z_cc(k) - center(3)
1138 xyz_local = matmul(inverse_rotation, xyz_local)
1140 xyz_local = xyz_local - patch_ib(patch_id)%centroid_offset
1149 gp%levelset = distance
1150 gp%levelset = -abs(gp%levelset)
1153 gp%levelset_norm = matmul(rotation, normals(1:3))
1157 & normals, distance)
1158 gp%levelset = -abs(distance)
1159 gp%levelset_norm = matmul(rotation, normals(1:3))
Computes signed-distance level-set fields and surface normals for immersed-boundary patch geometries.
impure subroutine, public s_apply_levelset(gps, num_gps)
Dispatch level-set distance and normal computations for all ghost points based on patch geometry type...
subroutine s_airfoil_levelset(gp)
Compute the signed distance and outward normal from a ghost point to a 2D NACA airfoil surface.
subroutine s_sphere_levelset(gp)
Compute the signed distance and outward normal from a ghost point to a spherical immersed boundary.
subroutine s_airfoil_distance_normals(airfoil_id, point, normals, distance)
Distance and outward normal from a point in the airfoil frame to the surface on its side of the chord...
subroutine s_circle_levelset(gp)
Compute the signed distance and outward normal from a ghost point to a circular immersed boundary.
subroutine s_ellipse_levelset(gp)
Compute the signed distance and outward normal from a ghost point to an elliptical immersed boundary.
subroutine s_cylinder_levelset(gp)
Compute the signed distance and outward normal from a ghost point to a cylindrical immersed boundary.
subroutine s_3d_airfoil_levelset(gp)
Compute the signed distance and outward normal from a ghost point to a 3D extruded airfoil surface.
subroutine s_rectangle_levelset(gp)
Compute the signed distance and outward normal from a ghost point to a 2D rectangle.
subroutine s_model_levelset(gp)
The STL patch is a 2/3D geometry that is imported from an STL file.
subroutine s_cuboid_levelset(gp)
Compute the signed distance and outward normal from a ghost point to a cuboid immersed boundary.
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
type(bounds_info), dimension(3) glb_bounds
real(wp), dimension(:), allocatable, target y_cc
real(wp), dimension(:), allocatable, target z_cc
real(wp), dimension(:), allocatable, target x_cc
type(ib_airfoil_grid), dimension(num_ib_airfoils_max) ib_airfoil_grids
Per-airfoil computed surface grids.
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
logical elemental function, public f_approx_equal(a, b, tol_input)
Check if two floating point numbers of wp are within tolerance.
logical elemental function, public f_is_default(var)
Check if a real(wp) variable is of default value.
Allocate memory and read initial condition data for IC extrusion.
Binary STL file reader and processor for immersed boundary geometry.
integer, dimension(:), allocatable, public gpu_ntrs
GPU-friendly flat arrays for STL model data.
real(wp), dimension(:,:,:,:), allocatable, public gpu_boundary_v
subroutine, public s_distance_normals_3d(ntrs, pid, point, normals, distance)
Determine the levelset distance and normals of 3D models by computing the exact closest point via pro...
integer, dimension(:), allocatable, public gpu_boundary_edge_count
subroutine, public s_distance_normals_2d(boundary_v, boundary_edge_count, point, normals, distance)
Determine the levelset distance and normals of 2D models by computing the exact closest point via pro...
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Ghost Point for Immersed Boundaries.