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# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
48# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
49# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
50# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
76# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
78# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
156# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
157# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
158# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182# 145 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
186# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
245# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
248# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
254# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
301# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
304# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
306# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
311# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
314# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
317# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
320# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
330# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
332# 8 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp" 2
356 type(
scalar_field),
dimension(num_dims + 1),
intent(inout) :: c_divs
357 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
363 if (bc%x%beg >= 0)
then
364 call s_mpi_sendrecv_variables_buffers(c_divs, 1, -1, num_dims + 1)
367# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
369# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
370#if defined(MFC_OpenACC)
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"
374#elif defined(MFC_OpenMP)
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"
379# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
381# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
383# 41 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
387 select case (bc_type(1, 1)%sf(0,
k,
l))
398# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
399#if defined(MFC_OpenACC)
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"
403#elif defined(MFC_OpenMP)
404# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
406# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
408# 54 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
412 if (bc%x%end >= 0)
then
413 call s_mpi_sendrecv_variables_buffers(c_divs, 1, 1, num_dims + 1)
416# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
418# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
419#if defined(MFC_OpenACC)
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"
423#elif defined(MFC_OpenMP)
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"
428# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
430# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
432# 60 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
436 select case (bc_type(1, 2)%sf(0,
k,
l))
447# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
448#if defined(MFC_OpenACC)
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"
452#elif defined(MFC_OpenMP)
453# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
455# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
457# 73 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
463# 79 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
465 if (bc%y%beg >= 0)
then
466 call s_mpi_sendrecv_variables_buffers(c_divs, 2, -1, num_dims + 1)
469# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
471# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
472#if defined(MFC_OpenACC)
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"
476#elif defined(MFC_OpenMP)
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"
481# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
483# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
485# 83 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
489 select case (bc_type(2, 1)%sf(
k, 0,
l))
500# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
501#if defined(MFC_OpenACC)
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"
505#elif defined(MFC_OpenMP)
506# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
508# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
510# 96 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
514 if (bc%y%end >= 0)
then
515 call s_mpi_sendrecv_variables_buffers(c_divs, 2, 1, num_dims + 1)
518# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
520# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
521#if defined(MFC_OpenACC)
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"
525#elif defined(MFC_OpenMP)
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"
530# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
532# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
534# 102 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
538 select case (bc_type(2, 2)%sf(
k, 0,
l))
549# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
550#if defined(MFC_OpenACC)
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"
554#elif defined(MFC_OpenMP)
555# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
557# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
559# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
562# 118 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
566# 122 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
568 if (bc%z%beg >= 0)
then
569 call s_mpi_sendrecv_variables_buffers(c_divs, 3, -1, num_dims + 1)
572# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
574# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
575#if defined(MFC_OpenACC)
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"
579#elif defined(MFC_OpenMP)
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"
584# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
586# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
588# 126 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
592 select case (bc_type(3, 1)%sf(
k,
l, 0))
603# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
604#if defined(MFC_OpenACC)
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"
608#elif defined(MFC_OpenMP)
609# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
611# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
613# 139 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
617 if (bc%z%end >= 0)
then
618 call s_mpi_sendrecv_variables_buffers(c_divs, 3, 1, num_dims + 1)
621# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
623# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
624#if defined(MFC_OpenACC)
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"
628#elif defined(MFC_OpenMP)
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"
633# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
635# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
637# 145 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
641 select case (bc_type(3, 2)%sf(
k,
l, 0))
652# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
653#if defined(MFC_OpenACC)
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"
657#elif defined(MFC_OpenMP)
658# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
660# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
662# 158 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
665# 161 "/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# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
703# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
705# 167 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
707 type(
scalar_field),
dimension(num_dims + 1),
intent(inout) :: c_divs
708 integer,
intent(in) :: bc_dir, bc_loc
709 integer,
intent(in) :: k, l
712 if (bc_dir == 1)
then
713 if (bc_loc == -1)
then
714 do i = 1, num_dims + 1
716 c_divs(i)%sf(-j, k, l) = c_divs(i)%sf(m - (j - 1), k, l)
720 do i = 1, num_dims + 1
722 c_divs(i)%sf(m + j, k, l) = c_divs(i)%sf(j - 1, k, l)
726 else if (bc_dir == 2)
then
727 if (bc_loc == -1)
then
728 do i = 1, num_dims + 1
730 c_divs(i)%sf(k, -j, l) = c_divs(i)%sf(k, n - (j - 1), l)
734 do i = 1, num_dims + 1
736 c_divs(i)%sf(k, n + j, l) = c_divs(i)%sf(k, j - 1, l)
740 else if (bc_dir == 3)
then
741 if (bc_loc == -1)
then
742 do i = 1, num_dims + 1
744 c_divs(i)%sf(k, l, -j) = c_divs(i)%sf(k, l, p - (j - 1))
748 do i = 1, num_dims + 1
750 c_divs(i)%sf(k, l, p + j) = c_divs(i)%sf(k, l, j - 1)
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# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
792# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
794# 222 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
796 type(
scalar_field),
dimension(num_dims + 1),
intent(inout) :: c_divs
797 integer,
intent(in) :: bc_dir, bc_loc
798 integer,
intent(in) :: k, l
801 if (bc_dir == 1)
then
802 if (bc_loc == -1)
then
803 do i = 1, num_dims + 1
805 if (i == bc_dir)
then
806 c_divs(i)%sf(-j, k, l) = -c_divs(i)%sf(j - 1, k, l)
808 c_divs(i)%sf(-j, k, l) = c_divs(i)%sf(j - 1, k, l)
813 do i = 1, num_dims + 1
815 if (i == bc_dir)
then
816 c_divs(i)%sf(m + j, k, l) = -c_divs(i)%sf(m - (j - 1), k, l)
818 c_divs(i)%sf(m + j, k, l) = c_divs(i)%sf(m - (j - 1), k, l)
823 else if (bc_dir == 2)
then
824 if (bc_loc == -1)
then
825 do i = 1, num_dims + 1
827 if (i == bc_dir)
then
828 c_divs(i)%sf(k, -j, l) = -c_divs(i)%sf(k, j - 1, l)
830 c_divs(i)%sf(k, -j, l) = c_divs(i)%sf(k, j - 1, l)
835 do i = 1, num_dims + 1
837 if (i == bc_dir)
then
838 c_divs(i)%sf(k, n + j, l) = -c_divs(i)%sf(k, n - (j - 1), l)
840 c_divs(i)%sf(k, n + j, l) = c_divs(i)%sf(k, n - (j - 1), l)
845 else if (bc_dir == 3)
then
846 if (bc_loc == -1)
then
847 do i = 1, num_dims + 1
849 if (i == bc_dir)
then
850 c_divs(i)%sf(k, l, -j) = -c_divs(i)%sf(k, l, j - 1)
852 c_divs(i)%sf(k, l, -j) = c_divs(i)%sf(k, l, j - 1)
857 do i = 1, num_dims + 1
859 if (i == bc_dir)
then
860 c_divs(i)%sf(k, l, p + j) = -c_divs(i)%sf(k, l, p - (j - 1))
862 c_divs(i)%sf(k, l, p + j) = c_divs(i)%sf(k, l, p - (j - 1))
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# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
905# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
907# 301 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
909 type(
scalar_field),
dimension(num_dims + 1),
intent(inout) :: c_divs
910 integer,
intent(in) :: bc_dir, bc_loc
911 integer,
intent(in) :: k, l
914 if (bc_dir == 1)
then
915 if (bc_loc == -1)
then
916 do i = 1, num_dims + 1
918 c_divs(i)%sf(-j, k, l) = c_divs(i)%sf(0, k, l)
922 do i = 1, num_dims + 1
924 c_divs(i)%sf(m + j, k, l) = c_divs(i)%sf(m, k, l)
928 else if (bc_dir == 2)
then
929 if (bc_loc == -1)
then
930 do i = 1, num_dims + 1
932 c_divs(i)%sf(k, -j, l) = c_divs(i)%sf(k, 0, l)
936 do i = 1, num_dims + 1
938 c_divs(i)%sf(k, n + j, l) = c_divs(i)%sf(k, n, l)
942 else if (bc_dir == 3)
then
943 if (bc_loc == -1)
then
944 do i = 1, num_dims + 1
946 c_divs(i)%sf(k, l, -j) = c_divs(i)%sf(k, l, 0)
950 do i = 1, num_dims + 1
952 c_divs(i)%sf(k, l, p + j) = c_divs(i)%sf(k, l, p)
963 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
964 type(
scalar_field),
dimension(1:),
intent(inout) :: jac_sf
967 if (
bc_x%beg >= 0)
then
968 call s_mpi_sendrecv_variables_buffers(jac_sf, 1, -1, 1)
971# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
973# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
974#if defined(MFC_OpenACC)
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"
978#elif defined(MFC_OpenMP)
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"
983# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
985# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
987# 363 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
991 select case (bc_type(1, 1)%sf(0,
k,
l))
994 jac_sf(1)%sf(-
j,
k,
l) = jac_sf(1)%sf(m -
j + 1,
k,
l)
998 jac_sf(1)%sf(-
j,
k,
l) = jac_sf(1)%sf(
j - 1,
k,
l)
1002 jac_sf(1)%sf(-
j,
k,
l) = jac_sf(1)%sf(0,
k,
l)
1008# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1009#if defined(MFC_OpenACC)
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"
1013#elif defined(MFC_OpenMP)
1014# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1016# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1018# 382 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1022 if (
bc_x%end >= 0)
then
1023 call s_mpi_sendrecv_variables_buffers(jac_sf, 1, 1, 1)
1026# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1028# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1029#if defined(MFC_OpenACC)
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"
1033#elif defined(MFC_OpenMP)
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"
1038# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1040# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1042# 388 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1046 select case (bc_type(1, 2)%sf(0,
k,
l))
1049 jac_sf(1)%sf(m +
j,
k,
l) = jac_sf(1)%sf(
j - 1,
k,
l)
1053 jac_sf(1)%sf(m +
j,
k,
l) = jac_sf(1)%sf(m - (
j - 1),
k,
l)
1057 jac_sf(1)%sf(m +
j,
k,
l) = jac_sf(1)%sf(m,
k,
l)
1063# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1064#if defined(MFC_OpenACC)
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"
1068#elif defined(MFC_OpenMP)
1069# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1071# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1073# 407 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1077# 411 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1080 else if (
bc_y%beg >= 0)
then
1081 call s_mpi_sendrecv_variables_buffers(jac_sf, 2, -1, 1)
1084# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1086# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1087#if defined(MFC_OpenACC)
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"
1091#elif defined(MFC_OpenMP)
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"
1096# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1098# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1100# 416 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1104 select case (bc_type(2, 1)%sf(
k, 0,
l))
1107 jac_sf(1)%sf(
k, -
j,
l) = jac_sf(1)%sf(
k, n -
j + 1,
l)
1111 jac_sf(1)%sf(
k, -
j,
l) = jac_sf(1)%sf(
k,
j - 1,
l)
1115 jac_sf(1)%sf(
k, -
j,
l) = jac_sf(1)%sf(
k, 0,
l)
1121# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1122#if defined(MFC_OpenACC)
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"
1126#elif defined(MFC_OpenMP)
1127# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1129# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1131# 435 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1135 if (
bc_y%end >= 0)
then
1136 call s_mpi_sendrecv_variables_buffers(jac_sf, 2, 1, 1)
1139# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1141# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1142#if defined(MFC_OpenACC)
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"
1146#elif defined(MFC_OpenMP)
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"
1151# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1153# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1155# 441 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1159 select case (bc_type(2, 2)%sf(
k, 0,
l))
1162 jac_sf(1)%sf(
k, n +
j,
l) = jac_sf(1)%sf(
k,
j - 1,
l)
1166 jac_sf(1)%sf(
k, n +
j,
l) = jac_sf(1)%sf(
k, n - (
j - 1),
l)
1170 jac_sf(1)%sf(
k, n +
j,
l) = jac_sf(1)%sf(
k, n,
l)
1176# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1177#if defined(MFC_OpenACC)
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"
1181#elif defined(MFC_OpenMP)
1182# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1184# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1186# 460 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1189# 463 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1191# 465 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1194 else if (
bc_z%beg >= 0)
then
1195 call s_mpi_sendrecv_variables_buffers(jac_sf, 3, -1, 1)
1198# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1200# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1201#if defined(MFC_OpenACC)
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"
1205#elif defined(MFC_OpenMP)
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"
1210# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1212# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1214# 470 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1218 select case (bc_type(3, 1)%sf(
k,
l, 0))
1221 jac_sf(1)%sf(
k,
l, -
j) = jac_sf(1)%sf(
k,
l, p -
j + 1)
1225 jac_sf(1)%sf(
k,
l, -
j) = jac_sf(1)%sf(
k,
l,
j - 1)
1229 jac_sf(1)%sf(
k,
l, -
j) = jac_sf(1)%sf(
k,
l, 0)
1235# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1236#if defined(MFC_OpenACC)
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"
1240#elif defined(MFC_OpenMP)
1241# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1243# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1245# 489 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1249 if (
bc_z%end >= 0)
then
1250 call s_mpi_sendrecv_variables_buffers(jac_sf, 3, 1, 1)
1253# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1255# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1256#if defined(MFC_OpenACC)
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"
1260#elif defined(MFC_OpenMP)
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"
1265# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1267# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1269# 495 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1273 select case (bc_type(3, 2)%sf(
k,
l, 0))
1276 jac_sf(1)%sf(
k,
l, p +
j) = jac_sf(1)%sf(
k,
l,
j - 1)
1280 jac_sf(1)%sf(
k,
l, p +
j) = jac_sf(1)%sf(
k,
l, p - (
j - 1))
1284 jac_sf(1)%sf(
k,
l, p +
j) = jac_sf(1)%sf(
k,
l, p)
1290# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1291#if defined(MFC_OpenACC)
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"
1295#elif defined(MFC_OpenMP)
1296# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1298# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1300# 514 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1303# 517 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1310 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
1314 integer,
dimension(3) :: sf_start_idx, sf_extents_loc
1317 do dir = 1, num_dims
1319 sf_start_idx = (/0, 0, 0/)
1320 sf_extents_loc = shape(bc_type(dir, loc)%sf)
1322 call mpi_type_create_subarray(num_dims, sf_extents_loc, sf_extents_loc, sf_start_idx, mpi_order_fortran, &
1328 do dir = 1, num_dims
1330 sf_start_idx = (/0, 0, 0/)
1331 sf_extents_loc = shape(
bc_buffers(dir, loc)%sf)
1333 call mpi_type_create_subarray(num_dims, sf_extents_loc*mpi_io_type, sf_extents_loc*mpi_io_type, sf_start_idx, &
1345 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
1346 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
1347 logical,
intent(in) :: old_grid_in
1348 character(LEN=*),
intent(in) :: step_dirpath
1350 character(len=path_len) :: file_path
1351 character(len=10) :: status
1354 if (old_grid_in)
then
1362 file_path = trim(step_dirpath) //
'/bc_type.dat'
1363 open (1, file=trim(file_path), form=
'unformatted', status=status)
1364 do dir = 1, num_dims
1366 write (1) bc_type(dir, loc)%sf
1371 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
1372 open (1, file=trim(file_path), form=
'unformatted', status=status)
1373 do dir = 1, num_dims
1385 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
1386 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
1388 character(len=path_len) :: file_loc, file_path
1394 character(len=7) :: proc_rank_str
1395 logical :: dir_check
1396 integer :: nelements
1400 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
1403 if (dir_check .neqv. .true.)
then
1410 call s_mpi_barrier()
1414 write (proc_rank_str,
'(I7.7)')
proc_rank
1415 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
1416 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_create + mpi_mode_wronly, mpi_info_null, file_id, ierr)
1419 do dir = 1, num_dims
1421#ifdef MFC_MIXED_PRECISION
1422 nelements = sizeof(bc_type(dir, loc)%sf)
1423 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
1425 nelements = sizeof(bc_type(dir, loc)%sf)/4
1426 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
1432 do dir = 1, num_dims
1434 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
1435 call mpi_file_write_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
1439 call mpi_file_close(file_id, ierr)
1447 character(LEN=*),
intent(in) :: step_dirpath
1448 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
1450 logical :: file_exist
1451 character(len=path_len) :: file_path
1455 file_path = trim(step_dirpath) //
'/bc_type.dat'
1456 inquire (file=trim(file_path), exist=file_exist)
1457 if (.not. file_exist)
then
1458 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
1461 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
1462 do dir = 1, num_dims
1464 read (1) bc_type(dir, loc)%sf
1466# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1467#if defined(MFC_OpenACC)
1468# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1470# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1471#elif defined(MFC_OpenMP)
1472# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1474# 678 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1481 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
1482 inquire (file=trim(file_path), exist=file_exist)
1483 if (.not. file_exist)
then
1484 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
1487 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
1488 do dir = 1, num_dims
1492# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1493#if defined(MFC_OpenACC)
1494# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1496# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1497#elif defined(MFC_OpenMP)
1498# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1500# 694 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1511 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
1513 character(len=path_len) :: file_loc, file_path
1518 character(len=7) :: proc_rank_str
1519 logical :: dir_check
1520 integer :: nelements
1522 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
1526 if (dir_check .neqv. .true.)
then
1527 call s_mpi_abort(trim(file_loc) //
' is missing. Exiting.')
1533 call s_mpi_barrier()
1537 write (proc_rank_str,
'(I7.7)')
proc_rank
1538 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
1539 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_rdonly, mpi_info_null, file_id, ierr)
1542 do dir = 1, num_dims
1544#ifdef MFC_MIXED_PRECISION
1545 nelements = sizeof(bc_type(dir, loc)%sf)
1546 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
1548 nelements = sizeof(bc_type(dir, loc)%sf)/4
1549 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
1552# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1553#if defined(MFC_OpenACC)
1554# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1556# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1557#elif defined(MFC_OpenMP)
1558# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1560# 744 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1566 do dir = 1, num_dims
1568 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
1569 call mpi_file_read_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
1571# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1572#if defined(MFC_OpenACC)
1573# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1575# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1576#elif defined(MFC_OpenMP)
1577# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1579# 753 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1584 call mpi_file_close(file_id, ierr)
1592 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
1599 bc_buffers(1, 1)%sf(i, j, k) = q_prim_vf(i)%sf(0, j, k)
1600 bc_buffers(1, 2)%sf(i, j, k) = q_prim_vf(i)%sf(m, j, k)
1602 if (chemistry .and.
present(q_t_sf))
then
1603 bc_buffers(1, 1)%sf(sys_size + 1, j, k) = q_t_sf%sf(0, j, k)
1604 bc_buffers(1, 2)%sf(sys_size + 1, j, k) = q_t_sf%sf(m, j, k)
1609# 783 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1614 bc_buffers(2, 1)%sf(i, j, k) = q_prim_vf(j)%sf(i, 0, k)
1615 bc_buffers(2, 2)%sf(i, j, k) = q_prim_vf(j)%sf(i, n, k)
1618 if (chemistry .and.
present(q_t_sf))
then
1620 bc_buffers(2, 1)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, 0, k)
1621 bc_buffers(2, 2)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, n, k)
1626# 800 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1631 bc_buffers(3, 1)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, 0)
1632 bc_buffers(3, 2)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, p)
1636 if (chemistry .and.
present(q_t_sf))
then
1639 bc_buffers(3, 1)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, 0)
1640 bc_buffers(3, 2)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, p)
1645# 819 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1647# 821 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1654 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
1656 bc_type(1, 1)%sf(:,:,:) = int(min(
bc_x%beg, 0), kind=1)
1657 bc_type(1, 2)%sf(:,:,:) = int(min(
bc_x%end, 0), kind=1)
1659# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1660#if defined(MFC_OpenACC)
1661# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1663# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1664#elif defined(MFC_OpenMP)
1665# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1667# 831 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1670# 834 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1672 bc_type(2, 1)%sf(:,:,:) = int(min(
bc_y%beg, 0), kind=1)
1673 bc_type(2, 2)%sf(:,:,:) = int(min(
bc_y%end, 0), kind=1)
1675# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1676#if defined(MFC_OpenACC)
1677# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1679# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1680#elif defined(MFC_OpenMP)
1681# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1683# 837 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1685# 839 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1687 bc_type(3, 1)%sf(:,:,:) = int(min(
bc_z%beg, 0), kind=1)
1688 bc_type(3, 2)%sf(:,:,:) = int(min(
bc_z%end, 0), kind=1)
1690# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1691#if defined(MFC_OpenACC)
1692# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1694# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1695#elif defined(MFC_OpenMP)
1696# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1698# 842 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1701# 845 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1703# 847 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
1713#ifdef MFC_SIMULATION
1722#ifndef MFC_PRE_PROCESS
1726 if (
bc_x%beg >= 0)
then
1727 call s_mpi_sendrecv_grid_variables_buffers(1, -1)
1738 dx(-i) =
dx(m - (i - 1))
1743 do i = 1, offset_x%beg
1752 if (
bc_x%end >= 0)
then
1753 call s_mpi_sendrecv_grid_variables_buffers(1, 1)
1760 dx(m + i) =
dx(m - (i - 1))
1764 dx(m + i) =
dx(i - 1)
1769 do i = 1, offset_x%end
1774 x_cc(m + i) =
x_cc(m + (i - 1)) + (
dx(m + (i - 1)) +
dx(m + i))/2._wp
1782 else if (
bc_y%beg >= 0)
then
1783 call s_mpi_sendrecv_grid_variables_buffers(2, -1)
1794 dy(-i) =
dy(n - (i - 1))
1799 do i = 1, offset_y%beg
1808 if (
bc_y%end >= 0)
then
1809 call s_mpi_sendrecv_grid_variables_buffers(2, 1)
1816 dy(n + i) =
dy(n - (i - 1))
1820 dy(n + i) =
dy(i - 1)
1825 do i = 1, offset_y%end
1830 y_cc(n + i) =
y_cc(n + (i - 1)) + (
dy(n + (i - 1)) +
dy(n + i))/2._wp
1838 else if (
bc_z%beg >= 0)
then
1839 call s_mpi_sendrecv_grid_variables_buffers(3, -1)
1850 dz(-i) =
dz(p - (i - 1))
1855 do i = 1, offset_z%beg
1864 if (
bc_z%end >= 0)
then
1865 call s_mpi_sendrecv_grid_variables_buffers(3, 1)
1872 dz(p + i) =
dz(p - (i - 1))
1876 dz(p + i) =
dz(i - 1)
1881 do i = 1, offset_z%end
1886 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.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
real(wp), dimension(:), allocatable, target z_cb
type(int_bounds_info) bc_z
integer proc_rank
Rank of the local processor.
type(int_bounds_info), dimension(1:3) idwbuff
integer buff_size
Number of ghost cells for boundary condition storage.
type(int_bounds_info) bc_y
real(wp), dimension(:), allocatable, target y_cc
type(int_bounds_info) bc_x
real(wp), dimension(:), allocatable, target z_cc
real(wp), dimension(:), allocatable, target x_cc
real(wp), dimension(:), allocatable, target y_cb
real(wp), dimension(:), allocatable, target dy
real(wp), dimension(:), allocatable, target dz
real(wp), dimension(:), allocatable, target dx
real(wp), dimension(:), allocatable, target x_cb
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
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).