1# 1 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
7# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
13# 8 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 12 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
17# 7 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp" 2
18# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
19# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
20# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
21# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
46# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
47# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
48# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
74# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
152# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
153# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
154# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
180# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
239# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
242# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
298# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
300# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
305# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
322# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
324# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326# 8 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp" 2
350 type(
scalar_field),
dimension(num_dims + 1),
intent(inout) :: c_divs
351 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
357 if (bc%x%beg >= 0)
then
358 call s_mpi_sendrecv_variables_buffers(c_divs, 1, -1, num_dims + 1)
361# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
363# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
364#if defined(MFC_OpenACC)
365# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
367# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
368#elif defined(MFC_OpenMP)
369# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
371# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
373# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
375# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
377# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
381 select case (bc_type(1, 1)%sf(0,
k,
l))
392# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
393#if defined(MFC_OpenACC)
394# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
396# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
397#elif defined(MFC_OpenMP)
398# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
400# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
402# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
406 if (bc%x%end >= 0)
then
407 call s_mpi_sendrecv_variables_buffers(c_divs, 1, 1, num_dims + 1)
410# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
412# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
413#if defined(MFC_OpenACC)
414# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
416# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
417#elif defined(MFC_OpenMP)
418# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
420# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
422# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
424# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
426# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
430 select case (bc_type(1, 2)%sf(0,
k,
l))
441# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
442#if defined(MFC_OpenACC)
443# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
445# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
446#elif defined(MFC_OpenMP)
447# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
449# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
451# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
457# 79 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
459 if (bc%y%beg >= 0)
then
460 call s_mpi_sendrecv_variables_buffers(c_divs, 2, -1, num_dims + 1)
463# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
465# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
466#if defined(MFC_OpenACC)
467# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
469# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
470#elif defined(MFC_OpenMP)
471# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
473# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
475# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
477# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
479# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
483 select case (bc_type(2, 1)%sf(
k, 0,
l))
494# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
495#if defined(MFC_OpenACC)
496# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
498# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
499#elif defined(MFC_OpenMP)
500# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
502# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
504# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
508 if (bc%y%end >= 0)
then
509 call s_mpi_sendrecv_variables_buffers(c_divs, 2, 1, num_dims + 1)
512# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
514# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
515#if defined(MFC_OpenACC)
516# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
518# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
519#elif defined(MFC_OpenMP)
520# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
522# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
524# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
526# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
528# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
532 select case (bc_type(2, 2)%sf(
k, 0,
l))
543# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
544#if defined(MFC_OpenACC)
545# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
547# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
548#elif defined(MFC_OpenMP)
549# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
551# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
553# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
556# 118 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
560# 122 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
562 if (bc%z%beg >= 0)
then
563 call s_mpi_sendrecv_variables_buffers(c_divs, 3, -1, num_dims + 1)
566# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
568# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
569#if defined(MFC_OpenACC)
570# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
572# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
573#elif defined(MFC_OpenMP)
574# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
576# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
578# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
580# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
582# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
586 select case (bc_type(3, 1)%sf(
k,
l, 0))
597# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
598#if defined(MFC_OpenACC)
599# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
601# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
602#elif defined(MFC_OpenMP)
603# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
605# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
607# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
611 if (bc%z%end >= 0)
then
612 call s_mpi_sendrecv_variables_buffers(c_divs, 3, 1, num_dims + 1)
615# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
617# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
618#if defined(MFC_OpenACC)
619# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
621# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
622#elif defined(MFC_OpenMP)
623# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
625# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
627# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
629# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
631# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
635 select case (bc_type(3, 2)%sf(
k,
l, 0))
646# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
647#if defined(MFC_OpenACC)
648# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
650# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
651#elif defined(MFC_OpenMP)
652# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
654# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
656# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
659# 161 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
667# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
669# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
671# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
673# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
675# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
677# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
679# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
681# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
683# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
685# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
687# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
689# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
691# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
693# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
695# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
697# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
699# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
701 type(
scalar_field),
dimension(num_dims + 1),
intent(inout) :: c_divs
702 integer,
intent(in) :: bc_dir, bc_loc
703 integer,
intent(in) :: k, l
706 if (bc_dir == 1)
then
707 if (bc_loc == -1)
then
708 do i = 1, num_dims + 1
710 c_divs(i)%sf(-j, k, l) = c_divs(i)%sf(m - (j - 1), k, l)
714 do i = 1, num_dims + 1
716 c_divs(i)%sf(m + j, k, l) = c_divs(i)%sf(j - 1, k, l)
720 else if (bc_dir == 2)
then
721 if (bc_loc == -1)
then
722 do i = 1, num_dims + 1
724 c_divs(i)%sf(k, -j, l) = c_divs(i)%sf(k, n - (j - 1), l)
728 do i = 1, num_dims + 1
730 c_divs(i)%sf(k, n + j, l) = c_divs(i)%sf(k, j - 1, l)
734 else if (bc_dir == 3)
then
735 if (bc_loc == -1)
then
736 do i = 1, num_dims + 1
738 c_divs(i)%sf(k, l, -j) = c_divs(i)%sf(k, l, p - (j - 1))
742 do i = 1, num_dims + 1
744 c_divs(i)%sf(k, l, p + j) = c_divs(i)%sf(k, l, j - 1)
756# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
758# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
760# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
762# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
764# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
766# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
768# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
770# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
772# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
774# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
776# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
778# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
780# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
782# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
784# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
786# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
788# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
790 type(
scalar_field),
dimension(num_dims + 1),
intent(inout) :: c_divs
791 integer,
intent(in) :: bc_dir, bc_loc
792 integer,
intent(in) :: k, l
795 if (bc_dir == 1)
then
796 if (bc_loc == -1)
then
797 do i = 1, num_dims + 1
799 if (i == bc_dir)
then
800 c_divs(i)%sf(-j, k, l) = -c_divs(i)%sf(j - 1, k, l)
802 c_divs(i)%sf(-j, k, l) = c_divs(i)%sf(j - 1, k, l)
807 do i = 1, num_dims + 1
809 if (i == bc_dir)
then
810 c_divs(i)%sf(m + j, k, l) = -c_divs(i)%sf(m - (j - 1), k, l)
812 c_divs(i)%sf(m + j, k, l) = c_divs(i)%sf(m - (j - 1), k, l)
817 else if (bc_dir == 2)
then
818 if (bc_loc == -1)
then
819 do i = 1, num_dims + 1
821 if (i == bc_dir)
then
822 c_divs(i)%sf(k, -j, l) = -c_divs(i)%sf(k, j - 1, l)
824 c_divs(i)%sf(k, -j, l) = c_divs(i)%sf(k, j - 1, l)
829 do i = 1, num_dims + 1
831 if (i == bc_dir)
then
832 c_divs(i)%sf(k, n + j, l) = -c_divs(i)%sf(k, n - (j - 1), l)
834 c_divs(i)%sf(k, n + j, l) = c_divs(i)%sf(k, n - (j - 1), l)
839 else if (bc_dir == 3)
then
840 if (bc_loc == -1)
then
841 do i = 1, num_dims + 1
843 if (i == bc_dir)
then
844 c_divs(i)%sf(k, l, -j) = -c_divs(i)%sf(k, l, j - 1)
846 c_divs(i)%sf(k, l, -j) = c_divs(i)%sf(k, l, j - 1)
851 do i = 1, num_dims + 1
853 if (i == bc_dir)
then
854 c_divs(i)%sf(k, l, p + j) = -c_divs(i)%sf(k, l, p - (j - 1))
856 c_divs(i)%sf(k, l, p + j) = c_divs(i)%sf(k, l, p - (j - 1))
869# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
871# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
873# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
875# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
877# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
879# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
881# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
883# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
885# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
887# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
889# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
891# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
893# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
895# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
897# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
899# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
901# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
903 type(
scalar_field),
dimension(num_dims + 1),
intent(inout) :: c_divs
904 integer,
intent(in) :: bc_dir, bc_loc
905 integer,
intent(in) :: k, l
908 if (bc_dir == 1)
then
909 if (bc_loc == -1)
then
910 do i = 1, num_dims + 1
912 c_divs(i)%sf(-j, k, l) = c_divs(i)%sf(0, k, l)
916 do i = 1, num_dims + 1
918 c_divs(i)%sf(m + j, k, l) = c_divs(i)%sf(m, k, l)
922 else if (bc_dir == 2)
then
923 if (bc_loc == -1)
then
924 do i = 1, num_dims + 1
926 c_divs(i)%sf(k, -j, l) = c_divs(i)%sf(k, 0, l)
930 do i = 1, num_dims + 1
932 c_divs(i)%sf(k, n + j, l) = c_divs(i)%sf(k, n, l)
936 else if (bc_dir == 3)
then
937 if (bc_loc == -1)
then
938 do i = 1, num_dims + 1
940 c_divs(i)%sf(k, l, -j) = c_divs(i)%sf(k, l, 0)
944 do i = 1, num_dims + 1
946 c_divs(i)%sf(k, l, p + j) = c_divs(i)%sf(k, l, p)
957 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
958 type(
scalar_field),
dimension(1:),
intent(inout) :: jac_sf
961 if (
bc_x%beg >= 0)
then
962 call s_mpi_sendrecv_variables_buffers(jac_sf, 1, -1, 1)
965# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
967# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
968#if defined(MFC_OpenACC)
969# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
971# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
972#elif defined(MFC_OpenMP)
973# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
975# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
977# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
979# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
981# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
985 select case (bc_type(1, 1)%sf(0,
k,
l))
988 jac_sf(1)%sf(-
j,
k,
l) = jac_sf(1)%sf(m -
j + 1,
k,
l)
992 jac_sf(1)%sf(-
j,
k,
l) = jac_sf(1)%sf(
j - 1,
k,
l)
996 jac_sf(1)%sf(-
j,
k,
l) = jac_sf(1)%sf(0,
k,
l)
1002# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1003#if defined(MFC_OpenACC)
1004# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1006# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1007#elif defined(MFC_OpenMP)
1008# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1010# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1012# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1016 if (
bc_x%end >= 0)
then
1017 call s_mpi_sendrecv_variables_buffers(jac_sf, 1, 1, 1)
1020# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1022# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1023#if defined(MFC_OpenACC)
1024# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1026# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1027#elif defined(MFC_OpenMP)
1028# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1030# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1032# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1034# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1036# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1040 select case (bc_type(1, 2)%sf(0,
k,
l))
1043 jac_sf(1)%sf(m +
j,
k,
l) = jac_sf(1)%sf(
j - 1,
k,
l)
1047 jac_sf(1)%sf(m +
j,
k,
l) = jac_sf(1)%sf(m - (
j - 1),
k,
l)
1051 jac_sf(1)%sf(m +
j,
k,
l) = jac_sf(1)%sf(m,
k,
l)
1057# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1058#if defined(MFC_OpenACC)
1059# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1061# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1062#elif defined(MFC_OpenMP)
1063# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1065# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1067# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1071# 411 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1074 else if (
bc_y%beg >= 0)
then
1075 call s_mpi_sendrecv_variables_buffers(jac_sf, 2, -1, 1)
1078# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1080# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1081#if defined(MFC_OpenACC)
1082# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1084# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1085#elif defined(MFC_OpenMP)
1086# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1088# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1090# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1092# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1094# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1098 select case (bc_type(2, 1)%sf(
k, 0,
l))
1101 jac_sf(1)%sf(
k, -
j,
l) = jac_sf(1)%sf(
k, n -
j + 1,
l)
1105 jac_sf(1)%sf(
k, -
j,
l) = jac_sf(1)%sf(
k,
j - 1,
l)
1109 jac_sf(1)%sf(
k, -
j,
l) = jac_sf(1)%sf(
k, 0,
l)
1115# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1116#if defined(MFC_OpenACC)
1117# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1119# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1120#elif defined(MFC_OpenMP)
1121# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1123# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1125# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1129 if (
bc_y%end >= 0)
then
1130 call s_mpi_sendrecv_variables_buffers(jac_sf, 2, 1, 1)
1133# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1135# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1136#if defined(MFC_OpenACC)
1137# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1139# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1140#elif defined(MFC_OpenMP)
1141# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1143# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1145# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1147# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1149# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1153 select case (bc_type(2, 2)%sf(
k, 0,
l))
1156 jac_sf(1)%sf(
k, n +
j,
l) = jac_sf(1)%sf(
k,
j - 1,
l)
1160 jac_sf(1)%sf(
k, n +
j,
l) = jac_sf(1)%sf(
k, n - (
j - 1),
l)
1164 jac_sf(1)%sf(
k, n +
j,
l) = jac_sf(1)%sf(
k, n,
l)
1170# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1171#if defined(MFC_OpenACC)
1172# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1174# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1175#elif defined(MFC_OpenMP)
1176# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1178# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1180# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1183# 463 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1185# 465 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1188 else if (
bc_z%beg >= 0)
then
1189 call s_mpi_sendrecv_variables_buffers(jac_sf, 3, -1, 1)
1192# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1194# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1195#if defined(MFC_OpenACC)
1196# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1198# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1199#elif defined(MFC_OpenMP)
1200# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1202# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1204# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1206# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1208# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1212 select case (bc_type(3, 1)%sf(
k,
l, 0))
1215 jac_sf(1)%sf(
k,
l, -
j) = jac_sf(1)%sf(
k,
l, p -
j + 1)
1219 jac_sf(1)%sf(
k,
l, -
j) = jac_sf(1)%sf(
k,
l,
j - 1)
1223 jac_sf(1)%sf(
k,
l, -
j) = jac_sf(1)%sf(
k,
l, 0)
1229# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1230#if defined(MFC_OpenACC)
1231# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1233# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1234#elif defined(MFC_OpenMP)
1235# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1237# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1239# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1243 if (
bc_z%end >= 0)
then
1244 call s_mpi_sendrecv_variables_buffers(jac_sf, 3, 1, 1)
1247# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1249# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1250#if defined(MFC_OpenACC)
1251# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1253# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1254#elif defined(MFC_OpenMP)
1255# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1257# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1259# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1261# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1263# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1267 select case (bc_type(3, 2)%sf(
k,
l, 0))
1270 jac_sf(1)%sf(
k,
l, p +
j) = jac_sf(1)%sf(
k,
l,
j - 1)
1274 jac_sf(1)%sf(
k,
l, p +
j) = jac_sf(1)%sf(
k,
l, p - (
j - 1))
1278 jac_sf(1)%sf(
k,
l, p +
j) = jac_sf(1)%sf(
k,
l, p)
1284# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1285#if defined(MFC_OpenACC)
1286# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1288# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1289#elif defined(MFC_OpenMP)
1290# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1292# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1294# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1297# 517 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1304 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
1308 integer,
dimension(3) :: sf_start_idx, sf_extents_loc
1311 do dir = 1, num_dims
1313 sf_start_idx = (/0, 0, 0/)
1314 sf_extents_loc = shape(bc_type(dir, loc)%sf)
1316 call mpi_type_create_subarray(num_dims, sf_extents_loc, sf_extents_loc, sf_start_idx, mpi_order_fortran, &
1322 do dir = 1, num_dims
1324 sf_start_idx = (/0, 0, 0/)
1325 sf_extents_loc = shape(
bc_buffers(dir, loc)%sf)
1327 call mpi_type_create_subarray(num_dims, sf_extents_loc*mpi_io_type, sf_extents_loc*mpi_io_type, sf_start_idx, &
1339 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
1340 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
1341 logical,
intent(in) :: old_grid_in
1342 character(LEN=*),
intent(in) :: step_dirpath
1344 character(len=path_len) :: file_path
1345 character(len=10) :: status
1348 if (old_grid_in)
then
1356 file_path = trim(step_dirpath) //
'/bc_type.dat'
1357 open (1, file=trim(file_path), form=
'unformatted', status=status)
1358 do dir = 1, num_dims
1360 write (1) bc_type(dir, loc)%sf
1365 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
1366 open (1, file=trim(file_path), form=
'unformatted', status=status)
1367 do dir = 1, num_dims
1379 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
1380 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
1382 character(len=path_len) :: file_loc, file_path
1388 character(len=7) :: proc_rank_str
1389 logical :: dir_check
1390 integer :: nelements
1394 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
1397 if (dir_check .neqv. .true.)
then
1404 call s_mpi_barrier()
1408 write (proc_rank_str,
'(I7.7)')
proc_rank
1409 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
1410 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_create + mpi_mode_wronly, mpi_info_null, file_id, ierr)
1413 do dir = 1, num_dims
1415#ifdef MFC_MIXED_PRECISION
1416 nelements = sizeof(bc_type(dir, loc)%sf)
1417 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
1419 nelements = sizeof(bc_type(dir, loc)%sf)/4
1420 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
1426 do dir = 1, num_dims
1428 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
1429 call mpi_file_write_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
1433 call mpi_file_close(file_id, ierr)
1441 character(LEN=*),
intent(in) :: step_dirpath
1442 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
1444 logical :: file_exist
1445 character(len=path_len) :: file_path
1449 file_path = trim(step_dirpath) //
'/bc_type.dat'
1450 inquire (file=trim(file_path), exist=file_exist)
1451 if (.not. file_exist)
then
1452 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
1455 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
1456 do dir = 1, num_dims
1458 read (1) bc_type(dir, loc)%sf
1460# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1461#if defined(MFC_OpenACC)
1462# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1464# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1465#elif defined(MFC_OpenMP)
1466# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1468# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1475 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
1476 inquire (file=trim(file_path), exist=file_exist)
1477 if (.not. file_exist)
then
1478 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
1481 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
1482 do dir = 1, num_dims
1486# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1487#if defined(MFC_OpenACC)
1488# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1490# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1491#elif defined(MFC_OpenMP)
1492# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1494# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1505 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
1507 character(len=path_len) :: file_loc, file_path
1512 character(len=7) :: proc_rank_str
1513 logical :: dir_check
1514 integer :: nelements
1516 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
1520 if (dir_check .neqv. .true.)
then
1521 call s_mpi_abort(trim(file_loc) //
' is missing. Exiting.')
1527 call s_mpi_barrier()
1531 write (proc_rank_str,
'(I7.7)')
proc_rank
1532 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
1533 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_rdonly, mpi_info_null, file_id, ierr)
1536 do dir = 1, num_dims
1538#ifdef MFC_MIXED_PRECISION
1539 nelements = sizeof(bc_type(dir, loc)%sf)
1540 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
1542 nelements = sizeof(bc_type(dir, loc)%sf)/4
1543 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
1546# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1547#if defined(MFC_OpenACC)
1548# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1550# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1551#elif defined(MFC_OpenMP)
1552# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1554# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1560 do dir = 1, num_dims
1562 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
1563 call mpi_file_read_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
1565# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1566#if defined(MFC_OpenACC)
1567# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1569# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1570#elif defined(MFC_OpenMP)
1571# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1573# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1578 call mpi_file_close(file_id, ierr)
1586 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
1593 bc_buffers(1, 1)%sf(i, j, k) = q_prim_vf(i)%sf(0, j, k)
1594 bc_buffers(1, 2)%sf(i, j, k) = q_prim_vf(i)%sf(m, j, k)
1596 if (chemistry .and.
present(q_t_sf))
then
1597 bc_buffers(1, 1)%sf(sys_size + 1, j, k) = q_t_sf%sf(0, j, k)
1598 bc_buffers(1, 2)%sf(sys_size + 1, j, k) = q_t_sf%sf(m, j, k)
1603# 783 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1608 bc_buffers(2, 1)%sf(i, j, k) = q_prim_vf(j)%sf(i, 0, k)
1609 bc_buffers(2, 2)%sf(i, j, k) = q_prim_vf(j)%sf(i, n, k)
1612 if (chemistry .and.
present(q_t_sf))
then
1614 bc_buffers(2, 1)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, 0, k)
1615 bc_buffers(2, 2)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, n, k)
1620# 800 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1625 bc_buffers(3, 1)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, 0)
1626 bc_buffers(3, 2)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, p)
1630 if (chemistry .and.
present(q_t_sf))
then
1633 bc_buffers(3, 1)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, 0)
1634 bc_buffers(3, 2)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, p)
1639# 819 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1641# 821 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1648 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
1650 bc_type(1, 1)%sf(:,:,:) = int(min(
bc_x%beg, 0), kind=1)
1651 bc_type(1, 2)%sf(:,:,:) = int(min(
bc_x%end, 0), kind=1)
1653# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1654#if defined(MFC_OpenACC)
1655# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1657# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1658#elif defined(MFC_OpenMP)
1659# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1661# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1664# 834 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1666 bc_type(2, 1)%sf(:,:,:) = int(min(
bc_y%beg, 0), kind=1)
1667 bc_type(2, 2)%sf(:,:,:) = int(min(
bc_y%end, 0), kind=1)
1669# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1670#if defined(MFC_OpenACC)
1671# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1673# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1674#elif defined(MFC_OpenMP)
1675# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1677# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1679# 839 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1681 bc_type(3, 1)%sf(:,:,:) = int(min(
bc_z%beg, 0), kind=1)
1682 bc_type(3, 2)%sf(:,:,:) = int(min(
bc_z%end, 0), kind=1)
1684# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1685#if defined(MFC_OpenACC)
1686# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1688# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1689#elif defined(MFC_OpenMP)
1690# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1692# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1695# 845 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1697# 847 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1707#ifdef MFC_SIMULATION
1716#ifndef MFC_PRE_PROCESS
1720 if (
bc_x%beg >= 0)
then
1721 call s_mpi_sendrecv_grid_variables_buffers(1, -1)
1732 dx(-i) =
dx(m - (i - 1))
1737 do i = 1, offset_x%beg
1746 if (
bc_x%end >= 0)
then
1747 call s_mpi_sendrecv_grid_variables_buffers(1, 1)
1754 dx(m + i) =
dx(m - (i - 1))
1758 dx(m + i) =
dx(i - 1)
1763 do i = 1, offset_x%end
1768 x_cc(m + i) =
x_cc(m + (i - 1)) + (
dx(m + (i - 1)) +
dx(m + i))/2._wp
1776 else if (
bc_y%beg >= 0)
then
1777 call s_mpi_sendrecv_grid_variables_buffers(2, -1)
1788 dy(-i) =
dy(n - (i - 1))
1793 do i = 1, offset_y%beg
1802 if (
bc_y%end >= 0)
then
1803 call s_mpi_sendrecv_grid_variables_buffers(2, 1)
1810 dy(n + i) =
dy(n - (i - 1))
1814 dy(n + i) =
dy(i - 1)
1819 do i = 1, offset_y%end
1824 y_cc(n + i) =
y_cc(n + (i - 1)) + (
dy(n + (i - 1)) +
dy(n + i))/2._wp
1832 else if (
bc_z%beg >= 0)
then
1833 call s_mpi_sendrecv_grid_variables_buffers(3, -1)
1844 dz(-i) =
dz(p - (i - 1))
1849 do i = 1, offset_z%beg
1858 if (
bc_z%end >= 0)
then
1859 call s_mpi_sendrecv_grid_variables_buffers(3, 1)
1866 dz(p + i) =
dz(p - (i - 1))
1870 dz(p + i) =
dz(i - 1)
1875 do i = 1, offset_z%end
1880 z_cc(p + i) =
z_cc(p + (i - 1)) + (
dz(p + (i - 1)) +
dz(p + i))/2._wp
Boundary condition restart I/O, capillary/IGR buffer population, and grid-variable buffers.
integer, dimension(1:3, 1:2) mpi_bc_type_type
subroutine s_write_parallel_boundary_condition_files(q_prim_vf, bc_type, q_t_sf)
Write boundary condition type and buffer data to per-rank parallel files using MPI I/O.
subroutine s_populate_grid_variables_buffers
Populate the buffers of the grid variables, which are constituted of the cell-boundary locations and ...
subroutine s_color_function_periodic(c_divs, bc_dir, bc_loc, k, l)
Apply periodic boundary conditions to the color function and its divergence fields.
integer, dimension(1:3, 1:2) mpi_bc_buffer_type
impure subroutine s_populate_capillary_buffers(c_divs, bc_type, bc)
Populate ghost cell buffers for the color function and its divergence used in capillary surface tensi...
subroutine s_assign_default_bc_type(bc_type)
Initialize the per-cell boundary condition type arrays with the global default BC values.
subroutine s_read_serial_boundary_condition_files(step_dirpath, bc_type)
Read boundary condition type and buffer data from serial (unformatted) restart files.
impure subroutine s_create_mpi_types(bc_type)
Create MPI derived datatypes for boundary condition type arrays and buffer arrays used in parallel I/...
subroutine s_color_function_reflective(c_divs, bc_dir, bc_loc, k, l)
Apply reflective boundary conditions to the color function and its divergence fields.
subroutine s_pack_boundary_condition_buffers(q_prim_vf, q_t_sf)
Pack primitive variable boundary slices into bc_buffers arrays for serialization.
subroutine s_read_parallel_boundary_condition_files(bc_type)
Read boundary condition type and buffer data from per-rank parallel files using MPI I/O.
impure subroutine s_populate_f_igr_buffers(bc_type, jac_sf)
Populate ghost cell buffers for the Jacobian scalar field used in the IGR elliptic solver.
subroutine s_color_function_ghost_cell_extrapolation(c_divs, bc_dir, bc_loc, k, l)
Extrapolate the color function and its divergence into ghost cells by copying boundary values.
subroutine s_write_serial_boundary_condition_files(q_prim_vf, bc_type, step_dirpath, old_grid_in, q_t_sf)
Write boundary condition type and buffer data to serial (unformatted) restart files.
Per-cell noncharacteristic boundary condition primitives applied in the ghost cells.
type(scalar_field), dimension(:,:), allocatable bc_buffers
Platform-specific file and directory operations: create, delete, inquire, getcwd, and basename.
impure subroutine my_inquire(fileloc, dircheck)
Inquires on the existence of a directory.
impure subroutine s_create_directory(dir_name)
Create a directory and all its parents if it does not exist.
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter bc_ghost_extrap
integer, parameter bc_axis
integer, parameter bc_reflective
integer, parameter bc_periodic
Rank-staggered file access delays to prevent I/O contention on parallel file systems.
impure subroutine, public delayfileaccess(processrank)
Introduce a rank-dependent busy-wait delay to stagger parallel file access and reduce I/O contention.
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Defines global parameters for the computational domain, simulation algorithm, and initial conditions.
real(wp) dz
Minimum cell-widths in the x-, y- and z-coordinate directions.
type(int_bounds_info) bc_z
Boundary conditions in the x-, y- and z-coordinate directions.
real(wp), dimension(:), allocatable y_cc
integer proc_rank
Rank of the local processor Number of cells in the x-, y- and z-coordinate directions.
real(wp), dimension(:), allocatable y_cb
type(int_bounds_info), dimension(1:3) idwbuff
integer buff_size
Number of ghost cells for boundary condition storage.
real(wp), dimension(:), allocatable z_cb
type(int_bounds_info) bc_y
real(wp), dimension(:), allocatable x_cc
Locations of cell-centers (cc) in x-, y- and z-directions, respectively.
type(int_bounds_info) bc_x
real(wp), dimension(:), allocatable x_cb
Locations of cell-boundaries (cb) in x-, y- and z-directions, respectively.
real(wp), dimension(:), allocatable z_cc
Broadcasts user inputs and decomposes the domain across MPI ranks for pre-processing.
Groups the x, y, z boundary condition begin/end codes for passing as a single argument.
Integer bounds for variables.
Derived type annexing an integer scalar field (SF).
Derived type annexing a scalar field (SF).