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# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
37# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
43# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
47# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
52# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
53# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
54# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
61# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
70# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
74# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
76# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
78# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
84# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
86# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 126 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126# 156 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 197 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 211 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132# 236 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 247 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 249 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 260 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 310 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 320 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147# 356 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
149# 366 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151# 373 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153# 379 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155# 385 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157# 391 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159# 397 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161# 403 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
163# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
164# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
165# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
166# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
173# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
177# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
186# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
188# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
190# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
192# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
194# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
196# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
198# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
240# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
242# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
244# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
246# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
248# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
250# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
252# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
254# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
257# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
260# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
266# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
272# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
305# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
308# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
311# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
313# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
314# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
316# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
318# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
329# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
332# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
335# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
338# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
340# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
342# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
344# 8 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp" 2
368 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
372 integer,
dimension(3) :: sf_start_idx, sf_extents_loc
377 sf_start_idx = (/0, 0, 0/)
378 sf_extents_loc = shape(bc_type(dir, loc)%sf)
380 call mpi_type_create_subarray(num_dims, sf_extents_loc, sf_extents_loc, sf_start_idx, mpi_order_fortran, &
388 sf_start_idx = (/0, 0, 0/)
389 sf_extents_loc = shape(
bc_buffers(dir, loc)%sf)
391 call mpi_type_create_subarray(num_dims, sf_extents_loc*mpi_io_type, sf_extents_loc*mpi_io_type, sf_start_idx, &
403 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
404 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
405 logical,
intent(in) :: old_grid_in
406 character(LEN=*),
intent(in) :: step_dirpath
408 character(len=path_len) :: file_path
409 character(len=10) :: status
412 if (old_grid_in)
then
420 file_path = trim(step_dirpath) //
'/bc_type.dat'
421 open (1, file=trim(file_path), form=
'unformatted', status=status)
424 write (1) bc_type(dir, loc)%sf
429 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
430 open (1, file=trim(file_path), form=
'unformatted', status=status)
443 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
444 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
446 character(len=path_len) :: file_loc, file_path
452 character(len=7) :: proc_rank_str
458 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
461 if (dir_check .neqv. .true.)
then
472 write (proc_rank_str,
'(I7.7)')
proc_rank
473 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
474 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_create + mpi_mode_wronly, mpi_info_null, file_id, ierr)
479#ifdef MFC_MIXED_PRECISION
480 nelements = sizeof(bc_type(dir, loc)%sf)
481 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
483 nelements = sizeof(bc_type(dir, loc)%sf)/4
484 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
492 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
493 call mpi_file_write_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
497 call mpi_file_close(file_id, ierr)
505 character(LEN=*),
intent(in) :: step_dirpath
506 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
508 logical :: file_exist
509 character(len=path_len) :: file_path
513 file_path = trim(step_dirpath) //
'/bc_type.dat'
514 inquire (file=trim(file_path), exist=file_exist)
515 if (.not. file_exist)
then
516 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
519 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
522 read (1) bc_type(dir, loc)%sf
524# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
525#if defined(MFC_OpenACC)
526# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
528# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
529#elif defined(MFC_OpenMP)
530# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
532# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
539 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
540 inquire (file=trim(file_path), exist=file_exist)
541 if (.not. file_exist)
then
542 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
545 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
550# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
551#if defined(MFC_OpenACC)
552# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
554# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
555#elif defined(MFC_OpenMP)
556# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
558# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
569 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
571 character(len=path_len) :: file_loc, file_path
576 character(len=7) :: proc_rank_str
580 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
584 if (dir_check .neqv. .true.)
then
585 call s_mpi_abort(trim(file_loc) //
' is missing. Exiting.')
595 write (proc_rank_str,
'(I7.7)')
proc_rank
596 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
597 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_rdonly, mpi_info_null, file_id, ierr)
602#ifdef MFC_MIXED_PRECISION
603 nelements = sizeof(bc_type(dir, loc)%sf)
604 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
606 nelements = sizeof(bc_type(dir, loc)%sf)/4
607 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
610# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
611#if defined(MFC_OpenACC)
612# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
614# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
615#elif defined(MFC_OpenMP)
616# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
618# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
626 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
627 call mpi_file_read_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
629# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
630#if defined(MFC_OpenACC)
631# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
633# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
634#elif defined(MFC_OpenMP)
635# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
637# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
642 call mpi_file_close(file_id, ierr)
650 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
657 bc_buffers(1, 1)%sf(i, j, k) = q_prim_vf(i)%sf(0, j, k)
658 bc_buffers(1, 2)%sf(i, j, k) = q_prim_vf(i)%sf(m, j, k)
660 if ((chemistry .or. heat_conduction) .and.
present(q_t_sf))
then
661 bc_buffers(1, 1)%sf(sys_size + 1, j, k) = q_t_sf%sf(0, j, k)
662 bc_buffers(1, 2)%sf(sys_size + 1, j, k) = q_t_sf%sf(m, j, k)
667# 291 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
672 bc_buffers(2, 1)%sf(i, j, k) = q_prim_vf(j)%sf(i, 0, k)
673 bc_buffers(2, 2)%sf(i, j, k) = q_prim_vf(j)%sf(i, n, k)
676 if ((chemistry .or. heat_conduction) .and.
present(q_t_sf))
then
678 bc_buffers(2, 1)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, 0, k)
679 bc_buffers(2, 2)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, n, k)
684# 308 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
689 bc_buffers(3, 1)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, 0)
690 bc_buffers(3, 2)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, p)
694 if ((chemistry .or. heat_conduction) .and.
present(q_t_sf))
then
697 bc_buffers(3, 1)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, 0)
698 bc_buffers(3, 2)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, p)
703# 327 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
705# 329 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
712 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
714 bc_type(1, 1)%sf(:,:,:) = int(min(
bc_x%beg, 0), kind=1)
715 bc_type(1, 2)%sf(:,:,:) = int(min(
bc_x%end, 0), kind=1)
717# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
718#if defined(MFC_OpenACC)
719# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
721# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
722#elif defined(MFC_OpenMP)
723# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
725# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
728# 342 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
730 bc_type(2, 1)%sf(:,:,:) = int(min(
bc_y%beg, 0), kind=1)
731 bc_type(2, 2)%sf(:,:,:) = int(min(
bc_y%end, 0), kind=1)
733# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
734#if defined(MFC_OpenACC)
735# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
737# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
738#elif defined(MFC_OpenMP)
739# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
741# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
743# 347 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
745 bc_type(3, 1)%sf(:,:,:) = int(min(
bc_z%beg, 0), kind=1)
746 bc_type(3, 2)%sf(:,:,:) = int(min(
bc_z%end, 0), kind=1)
748# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
749#if defined(MFC_OpenACC)
750# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
752# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
753#elif defined(MFC_OpenMP)
754# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
756# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
759# 353 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
761# 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 s_delay_file_access(process_rank)
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).