1# 1 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
6# 1 "/home/runner/work/MFC/MFC/src/common/include/case.fpp" 1
12# 9 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
15# 14 "/home/runner/work/MFC/MFC/src/common/include/case.fpp"
16# 6 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp" 2
17# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
18# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
19# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
20# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
22# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
24# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
26# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
28# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
30# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
32# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
34# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
36# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
45# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
46# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
47# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
51# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
53# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
55# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
57# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
59# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
61# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
63# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
65# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
67# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
69# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
71# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
73# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
75# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
77# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
79# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
81# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
83# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
85# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
87# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
89# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
91# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
93# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
95# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
97# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
99# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
101# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
103# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
105# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
107# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
124# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
126# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
150# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
151# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
152# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
153# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
155# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
159# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
163# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
165# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
167# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
169# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
171# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
173# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
175# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
177# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
179# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
181# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
183# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
185# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
187# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
189# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
191# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
193# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
195# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
197# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
199# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
201# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
203# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
205# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
207# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
209# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
211# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
213# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
215# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
217# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
233# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
235# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
238# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
241# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
280# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
283# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
286# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
294# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
297# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
299# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
304# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
307# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
310# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
313# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
319# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
321# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
323# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
325# 7 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp" 2
357#if defined(MFC_OpenACC)
358# 38 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
360# 38 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
361#elif defined(MFC_OpenMP)
362# 38 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
364# 38 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
404 character(LEN=name_len),
parameter :: file_path =
'./simulation.inp'
405 logical :: file_exist
409 character(len=1000) :: line
429# 103 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
434# 108 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
435 ca,
web,
re_inv,
acoustic_source,
acoustic,
num_source,
polytropic,
thermal,
integral,
integral_wrt,
num_integrals, &
436 &
polydisperse,
poly_sigma,
qbmm,
relax,
relax_model,
palpha_eps,
ptgalpha_eps,
file_per_process,
sigma,
pi_fac, &
437 &
adv_n,
adap_dt,
adap_dt_tol,
adap_dt_max_iters,
bf_x,
bf_y,
bf_z,
k_x,
k_y,
k_z,
w_x,
w_y,
w_z,
p_x,
p_y,
p_z,
g_x, &
438 &
g_y,
g_z,
n_start,
t_save,
t_stop,
cfl_adap_dt,
cfl_const_dt,
cfl_target,
surface_tension,
bubbles_lagrange, &
443 inquire (file=trim(file_path), exist=file_exist)
446 open (1, file=trim(file_path), form=
'formatted', action=
'read', status=
'old')
447 read (1, nml=user_inputs, iostat=iostatus)
449 if (iostatus /= 0)
then
451 read (1, fmt=
'(A)') line
452 print *,
'Invalid line in namelist: ' // trim(line)
453 call s_mpi_abort(
'Invalid line in simulation.inp. It is ' //
'likely due to a datatype mismatch. Exiting.')
474 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
482 character(LEN=path_len) :: file_path
483 logical :: file_exist
489 if (file_exist .neqv. .true.)
then
490 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
502 character(LEN=path_len + 2*name_len) :: t_step_dir
503 character(LEN=path_len + 3*name_len) :: file_path
504 logical :: file_exist
513 file_path = trim(t_step_dir) //
'/.'
516 if (file_exist .neqv. .true.)
then
517 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
526 file_path = trim(t_step_dir) //
'/x_cb.dat'
528 inquire (file=trim(file_path), exist=file_exist)
531 open (2, file=trim(file_path), form=
'unformatted', action=
'read', status=
'old')
532 read (2)
x_cb(-1:
m);
close (2)
534 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
550 file_path = trim(t_step_dir) //
'/y_cb.dat'
552 inquire (file=trim(file_path), exist=file_exist)
555 open (2, file=trim(file_path), form=
'unformatted', action=
'read', status=
'old')
556 read (2)
y_cb(-1:
n);
close (2)
558 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
566 file_path = trim(t_step_dir) //
'/z_cb.dat'
568 inquire (file=trim(file_path), exist=file_exist)
571 open (2, file=trim(file_path), form=
'unformatted', action=
'read', status=
'old')
572 read (2)
z_cb(-1:
p);
close (2)
574 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
582 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/q_cons_vf',
i,
'.dat'
583 inquire (file=trim(file_path), exist=file_exist)
585 open (2, file=trim(file_path), form=
'unformatted', action=
'read', status=
'old')
588 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
597 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/pb',
sys_size + (
i - 1)*nnode +
r,
'.dat'
598 inquire (file=trim(file_path), exist=file_exist)
600 open (2, file=trim(file_path), form=
'unformatted', action=
'read', status=
'old')
601 read (2)
pb_ts(1)%sf(0:
m,0:
n,0:
p,
r,
i);
close (2)
603 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
609 write (file_path,
'(A,I0,A)') trim(t_step_dir) //
'/mv',
sys_size + (
i - 1)*nnode +
r,
'.dat'
610 inquire (file=trim(file_path), exist=file_exist)
612 open (2, file=trim(file_path), form=
'unformatted', action=
'read', status=
'old')
613 read (2)
mv_ts(1)%sf(0:
m,0:
n,0:
p,
r,
i);
close (2)
615 call s_mpi_abort(trim(file_path) //
' is missing. Exiting.')
630 real(wp),
allocatable,
dimension(:) :: x_cb_glb, y_cb_glb, z_cb_glb
631 integer :: ifile, ierr, data_size
632 integer,
dimension(MPI_STATUS_SIZE) :: status
633 integer(KIND=MPI_OFFSET_KIND) :: disp
634 integer(KIND=MPI_OFFSET_KIND) :: m_mok, n_mok, p_mok
635 integer(KIND=MPI_OFFSET_KIND) :: wp_mok, var_mok
636 integer(KIND=MPI_OFFSET_KIND) :: mok
637 character(LEN=path_len + 2*name_len) :: file_loc
638 logical :: file_exist
639 character(len=10) :: t_step_start_string
643 integer :: m_ds, n_ds, p_ds
644 integer :: m_glb_ds, n_glb_ds, p_glb_ds
645 integer :: m_glb_read, n_glb_read, p_glb_read
647 allocate (x_cb_glb(-1:
m_glb))
648 allocate (y_cb_glb(-1:
n_glb))
649 allocate (z_cb_glb(-1:
p_glb))
651 file_loc = trim(
case_dir) //
'/restart_data' // trim(
mpiiofs) //
'x_cb.dat'
652 inquire (file=trim(file_loc), exist=file_exist)
655 m_ds = int((
m + 1)/3) - 1
656 n_ds = int((
n + 1)/3) - 1
657 p_ds = int((
p + 1)/3) - 1
659 m_glb_ds = int((
m_glb + 1)/3) - 1
660 n_glb_ds = int((
n_glb + 1)/3) - 1
661 p_glb_ds = int((
p_glb + 1)/3) - 1
665 data_size =
m_glb + 2
666 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
667 call mpi_file_read(ifile, x_cb_glb, data_size, mpi_p, status, ierr)
668 call mpi_file_close(ifile, ierr)
670 call s_mpi_abort(
'File ' // trim(file_loc) //
' is missing. Exiting.')
688 file_loc = trim(
case_dir) //
'/restart_data' // trim(
mpiiofs) //
'y_cb.dat'
689 inquire (file=trim(file_loc), exist=file_exist)
692 data_size =
n_glb + 2
693 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
694 call mpi_file_read(ifile, y_cb_glb, data_size, mpi_p, status, ierr)
695 call mpi_file_close(ifile, ierr)
697 call s_mpi_abort(
'File ' // trim(file_loc) //
' is missing. Exiting.')
705 file_loc = trim(
case_dir) //
'/restart_data' // trim(
mpiiofs) //
'z_cb.dat'
706 inquire (file=trim(file_loc), exist=file_exist)
709 data_size =
p_glb + 2
710 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
711 call mpi_file_read(ifile, z_cb_glb, data_size, mpi_p, status, ierr)
712 call mpi_file_close(ifile, ierr)
714 call s_mpi_abort(
'File ' // trim(file_loc) //
'is missing. Exiting.')
731 file_loc = trim(
case_dir) //
'/restart_data/lustre_' // trim(t_step_start_string) // trim(
mpiiofs) // trim(file_loc)
732 inquire (file=trim(file_loc), exist=file_exist)
735 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
748 data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
749 m_glb_read = m_glb_ds + 1
750 n_glb_read = n_glb_ds + 1
751 p_glb_read = p_glb_ds + 1
753 data_size = (
m + 1)*(
n + 1)*(
p + 1)
754 m_glb_read =
m_glb + 1
755 n_glb_read =
n_glb + 1
756 p_glb_read =
p_glb + 1
759 m_mok = int(m_glb_read + 1, mpi_offset_kind)
760 n_mok = int(m_glb_read + 1, mpi_offset_kind)
761 p_mok = int(m_glb_read + 1, mpi_offset_kind)
762 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
763 mok = int(1._wp, mpi_offset_kind)
767 var_mok = int(
i, mpi_offset_kind)
769 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
774 var_mok = int(
i, mpi_offset_kind)
776 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
782 var_mok = int(
i, mpi_offset_kind)
784 call mpi_file_read(ifile,
q_cons_temp(
i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
788 var_mok = int(
i, mpi_offset_kind)
790 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
797 call mpi_file_close(ifile, ierr)
799 call s_mpi_abort(
'File ' // trim(file_loc) //
' is missing. Exiting.')
803 write (file_loc,
'(I0,A)')
n_start,
'.dat'
807 file_loc = trim(
case_dir) //
'/restart_data' // trim(
mpiiofs) // trim(file_loc)
808 inquire (file=trim(file_loc), exist=file_exist)
811 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
819 data_size = (
m + 1)*(
n + 1)*(
p + 1)
821 m_mok = int(
m_glb + 1, mpi_offset_kind)
822 n_mok = int(
n_glb + 1, mpi_offset_kind)
823 p_mok = int(
p_glb + 1, mpi_offset_kind)
824 wp_mok = int(storage_size(0._stp)/8, mpi_offset_kind)
825 mok = int(1._wp, mpi_offset_kind)
829 var_mok = int(
i, mpi_offset_kind)
830 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
833 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
838 var_mok = int(
i, mpi_offset_kind)
839 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
842 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
847 var_mok = int(
i, mpi_offset_kind)
849 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
852 call mpi_file_read_all(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, mpi_io_p, status, ierr)
858 call mpi_file_close(ifile, ierr)
860 call s_mpi_abort(
'File ' // trim(file_loc) //
' is missing. Exiting.')
864 deallocate (x_cb_glb, y_cb_glb, z_cb_glb)
878 type(
scalar_field),
dimension(sys_size),
intent(inout) :: v_vf
884 real(wp),
dimension(2) :: re
886 integer ::
i,
j,
k,
l,
c
887 real(wp),
dimension(num_species) :: rhoyks
901 dyn_pres = dyn_pres + 5.e-1_wp*v_vf(
i)%sf(
j,
k,
l)*v_vf(
i)%sf(
j,
k,
l)/max(rho, sgm_eps)
905 do c = 1, num_species
906 rhoyks(
c) = v_vf(
eqn_idx%species%beg +
c - 1)%sf(
j,
k,
l)
919 call s_compute_pressure(v_vf(
eqn_idx%E)%sf(
j,
k,
l), 0._stp, dyn_pres, pi_inf, gamma, rho, qv, rhoyks, pres, &
920 & t, pres_mag=pres_mag)
935 integer,
intent(inout) :: t_step
936 real(wp),
intent(inout) :: time_avg
937 integer ::
i, eta_hh, eta_mm, eta_ss
948 print *,
"Delta t = ",
dt
957# 629 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
958#if defined(MFC_OpenACC)
959# 629 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
961# 629 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
962#elif defined(MFC_OpenMP)
963# 629 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
965# 629 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
972# 634 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
973#if defined(MFC_OpenACC)
974# 634 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
976# 634 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
977#elif defined(MFC_OpenMP)
978# 634 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
980# 634 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
988 eta_hh = int(eta_sec)/3600
989 eta_mm = mod(int(eta_sec), 3600)/60
990 eta_ss = mod(int(eta_sec), 60)
991 print
'(" [", I3, "%] Time ", ES16.6, " dt = ", ES16.6, " @ Time Step = ", I8, " Time Avg = ", ES16.6, " Time/step = ", ES12.6, " ETA (HH:MM:SS) = ", I0, ":", I2.2, ":", I2.2)', &
997 eta_hh = int(eta_sec)/3600
998 eta_mm = mod(int(eta_sec), 3600)/60
999 eta_ss = mod(int(eta_sec), 60)
1000 print
'(" [", I3, "%] Time step ", I8, " of ", I0, " @ t_step = ", I8, " Time Avg = ", ES12.6, " Time/step= ", ES12.6, " ETA (HH:MM:SS) = ", I0, ":", I2.2, ":", I2.2)', &
1010# 662 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1011#if defined(MFC_OpenACC)
1012# 662 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1014# 662 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1015#elif defined(MFC_OpenMP)
1016# 662 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1018# 662 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1043 real(wp),
intent(inout) :: time_avg, time_final
1044 real(wp),
intent(inout) :: io_time_avg, io_time_final
1045 real(wp),
dimension(:),
intent(inout) :: proc_time
1046 real(wp),
dimension(:),
intent(inout) :: io_proc_time
1047 logical,
intent(inout) :: file_exists
1048 real(wp) :: grind_time
1060 io_time_final = 0._wp
1062 time_final = time_avg
1063 io_time_final = io_time_avg
1065 time_final = maxval(proc_time)
1066 io_time_final = maxval(io_proc_time)
1069 grind_time = time_final*1.0e9_wp/(real(
sys_size, wp)*real(maxval((/1,
m_glb/)), wp)*real(maxval((/1,
n_glb/)), &
1070 & wp)*real(maxval((/1,
p_glb/)), wp))
1072 print *,
"Performance:", grind_time,
"ns/gp/eq/rhs"
1073 inquire (file=
'time_data.dat', exist=file_exists)
1074 if (file_exists)
then
1075 open (1, file=
'time_data.dat', position=
'append', status=
'old')
1077 open (1, file=
'time_data.dat', status=
'new')
1078 write (1,
'(A10, A15, A15)')
"Ranks",
"s/step",
"ns/gp/eq/rhs"
1081 write (1,
'(I10, 2(F15.8))')
num_procs, time_final, grind_time
1085 inquire (file=
'io_time_data.dat', exist=file_exists)
1086 if (file_exists)
then
1087 open (1, file=
'io_time_data.dat', position=
'append', status=
'old')
1089 open (1, file=
'io_time_data.dat', status=
'new')
1090 write (1,
'(A10, A15)')
"Ranks",
"s/step"
1093 write (1,
'(I10, F15.8)')
num_procs, io_time_final
1102 integer,
intent(inout) :: t_step
1103 real(wp),
intent(inout) :: start, finish, io_time_avg
1104 integer,
intent(inout) :: nt
1105 integer(kind=8) ::
i,
j,
k,
l
1107 integer :: save_count
1117# 759 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1119# 759 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1120#if defined(MFC_OpenACC)
1121# 759 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1123# 759 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1124#elif defined(MFC_OpenMP)
1125# 759 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1127# 759 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1129# 759 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1131# 759 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1133# 759 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1145# 769 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1146#if defined(MFC_OpenACC)
1147# 769 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1149# 769 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1150#elif defined(MFC_OpenMP)
1151# 769 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1153# 769 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1155# 769 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1160 call cpu_time(start)
1163#ifndef FRONTIER_UNIFIED
1165# 777 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1166#if defined(MFC_OpenACC)
1167# 777 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1169# 777 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1170#elif defined(MFC_OpenMP)
1171# 777 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1173# 777 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1180 print *,
"NaN(s) in timestep output.",
j,
k,
l,
i,
proc_rank, t_step,
m,
n,
p
1190# 792 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1191#if defined(MFC_OpenACC)
1192# 792 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1194# 792 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1195#elif defined(MFC_OpenMP)
1196# 792 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1198# 792 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1201# 793 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1202#if defined(MFC_OpenACC)
1203# 793 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1205# 793 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1206#elif defined(MFC_OpenMP)
1207# 793 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1209# 793 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1221# 803 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1222#if defined(MFC_OpenACC)
1223# 803 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1225# 803 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1226#elif defined(MFC_OpenMP)
1227# 803 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1229# 803 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1231# 805 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1234 call s_mpi_abort(
"Bubble radius is negative or NaN, please reduce dt.")
1239# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1240#if defined(MFC_OpenACC)
1241# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1243# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1244#elif defined(MFC_OpenMP)
1245# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1247# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1251# 813 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1252#if defined(MFC_OpenACC)
1253# 813 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1255# 813 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1256#elif defined(MFC_OpenMP)
1257# 813 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1259# 813 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1271 call cpu_time(finish)
1279 io_time_avg = abs(finish - start)
1281 io_time_avg = (abs(finish - start) + io_time_avg*(nt - 1))/nt
1289 integer :: m_ds, n_ds, p_ds
1293# 856 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1327 m_ds = int((
m + 1)/3) - 1
1328 n_ds = int((
n + 1)/3) - 1
1329 p_ds = int((
p + 1)/3) - 1
1333 allocate (
q_cons_temp(
i)%sf(-1:m_ds + 1,-1:n_ds + 1,-1:p_ds + 1))
1342# 903 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1343#if defined(MFC_OpenACC)
1344# 903 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1346# 903 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1347#elif defined(MFC_OpenMP)
1348# 903 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1350# 903 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1407 real(wp) :: starttime, endtime
1408 integer :: num_devices, local_size, num_nodes, ppn, my_device_num
1409 integer :: dev, devnum, local_rank
1411 integer :: local_comm
1413#if defined(MFC_OpenACC)
1414 integer(acc_device_kind) :: devtype
1425 call mpi_comm_split_type(mpi_comm_world, mpi_comm_type_shared, 0, mpi_info_null, local_comm, ierr)
1426 call mpi_comm_size(local_comm, local_size, ierr)
1427 call mpi_comm_rank(local_comm, local_rank, ierr)
1429#if defined(MFC_OpenACC)
1430 devtype = acc_get_device_type()
1431 devnum = acc_get_num_devices(devtype)
1432 dev = mod(local_rank, devnum)
1434 call acc_set_device_num(dev, devtype)
1435#elif defined(MFC_OpenMP)
1436 devnum = omp_get_num_devices()
1437 dev = mod(local_rank, devnum)
1438 call omp_set_default_device(dev)
1447 print
'(" Simulating a ", A, " ", I0, "x", I0, "x", I0, " case on ", I0, " rank(s) ", A, ".")', &
1448# 1001 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1450# 1005 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1452#if defined(MFC_OpenACC)
1453 "with OpenACC offloading"
1454#elif defined(MFC_OpenMP)
1455 "with OpenMP offloading"
1482# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1483#if defined(MFC_OpenACC)
1484# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1486# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1487#elif defined(MFC_OpenMP)
1488# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1490# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1497# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1498#if defined(MFC_OpenACC)
1499# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1501# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1502#elif defined(MFC_OpenMP)
1503# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1505# 1040 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1510# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1511#if defined(MFC_OpenACC)
1512# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1514# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1515#elif defined(MFC_OpenMP)
1516# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1518# 1043 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1523# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1524#if defined(MFC_OpenACC)
1525# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1527# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1528#elif defined(MFC_OpenMP)
1529# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1531# 1046 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1535# 1048 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1536#if defined(MFC_OpenACC)
1537# 1048 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1539# 1048 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1540#elif defined(MFC_OpenMP)
1541# 1048 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1543# 1048 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1545# 1052 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1549# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1550#if defined(MFC_OpenACC)
1551# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1553# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1554#elif defined(MFC_OpenMP)
1555# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1557# 1054 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1561# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1562#if defined(MFC_OpenACC)
1563# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1565# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1566#elif defined(MFC_OpenMP)
1567# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1569# 1056 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1573# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1574#if defined(MFC_OpenACC)
1575# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1577# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1578#elif defined(MFC_OpenMP)
1579# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1581# 1058 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1587# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1588#if defined(MFC_OpenACC)
1589# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1591# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1592#elif defined(MFC_OpenMP)
1593# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1595# 1062 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1599# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1600#if defined(MFC_OpenACC)
1601# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1603# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1604#elif defined(MFC_OpenMP)
1605# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1607# 1064 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1610# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1611#if defined(MFC_OpenACC)
1612# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1614# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1615#elif defined(MFC_OpenMP)
1616# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1618# 1065 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1622# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1623#if defined(MFC_OpenACC)
1624# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1626# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1627#elif defined(MFC_OpenMP)
1628# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1630# 1067 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1633# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1634#if defined(MFC_OpenACC)
1635# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1637# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1638#elif defined(MFC_OpenMP)
1639# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1641# 1068 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1644# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1645#if defined(MFC_OpenACC)
1646# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1648# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1649#elif defined(MFC_OpenMP)
1650# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1652# 1069 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1655# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1656#if defined(MFC_OpenACC)
1657# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1659# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1660#elif defined(MFC_OpenMP)
1661# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1663# 1070 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1666# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1667#if defined(MFC_OpenACC)
1668# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1670# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1671#elif defined(MFC_OpenMP)
1672# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1674# 1071 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1678# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1679#if defined(MFC_OpenACC)
1680# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1682# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1683#elif defined(MFC_OpenMP)
1684# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1686# 1073 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1689# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1690#if defined(MFC_OpenACC)
1691# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1693# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1694#elif defined(MFC_OpenMP)
1695# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1697# 1074 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1700# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1701#if defined(MFC_OpenACC)
1702# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1704# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1705#elif defined(MFC_OpenMP)
1706# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1708# 1075 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1712# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1713#if defined(MFC_OpenACC)
1714# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1716# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1717#elif defined(MFC_OpenMP)
1718# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1720# 1077 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1723# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1724#if defined(MFC_OpenACC)
1725# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1727# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1728#elif defined(MFC_OpenMP)
1729# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1731# 1078 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1734# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1735#if defined(MFC_OpenACC)
1736# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1738# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1739#elif defined(MFC_OpenMP)
1740# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1742# 1079 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1745# 1080 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1746#if defined(MFC_OpenACC)
1747# 1080 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1749# 1080 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1750#elif defined(MFC_OpenMP)
1751# 1080 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1753# 1080 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1757# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1758#if defined(MFC_OpenACC)
1759# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1761# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1762#elif defined(MFC_OpenMP)
1763# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1765# 1082 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1769# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1770#if defined(MFC_OpenACC)
1771# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1773# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1774#elif defined(MFC_OpenMP)
1775# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1777# 1084 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1783# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1784#if defined(MFC_OpenACC)
1785# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1787# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1788#elif defined(MFC_OpenMP)
1789# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1791# 1088 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1794# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1796# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1797#if defined(MFC_OpenACC)
1798# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1800# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1801#elif defined(MFC_OpenMP)
1802# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1804# 1091 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1806# 1093 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1807# 1101 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1855 integer,
intent(in) :: t_step
1856 character(len=path_len + 2*name_len) :: file_loc
1857 integer ::
i, ios, file_unit, ierr
1858 integer,
parameter :: nfields_per_ib = 20
1859 real(wp) :: ib_buf(nfields_per_ib)
1860 logical :: file_exist
1862 write (file_loc,
'(A,I0,A)')
'/restart_data/ib_state_', t_step,
'.dat'
1863 file_loc = trim(
case_dir) // trim(file_loc)
1866 inquire (file=trim(file_loc), exist=file_exist)
1867 if (.not. file_exist)
then
1868 call s_mpi_abort(
'Cannot open IB state file for restart: ' // trim(file_loc))
1871 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'old', iostat=ios)
1872 if (ios /= 0)
call s_mpi_abort(
'Error opening IB state restart file: ' // trim(file_loc))
1875 read (file_unit, iostat=ios) ib_buf
1876 if (ios /= 0)
call s_mpi_abort(
'Error reading IB state restart file')
1891 call mpi_bcast(
patch_ib(
i)%vel, 3, mpi_p, 0, mpi_comm_world, ierr)
1892 call mpi_bcast(
patch_ib(
i)%angular_vel, 3, mpi_p, 0, mpi_comm_world, ierr)
1893 call mpi_bcast(
patch_ib(
i)%angles, 3, mpi_p, 0, mpi_comm_world, ierr)
1894 call mpi_bcast(
patch_ib(
i)%x_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
1895 call mpi_bcast(
patch_ib(
i)%y_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
1896 call mpi_bcast(
patch_ib(
i)%z_centroid, 1, mpi_p, 0, mpi_comm_world, ierr)
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
One-way acoustic source injection, Maeda and Colonius JCP (2017).
impure subroutine, public s_precalculate_acoustic_spatial_sources
Pre-compute non-zero spatial source weights before time-stepping.
impure subroutine, public s_initialize_acoustic_src
Initialize the acoustic source module.
Computes gravitational and user-defined body force source terms for the momentum equations.
impure subroutine, public s_initialize_body_forces_module
Initialize the body forces module.
impure subroutine, public s_finalize_body_forces_module
Finalize the body forces module.
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
impure subroutine, public s_initialize_boundary_common_module()
Allocate and set up boundary condition buffer arrays for all coordinate directions.
subroutine, public s_finalize_boundary_common_module()
Deallocate boundary condition buffer arrays allocated during module initialization.
subroutine, public 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, public s_populate_grid_variables_buffers
Populate the buffers of the grid variables, which are constituted of the cell-boundary locations and ...
impure subroutine, public s_populate_variables_buffers(bc_type, q_prim_vf, pb_in, mv_in, q_t_sf)
Populate the buffers of the primitive variables based on the selected boundary conditions.
subroutine, public s_read_serial_boundary_condition_files(step_dirpath, bc_type)
Read boundary condition type and buffer data from serial (unformatted) restart files.
subroutine, public s_assign_default_bc_type(bc_type)
Initialize the per-cell boundary condition type arrays with the global default BC values.
Computes ensemble-averaged (Euler–Euler) bubble source terms for radius, velocity,...
impure subroutine s_initialize_bubbles_ee_module
Initialize the Euler-Euler bubble module.
Tracks Lagrangian bubbles and couples their dynamics to the Eulerian flow via volume averaging.
impure subroutine s_write_lag_bubble_stats()
Write the maximum and minimum radius statistics for each bubble.
impure subroutine s_write_restart_lag_bubbles(t_step)
Write restart files for the Lagrangian bubble solver.
integer nbubs
Number of bubbles in the local domain.
impure subroutine s_initialize_bubbles_el_module(q_cons_vf)
Initializes the lagrangian subgrid bubble solver.
type(scalar_field), dimension(:), allocatable q_beta
Projection of the lagrangian particles in the Eulerian framework.
real(wp), dimension(:,:), allocatable intfc_rad
Bubble radius.
impure subroutine s_finalize_lagrangian_solver()
Finalize the Lagrangian bubble solver.
Characteristic boundary conditions (CBC) for slip walls, non-reflecting subsonic inflow/outflow,...
impure subroutine, public s_initialize_cbc_module
Initialize the CBC module.
impure subroutine, public s_finalize_cbc_module
Module deallocation and/or disassociation procedures.
Shared input validation checks for grid dimensions and AMD GPU compiler limits.
impure subroutine, public s_check_inputs_common
Checks compatibility of parameters in the input file. Used by all three stages.
Validates simulation input parameters for consistency and supported configurations.
impure subroutine, public s_check_inputs
Checks compatibility of parameters in the input file. Used by the simulation stage.
Multi-species chemistry interface for thermodynamic properties, reaction rates, and transport coeffic...
subroutine s_compute_q_t_sf(q_t_sf, q_cons_vf, bounds)
Initialize the temperature field from conservative variables by inverting the energy equation.
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.
Writes solution data, run-time stability diagnostics (ICFL, VCFL, CCFL, Rc), and probe/center-of-mass...
impure subroutine, public s_initialize_data_output_module
Initialize the data output module.
impure subroutine, public s_finalize_data_output_module
Module deallocation and/or disassociation procedures.
impure subroutine, public s_write_data_files(q_cons_vf, q_t_sf, q_prim_vf, t_step, bc_type, beta)
Write data files. Dispatch subroutine that replaces procedure pointer.
impure subroutine, public s_write_ib_state_file(time_step)
Writes IB state records to restart_data/ib_state.dat. Must be called only on rank 0.
subroutine, public s_write_ib_data_file(time_step)
Dispatch immersed boundary data output to the serial or parallel writer.
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Derives diagnostic flow quantities (vorticity, speed of sound, numerical Schlieren,...
impure subroutine, public s_initialize_derived_variables
Allocate and open derived variables. Computing FD coefficients.
impure subroutine, public s_initialize_derived_variables_module
Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
impure subroutine, public s_finalize_derived_variables_module
Deallocation procedures for the module.
Global parameters for the computational domain, fluid properties, and simulation algorithm configurat...
type(int_bounds_info) ib_bc_z
real(wp) mytime
Current simulation time.
real(wp) w_x
amplitude, frequency, and phase shift sinusoid in each direction
real(wp) web
Weber number.
logical null_weights
Null undesired WENO weights.
logical bubbles_euler
Bubbles euler on/off.
real(wp) cont_damage_s
Exponent s for continuum damage modeling.
integer wave_speeds
Wave speeds estimation method.
logical cont_damage
Continuum damage modeling.
logical igr
Use information geometric regularization.
logical hypoelasticity
hypoelasticity modeling
impure subroutine s_assign_default_values_to_user_inputs
Assigns default values to the user inputs before reading them in. This enables for an easier consiste...
impure subroutine s_finalize_global_parameters_module
Module deallocation and/or disassociation procedures.
integer thermal
Thermal behavior. 1 = adiabatic, 2 = isotherm, 3 = transfer.
integer avg_state
Average state evaluation method.
logical weno_avg
Average left/right cell-boundary states.
type(int_bounds_info), dimension(1:3) idwint
real(wp), dimension(:), allocatable, target z_cb
integer recon_type
Reconstruction Type.
logical igr_pres_lim
Limit to positive pressures for IGR.
logical, parameter chemistry
Chemistry modeling.
type(int_bounds_info) ib_bc_y
logical acoustic_source
Acoustic source switch.
real(wp) ib_coefficient_of_friction
type(int_bounds_info) ib_bc_x
type(int_bounds_info) bc_z
integer num_fluids
number of fluids in the simulation
logical polydisperse
Polydisperse bubbles.
type(bubbles_lagrange_parameters) lag_params
Lagrange bubbles' parameters.
integer proc_rank
Rank of the local processor.
real(wp) hyper_cleaning_tau
Hyperbolic cleaning tau.
logical mixture_err
Mixture properties correction.
logical adap_dt
Adaptive step size control.
logical weno_re_flux
WENO reconstruct velocity gradients for viscous stress tensor.
real(wp) hyper_cleaning_speed
Hyperbolic cleaning wave speed (c_h).
integer t_step_print
Number of time-steps between printouts.
logical dummy
AMDFlang workaround for case-optimization + GPU-kernel bug.
real(wp) poly_sigma
log normal sigma for polydisperse PDF
type(bounds_info) z_domain
character(len=name_len) mpiiofs
integer, dimension(:), allocatable start_idx
Starting cell-center index of local processor in global grid.
type(vec3_dt), dimension(num_probes_max) probe
integer sys_size
Number of unknowns in system of eqns.
integer muscl_order
Order of the MUSCL reconstruction.
type(bounds_info) x_domain
logical alt_soundspeed
Alternate mixture sound speed.
real(wp) ptgalpha_eps
trigger parameter for the pTg relaxation procedure, phase change model
integer relax_model
Relaxation model.
integer t_step_old
Existing IC/grid folder.
logical viscous
Viscous effects.
logical run_time_info
Run-time output flag.
real(wp) wenoz_q
Power constant for WENO-Z.
integer riemann_solver
Riemann solver algorithm.
type(int_bounds_info), dimension(1:3) idwbuff
logical int_comp
THINC interface compression.
real(wp) re_inv
Inverse Reynolds number.
real(wp) ic_eps
THINC Epsilon to compress on surface cells.
integer model_eqns
Multicomponent flow model.
integer precision
Precision of output files.
logical hyperelasticity
hyperelasticity modeling
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Stiffened gas EOS parameters and Reynolds numbers per fluid.
type(int_bounds_info) bc_y
real(wp) alf_factor
alpha factor for IGR
impure subroutine s_initialize_global_parameters_module
Initialize the global parameters module.
real(wp), dimension(:), allocatable, target y_cc
type(pres_field), dimension(:), allocatable pb_ts
type(pres_field), dimension(:), allocatable mv_ts
type(chemistry_parameters) chem_params
integer fd_order
Finite-difference order for CoM and flow probe derivatives.
logical bubbles_lagrange
Lagrangian subgrid bubble model switch.
real(wp) ca
Cavitation number.
real(wp) alpha_bar
Damage rate factor for continuum damage modeling.
logical polytropic
Polytropic switch.
logical bf_z
body force toggle in three directions
logical mp_weno
Monotonicity preserving (MP) WENO.
type(int_bounds_info) bc_x
type(bounds_info) y_domain
real(wp), dimension(:), allocatable, target z_cc
logical relax
activate phase change
logical qbmm
Quadrature moment method.
real(wp) pi_fac
Factor for artificial pi_inf.
logical hyper_cleaning
Hyperbolic cleaning for MHD for divB=0.
integer adap_dt_max_iters
Maximum number of iterations.
real(wp) ic_beta
THINC Sharpness Parameter.
real(wp) bx0
Constant magnetic field in the x-direction (1D).
integer num_source
Number of acoustic sources.
real(wp), dimension(:), allocatable qvs
real(wp), dimension(:), allocatable pi_infs
logical adv_n
Solve the number density equation and compute alpha from number density.
integer num_procs
Number of processors.
character(len=path_len) case_dir
Case folder location.
real(wp) weno_eps
Binding for the WENO nonlinear weights.
integer weno_order
Order of the WENO reconstruction.
logical mhd
Magnetohydrodynamics.
real(wp), dimension(:), allocatable, target x_cc
type(acoustic_parameters), dimension(num_probes_max) acoustic
Acoustic source parameters.
real(wp) tau_star
Stress threshold for continuum damage modeling.
logical parallel_io
Format of the data files.
type(integral_parameters), dimension(num_probes_max) integral
real(wp), dimension(:), allocatable, target y_cb
real(wp) adap_dt_tol
Tolerance to control adaptive step size.
type(cell_num_bounds) cells_bounds
logical down_sample
down sample the output files
type(mpi_io_airfoil_ib_var), public mpi_io_airfoil_ib_data
logical nv_uvm_out_of_core
Enable out-of-core storage of q_cons_ts(2) in timestepping (default FALSE).
logical file_per_process
shared file or not when using parallel io
real(wp) palpha_eps
trigger parameter for the p relaxation procedure, phase change model
integer num_igr_warm_start_iters
number of warm start iterations for elliptic solve
integer nv_uvm_igr_temps_on_gpu
0 => jac, jac_rhs, and jac_old on CPU
logical elasticity
elasticity modeling, true for hyper or hypo
integer nb
Number of eq. bubble sizes.
type(mpi_io_var), public mpi_io_data
impure subroutine s_initialize_parallel_io
Initializes parallel infrastructure.
logical mpp_lim
Mixture physical parameters (MPP) limits.
integer num_igr_iters
number of iterations for elliptic solve
real(wp) teno_ct
Smoothness threshold for TENO.
integer low_mach
Low Mach number fix to HLLC Riemann solver.
integer igr_order
Reconstruction order for IGR.
real(wp) coefficient_of_restitution
logical teno
TENO (Targeted ENO).
real(wp), dimension(:), allocatable, target dy
real(wp) dt
Size of the time-step.
type(subgrid_bubble_physical_parameters) bub_pp
integer time_stepper
Time-stepper algorithm.
logical relativity
Relativity (only for MHD).
logical nv_uvm_pref_gpu
Enable explicit gpu memory hints (default FALSE).
real(wp), dimension(:), allocatable gammas
integer bubble_model
Gilmore or Keller–Miksis bubble model.
real(wp) finaltime
Final simulation time.
real(wp), dimension(:), allocatable, target dz
real(wp), dimension(:), allocatable, target dx
logical mapped_weno
WENO-M (WENO with mapping of nonlinear weights).
type(eqn_idx_info) eqn_idx
All conserved-variable equation index ranges and scalars.
integer igr_iter_solver
IGR elliptic solver.
integer muscl_lim
MUSCL Limiter.
type(ib_patch_parameters), dimension(num_ib_patches_max) patch_ib
Immersed boundary patch parameters.
real(wp), dimension(:), allocatable, target x_cb
Basic floating-point utilities: approximate equality, default detection, and coordinate bounds.
elemental subroutine, public s_update_cell_bounds(bounds, m, n, p)
Updates the min and max number of cells in each set of axes.
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
subroutine, public s_upsample_data(q_cons_vf, q_cons_temp)
Upsample conservative variable fields from a coarsened grid back to the original resolution using int...
impure subroutine, public s_initialize_bubbles_model()
Initialize bubble model arrays for Euler or Lagrangian bubbles with polytropic or non-polytropic gas.
elemental subroutine, public s_int_to_str(i, res)
Convert an integer to its trimmed string representation.
Computes the left Cauchy–Green deformation tensor and hyperelastic stress source terms.
impure subroutine, public s_finalize_hyperelastic_module()
Finalize the hyperelastic module.
impure subroutine, public s_initialize_hyperelastic_module
Initialize the hyperelastic module.
Computes hypoelastic stress-rate source terms and damage-state evolution.
impure subroutine, public s_initialize_hypoelastic_module
Initialize the hypoelastic module.
impure subroutine, public s_finalize_hypoelastic_module()
Finalize the hypoelastic module.
Ghost-node immersed boundary method: locates ghost/image points, computes interpolation coefficients,...
impure subroutine, public s_ibm_setup()
Initializes the values of various IBM variables, such as ghost points and image points.
impure subroutine, public s_finalize_ibm_module()
Finalize the IBM module.
type(integer_field), public ib_markers
impure subroutine, public s_initialize_ibm_module()
Allocates memory for the variables in the IBM module.
Iterative ghost rasterization (IGR) for sharp immersed boundary treatment.
subroutine, public s_initialize_igr_module()
Initialize the IGR module.
subroutine, public s_finalize_igr_module()
Finalize the IGR module.
MPI communication layer: domain decomposition, halo exchange, reductions, and parallel I/O setup.
impure subroutine s_mpi_abort(prnt, code)
The subroutine terminates the MPI execution environment.
impure subroutine s_initialize_mpi_common_module
Initialize the module.
impure subroutine s_mpi_barrier
Halts all processes until all have reached barrier.
impure subroutine s_mpi_initialize
Initialize the MPI execution environment and query the number of processors and local rank.
impure subroutine s_initialize_mpi_data(q_cons_vf, ib_markers, beta)
Set up MPI I/O data views and variable pointers for parallel file output.
impure subroutine s_mpi_finalize
The subroutine finalizes the MPI execution environment.
subroutine s_initialize_mpi_data_ds(q_cons_vf)
Set up MPI I/O data views for downsampled (coarsened) parallel file output.
impure subroutine mpi_bcast_time_step_values(proc_time, time_avg)
Gather per-rank time step wall-clock times onto rank 0 for performance reporting.
impure subroutine s_finalize_mpi_common_module
Module deallocation and/or disassociation procedures.
subroutine s_mpi_decompose_computational_domain
Decompose the computational domain among processors by balancing cells per rank in each coordinate di...
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
subroutine s_initialize_mpi_proxy_module()
Initialize the MPI proxy module.
subroutine s_finalize_mpi_proxy_module()
Finalize the MPI proxy module.
impure subroutine s_mpi_bcast_user_inputs()
Since only the processor with rank 0 reads and verifies the consistency of user inputs,...
MUSCL reconstruction with interface sharpening for contact-preserving advection.
subroutine, public s_initialize_muscl_module()
Allocate and initialize MUSCL reconstruction working arrays.
subroutine, public s_finalize_muscl_module()
Finalize the MUSCL module.
NVIDIA NVTX profiling API bindings for GPU performance instrumentation.
subroutine nvtxstartrange(name, id)
Push a named NVTX range for GPU profiling, optionally with a color based on the given identifier.
subroutine nvtxendrange
Pop the current NVTX range to end the GPU profiling region.
Phase transition relaxation solvers for liquid-vapor flows with cavitation and boiling.
impure subroutine, public s_finalize_relaxation_solver_module
Finalize the phase change module.
subroutine, public s_infinite_relaxation_k(q_cons_vf)
Apply pT- or pTg-equilibrium relaxation with mass depletion based on the incoming state conditions.
impure subroutine, public s_initialize_phasechange_module
Initialize the phase change module by setting saturation curve coefficients for pT- or pTg-equilibriu...
Quadrature-based moment methods (QBMM) for polydisperse bubble moment inversion and transport.
impure subroutine, public s_initialize_qbmm_module
Initialize the QBMM module.
Assembles the right-hand side of the governing equations using finite-volume flux differencing,...
impure subroutine, public s_initialize_rhs_module
Initialize the RHS module.
impure subroutine, public s_finalize_rhs_module
Module deallocation and/or disassociation procedures.
Approximate and exact Riemann solvers (HLL, HLLC, HLLD, exact) for the multicomponent Navier–Stokes e...
impure subroutine, public s_finalize_riemann_solvers_module
Module deallocation and/or disassociation procedures.
impure subroutine, public s_initialize_riemann_solvers_module
Initialize the Riemann solvers module.
Simulation helper routines for enthalpy computation, CFL calculation, and stability checks.
Reads input files, loads initial conditions and grid data, and orchestrates solver initialization and...
impure subroutine s_read_ib_restart_data(t_step)
Reads IB kinematic state from restart_data/ib_state.dat on restart. Rank 0 reads the last num_ibs rec...
impure subroutine, public s_read_serial_data_files(q_cons_vf)
Read serial initial condition and grid data files and compute cell-width distributions.
impure subroutine, public s_initialize_modules
Initialize all simulation sub-modules in the required dependency order.
impure subroutine, public s_read_data_files(q_cons_vf)
Read data files. Dispatch subroutine that replaces procedure pointer.
impure subroutine, public s_read_parallel_data_files(q_cons_vf)
Read parallel initial condition and grid data files via MPI I/O.
subroutine, public s_initialize_internal_energy_equations(v_vf)
Initialize internal-energy equations from phase mass, mixture momentum, and total energy.
impure subroutine, public s_save_performance_metrics(time_avg, time_final, io_time_avg, io_time_final, proc_time, io_proc_time, file_exists)
Collect per-process wall-clock times and write aggregate performance metrics to file.
impure subroutine, public s_save_data(t_step, start, finish, io_time_avg, nt)
Save conservative variable data to disk at the current time step.
type(scalar_field), dimension(:), allocatable q_cons_temp
subroutine, public s_initialize_gpu_vars
Transfer initial conservative variable and model parameter data to the GPU device.
impure subroutine, public s_initialize_mpi_domain
Set up the MPI execution environment, bind GPUs, and decompose the computational domain.
impure subroutine, public s_finalize_modules
Finalize and deallocate all simulation sub-modules in reverse initialization order.
impure subroutine, public s_read_input_file
Verify the input file exists and read it.
impure subroutine, public s_check_input_file
Validate that all user-provided inputs form a consistent simulation configuration.
impure subroutine, public s_perform_time_step(t_step, time_avg)
Advance the simulation by one time step, handling CFL-based dt and time-stepper dispatch.
Computes capillary source fluxes and color-function gradients for the diffuse-interface surface tensi...
impure subroutine, public s_initialize_surface_tension_module
Allocate and initialize surface tension module arrays.
impure subroutine, public s_finalize_surface_tension_module
Finalize the surface tension module.
Total-variation-diminishing (TVD) Runge–Kutta time integrators (1st-, 2nd-, and 3rd-order SSP).
type(scalar_field) q_t_sf
Cell-average temperature variables at the current time-stage.
type(integer_field), dimension(:,:), allocatable bc_type
Boundary condition identifiers.
impure subroutine s_initialize_time_steppers_module
Initialize the time steppers module.
type(vector_field), dimension(:), allocatable q_cons_ts
Cell-average conservative variables at each time-stage (TS).
type(scalar_field), dimension(:), allocatable q_prim_vf
Cell-average primitive variables at the current time-stage.
impure subroutine s_finalize_time_steppers_module
Module deallocation and/or disassociation procedures.
impure subroutine s_compute_dt()
Compute the global time step size from CFL stability constraints across all cells.
impure subroutine s_tvd_rk(t_step, time_avg, nstage)
Advance the solution one full step using a TVD Runge-Kutta time integrator.
integer stor
storage index
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
subroutine, public s_compute_pressure(energy, alf, dyn_p, pi_inf, gamma, rho, qv, rhoyks, pres, t, stress, mom, g, pres_mag)
Compute the pressure from the appropriate equation of state.
impure subroutine, public s_initialize_variables_conversion_module
Initialize the variables conversion module.
impure subroutine s_finalize_variables_conversion_module()
Deallocate fluid property arrays and post-processing fields allocated during module initialization.
subroutine, public s_convert_to_mixture_variables(q_vf, i, j, k, rho, gamma, pi_inf, qv, re_k, g_k, g)
Dispatch to the s_convert_mixture_to_mixture_variables and s_convert_species_to_mixture_variables sub...
Computes viscous stress tensors and diffusive flux contributions for the Navier–Stokes equations.
impure subroutine, public s_initialize_viscous_module
Initialize the viscous module.
impure subroutine, public s_finalize_viscous_module()
Finalize the viscous module.
WENO/WENO-Z/TENO reconstruction with optional monotonicity-preserving bounds and mapped weights.
impure subroutine, public s_initialize_weno_module
Initialize the WENO module.
impure subroutine, public s_finalize_weno_module()
Module deallocation and/or disassociation procedures.
Derived type annexing a scalar field (SF).