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# 104 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
245# 119 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
249# 143 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
251# 171 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253# 182 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
255# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
257# 204 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259# 214 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
261# 225 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
263# 236 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 246 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
267# 252 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
269# 258 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271# 264 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
273# 270 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
275# 272 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
276# 273 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
278# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
280# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
286# 63 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
288# 81 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
290# 88 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
292# 111 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
294# 127 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
296# 153 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
298# 159 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
300# 167 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
302# 7 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp" 2
311 use m_mpi_proxy !< message passing interface (mpi) module proxy
317 use m_weno !< weighted and essentially non-oscillatory (weno)
320 use m_muscl !< monotonic upstream-centered (muscl)
325 use m_cbc !< characteristic boundary conditions (cbc)
331 use m_rhs !< right-hane-side (rhs) evaluation procedures
335 use m_data_output !< run-time info & solution data output procedures
339 use m_qbmm !< quadrature mom
351 use m_bubbles_ee !< ensemble-averaged bubble dynamics routines
362# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
363#if defined(MFC_OpenACC)
364# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
366# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
367#elif defined(MFC_OpenMP)
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"
372# 65 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
417 dimension(sys_size), &
434 character(LEN=name_len),
parameter :: file_path =
'./simulation.inp'
436 logical :: file_exist
442 character(len=1000) :: line
461# 154 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
466# 159 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
490 inquire (file=trim(file_path), exist=file_exist)
493 open (1, file=trim(file_path), &
497 read (1, nml=user_inputs, iostat=iostatus)
499 if (iostatus /= 0)
then
501 read (1, fmt=
'(A)') line
502 print *,
'Invalid line in namelist: '//trim(line)
503 call s_mpi_abort(
'Invalid line in simulation.inp. It is '// &
504 'likely due to a datatype mismatch. Exiting.')
528 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
539 character(LEN=path_len) :: file_path
542 logical :: file_exist
549 if (file_exist .neqv. .true.)
then
550 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
564 character(LEN=path_len + 2*name_len) :: t_step_dir
567 character(LEN=path_len + 3*name_len) :: file_path
570 logical :: file_exist
578 write (t_step_dir,
'(A,I0,A,I0)') &
581 write (t_step_dir,
'(A,I0,A,I0)') &
585 file_path = trim(t_step_dir)//
'/.'
588 if (file_exist .neqv. .true.)
then
589 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
599 file_path = trim(t_step_dir)//
'/x_cb.dat'
601 inquire (file=trim(file_path), exist=file_exist)
604 open (2, file=trim(file_path), &
605 form=
'unformatted', &
608 read (2)
x_cb(-1:
m);
close (2)
610 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
627 file_path = trim(t_step_dir)//
'/y_cb.dat'
629 inquire (file=trim(file_path), exist=file_exist)
632 open (2, file=trim(file_path), &
633 form=
'unformatted', &
636 read (2)
y_cb(-1:
n);
close (2)
638 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
649 file_path = trim(t_step_dir)//
'/z_cb.dat'
651 inquire (file=trim(file_path), exist=file_exist)
654 open (2, file=trim(file_path), &
655 form=
'unformatted', &
658 read (2)
z_cb(-1:
p);
close (2)
660 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
669 write (file_path,
'(A,I0,A)') &
670 trim(t_step_dir)//
'/q_cons_vf',
i,
'.dat'
671 inquire (file=trim(file_path), exist=file_exist)
673 open (2, file=trim(file_path), &
674 form=
'unformatted', &
679 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
688 write (file_path,
'(A,I0,A)') &
689 trim(t_step_dir)//
'/pb',
sys_size + (
i - 1)*nnode +
r,
'.dat'
690 inquire (file=trim(file_path), exist=file_exist)
692 open (2, file=trim(file_path), &
693 form=
'unformatted', &
696 read (2)
pb_ts(1)%sf(0:
m, 0:
n, 0:
p,
r,
i);
close (2)
698 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
704 write (file_path,
'(A,I0,A)') &
705 trim(t_step_dir)//
'/mv',
sys_size + (
i - 1)*nnode +
r,
'.dat'
706 inquire (file=trim(file_path), exist=file_exist)
708 open (2, file=trim(file_path), &
709 form=
'unformatted', &
712 read (2)
mv_ts(1)%sf(0:
m, 0:
n, 0:
p,
r,
i);
close (2)
714 call s_mpi_abort(trim(file_path)//
' is missing. Exiting.')
728 dimension(sys_size), &
733 real(wp),
allocatable,
dimension(:) :: x_cb_glb, y_cb_glb, z_cb_glb
735 integer :: ifile, ierr, data_size
736 integer,
dimension(MPI_STATUS_SIZE) :: status
737 integer(KIND=MPI_OFFSET_KIND) :: disp
738 integer(KIND=MPI_OFFSET_KIND) :: m_mok, n_mok, p_mok
739 integer(KIND=MPI_OFFSET_KIND) :: wp_mok, var_mok, str_mok
740 integer(KIND=MPI_OFFSET_KIND) :: nvars_mok
741 integer(KIND=MPI_OFFSET_KIND) :: mok
743 character(LEN=path_len + 2*name_len) :: file_loc
744 logical :: file_exist
746 character(len=10) :: t_step_start_string
751 integer :: m_ds, n_ds, p_ds
752 integer :: m_glb_ds, n_glb_ds, p_glb_ds
753 integer :: m_glb_read, n_glb_read, p_glb_read
755 allocate (x_cb_glb(-1:
m_glb))
756 allocate (y_cb_glb(-1:
n_glb))
757 allocate (z_cb_glb(-1:
p_glb))
761 inquire (file=trim(file_loc), exist=file_exist)
764 m_ds = int((
m + 1)/3) - 1
765 n_ds = int((
n + 1)/3) - 1
766 p_ds = int((
p + 1)/3) - 1
768 m_glb_ds = int((
m_glb + 1)/3) - 1
769 n_glb_ds = int((
n_glb + 1)/3) - 1
770 p_glb_ds = int((
p_glb + 1)/3) - 1
774 data_size =
m_glb + 2
775 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
776 call mpi_file_read(ifile, x_cb_glb, data_size, mpi_p, status, ierr)
777 call mpi_file_close(ifile, ierr)
779 call s_mpi_abort(
'File '//trim(file_loc)//
' is missing. Exiting.')
801 inquire (file=trim(file_loc), exist=file_exist)
804 data_size =
n_glb + 2
805 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
806 call mpi_file_read(ifile, y_cb_glb, data_size, mpi_p, status, ierr)
807 call mpi_file_close(ifile, ierr)
809 call s_mpi_abort(
'File '//trim(file_loc)//
' is missing. Exiting.')
822 inquire (file=trim(file_loc), exist=file_exist)
825 data_size =
p_glb + 2
826 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
827 call mpi_file_read(ifile, z_cb_glb, data_size, mpi_p, status, ierr)
828 call mpi_file_close(ifile, ierr)
830 call s_mpi_abort(
'File '//trim(file_loc)//
'is missing. Exiting.')
851 file_loc = trim(
case_dir)//
'/restart_data/lustre_'//trim(t_step_start_string)//trim(
mpiiofs)//trim(file_loc)
852 inquire (file=trim(file_loc), exist=file_exist)
855 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
870 data_size = (m_ds + 3)*(n_ds + 3)*(p_ds + 3)
871 m_glb_read = m_glb_ds + 1
872 n_glb_read = n_glb_ds + 1
873 p_glb_read = p_glb_ds + 1
876 data_size = (
m + 1)*(
n + 1)*(
p + 1)
877 m_glb_read =
m_glb + 1
878 n_glb_read =
n_glb + 1
879 p_glb_read =
p_glb + 1
883 m_mok = int(m_glb_read + 1, mpi_offset_kind)
884 n_mok = int(m_glb_read + 1, mpi_offset_kind)
885 p_mok = int(m_glb_read + 1, mpi_offset_kind)
886 wp_mok = int(4._wp, mpi_offset_kind)
887 mok = int(1._wp, mpi_offset_kind)
888 str_mok = int(name_len, mpi_offset_kind)
889 nvars_mok = int(
sys_size, mpi_offset_kind)
894 var_mok = int(
i, mpi_offset_kind)
896 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
897 mpi_io_p, status, ierr)
902 var_mok = int(
i, mpi_offset_kind)
904 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
905 mpi_io_p, status, ierr)
911 var_mok = int(
i, mpi_offset_kind)
913 call mpi_file_read(ifile,
q_cons_temp(
i)%sf, data_size*mpi_io_type, &
914 mpi_io_p, status, ierr)
918 var_mok = int(
i, mpi_offset_kind)
920 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
921 mpi_io_p, status, ierr)
928 call mpi_file_close(ifile, ierr)
931 call s_mpi_abort(
'File '//trim(file_loc)//
' is missing. Exiting.')
936 write (file_loc,
'(I0,A)')
n_start,
'.dat'
940 file_loc = trim(
case_dir)//
'/restart_data'//trim(
mpiiofs)//trim(file_loc)
941 inquire (file=trim(file_loc), exist=file_exist)
944 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly,
mpi_info_int, ifile, ierr)
957 data_size = (
m + 1)*(
n + 1)*(
p + 1)
960 m_mok = int(
m_glb + 1, mpi_offset_kind)
961 n_mok = int(
n_glb + 1, mpi_offset_kind)
962 p_mok = int(
p_glb + 1, mpi_offset_kind)
963 wp_mok = int(8._wp, mpi_offset_kind)
964 mok = int(1._wp, mpi_offset_kind)
965 str_mok = int(name_len, mpi_offset_kind)
966 nvars_mok = int(
sys_size, mpi_offset_kind)
971 var_mok = int(
i, mpi_offset_kind)
973 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
975 call mpi_file_set_view(ifile, disp, mpi_io_p,
mpi_io_data%view(
i), &
977 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
978 mpi_io_p, status, ierr)
983 var_mok = int(
i, mpi_offset_kind)
985 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
987 call mpi_file_set_view(ifile, disp, mpi_io_p,
mpi_io_data%view(
i), &
989 call mpi_file_read(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
990 mpi_io_p, status, ierr)
995 var_mok = int(
i, mpi_offset_kind)
998 disp = m_mok*max(mok, n_mok)*max(mok, p_mok)*wp_mok*(var_mok - 1)
1000 call mpi_file_set_view(ifile, disp, mpi_io_p,
mpi_io_data%view(
i), &
1002 call mpi_file_read_all(ifile,
mpi_io_data%var(
i)%sf, data_size*mpi_io_type, &
1003 mpi_io_p, status, ierr)
1009 call mpi_file_close(ifile, ierr)
1012 call s_mpi_abort(
'File '//trim(file_loc)//
' is missing. Exiting.')
1017 deallocate (x_cb_glb, y_cb_glb, z_cb_glb)
1036 type(
scalar_field),
dimension(sys_size),
intent(inout) :: v_vf
1039 real(wp) :: dyn_pres
1043 real(wp),
dimension(2) :: re
1046 integer ::
i,
j,
k,
l,
c
1048 real(wp),
dimension(num_species) :: rhoyks
1050 real(wp) :: pres_mag
1064 dyn_pres = dyn_pres + 5.e-1_wp*v_vf(
i)%sf(
j,
k,
l)*v_vf(
i)%sf(
j,
k,
l) &
1069 do c = 1, num_species
1076 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)
1078 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)
1083 dyn_pres, pi_inf, gamma, rho, qv, rhoyks, pres, t, pres_mag=pres_mag)
1098 integer,
intent(inout) :: t_step
1099 real(wp),
intent(inout) :: time_avg
1111 print *,
"Delta t = ",
dt
1120# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1121#if defined(MFC_OpenACC)
1122# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1124# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1125#elif defined(MFC_OpenMP)
1126# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1128# 811 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1135# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1136#if defined(MFC_OpenACC)
1137# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1139# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1140#elif defined(MFC_OpenMP)
1141# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1143# 816 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1150 print
'(" [", I3, "%] Time ", ES16.6, " dt = ", ES16.6, " @ Time Step = ", I8, " Time Avg = ", ES16.6, " Time/step = ", ES12.6, "")', &
1160 print
'(" [", I3, "%] Time step ", I8, " of ", I0, " @ t_step = ", I8, " Time Avg = ", ES12.6, " Time/step= ", ES12.6, "")', &
1173# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1174#if defined(MFC_OpenACC)
1175# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1177# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1178#elif defined(MFC_OpenMP)
1179# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1181# 844 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1203 real(wp),
intent(inout) :: time_avg, time_final
1204 real(wp),
intent(inout) :: io_time_avg, io_time_final
1205 real(wp),
dimension(:),
intent(inout) :: proc_time
1206 real(wp),
dimension(:),
intent(inout) :: io_proc_time
1207 logical,
intent(inout) :: file_exists
1209 real(wp) :: grind_time
1221 io_time_final = 0._wp
1223 time_final = time_avg
1224 io_time_final = io_time_avg
1226 time_final = maxval(proc_time)
1227 io_time_final = maxval(io_proc_time)
1230 grind_time = time_final*1.0e9_wp/ &
1232 real(maxval((/1,
n_glb/)), wp)*
real(maxval((/1, p_glb/)), wp))
1234 print *,
"Performance:", grind_time,
"ns/gp/eq/rhs"
1235 inquire (file=
'time_data.dat', exist=file_exists)
1236 if (file_exists)
then
1237 open (1, file=
'time_data.dat', position=
'append', status=
'old')
1239 open (1, file=
'time_data.dat', status=
'new')
1240 write (1,
'(A10, A15, A15)')
"Ranks",
"s/step",
"ns/gp/eq/rhs"
1243 write (1,
'(I10, 2(F15.8))')
num_procs, time_final, grind_time
1247 inquire (file=
'io_time_data.dat', exist=file_exists)
1248 if (file_exists)
then
1249 open (1, file=
'io_time_data.dat', position=
'append', status=
'old')
1251 open (1, file=
'io_time_data.dat', status=
'new')
1252 write (1,
'(A10, A15)')
"Ranks",
"s/step"
1255 write (1,
'(I10, F15.8)')
num_procs, io_time_final
1264 integer,
intent(inout) :: t_step
1265 real(wp),
intent(inout) :: start, finish, io_time_avg
1266 integer,
intent(inout) :: nt
1268 integer(kind=8) ::
i,
j,
k,
l
1271 integer :: save_count
1281# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1283# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1284#if defined(MFC_OpenACC)
1285# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1287# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1288#elif defined(MFC_OpenMP)
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"
1299# 942 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1312# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1314# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1315#if defined(MFC_OpenACC)
1316# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1318# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1319#elif defined(MFC_OpenMP)
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"
1328# 953 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1333 call cpu_time(start)
1336#ifndef FRONTIER_UNIFIED
1338# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1339#if defined(MFC_OpenACC)
1340# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1342# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1343#elif defined(MFC_OpenMP)
1344# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1346# 961 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1353 print *,
"NaN(s) in timestep output.",
j,
k,
l,
i,
proc_rank, t_step,
m,
n,
p
1363# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1364#if defined(MFC_OpenACC)
1365# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1367# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1368#elif defined(MFC_OpenMP)
1369# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1371# 976 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1374# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1375#if defined(MFC_OpenACC)
1376# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1378# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1379#elif defined(MFC_OpenMP)
1380# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1382# 977 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1394# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1395#if defined(MFC_OpenACC)
1396# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1398# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1399#elif defined(MFC_OpenMP)
1400# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1402# 987 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1404# 990 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1407 call s_mpi_abort(
"Bubble radius is negative or NaN, please reduce dt.")
1412# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1413#if defined(MFC_OpenACC)
1414# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1416# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1417#elif defined(MFC_OpenMP)
1418# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1420# 996 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1424# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1425#if defined(MFC_OpenACC)
1426# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1428# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1429#elif defined(MFC_OpenMP)
1430# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1432# 998 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1441 call cpu_time(finish)
1449 io_time_avg = abs(finish - start)
1451 io_time_avg = (abs(finish - start) + io_time_avg*(nt - 1))/nt
1459 integer :: m_ds, n_ds, p_ds
1460 integer ::
i,
j,
k,
l, x_id, y_id, z_id, ix, iy, iz
1461 real(wp) :: temp1, temp2, temp3, temp4
1464# 1035 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1498 m_ds = int((
m + 1)/3) - 1
1499 n_ds = int((
n + 1)/3) - 1
1500 p_ds = int((
p + 1)/3) - 1
1504 allocate (
q_cons_temp(
i)%sf(-1:m_ds + 1, -1:n_ds + 1, -1:p_ds + 1))
1514# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1515#if defined(MFC_OpenACC)
1516# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1518# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1519#elif defined(MFC_OpenMP)
1520# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1522# 1083 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1575 real(wp) :: starttime, endtime
1576 integer :: num_devices, local_size, num_nodes, ppn, my_device_num
1577 integer :: dev, devnum, local_rank
1579 integer :: local_comm
1581#if defined(MFC_OpenACC)
1582 integer(acc_device_kind) :: devtype
1596 call mpi_comm_split_type(mpi_comm_world, mpi_comm_type_shared, 0, &
1597 mpi_info_null, local_comm, ierr)
1598 call mpi_comm_size(local_comm, local_size, ierr)
1599 call mpi_comm_rank(local_comm, local_rank, ierr)
1601#if defined(MFC_OpenACC)
1602 devtype = acc_get_device_type()
1603 devnum = acc_get_num_devices(devtype)
1604 dev = mod(local_rank, devnum)
1606 call acc_set_device_num(dev, devtype)
1607#elif defined(MFC_OpenMP)
1608 devnum = omp_get_num_devices()
1609 dev = mod(local_rank, devnum)
1610 call omp_set_default_device(dev)
1623 print
'(" Simulating a ", A, " ", I0, "x", I0, "x", I0, " case on ", I0, " rank(s) ", A, ".")', &
1624# 1185 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1626# 1189 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1628#if defined(MFC_OpenACC)
1629 "with OpenACC offloading"
1630#elif defined(MFC_OpenMP)
1631 "with OpenMP offloading"
1656# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1657#if defined(MFC_OpenACC)
1658# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1660# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1661#elif defined(MFC_OpenMP)
1662# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1664# 1217 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1671# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1672#if defined(MFC_OpenACC)
1673# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1675# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1676#elif defined(MFC_OpenMP)
1677# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1679# 1222 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1684# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1685#if defined(MFC_OpenACC)
1686# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1688# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1689#elif defined(MFC_OpenMP)
1690# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1692# 1225 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1697# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1698#if defined(MFC_OpenACC)
1699# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1701# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1702#elif defined(MFC_OpenMP)
1703# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1705# 1228 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1709# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1710#if defined(MFC_OpenACC)
1711# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1713# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1714#elif defined(MFC_OpenMP)
1715# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1717# 1230 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1719# 1236 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1723# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1724#if defined(MFC_OpenACC)
1725# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1727# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1728#elif defined(MFC_OpenMP)
1729# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1731# 1238 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1735# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1736#if defined(MFC_OpenACC)
1737# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1739# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1740#elif defined(MFC_OpenMP)
1741# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1743# 1240 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1745# 1242 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1748# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1749#if defined(MFC_OpenACC)
1750# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1752# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1753#elif defined(MFC_OpenMP)
1754# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1756# 1243 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1762# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1763#if defined(MFC_OpenACC)
1764# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1766# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1767#elif defined(MFC_OpenMP)
1768# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1770# 1247 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1774# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1775#if defined(MFC_OpenACC)
1776# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1778# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1779#elif defined(MFC_OpenMP)
1780# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1782# 1249 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1785# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1786#if defined(MFC_OpenACC)
1787# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1789# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1790#elif defined(MFC_OpenMP)
1791# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1793# 1250 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1797# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1798#if defined(MFC_OpenACC)
1799# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1801# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1802#elif defined(MFC_OpenMP)
1803# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1805# 1252 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1808# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1809#if defined(MFC_OpenACC)
1810# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1812# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1813#elif defined(MFC_OpenMP)
1814# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1816# 1253 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1819# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1820#if defined(MFC_OpenACC)
1821# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1823# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1824#elif defined(MFC_OpenMP)
1825# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1827# 1254 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1830# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1831#if defined(MFC_OpenACC)
1832# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1834# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1835#elif defined(MFC_OpenMP)
1836# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1838# 1255 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1842# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1843#if defined(MFC_OpenACC)
1844# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1846# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1847#elif defined(MFC_OpenMP)
1848# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1850# 1257 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1853# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1854#if defined(MFC_OpenACC)
1855# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1857# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1858#elif defined(MFC_OpenMP)
1859# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1861# 1258 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1864# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1865#if defined(MFC_OpenACC)
1866# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1868# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1869#elif defined(MFC_OpenMP)
1870# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1872# 1259 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1876# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1877#if defined(MFC_OpenACC)
1878# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1880# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1881#elif defined(MFC_OpenMP)
1882# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1884# 1261 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1888# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1889#if defined(MFC_OpenACC)
1890# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1892# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1893#elif defined(MFC_OpenMP)
1894# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1896# 1263 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1902# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1903#if defined(MFC_OpenACC)
1904# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1906# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1907#elif defined(MFC_OpenMP)
1908# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1910# 1267 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1913# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1915# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1916#if defined(MFC_OpenACC)
1917# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1919# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1920#elif defined(MFC_OpenMP)
1921# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1923# 1270 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1925# 1272 "/home/runner/work/MFC/MFC/src/simulation/m_start_up.fpp"
1926# 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).