1# 1 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
2# 1 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 1
3# 1 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 1
4# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
5# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
6# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
7# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
8# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
9# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
11# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
12# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
13# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
15# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
19# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
30# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
31# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
32# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
34# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
36# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
38# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
58# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
59# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
60# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
61# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
62# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
64# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
66# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
68# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
70# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 76 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 151 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 192 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 206 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 231 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 242 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 244 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
109# 255 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
111# 284 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
113# 294 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
115# 304 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
117# 313 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
119# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 340 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 347 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 353 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 359 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 365 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 371 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 377 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
136# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
137# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
138# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
139# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
140# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
141# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
142# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
144# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
145# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
146# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
148# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
150# 46 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 58 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 68 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 98 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 110 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 120 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
164# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
166# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
168# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
170# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
172# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
174# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
176# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
178# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
180# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
182# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
223# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
226# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
229# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
232# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
235# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
238# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
241# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
279# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
280# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
282# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
284# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
289# 57 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
292# 77 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
295# 85 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
298# 109 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
301# 125 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
304# 150 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
306# 156 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
308# 163 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
310# 2 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp" 2
320 use,
intrinsic :: iso_c_binding
335 use m_thermochem,
only: num_species, species_names
350 real(wp),
allocatable,
dimension(:,:,:) ::
en_real
351 real(wp),
allocatable,
dimension(:) ::
en
366 character(LEN=name_len) :: file_loc
367 logical :: file_check
369 character(len=1000) :: line
371 namelist /user_inputs/
case_dir,
m,
n,
p,
t_step_start,
t_step_stop,
t_step_save,
model_eqns,
num_fluids,
mpp_lim, &
372 &
weno_order,
bc_x,
bc_y,
bc_z,
fluid_pp,
bub_pp,
format,
precision,
output_partial_domain,
x_output,
y_output, &
373 &
z_output,
hypoelasticity,
g,
mhd,
chem_wrt_y,
chem_wrt_t,
avg_state,
alpha_rho_wrt,
rho_wrt,
mom_wrt,
vel_wrt, &
376 &
alt_soundspeed,
flux_lim,
flux_wrt,
cyl_coord,
parallel_io,
rhoref,
pref,
bubbles_euler,
qbmm,
sigr,
r0ref,
nb, &
377 &
polytropic,
thermal,
ca,
web,
re_inv,
polydisperse,
poly_sigma,
file_per_process,
relax,
relax_model,
cf_wrt, &
378 &
sigma,
adv_n,
ib,
num_ibs,
cfl_adap_dt,
cfl_const_dt,
t_save,
t_stop,
n_start,
cfl_target,
surface_tension, &
384 file_loc =
'post_process.inp'
385 inquire (file=trim(file_loc), exist=file_check)
388 open (1, file=trim(file_loc), form=
'formatted', status=
'old', action=
'read')
389 read (1, nml=user_inputs, iostat=iostatus)
391 if (iostatus /= 0)
then
393 read (1, fmt=
'(A)') line
394 print *,
'Invalid line in namelist: ' // trim(line)
395 call s_mpi_abort(
'Invalid line in post_process.inp. It is ' //
'likely due to a datatype mismatch. Exiting.')
403 m = int((
m + 1)/3) - 1
404 n = int((
n + 1)/3) - 1
405 p = int((
p + 1)/3) - 1
420 call s_mpi_abort(
'File post_process.inp is missing. Exiting.')
429 character(LEN=len_trim(case_dir)) :: file_loc
438 if (dir_check .neqv. .true.)
then
439 call s_mpi_abort(
'Unsupported choice for the value of ' //
'case_dir. Exiting.')
450 integer,
intent(inout) :: t_step
454 print
'(" [", I3, "%] Saving ", I8, " of ", I0, " Time Avg = ", ES16.6, " Time/step = ", ES12.6, "")', &
457 print
'(" [", I3, "%] Saving ", I8, " of ", I0, " @ t_step = ", I8, " Time Avg = ", ES16.6, " Time/step = ", ES12.6, "")', &
480 integer,
intent(inout) :: t_step
481 character(LEN=name_len),
intent(inout) :: varname
482 real(wp),
intent(inout) :: pres, c, h
483 real(wp) :: theta1, theta2
485 real(wp),
dimension(-offset_x%beg:m + offset_x%end,-offset_y%beg:n + offset_y%end, &
& -offset_z%beg:p + offset_z%end) :: liutex_mag
486 real(wp),
dimension(-offset_x%beg:m + offset_x%end,-offset_y%beg:n + offset_y%end,-offset_z%beg:p + offset_z%end, &
& 3) :: liutex_axis
487 integer :: i,
j,
k,
l, kx, ky, kz, kf, j_glb, k_glb, l_glb
489 character(50) :: filename, dirname
490 logical :: file_exists, dir_exists
491 integer :: x_beg, x_end, y_beg, y_end, z_beg, z_end
539 q_sf(:,:,:) =
q_cons_vf(i)%sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
541 write (varname,
'(A,I0)')
'alpha_rho', i
543 write (varname,
'(A,I0)')
'rho', i
553 q_sf(:,:,:) =
rho_sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
554 write (varname,
'(A)')
'rho'
561 q_sf(:,:,:) =
q_prim_vf(1)%sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
562 write (varname,
'(A)')
'rho'
570 q_sf(:,:,:) =
q_cons_vf(1)%sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
571 write (varname,
'(A)')
'D'
580 write (varname,
'(A,I0)')
'mom', i
590 write (varname,
'(A,I0)')
'vel', i
598 do i = 1, num_species
601 write (varname,
'(A,A)')
'Y_', trim(species_names(i))
609 q_sf(:,:,:) =
q_t_sf%sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
610 write (varname,
'(A)')
'T'
621 write (varname,
'(A,I0)')
'flux', i
630 write (varname,
'(A)')
'E'
640 write (varname,
'(A,I0)')
'alpha_rho_e', i
698 if (j_glb >= (
m_glb + 1)/2)
then
699 kx = (j_glb - 1) - (
m_glb + 1)
704 if (k_glb >= (
n_glb + 1)/2)
then
705 ky = (k_glb - 1) - (
n_glb + 1)
710 if (l_glb >= (
p_glb + 1)/2)
then
711 kz = (l_glb - 1) - (
p_glb + 1)
716 kf = nint(sqrt(kx**2._wp + ky**2._wp + kz**2._wp)) + 1
724 call mpi_allreduce(mpi_in_place,
en,
nf, mpi_p, mpi_sum, mpi_comm_world,
ierr)
729 write (filename,
'(a,i0,a)')
'En_FFT_DATA/En_tot', t_step,
'.dat'
730 inquire (file=filename, exist=file_exists)
731 if (file_exists)
then
738 write (filename,
'(a,i0,a)')
'En_FFT_DATA/En_tot', t_step,
'.dat'
739 inquire (file=filename, exist=file_exists)
740 if (file_exists)
then
741 open (1, file=filename, position=
'append', status=
'old')
742 write (1, *)
en(kf), t_step
745 open (1, file=filename, status=
'new')
746 write (1, *)
en(kf), t_step
755 q_sf(:,:,:) =
q_prim_vf(i)%sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
759 if (i ==
b_idx%beg)
then
760 write (varname,
'(A)')
'By'
762 write (varname,
'(A)')
'Bz'
766 if (i ==
b_idx%beg)
then
767 write (varname,
'(A)')
'Bx'
768 else if (i ==
b_idx%beg + 1)
then
769 write (varname,
'(A)')
'By'
771 write (varname,
'(A)')
'Bz'
784 write (varname,
'(A,I0)')
'tau', i
795 write (varname,
'(A,I0)')
'xi', i
804 write (varname,
'(A)')
'damage_state'
812 write (varname,
'(A)')
'psi'
820 write (varname,
'(A)')
'pres'
830 write (varname,
'(A,I0)')
'alpha', i
860 q_sf(:,:,:) =
gamma_sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
861 write (varname,
'(A)')
'gamma'
870 write (varname,
'(A)')
'heat_ratio'
878 write (varname,
'(A)')
'pi_inf'
887 write (varname,
'(A)')
'pres_inf'
905 call s_compute_speed_of_sound(pres,
rho_sf(i,
j,
k),
gamma_sf(i,
j,
k),
pi_inf_sf(i,
j,
k), h,
adv, &
906 & 0._wp, 0._wp, c,
qv_sf(i,
j,
k))
913 write (varname,
'(A)')
'c'
923 write (varname,
'(A,I0)')
'omega', i
933 varname =
'ib_markers'
940 write (varname,
'(A)')
'qm'
951 write (varname,
'(A)')
'liutex_mag'
957 q_sf = liutex_axis(:,:,:,i)
959 write (varname,
'(A,I0)')
'liutex_axis', i
969 write (varname,
'(A)')
'schlieren'
977 write (varname,
'(A,I0)')
'color_function'
984 q_sf(:,:,:) =
q_cons_vf(i)%sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
985 write (varname,
'(A,I0)')
'alpha', i -
e_idx
995 write (varname,
'(A,I3.3)')
'nR', i
1003 write (varname,
'(A,I3.3)')
'nV', i
1011 write (varname,
'(A,I3.3)')
'nP', i
1019 write (varname,
'(A,I3.3)')
'nM', i
1028 write (varname,
'(A)')
'n'
1038 write (varname,
'(A)')
'voidFraction'
1058 complex(c_double_complex),
allocatable :: sendbuf(:), recvbuf(:)
1059 integer :: dest_rank, src_rank
1060 integer :: i, j, k, l
1071 & + dest_rank*
nxloc, k, l)
1091 deallocate (sendbuf)
1092 deallocate (recvbuf)
1100 complex(c_double_complex),
allocatable :: sendbuf(:), recvbuf(:)
1101 integer :: dest_rank, src_rank
1113 & k + dest_rank*
nyloc2, l)
1134 deallocate (sendbuf)
1135 deallocate (recvbuf)
1143 integer :: size_n(1), inembed(1), onembed(1)
1183# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1185# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1186 use iso_fortran_env,
only: output_unit
1187# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1189# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1190 print *,
'm_start_up.fpp:875: ',
'@:ALLOCATE(data_in(Nx*Nyloc*Nzloc))'
1191# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1193# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1194 call flush (output_unit)
1195# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1197# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1199# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1201# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1203# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1205# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1206#if defined(MFC_OpenACC)
1207# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1209# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1210#elif defined(MFC_OpenMP)
1211# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1213# 875 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1216# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1218# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1219 use iso_fortran_env,
only: output_unit
1220# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1222# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1223 print *,
'm_start_up.fpp:876: ',
'@:ALLOCATE(data_out(Nx*Nyloc*Nzloc))'
1224# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1226# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1227 call flush (output_unit)
1228# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1230# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1232# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1234# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1236# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1238# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1239#if defined(MFC_OpenACC)
1240# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1242# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1243#elif defined(MFC_OpenMP)
1244# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1246# 876 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1250# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1252# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1253 use iso_fortran_env,
only: output_unit
1254# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1256# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1257 print *,
'm_start_up.fpp:878: ',
'@:ALLOCATE(data_cmplx(Nx, Nyloc, Nzloc))'
1258# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1260# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1261 call flush (output_unit)
1262# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1264# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1266# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1268# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1270# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1272# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1273#if defined(MFC_OpenACC)
1274# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1276# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1277#elif defined(MFC_OpenMP)
1278# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1280# 878 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1283# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1285# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1286 use iso_fortran_env,
only: output_unit
1287# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1289# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1290 print *,
'm_start_up.fpp:879: ',
'@:ALLOCATE(data_cmplx_y(Nxloc, Ny, Nzloc))'
1291# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1293# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1294 call flush (output_unit)
1295# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1297# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1299# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1301# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1303# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1305# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1306#if defined(MFC_OpenACC)
1307# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1309# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1310#elif defined(MFC_OpenMP)
1311# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1313# 879 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1316# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1318# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1319 use iso_fortran_env,
only: output_unit
1320# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1322# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1323 print *,
'm_start_up.fpp:880: ',
'@:ALLOCATE(data_cmplx_z(Nxloc, Nyloc2, Nz))'
1324# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1326# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1327 call flush (output_unit)
1328# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1330# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1332# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1334# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1336# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1338# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1339#if defined(MFC_OpenACC)
1340# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1342# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1343#elif defined(MFC_OpenMP)
1344# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1346# 880 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1350# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1352# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1353 use iso_fortran_env,
only: output_unit
1354# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1356# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1357 print *,
'm_start_up.fpp:882: ',
'@:ALLOCATE(En_real(Nxloc, Nyloc2, Nz))'
1358# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1360# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1361 call flush (output_unit)
1362# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1364# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1366# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1368# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1370# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1372# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1373#if defined(MFC_OpenACC)
1374# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1376# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1377#elif defined(MFC_OpenMP)
1378# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1380# 882 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1383# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1385# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1386 use iso_fortran_env,
only: output_unit
1387# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1389# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1390 print *,
'm_start_up.fpp:883: ',
'@:ALLOCATE(En(Nf))'
1391# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1393# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1394 call flush (output_unit)
1395# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1397# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1399# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1401# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1403# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1405# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1406#if defined(MFC_OpenACC)
1407# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1409# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1410#elif defined(MFC_OpenMP)
1411# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1413# 883 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1420 fwd_plan_x = fftw_plan_many_dft(1, size_n,
nyloc*
nzloc,
data_in, inembed, 1,
nx,
data_out, onembed, 1,
nx, &
1421 & fftw_forward, fftw_measure)
1427 fwd_plan_y = fftw_plan_many_dft(1, size_n,
nxloc*
nzloc,
data_out, inembed, 1,
ny,
data_in, onembed, 1,
ny, &
1428 & fftw_forward, fftw_measure)
1434 fwd_plan_z = fftw_plan_many_dft(1, size_n,
nxloc*
nyloc2,
data_in, inembed, 1,
nz,
data_out, onembed, 1,
nz, &
1435 & fftw_forward, fftw_measure)
1523 num_dims = 1 + min(1, n) + min(1, p)
1525 call s_mpi_initialize()
1527 if (proc_rank == 0)
then
1528 call s_assign_default_values_to_user_inputs()
1532 print
'(" Post-processing a ", I0, "x", I0, "x", I0, " case on ", I0, " rank(s)")', m, n, p, num_procs
1535 call s_mpi_bcast_user_inputs()
1536 call s_initialize_parallel_io()
1537 call s_mpi_decompose_computational_domain()
1538 call s_check_inputs_fft()
1545 s_read_data_files => null()
1557 if (
allocated(
en))
deallocate (
en)
1569 call s_finalize_data_output_module()
1570 call s_finalize_derived_variables_module()
1571 call s_finalize_data_input_module()
1572 call s_finalize_variables_conversion_module()
1573 if (num_procs > 1)
then
1574 call s_finalize_mpi_proxy_module()
1575 call s_finalize_mpi_common_module()
1577 call s_finalize_global_parameters_module()
1579 call s_mpi_finalize()
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
impure subroutine, public s_initialize_boundary_common_module()
Allocate and set up boundary condition buffer arrays for all coordinate directions.
impure subroutine, public s_populate_variables_buffers(bc_type, q_prim_vf, pb_in, mv_in)
Populate the buffers of the primitive variables based on the selected boundary conditions.
subroutine, public s_populate_grid_variables_buffers
Populate the buffers of the grid variables, which are constituted of the cell-boundary locations and ...
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 post-process input parameters and output format consistency.
impure subroutine, public s_check_inputs
Checks compatibility of parameters in the input file. Used by the post_process stage.
Multi-species chemistry interface for thermodynamic properties, reaction rates, and transport coeffic...
subroutine s_compute_q_t_sf(q_t_sf, q_cons_vf, bounds)
Initialize the temperature field from conservative variables by inverting the energy equation.
Platform-specific file and directory operations: create, delete, inquire, getcwd, and basename.
impure subroutine s_delete_file(filepath)
Delete a file at the given path using a platform-specific system command.
impure subroutine my_inquire(fileloc, dircheck)
Inquires on the existence of a directory.
impure subroutine s_create_directory(dir_name)
Create a directory and all its parents if it does not exist.
Writes post-processed grid and flow-variable data to Silo-HDF5 or binary database files.
impure subroutine, public s_write_grid_to_formatted_database_file(t_step)
Write the computational grid (cell-boundary coordinates) to the formatted database slave and master f...
impure subroutine, public s_write_variable_to_formatted_database_file(varname, t_step)
Write a single flow variable field to the formatted database slave and master files for a given time ...
impure subroutine, public s_open_energy_data_file()
Open the energy data file for appending volume-integrated energy budget quantities.
impure subroutine, public s_open_intf_data_file()
Open the interface data file for appending extracted interface coordinates.
impure subroutine, public s_write_energy_data_file(q_prim_vf, q_cons_vf)
Compute volume-integrated kinetic, potential, and internal energies and write the energy budget to th...
impure subroutine, public s_write_lag_bubbles_to_formatted_database_file(t_step)
Read Lagrangian bubble restart data and write bubble positions and scalar fields to the Silo database...
impure subroutine, public s_write_intf_data_file(q_prim_vf)
Extract the volume-fraction interface contour from primitive fields and write the coordinates to the ...
impure subroutine, public s_initialize_data_output_module()
Allocate storage arrays, configure output directories, and count flow variables for formatted databas...
real(wp), dimension(:,:,:), allocatable, public q_sf
impure subroutine, public s_close_energy_data_file()
Close the energy data file.
impure subroutine, public s_close_formatted_database_file()
Close the formatted database slave file and, for the root process, the master file.
impure subroutine, public s_open_formatted_database_file(t_step)
Open (or create) the Silo-HDF5 or Binary formatted database slave and master files for a given time s...
impure subroutine, public s_close_intf_data_file()
Close the interface data file.
impure subroutine, public s_write_lag_bubbles_results_to_text(t_step)
Write the post-processed results in the folder 'lag_bubbles_data'.
impure subroutine, public s_define_output_region
Compute the cell-index bounds for the user-specified partial output domain in each coordinate directi...
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Computes derived flow quantities (sound speed, vorticity, Schlieren, etc.) from conservative and prim...
impure subroutine, public s_derive_liutex(q_prim_vf, liutex_mag, liutex_axis)
Compute the Liutex vector and its magnitude based on Xu et al. (2019).
subroutine, public s_derive_specific_heat_ratio(q_sf)
Derive the specific heat ratio from the specific heat ratio function gamma_sf. The latter is stored i...
subroutine, public s_derive_liquid_stiffness(q_sf)
Compute the liquid stiffness from the specific heat ratio function gamma_sf and the liquid stiffness ...
real(wp), dimension(:,:), allocatable, public fd_coeff_z
real(wp), dimension(:,:), allocatable, public fd_coeff_x
impure subroutine, public s_initialize_derived_variables_module
Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
real(wp), dimension(:,:), allocatable, public fd_coeff_y
subroutine, public s_derive_vorticity_component(i, q_prim_vf, q_sf)
Compute the specified component of the vorticity from the primitive variables. From those inputs,...
impure subroutine, public s_derive_numerical_schlieren_function(q_cons_vf, q_sf)
Compute the values of the numerical Schlieren function, which are subsequently stored in the derived ...
subroutine, public s_derive_flux_limiter(i, q_prim_vf, q_sf)
Derive the flux limiter at cell boundary i+1/2. This is an approximation because the velocity used to...
subroutine, public s_derive_qm(q_prim_vf, q_sf)
Compute the Q_M criterion from the primitive variables. The Q_M function, which are subsequently stor...
Finite difference operators for computing divergence of velocity fields.
subroutine s_compute_finite_difference_coefficients(q, s_cc, fd_coeff_s, local_buff_size, fd_number_in, fd_order_in, offset_s)
Compute the centered finite-difference coefficients for first-order spatial derivatives in the s-coor...
Global parameters for the post-process: domain geometry, equation of state, and output database setti...
logical cont_damage
Continuum damage modeling.
logical hypoelasticity
Turn hypoelasticity on.
integer thermal
1 = adiabatic, 2 = isotherm, 3 = transfer
integer avg_state
Average state evaluation method.
integer recon_type
Which type of reconstruction to use.
logical, parameter chemistry
Chemistry modeling.
integer beta_idx
Index of lagrange bubbles beta.
type(int_bounds_info) offset_y
type(int_bounds_info) mom_idx
Indexes of first & last momentum eqns.
real(wp), dimension(num_fluids_max) schlieren_alpha
Per-fluid Schlieren intensity amplitude coefficients.
type(int_bounds_info) bc_z
integer num_fluids
Number of different fluids present in the flow.
logical, dimension(3) flux_wrt
real(wp), dimension(:), allocatable y_cc
type(int_bounds_info) stress_idx
Indices of elastic stresses.
integer proc_rank
Rank of the local processor.
logical mixture_err
Mixture error limiter.
logical output_partial_domain
Specify portion of domain to output for post-processing.
real(wp), dimension(:), allocatable adv
Advection variables.
integer n_idx
Index of number density.
type(int_bounds_info) z_output_idx
Indices of domain to output for post-processing.
type(bounds_info) x_output
integer muscl_order
Order of accuracy for the MUSCL reconstruction.
logical alt_soundspeed
Alternate sound speed.
integer relax_model
Phase change relaxation model.
logical, dimension(3) mom_wrt
type(int_bounds_info) cont_idx
Indexes of first & last continuity eqns.
integer fd_number
Finite-difference half-stencil size: MAX(1, fd_order/2).
logical, dimension(num_fluids_max) alpha_wrt
logical, dimension(num_fluids_max) alpha_rho_wrt
type(int_bounds_info) b_idx
Indexes of first and last magnetic field eqns.
logical, dimension(num_fluids_max) alpha_rho_e_wrt
type(int_bounds_info), dimension(1:3) idwbuff
integer model_eqns
Multicomponent flow model.
integer buff_size
Number of ghost cells for boundary condition storage.
integer precision
Floating point precision of the database file(s).
logical hyperelasticity
Turn hyperelasticity on.
type(physical_parameters), dimension(num_fluids_max) fluid_pp
Stiffened gas EOS parameters and Reynolds numbers per fluid.
type(bounds_info) z_output
Portion of domain to output for post-processing.
type(int_bounds_info) bc_y
type(int_bounds_info) x_output_idx
impure subroutine s_initialize_global_parameters_module
Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
real(wp), dimension(:), allocatable x_cc
integer fd_order
Finite-difference order for vorticity and Schlieren derivatives.
type(int_bounds_info) bc_x
logical relax
phase change
integer t_step_save
Interval between consecutive time-step directory.
type(int_bounds_info) offset_x
type(bub_bounds_info) bub_idx
Indexes of first & last bubble variable eqns.
integer damage_idx
Index of damage state variable (D) for continuum damage model.
logical hyper_cleaning
Hyperbolic cleaning for MHD.
real(wp), dimension(:), allocatable z_cc
real(wp) bx0
Constant magnetic field in the x-direction (1D).
logical, dimension(3) omega_wrt
integer num_procs
Number of processors.
character(len=path_len) case_dir
Case folder location.
type(int_bounds_info) y_output_idx
type(int_bounds_info) adv_idx
Indexes of first & last advection eqns.
integer weno_order
Order of accuracy for the WENO reconstruction.
type(int_bounds_info) offset_z
logical mhd
Magnetohydrodynamics.
logical parallel_io
Format of the data files.
integer e_idx
Index of energy equation.
type(cell_num_bounds) cells_bounds
logical down_sample
down sampling of the database file(s)
logical file_per_process
output format
integer t_step_start
First time-step directory.
real(wp) wall_time_avg
Wall time measurements.
logical elasticity
elasticity modeling, true for hyper or hypo
integer c_idx
Index of color function.
logical mpp_lim
Maximum volume fraction limiter.
integer igr_order
IGR reconstruction order.
integer psi_idx
Index of hyperbolic cleaning state variable for MHD.
logical, dimension(3) vel_wrt
type(subgrid_bubble_physical_parameters) bub_pp
logical, dimension(1:num_species) chem_wrt_y
logical relativity
Relativity for RMHD.
integer num_ibs
Number of immersed boundaries.
integer(kind=8) nglobal
Total number of cells in global domain.
integer t_step_stop
Last time-step directory.
type(bounds_info) y_output
Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions...
impure subroutine, public s_initialize_bubbles_model()
Initialize bubble model arrays for Euler or Lagrangian bubbles with polytropic or non-polytropic gas.
MPI communication layer: domain decomposition, halo exchange, reductions, and parallel I/O setup.
impure subroutine s_mpi_abort(prnt, code)
The subroutine terminates the MPI execution environment.
impure subroutine s_initialize_mpi_common_module
Initialize the module.
MPI gather and scatter operations for distributing post-process grid and flow-variable data.
impure subroutine s_initialize_mpi_proxy_module
Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
Reads and validates user inputs, allocates variables, and configures MPI decomposition and I/O for po...
impure subroutine s_save_data(t_step, varname, pres, c, h)
Derive requested flow quantities from primitive variables and write them to the formatted database fi...
impure subroutine s_check_input_file
Checking that the user inputs make sense, i.e. that the individual choices are compatible with the co...
real(wp), dimension(:), allocatable en
complex(c_double_complex), dimension(:,:,:), allocatable data_cmplx_y
subroutine s_mpi_fft_fwd
Perform a distributed forward 3-D FFT using pencil decomposition with FFTW and MPI transposes.
impure subroutine s_initialize_mpi_domain
Set up the MPI environment, read and broadcast user inputs, and decompose the computational domain.
complex(c_double_complex), dimension(:,:,:), allocatable data_cmplx_z
impure subroutine s_read_input_file
Reads the configuration file post_process.inp, in order to populate parameters in module m_global_par...
complex(c_double_complex), dimension(:), allocatable data_out
integer, dimension(2) cart2d13_coords
real(wp), dimension(:,:,:), allocatable en_real
complex(c_double_complex), dimension(:), allocatable data_in
integer, dimension(3) cart3d_coords
impure subroutine s_perform_time_step(t_step)
Load grid and conservative data for a time step, fill ghost-cell buffers, and convert to primitive va...
complex(c_double_complex), dimension(:,:,:), allocatable data_cmplx
subroutine s_mpi_transpose_x2y
Transpose 3-D complex data from x-pencil to y-pencil layout via MPI_Alltoall.
impure subroutine s_finalize_modules
Destroy FFTW plans, free MPI communicators, and finalize all post-process sub-modules.
subroutine s_mpi_transpose_y2z
Transpose 3-D complex data from y-pencil to z-pencil layout via MPI_Alltoall.
impure subroutine s_initialize_modules
Initialize all post-process sub-modules, set up I/O pointers, and prepare FFTW plans and MPI communic...
integer, dimension(2) cart2d12_coords
Conservative-to-primitive variable conversion, mixture property evaluation, and pressure computation.
subroutine s_compute_speed_of_sound(pres, rho, gamma, pi_inf, h, adv, vel_sum, c_c, c, qv)
Compute the speed of sound from thermodynamic state variables, supporting multiple equation-of-state ...
subroutine, public s_convert_conservative_to_primitive_variables(qk_cons_vf, q_t_sf, qk_prim_vf, ibounds)
Convert conserved variables (rho*alpha, rho*u, E, alpha) to primitives (rho, u, p,...
impure subroutine, public s_initialize_variables_conversion_module
Initialize the variables conversion module.
real(wp), dimension(:,:,:), allocatable, public qv_sf
Scalar liquid energy reference function.
real(wp), dimension(:,:,:), allocatable, public pi_inf_sf
Scalar liquid stiffness function.
real(wp), dimension(:,:,:), allocatable, public gamma_sf
Scalar sp. heat ratio function.
real(wp), dimension(:,:,:), allocatable, public rho_sf
Scalar density function.