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(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
360 integer,
dimension(3) :: sf_start_idx, sf_extents_loc
365 sf_start_idx = (/0, 0, 0/)
366 sf_extents_loc = shape(bc_type(dir, loc)%sf)
368 call mpi_type_create_subarray(num_dims, sf_extents_loc, sf_extents_loc, sf_start_idx, mpi_order_fortran, &
376 sf_start_idx = (/0, 0, 0/)
377 sf_extents_loc = shape(
bc_buffers(dir, loc)%sf)
379 call mpi_type_create_subarray(num_dims, sf_extents_loc*mpi_io_type, sf_extents_loc*mpi_io_type, sf_start_idx, &
391 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
392 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
393 logical,
intent(in) :: old_grid_in
394 character(LEN=*),
intent(in) :: step_dirpath
396 character(len=path_len) :: file_path
397 character(len=10) :: status
400 if (old_grid_in)
then
408 file_path = trim(step_dirpath) //
'/bc_type.dat'
409 open (1, file=trim(file_path), form=
'unformatted', status=status)
412 write (1) bc_type(dir, loc)%sf
417 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
418 open (1, file=trim(file_path), form=
'unformatted', status=status)
431 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
432 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
434 character(len=path_len) :: file_loc, file_path
440 character(len=7) :: proc_rank_str
446 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
449 if (dir_check .neqv. .true.)
then
460 write (proc_rank_str,
'(I7.7)')
proc_rank
461 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
462 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_create + mpi_mode_wronly, mpi_info_null, file_id, ierr)
467#ifdef MFC_MIXED_PRECISION
468 nelements = sizeof(bc_type(dir, loc)%sf)
469 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
471 nelements = sizeof(bc_type(dir, loc)%sf)/4
472 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
480 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
481 call mpi_file_write_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
485 call mpi_file_close(file_id, ierr)
493 character(LEN=*),
intent(in) :: step_dirpath
494 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
496 logical :: file_exist
497 character(len=path_len) :: file_path
501 file_path = trim(step_dirpath) //
'/bc_type.dat'
502 inquire (file=trim(file_path), exist=file_exist)
503 if (.not. file_exist)
then
504 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
507 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
510 read (1) bc_type(dir, loc)%sf
512# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
513#if defined(MFC_OpenACC)
514# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
516# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
517#elif defined(MFC_OpenMP)
518# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
520# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
527 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
528 inquire (file=trim(file_path), exist=file_exist)
529 if (.not. file_exist)
then
530 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
533 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
538# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
539#if defined(MFC_OpenACC)
540# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
542# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
543#elif defined(MFC_OpenMP)
544# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
546# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
557 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
559 character(len=path_len) :: file_loc, file_path
564 character(len=7) :: proc_rank_str
568 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
572 if (dir_check .neqv. .true.)
then
573 call s_mpi_abort(trim(file_loc) //
' is missing. Exiting.')
583 write (proc_rank_str,
'(I7.7)')
proc_rank
584 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
585 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_rdonly, mpi_info_null, file_id, ierr)
590#ifdef MFC_MIXED_PRECISION
591 nelements = sizeof(bc_type(dir, loc)%sf)
592 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
594 nelements = sizeof(bc_type(dir, loc)%sf)/4
595 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
598# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
599#if defined(MFC_OpenACC)
600# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
602# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
603#elif defined(MFC_OpenMP)
604# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
606# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
614 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
615 call mpi_file_read_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
617# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
618#if defined(MFC_OpenACC)
619# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
621# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
622#elif defined(MFC_OpenMP)
623# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
625# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
630 call mpi_file_close(file_id, ierr)
638 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
645 bc_buffers(1, 1)%sf(i, j, k) = q_prim_vf(i)%sf(0, j, k)
646 bc_buffers(1, 2)%sf(i, j, k) = q_prim_vf(i)%sf(m, j, k)
648 if (chemistry .and.
present(q_t_sf))
then
649 bc_buffers(1, 1)%sf(sys_size + 1, j, k) = q_t_sf%sf(0, j, k)
650 bc_buffers(1, 2)%sf(sys_size + 1, j, k) = q_t_sf%sf(m, j, k)
655# 291 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
660 bc_buffers(2, 1)%sf(i, j, k) = q_prim_vf(j)%sf(i, 0, k)
661 bc_buffers(2, 2)%sf(i, j, k) = q_prim_vf(j)%sf(i, n, k)
664 if (chemistry .and.
present(q_t_sf))
then
666 bc_buffers(2, 1)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, 0, k)
667 bc_buffers(2, 2)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, n, k)
672# 308 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
677 bc_buffers(3, 1)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, 0)
678 bc_buffers(3, 2)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, p)
682 if (chemistry .and.
present(q_t_sf))
then
685 bc_buffers(3, 1)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, 0)
686 bc_buffers(3, 2)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, p)
691# 327 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
693# 329 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
700 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
702 bc_type(1, 1)%sf(:,:,:) = int(min(
bc_x%beg, 0), kind=1)
703 bc_type(1, 2)%sf(:,:,:) = int(min(
bc_x%end, 0), kind=1)
705# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
706#if defined(MFC_OpenACC)
707# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
709# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
710#elif defined(MFC_OpenMP)
711# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
713# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
716# 342 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
718 bc_type(2, 1)%sf(:,:,:) = int(min(
bc_y%beg, 0), kind=1)
719 bc_type(2, 2)%sf(:,:,:) = int(min(
bc_y%end, 0), kind=1)
721# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
722#if defined(MFC_OpenACC)
723# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
725# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
726#elif defined(MFC_OpenMP)
727# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
729# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
731# 347 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
733 bc_type(3, 1)%sf(:,:,:) = int(min(
bc_z%beg, 0), kind=1)
734 bc_type(3, 2)%sf(:,:,:) = int(min(
bc_z%end, 0), kind=1)
736# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
737#if defined(MFC_OpenACC)
738# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
740# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
741#elif defined(MFC_OpenMP)
742# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
744# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
747# 353 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
749# 355 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
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.
integer, dimension(1:3, 1:2) mpi_bc_buffer_type
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_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.
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)
Inquire on the existence of a directory or file.
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.
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.
type(int_bounds_info) bc_z
Boundary conditions in the x-, y- and z-coordinate directions.
integer proc_rank
Rank of the local processor Number of cells in the x-, y- and z-coordinate directions.
type(int_bounds_info) bc_y
type(int_bounds_info) bc_x
Broadcasts user inputs and decomposes the domain across MPI ranks for pre-processing.
Derived type annexing an integer scalar field (SF).
Derived type annexing a scalar field (SF).