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# 207 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 232 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 243 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 245 "/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# 283 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
128# 293 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
130# 303 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
132# 312 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
134# 329 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
136# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
138# 346 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
140# 352 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
142# 358 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
144# 364 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
146# 370 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
148# 376 "/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# 192 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
219# 213 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
221# 241 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
223# 256 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
225# 266 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
227# 275 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
229# 291 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
231# 301 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
233# 308 "/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
237# 21 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
239# 37 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
241# 50 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
243# 76 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245# 91 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247# 102 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
249# 115 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253# 154 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
255# 165 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 176 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259# 187 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
261# 198 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 208 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
267# 220 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 226 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271# 232 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
273# 234 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274# 235 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
278# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
284# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
286# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
288# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
290# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
292# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
294# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
296# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
298# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
300# 7 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp" 2
309 use m_mpi_proxy !< message passing interface (mpi) module proxy
315 use m_weno !< weighted and essentially non-oscillatory (weno)
318 use m_muscl !< monotonic upstream-centered (muscl)
323 use m_cbc !< characteristic boundary conditions (cbc)
329 use m_rhs !< right-hane-side (rhs) evaluation procedures
333 use m_data_output !< run-time info & solution data output procedures
337 use m_qbmm !< quadrature mom
349 use m_bubbles_ee !< ensemble-averaged bubble dynamics routines
360# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
361#if defined(MFC_OpenACC)
362# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
364# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
365#elif defined(MFC_OpenMP)
366# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
368# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
370# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
415 dimension(sys_size), &
432 character(LEN=name_len),
parameter :: file_path =
'./simulation.inp'
434 logical :: file_exist
440 character(len=1000) :: line
459# 154 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
464# 159 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
488 inquire (file=trim(file_path), exist=file_exist)
491 open (1, file=trim(file_path), &
495 read (1, nml=user_inputs, iostat=iostatus)
497 if (iostatus /= 0)
then
499 read (1, fmt=
'(A)') line
500 print *,
'Invalid line in namelist: '//trim(line)
501 call s_mpi_abort(
'Invalid line in simulation.inp. It is '// &
502 'likely due to a datatype mismatch. Exiting.')
526 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
537 character(LEN=path_len) :: file_path
540 logical :: file_exist
547 if (file_exist .neqv. .true.)
then
548 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
562 character(LEN=path_len + 2*name_len) :: t_step_dir
565 character(LEN=path_len + 3*name_len) :: file_path
568 logical :: file_exist
576 write (t_step_dir,
'(A,I0,A,I0)') &
579 write (t_step_dir,
'(A,I0,A,I0)') &
583 file_path = trim(t_step_dir)//
'/.'
586 if (file_exist .neqv. .true.)
then
587 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
597 file_path = trim(t_step_dir)//
'/x_cb.dat'
599 inquire (file=trim(file_path), exist=file_exist)
602 open (2, file=trim(file_path), &
603 form=
'unformatted', &
606 read (2)
x_cb(-1:
m);
close (2)
608 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
625 file_path = trim(t_step_dir)//
'/y_cb.dat'
627 inquire (file=trim(file_path), exist=file_exist)
630 open (2, file=trim(file_path), &
631 form=
'unformatted', &
634 read (2)
y_cb(-1:
n);
close (2)
636 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
647 file_path = trim(t_step_dir)//
'/z_cb.dat'
649 inquire (file=trim(file_path), exist=file_exist)
652 open (2, file=trim(file_path), &
653 form=
'unformatted', &
656 read (2)
z_cb(-1:
p);
close (2)
658 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
667 write (file_path,
'(A,I0,A)') &
668 trim(t_step_dir)//
'/q_cons_vf',
i,
'.dat'
669 inquire (file=trim(file_path), exist=file_exist)
671 open (2, file=trim(file_path), &
672 form=
'unformatted', &
677 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
686 write (file_path,
'(A,I0,A)') &
687 trim(t_step_dir)//
'/pb',
sys_size + (
i - 1)*nnode +
r,
'.dat'
688 inquire (file=trim(file_path), exist=file_exist)
690 open (2, file=trim(file_path), &
691 form=
'unformatted', &
694 read (2)
pb_ts(1)%sf(0:
m, 0:
n, 0:
p,
r,
i);
close (2)
696 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
702 write (file_path,
'(A,I0,A)') &
703 trim(t_step_dir)//
'/mv',
sys_size + (
i - 1)*nnode +
r,
'.dat'
704 inquire (file=trim(file_path), exist=file_exist)
706 open (2, file=trim(file_path), &
707 form=
'unformatted', &
710 read (2)
mv_ts(1)%sf(0:
m, 0:
n, 0:
p,
r,
i);
close (2)
712 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
726 dimension(sys_size), &
731 real(wp),
allocatable,
dimension(:) :: x_cb_glb, y_cb_glb, z_cb_glb
733 integer :: ifile, ierr, data_size
734 integer,
dimension(MPI_STATUS_SIZE) :: status
735 integer(KIND=MPI_OFFSET_KIND) :: disp
736 integer(KIND=MPI_OFFSET_KIND) :: m_mok, n_mok, p_mok
737 integer(KIND=MPI_OFFSET_KIND) :: wp_mok, var_mok, str_mok
738 integer(KIND=MPI_OFFSET_KIND) :: nvars_mok
739 integer(KIND=MPI_OFFSET_KIND) :: mok
741 character(LEN=path_len + 2*name_len) :: file_loc
742 logical :: file_exist
744 character(len=10) :: t_step_start_string
749 integer :: m_ds, n_ds, p_ds
750 integer :: m_glb_ds, n_glb_ds, p_glb_ds
751 integer :: m_glb_read, n_glb_read, p_glb_read
753 allocate (x_cb_glb(-1:
m_glb))
754 allocate (y_cb_glb(-1:
n_glb))
755 allocate (z_cb_glb(-1:
p_glb))
759 inquire (file=trim(file_loc), exist=file_exist)
762 m_ds = int((
m + 1)/3) - 1
763 n_ds = int((
n + 1)/3) - 1
764 p_ds = int((
p + 1)/3) - 1
766 m_glb_ds = int((
m_glb + 1)/3) - 1
767 n_glb_ds = int((
n_glb + 1)/3) - 1
768 p_glb_ds = int((
p_glb + 1)/3) - 1
772 data_size =
m_glb + 2
773 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
774 call mpi_file_read(ifile, x_cb_glb, data_size, mpi_p, status, ierr)
775 call mpi_file_close(ifile, ierr)
777 call s_mpi_abort(
'File '//trim(file_loc)//
' is missing. Exiting.')
799 inquire (file=trim(file_loc), exist=file_exist)
802 data_size =
n_glb + 2
803 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
804 call mpi_file_read(ifile, y_cb_glb, data_size, mpi_p, status, ierr)
805 call mpi_file_close(ifile, ierr)
807 call s_mpi_abort(
'File '//trim(file_loc)//
' is missing. Exiting.')
820 inquire (file=trim(file_loc), exist=file_exist)
823 data_size =
p_glb + 2
824 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
825 call mpi_file_read(ifile, z_cb_glb, data_size, mpi_p, status, ierr)
826 call mpi_file_close(ifile, ierr)
828 call s_mpi_abort(
'File '//trim(file_loc)//
'is missing. Exiting.')
849 file_loc = trim(
case_dir)//
'/restart_data/lustre_'//trim(t_step_start_string)//trim(
mpiiofs)//trim(file_loc)
850 inquire (file=trim(file_loc), exist=file_exist)
853 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
868 data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
869 m_glb_read = m_glb_ds + 1
870 n_glb_read = n_glb_ds + 1
871 p_glb_read = p_glb_ds + 1
874 data_size = (
m + 1)*(
n + 1)*(
p + 1)
875 m_glb_read =
m_glb + 1
876 n_glb_read =
n_glb + 1
877 p_glb_read =
p_glb + 1
881 m_mok = int(m_glb_read + 1, mpi_offset_kind)
882 n_mok = int(m_glb_read + 1, mpi_offset_kind)
883 p_mok = int(m_glb_read + 1, mpi_offset_kind)
884 wp_mok = int(4._wp, mpi_offset_kind)
885 mok = int(1._wp, mpi_offset_kind)
886 str_mok = int(name_len, mpi_offset_kind)
887 nvars_mok = int(
sys_size, mpi_offset_kind)
892 var_mok = int(
i, mpi_offset_kind)
894 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
895 mpi_io_p, status, ierr)
900 var_mok = int(
i, mpi_offset_kind)
902 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
903 mpi_io_p, status, ierr)
909 var_mok = int(
i, mpi_offset_kind)
911 call mpi_file_read(ifile,
q_cons_temp(
i)%sf, data_size*mpi_io_type, &
912 mpi_io_p, status, ierr)
916 var_mok = int(
i, mpi_offset_kind)
918 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
919 mpi_io_p, status, ierr)
926 call mpi_file_close(ifile, ierr)
929 call s_mpi_abort(
'File '//trim(file_loc)//
' is missing. Exiting.')
934 write (file_loc,
'(I0,A)')
n_start,
'.dat'
938 file_loc = trim(
case_dir)//
'/restart_data'//trim(
mpiiofs)//trim(file_loc)
939 inquire (file=trim(file_loc), exist=file_exist)
942 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
955 data_size = (
m + 1)*(
n + 1)*(
p + 1)
958 m_mok = int(
m_glb + 1, mpi_offset_kind)
959 n_mok = int(
n_glb + 1, mpi_offset_kind)
960 p_mok = int(
p_glb + 1, mpi_offset_kind)
961 wp_mok = int(8._wp, mpi_offset_kind)
962 mok = int(1._wp, mpi_offset_kind)
963 str_mok = int(name_len, mpi_offset_kind)
964 nvars_mok = int(
sys_size, mpi_offset_kind)
969 var_mok = int(
i, mpi_offset_kind)
971 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
973 call mpi_file_set_view(ifile, disp, mpi_io_p,
mpi_io_data%view(
i), &
975 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
976 mpi_io_p, status, ierr)
981 var_mok = int(
i, mpi_offset_kind)
983 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
985 call mpi_file_set_view(ifile, disp, mpi_io_p,
mpi_io_data%view(
i), &
987 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
988 mpi_io_p, status, ierr)
993 var_mok = int(
i, mpi_offset_kind)
996 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
998 call mpi_file_set_view(ifile, disp, mpi_io_p,
mpi_io_data%view(
i), &
1000 call mpi_file_read_all(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
1001 mpi_io_p, status, ierr)
1007 call mpi_file_close(ifile, ierr)
1010 call s_mpi_abort(
'File '//trim(file_loc)//
' is missing. Exiting.')
1015 deallocate (x_cb_glb, y_cb_glb, z_cb_glb)
1034 type(
scalar_field),
dimension(sys_size),
intent(inout) :: v_vf
1037 real(wp) :: dyn_pres
1041 real(wp),
dimension(2) :: re
1044 integer ::
i,
j,
k,
l,
c
1046 real(wp),
dimension(num_species) :: rhoyks
1048 real(wp) :: pres_mag
1062 dyn_pres = dyn_pres + 5.e-1_wp*v_vf(
i)%sf(
j,
k,
l)*v_vf(
i)%sf(
j,
k,
l) &
1067 do c = 1, num_species
1074 pres_mag = 0.5_wp*(
bx0**2 + v_vf(
b_idx%beg)%sf(
j,
k,
l)**2 + v_vf(
b_idx%beg + 1)%sf(
j,
k,
l)**2)
1076 pres_mag = 0.5_wp*(v_vf(
b_idx%beg)%sf(
j,
k,
l)**2 + v_vf(
b_idx%beg + 1)%sf(
j,
k,
l)**2 + v_vf(
b_idx%beg + 2)%sf(
j,
k,
l)**2)
1081 dyn_pres, pi_inf, gamma, rho, qv, rhoyks, pres, t, pres_mag=pres_mag)
1096 integer,
intent(inout) :: t_step
1097 real(wp),
intent(inout) :: time_avg
1109 print *,
"Delta t = ",
dt
1118# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1119#if defined(MFC_OpenACC)
1120# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1122# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1123#elif defined(MFC_OpenMP)
1124# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1126# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1133# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1134#if defined(MFC_OpenACC)
1135# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1137# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1138#elif defined(MFC_OpenMP)
1139# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1141# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1148 print
'(" [", I3, "%] Time ", ES16.6, " dt = ", ES16.6, " @ Time Step = ", I8, " Time Avg = ", ES16.6, " Time/step = ", ES12.6, "")', &
1158 print
'(" [", I3, "%] Time step ", I8, " of ", I0, " @ t_step = ", I8, " Time Avg = ", ES12.6, " Time/step= ", ES12.6, "")', &
1171# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1172#if defined(MFC_OpenACC)
1173# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1175# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1176#elif defined(MFC_OpenMP)
1177# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1179# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1201 real(wp),
intent(inout) :: time_avg, time_final
1202 real(wp),
intent(inout) :: io_time_avg, io_time_final
1203 real(wp),
dimension(:),
intent(inout) :: proc_time
1204 real(wp),
dimension(:),
intent(inout) :: io_proc_time
1205 logical,
intent(inout) :: file_exists
1207 real(wp) :: grind_time
1219 io_time_final = 0._wp
1221 time_final = time_avg
1222 io_time_final = io_time_avg
1224 time_final = maxval(proc_time)
1225 io_time_final = maxval(io_proc_time)
1228 grind_time = time_final*1.0e9_wp/ &
1230 real(maxval((/1,
n_glb/)), wp)*
real(maxval((/1, p_glb/)), wp))
1232 print *,
"Performance:", grind_time,
"ns/gp/eq/rhs"
1233 inquire (file=
'time_data.dat', exist=file_exists)
1234 if (file_exists)
then
1235 open (1, file=
'time_data.dat', position=
'append', status=
'old')
1237 open (1, file=
'time_data.dat', status=
'new')
1238 write (1,
'(A10, A15, A15)')
"Ranks",
"s/step",
"ns/gp/eq/rhs"
1241 write (1,
'(I10, 2(F15.8))')
num_procs, time_final, grind_time
1245 inquire (file=
'io_time_data.dat', exist=file_exists)
1246 if (file_exists)
then
1247 open (1, file=
'io_time_data.dat', position=
'append', status=
'old')
1249 open (1, file=
'io_time_data.dat', status=
'new')
1250 write (1,
'(A10, A15)')
"Ranks",
"s/step"
1253 write (1,
'(I10, F15.8)')
num_procs, io_time_final
1262 integer,
intent(inout) :: t_step
1263 real(wp),
intent(inout) :: start, finish, io_time_avg
1264 integer,
intent(inout) :: nt
1266 integer(kind=8) ::
i,
j,
k,
l
1269 integer :: save_count
1279# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1281# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1282#if defined(MFC_OpenACC)
1283# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1285# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1286#elif defined(MFC_OpenMP)
1287# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1289# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1291# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1293# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1295# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1297# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1310# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1312# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1313#if defined(MFC_OpenACC)
1314# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1316# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1317#elif defined(MFC_OpenMP)
1318# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1320# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1322# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1324# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1326# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1331 call cpu_time(start)
1334#ifndef FRONTIER_UNIFIED
1336# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1337#if defined(MFC_OpenACC)
1338# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1340# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1341#elif defined(MFC_OpenMP)
1342# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1344# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1351 print *,
"NaN(s) in timestep output.",
j,
k,
l,
i,
proc_rank, t_step,
m,
n,
p
1352 error stop
"NaN(s) in timestep output."
1361# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1362#if defined(MFC_OpenACC)
1363# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1365# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1366#elif defined(MFC_OpenMP)
1367# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1369# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1372# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1373#if defined(MFC_OpenACC)
1374# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1376# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1377#elif defined(MFC_OpenMP)
1378# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1380# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1392# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1393#if defined(MFC_OpenACC)
1394# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1396# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1397#elif defined(MFC_OpenMP)
1398# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1400# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1402# 990 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1405 call s_mpi_abort(
"Bubble radius is negative or NaN, please reduce dt.")
1410# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1411#if defined(MFC_OpenACC)
1412# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1414# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1415#elif defined(MFC_OpenMP)
1416# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1418# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1422# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1423#if defined(MFC_OpenACC)
1424# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1426# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1427#elif defined(MFC_OpenMP)
1428# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1430# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1439 call cpu_time(finish)
1447 io_time_avg = abs(finish - start)
1449 io_time_avg = (abs(finish - start) + io_time_avg*(nt - 1))/nt
1457 integer :: m_ds, n_ds, p_ds
1458 integer ::
i,
j,
k,
l, x_id, y_id, z_id, ix, iy, iz
1459 real(wp) :: temp1, temp2, temp3, temp4
1462# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1496 m_ds = int((
m + 1)/3) - 1
1497 n_ds = int((
n + 1)/3) - 1
1498 p_ds = int((
p + 1)/3) - 1
1502 allocate (
q_cons_temp(
i)%sf(-1:m_ds + 1, -1:n_ds + 1, -1:p_ds + 1))
1512# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1513#if defined(MFC_OpenACC)
1514# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1516# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1517#elif defined(MFC_OpenMP)
1518# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1520# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1573 real(wp) :: starttime, endtime
1574 integer :: num_devices, local_size, num_nodes, ppn, my_device_num
1575 integer :: dev, devnum, local_rank
1577 integer :: local_comm
1579#if defined(MFC_OpenACC)
1580 integer(acc_device_kind) :: devtype
1594 call mpi_comm_split_type(mpi_comm_world, mpi_comm_type_shared, 0, &
1595 mpi_info_null, local_comm, ierr)
1596 call mpi_comm_size(local_comm, local_size, ierr)
1597 call mpi_comm_rank(local_comm, local_rank, ierr)
1599#if defined(MFC_OpenACC)
1600 devtype = acc_get_device_type()
1601 devnum = acc_get_num_devices(devtype)
1602 dev = mod(local_rank, devnum)
1604 call acc_set_device_num(dev, devtype)
1605#elif defined(MFC_OpenMP)
1606 devnum = omp_get_num_devices()
1607 dev = mod(local_rank, devnum)
1608 call omp_set_default_device(dev)
1621 print
'(" Simulating a ", A, " ", I0, "x", I0, "x", I0, " case on ", I0, " rank(s) ", A, ".")', &
1622# 1185 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1624# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1626#if defined(MFC_OpenACC)
1627 "with OpenACC offloading"
1628#elif defined(MFC_OpenMP)
1629 "with OpenMP offloading"
1654# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1655#if defined(MFC_OpenACC)
1656# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1658# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1659#elif defined(MFC_OpenMP)
1660# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1662# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1669# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1670#if defined(MFC_OpenACC)
1671# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1673# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1674#elif defined(MFC_OpenMP)
1675# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1677# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1682# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1683#if defined(MFC_OpenACC)
1684# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1686# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1687#elif defined(MFC_OpenMP)
1688# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1690# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1695# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1696#if defined(MFC_OpenACC)
1697# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1699# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1700#elif defined(MFC_OpenMP)
1701# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1703# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1707# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1708#if defined(MFC_OpenACC)
1709# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1711# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1712#elif defined(MFC_OpenMP)
1713# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1715# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1717# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1721# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1722#if defined(MFC_OpenACC)
1723# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1725# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1726#elif defined(MFC_OpenMP)
1727# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1729# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1733# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1734#if defined(MFC_OpenACC)
1735# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1737# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1738#elif defined(MFC_OpenMP)
1739# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1741# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1743# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1746# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1747#if defined(MFC_OpenACC)
1748# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1750# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1751#elif defined(MFC_OpenMP)
1752# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1754# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1760# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1761#if defined(MFC_OpenACC)
1762# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1764# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1765#elif defined(MFC_OpenMP)
1766# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1768# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1772# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1773#if defined(MFC_OpenACC)
1774# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1776# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1777#elif defined(MFC_OpenMP)
1778# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1780# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1783# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1784#if defined(MFC_OpenACC)
1785# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1787# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1788#elif defined(MFC_OpenMP)
1789# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1791# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1795# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1796#if defined(MFC_OpenACC)
1797# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1799# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1800#elif defined(MFC_OpenMP)
1801# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1803# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1806# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1807#if defined(MFC_OpenACC)
1808# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1810# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1811#elif defined(MFC_OpenMP)
1812# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1814# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1817# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1818#if defined(MFC_OpenACC)
1819# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1821# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1822#elif defined(MFC_OpenMP)
1823# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1825# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1828# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1829#if defined(MFC_OpenACC)
1830# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1832# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1833#elif defined(MFC_OpenMP)
1834# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1836# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1840# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1841#if defined(MFC_OpenACC)
1842# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1844# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1845#elif defined(MFC_OpenMP)
1846# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1848# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1851# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1852#if defined(MFC_OpenACC)
1853# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1855# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1856#elif defined(MFC_OpenMP)
1857# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1859# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1862# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1863#if defined(MFC_OpenACC)
1864# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1866# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1867#elif defined(MFC_OpenMP)
1868# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1870# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1874# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1875#if defined(MFC_OpenACC)
1876# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1878# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1879#elif defined(MFC_OpenMP)
1880# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1882# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1886# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1887#if defined(MFC_OpenACC)
1888# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1890# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1891#elif defined(MFC_OpenMP)
1892# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1894# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1900# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1901#if defined(MFC_OpenACC)
1902# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1904# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1905#elif defined(MFC_OpenMP)
1906# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1908# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1911# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1913# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1914#if defined(MFC_OpenACC)
1915# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1917# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1918#elif defined(MFC_OpenMP)
1919# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1921# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1923# 1272 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1924# 1280 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf
Applies acoustic pressure source terms including focused, planar, and broadband transducers.
impure subroutine, public s_precalculate_acoustic_spatial_sources
This subroutine identifies and precalculates the non-zero acoustic spatial sources before time-steppi...
impure subroutine, public s_initialize_acoustic_src
This subroutine initializes 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
This subroutine initializes the module global array of mixture densities in each grid cell.
impure subroutine, public s_finalize_body_forces_module
Deallocates module variables used for body force computations.
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
impure subroutine, public s_initialize_boundary_common_module()
Allocates and sets up boundary condition buffer arrays for all coordinate directions.
subroutine, public s_finalize_boundary_common_module()
Deallocates boundary condition buffer arrays allocated during module initialization.
impure subroutine, public s_populate_variables_buffers(bc_type, q_prim_vf, pb_in, mv_in)
The purpose of this procedure is to populate the buffers of the primitive variables,...
subroutine, public s_read_parallel_boundary_condition_files(bc_type)
Reads boundary condition type and buffer data from per-rank parallel files using MPI I/O.
subroutine, public s_populate_grid_variables_buffers
The purpose of this subroutine is to populate the buffers of the grid variables, which are constitute...
subroutine, public s_read_serial_boundary_condition_files(step_dirpath, bc_type)
Reads boundary condition type and buffer data from serial (unformatted) restart files.
subroutine, public s_assign_default_bc_type(bc_type)
Initializes 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
Allocates and initializes arrays for the Euler-Euler bubble model.
Tracks Lagrangian bubbles and couples their dynamics to the Eulerian flow via volume averaging.
impure subroutine s_write_lag_bubble_stats()
Subroutine that writes the maximum and minimum radius of each bubble.
impure subroutine s_write_restart_lag_bubbles(t_step)
Subroutine that writes the restarting files for the particles in the lagrangian 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.
real(wp), dimension(:, :), allocatable intfc_rad
Bubble radius.
type(scalar_field), dimension(:), allocatable q_beta
impure subroutine s_finalize_lagrangian_solver()
The purpose of this subroutine is to deallocate variables.
Characteristic boundary conditions (CBC) for slip walls, non-reflecting subsonic inflow/outflow,...
impure subroutine, public s_initialize_cbc_module
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
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)
Initializes 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
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
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.
subroutine, public s_write_ib_data_file(time_step)
Dispatches 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...
real(wp) mytime
Current simulation time.
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.
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.
logical acoustic_source
Acoustic source switch.
type(ib_patch_parameters), dimension(num_patches_max) patch_ib
type(int_bounds_info) mom_idx
Indexes of first & last momentum eqns.
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: keep a dummy logical to avoid a compiler case-optimization bug when a parameter+...
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.
type(int_bounds_info) b_idx
Indexes of first and last magnetic field eqns.
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
Database of the physical parameters of each of the fluids that is present in the flow....
type(int_bounds_info) bc_y
real(wp) alf_factor
alpha factor for IGR
impure subroutine s_initialize_global_parameters_module
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
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
The order of the finite-difference (fd) approximations of the first-order derivatives that need to be...
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 amplitude, frequency, and phase shift sinusoid in each directio...
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.
integer e_idx
Index of energy equation.
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
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
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.
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).
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).
integer igr_iter_solver
IGR elliptic solver.
integer muscl_lim
MUSCL Limiter.
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)
Upsamples conservative variable fields from a coarsened grid back to the original resolution using in...
impure subroutine, public s_initialize_bubbles_model()
bubbles_euler + polytropic bubbles_euler + non-polytropic bubbles_lagrange + non-polytropic
elemental subroutine, public s_int_to_str(i, res)
Converts 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()
Deallocates memory for hyperelastic deformation tensor and finite-difference coefficients.
impure subroutine, public s_initialize_hyperelastic_module
The following subroutine handles the calculation of the btensor. The calculation of the btensor takes...
Computes hypoelastic stress-rate source terms and damage-state evolution.
impure subroutine, public s_initialize_hypoelastic_module
Allocates arrays and computes finite-difference coefficients for the hypoelastic stress model.
impure subroutine, public s_finalize_hypoelastic_module()
Deallocates arrays used by the hypoelastic stress 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.
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()
Allocates and initializes arrays, coefficients, and GPU data structures for the implicit gradient rec...
subroutine, public s_finalize_igr_module()
Deallocates all arrays and GPU resources allocated by 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
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
impure subroutine s_mpi_barrier
Halts all processes until all have reached barrier.
impure subroutine s_mpi_initialize
The subroutine initializes the MPI execution environment and queries both the number of processors wh...
impure subroutine s_initialize_mpi_data(q_cons_vf, ib_markers, beta)
impure subroutine s_mpi_finalize
The subroutine finalizes the MPI execution environment.
subroutine s_initialize_mpi_data_ds(q_cons_vf)
impure subroutine mpi_bcast_time_step_values(proc_time, time_avg)
Gathers 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
The purpose of this procedure is to optimally decompose the computational domain among the available ...
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
subroutine s_initialize_mpi_proxy_module()
Allocates immersed boundary communication buffers for MPI halo exchanges.
subroutine s_finalize_mpi_proxy_module()
Deallocates immersed boundary MPI communication buffers.
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()
subroutine, public s_finalize_muscl_module()
Deallocates the MUSCL direction-local work arrays.
NVIDIA NVTX profiling API bindings for GPU performance instrumentation.
subroutine nvtxstartrange(name, id)
Pushes a named NVTX range for GPU profiling, optionally with a color based on the given identifier.
subroutine nvtxendrange
Pops 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
This subroutine finalizes the phase change module.
subroutine, public s_infinite_relaxation_k(q_cons_vf)
This subroutine is created to activate either the pT- (N fluids) or the pTg-equilibrium (2 fluids for...
impure subroutine, public s_initialize_phasechange_module
The purpose of this subroutine is to initialize the phase change module by setting the parameters nee...
Quadrature-based moment methods (QBMM) for polydisperse bubble moment inversion and transport.
impure subroutine, public s_initialize_qbmm_module
Allocates and initializes moment coefficient arrays for the QBMM module.
Assembles the right-hand side of the governing equations using finite-volume flux differencing,...
impure subroutine, public s_initialize_rhs_module
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
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
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
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, public s_read_serial_data_files(q_cons_vf)
Reads serial initial condition and grid data files and computes cell-width distributions.
impure subroutine, public s_initialize_modules
Initializes 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)
Reads parallel initial condition and grid data files via MPI I/O.
subroutine, public s_initialize_internal_energy_equations(v_vf)
The purpose of this procedure is to initialize the values of the internal-energy equations of each ph...
impure subroutine, public s_save_performance_metrics(time_avg, time_final, io_time_avg, io_time_final, proc_time, io_proc_time, file_exists)
Collects per-process wall-clock times and writes aggregate performance metrics to file.
impure subroutine, public s_save_data(t_step, start, finish, io_time_avg, nt)
Saves conservative variable data to disk at the current time step.
type(scalar_field), dimension(:), allocatable q_cons_temp
subroutine, public s_initialize_gpu_vars
Transfers initial conservative variable and model parameter data to the GPU device.
impure subroutine, public s_initialize_mpi_domain
Sets up the MPI execution environment, binds GPUs, and decomposes the computational domain.
impure subroutine, public s_finalize_modules
Finalizes and deallocates all simulation sub-modules in reverse initialization order.
impure subroutine, public s_read_input_file
The purpose of this procedure is to first verify that an input file has been made available by the us...
impure subroutine, public s_check_input_file
The goal of this procedure is to verify that each of the user provided inputs is valid and that their...
impure subroutine, public s_perform_time_step(t_step, time_avg)
Advances 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
impure subroutine, public s_finalize_surface_tension_module
Deallocates the color-gradient divergence and reconstructed boundary arrays for surface tension.
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.
impure subroutine s_initialize_time_steppers_module
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
type(integer_field), dimension(:, :), allocatable bc_type
Boundary condition identifiers.
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()
Computes the global time step size from CFL stability constraints across all cells.
impure subroutine s_tvd_rk(t_step, time_avg, nstage)
Advances 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)
This procedure conditionally calculates the appropriate pressure.
impure subroutine, public s_initialize_variables_conversion_module
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
impure subroutine s_finalize_variables_conversion_module()
Deallocates 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
Allocates and populates the viscous Reynolds number arrays and transfers data to the GPU.
impure subroutine, public s_finalize_viscous_module()
Deallocates the viscous Reynolds number arrays.
WENO/WENO-Z/TENO reconstruction with optional monotonicity-preserving bounds and mapped weights.
impure subroutine, public s_initialize_weno_module
The computation of parameters, the allocation of memory, the association of pointers and/or the execu...
impure subroutine, public s_finalize_weno_module()
Module deallocation and/or disassociation procedures.
Derived type annexing a scalar field (SF).