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# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
35# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
36# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
37# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
39# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
59# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
60# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
61# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
69# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
71# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
72# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
75# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
76# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
77# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
79# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
80# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
82# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
84# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
86# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
88# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
90# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
92# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
94# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
96# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
98# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
100# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
122# 95 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 100 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126# 105 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 110 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 115 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132# 120 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 125 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 130 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138# 135 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140# 165 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142# 219 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144# 233 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146# 258 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148# 269 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
150# 271 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
151# 282 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
153# 332 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
155# 342 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
157# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
159# 361 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
161# 378 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
163# 388 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
165# 395 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
167# 401 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
169# 407 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
171# 413 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
173# 419 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
175# 425 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
177# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
178# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
179# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
180# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
181# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
182# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
183# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
184# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
186# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
187# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
188# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
190# 12 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
191# 1 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp" 1
194# 4 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
195# 5 "/home/runner/work/MFC/MFC/src/common/include/defaults/thermochem.fpp"
196# 13 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 2
198# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
199# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
201# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
203# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
205# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
207# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
209# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
211# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
213# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
215# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
217# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
219# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
233# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
235# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
237# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
239# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
241# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
243# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
245# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
247# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
249# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
251# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
253# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
255# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
257# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
259# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
261# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
263# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
265# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
267# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
269# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
271# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
273# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
275# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
278# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
281# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
284# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
287# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
290# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
293# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
296# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
299# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
302# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
305# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
308# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
311# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
314# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
317# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
320# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
323# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
326# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
329# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
332# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
334# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
335# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
337# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
339# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
344# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
347# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
350# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
353# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
356# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
359# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
361# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
363# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
365# 8 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp" 2
389 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
393 integer,
dimension(3) :: sf_start_idx, sf_extents_loc
398 sf_start_idx = (/0, 0, 0/)
399 sf_extents_loc = shape(bc_type(dir, loc)%sf)
401 call mpi_type_create_subarray(num_dims, sf_extents_loc, sf_extents_loc, sf_start_idx, mpi_order_fortran, &
409 sf_start_idx = (/0, 0, 0/)
410 sf_extents_loc = shape(
bc_buffers(dir, loc)%sf)
412 call mpi_type_create_subarray(num_dims, sf_extents_loc*mpi_io_type, sf_extents_loc*mpi_io_type, sf_start_idx, &
424 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
425 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
426 logical,
intent(in) :: old_grid_in
427 character(LEN=*),
intent(in) :: step_dirpath
429 character(len=path_len) :: file_path
430 character(len=10) :: status
433 if (old_grid_in)
then
441 file_path = trim(step_dirpath) //
'/bc_type.dat'
442 open (1, file=trim(file_path), form=
'unformatted', status=status)
445 write (1) bc_type(dir, loc)%sf
450 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
451 open (1, file=trim(file_path), form=
'unformatted', status=status)
464 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
465 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
467 character(len=path_len) :: file_loc, file_path
473 character(len=7) :: proc_rank_str
479 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
482 if (dir_check .neqv. .true.)
then
493 write (proc_rank_str,
'(I7.7)')
proc_rank
494 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
495 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_create + mpi_mode_wronly, mpi_info_null, file_id, ierr)
500#ifdef MFC_MIXED_PRECISION
501 nelements = sizeof(bc_type(dir, loc)%sf)
502 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
504 nelements = sizeof(bc_type(dir, loc)%sf)/4
505 call mpi_file_write_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
513 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
514 call mpi_file_write_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
518 call mpi_file_close(file_id, ierr)
526 character(LEN=*),
intent(in) :: step_dirpath
527 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
529 logical :: file_exist
530 character(len=path_len) :: file_path
534 file_path = trim(step_dirpath) //
'/bc_type.dat'
535 inquire (file=trim(file_path), exist=file_exist)
536 if (.not. file_exist)
then
537 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
540 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
543 read (1) bc_type(dir, loc)%sf
545# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
546#if defined(MFC_OpenACC)
547# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
549# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
550#elif defined(MFC_OpenMP)
551# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
553# 186 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
555# 187 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
561 file_path = trim(step_dirpath) //
'/bc_buffers.dat'
562 inquire (file=trim(file_path), exist=file_exist)
563 if (.not. file_exist)
then
564 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
567 open (1, file=trim(file_path), form=
'unformatted', status=
'unknown')
572# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
573#if defined(MFC_OpenACC)
574# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
576# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
577#elif defined(MFC_OpenMP)
578# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
580# 202 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
582# 203 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
592 type(
integer_field),
dimension(1:num_dims,1:2),
intent(inout) :: bc_type
594 character(len=path_len) :: file_loc, file_path
599 character(len=7) :: proc_rank_str
603 file_loc = trim(case_dir) //
'/restart_data/boundary_conditions'
607 if (dir_check .neqv. .true.)
then
608 call s_mpi_abort(trim(file_loc) //
' is missing. Exiting.')
618 write (proc_rank_str,
'(I7.7)')
proc_rank
619 file_path = trim(file_loc) //
'/bc_' // trim(proc_rank_str) //
'.dat'
620 call mpi_file_open(mpi_comm_self, trim(file_path), mpi_mode_rdonly, mpi_info_null, file_id, ierr)
625#ifdef MFC_MIXED_PRECISION
626 nelements = sizeof(bc_type(dir, loc)%sf)
627 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_byte, mpi_status_ignore, ierr)
629 nelements = sizeof(bc_type(dir, loc)%sf)/4
630 call mpi_file_read_all(file_id, bc_type(dir, loc)%sf, nelements, mpi_integer, mpi_status_ignore, ierr)
633# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
634#if defined(MFC_OpenACC)
635# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
637# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
638#elif defined(MFC_OpenMP)
639# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
641# 252 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
643# 253 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
650 nelements = sizeof(
bc_buffers(dir, loc)%sf)*mpi_io_type/stp
651 call mpi_file_read_all(file_id,
bc_buffers(dir, loc)%sf, nelements, mpi_io_p, mpi_status_ignore, ierr)
653# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
654#if defined(MFC_OpenACC)
655# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
657# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
658#elif defined(MFC_OpenMP)
659# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
661# 261 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
663# 262 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
667 call mpi_file_close(file_id, ierr)
675 type(
scalar_field),
dimension(sys_size),
intent(in) :: q_prim_vf
682 bc_buffers(1, 1)%sf(i, j, k) = q_prim_vf(i)%sf(0, j, k)
683 bc_buffers(1, 2)%sf(i, j, k) = q_prim_vf(i)%sf(m, j, k)
685 if ((chemistry .or. heat_conduction) .and.
present(q_t_sf))
then
686 bc_buffers(1, 1)%sf(sys_size + 1, j, k) = q_t_sf%sf(0, j, k)
687 bc_buffers(1, 2)%sf(sys_size + 1, j, k) = q_t_sf%sf(m, j, k)
692# 291 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
697 bc_buffers(2, 1)%sf(i, j, k) = q_prim_vf(j)%sf(i, 0, k)
698 bc_buffers(2, 2)%sf(i, j, k) = q_prim_vf(j)%sf(i, n, k)
701 if ((chemistry .or. heat_conduction) .and.
present(q_t_sf))
then
703 bc_buffers(2, 1)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, 0, k)
704 bc_buffers(2, 2)%sf(i, sys_size + 1, k) = q_t_sf%sf(i, n, k)
709# 308 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
714 bc_buffers(3, 1)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, 0)
715 bc_buffers(3, 2)%sf(i, j, k) = q_prim_vf(k)%sf(i, j, p)
719 if ((chemistry .or. heat_conduction) .and.
present(q_t_sf))
then
722 bc_buffers(3, 1)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, 0)
723 bc_buffers(3, 2)%sf(i, j, sys_size + 1) = q_t_sf%sf(i, j, p)
728# 327 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
730# 329 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
737 type(
integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
739 bc_type(1, 1)%sf(:,:,:) = int(min(
bc_x%beg, 0), kind=1)
740 bc_type(1, 2)%sf(:,:,:) = int(min(
bc_x%end, 0), kind=1)
742# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
743#if defined(MFC_OpenACC)
744# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
746# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
747#elif defined(MFC_OpenMP)
748# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
750# 339 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
752# 340 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
754# 342 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
756 bc_type(2, 1)%sf(:,:,:) = int(min(
bc_y%beg, 0), kind=1)
757 bc_type(2, 2)%sf(:,:,:) = int(min(
bc_y%end, 0), kind=1)
759# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
760#if defined(MFC_OpenACC)
761# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
763# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
764#elif defined(MFC_OpenMP)
765# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
767# 345 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
769# 346 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
770# 347 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
772 bc_type(3, 1)%sf(:,:,:) = int(min(
bc_z%beg, 0), kind=1)
773 bc_type(3, 2)%sf(:,:,:) = int(min(
bc_z%end, 0), kind=1)
775# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
776#if defined(MFC_OpenACC)
777# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
779# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
780#elif defined(MFC_OpenMP)
781# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
783# 350 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
785# 351 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
787# 353 "/home/runner/work/MFC/MFC/src/common/m_boundary_io.fpp"
789# 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.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
type(int_bounds_info) bc_z
integer proc_rank
Rank of the local processor.
type(int_bounds_info) bc_y
type(int_bounds_info) bc_x
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
Derived type annexing an integer scalar field (SF).
Derived type annexing a scalar field (SF).