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# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
16# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
17# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
19# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
21# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
23# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
25# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
27# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
29# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
31# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
33# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
35# 2 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
36# 1 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 1
37# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
38# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
39# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
40# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
41# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
42# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
44# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
45# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
46# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
48# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
49# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
50# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
52# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
54# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
56# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
58# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
60# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
62# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
64# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
66# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
68# 2 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp" 2
70# 4 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
71# 5 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
72# 6 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
73# 7 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
74# 8 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
76# 20 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
78# 43 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
80# 48 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
82# 53 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
84# 58 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
86# 63 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
88# 68 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
90# 81 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
92# 86 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
94# 91 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
96# 96 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
98# 101 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
100# 106 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
102# 111 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
104# 116 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
106# 121 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
108# 126 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
110# 156 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
112# 197 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
114# 211 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
116# 236 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
118# 247 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
120# 249 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
121# 260 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
123# 310 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
125# 320 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
127# 330 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
129# 339 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
131# 356 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
133# 366 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
135# 373 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
137# 379 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
139# 385 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
141# 391 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
143# 397 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
145# 403 "/home/runner/work/MFC/MFC/src/common/include/omp_macros.fpp"
147# 3 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
148# 1 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 1
149# 1 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp" 1
150# 2 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
151# 3 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
152# 4 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
153# 5 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
154# 6 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
156# 8 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
157# 9 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
158# 10 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
160# 15 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
161# 16 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
162# 17 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
164# 24 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
166# 53 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
168# 65 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
170# 75 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
172# 105 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
174# 117 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
176# 127 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
178# 174 "/home/runner/work/MFC/MFC/src/common/include/shared_parallel_macros.fpp"
180# 2 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp" 2
182# 7 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
184# 17 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
186# 22 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
188# 27 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
190# 32 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
192# 37 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
194# 42 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
196# 47 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
198# 52 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
200# 57 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
202# 62 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
204# 73 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
206# 78 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
208# 83 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
210# 88 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
212# 103 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
214# 131 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
216# 160 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
218# 175 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
220# 193 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
222# 215 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
224# 244 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
226# 259 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
228# 269 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
230# 278 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
232# 294 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
234# 304 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
236# 311 "/home/runner/work/MFC/MFC/src/common/include/acc_macros.fpp"
238# 4 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp" 2
241# 23 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
244# 43 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
247# 55 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
250# 112 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
253# 130 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
256# 145 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
259# 164 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
262# 193 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
265# 207 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
268# 219 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
271# 231 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
274# 242 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
277# 254 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
280# 266 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
283# 275 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
286# 282 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
289# 289 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
292# 296 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
295# 303 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
297# 305 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
298# 306 "/home/runner/work/MFC/MFC/src/common/include/parallel_macros.fpp"
300# 2 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp" 2
302# 14 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
307# 52 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
310# 72 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
313# 80 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
316# 104 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
319# 120 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
322# 145 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
324# 151 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
326# 158 "/home/runner/work/MFC/MFC/src/common/include/macros.fpp"
328# 2 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp" 2
338 use,
intrinsic :: iso_c_binding
355 use m_thermochem,
only: num_species, species_names
371 real(wp),
allocatable,
dimension(:,:,:) ::
en_real
372 real(wp),
allocatable,
dimension(:) ::
en
386 character(LEN=name_len) :: file_loc
387 logical :: file_check
389 character(len=1000) :: line
391# 1 "/home/runner/work/MFC/MFC/build/include/post_process/generated_namelist.fpp" 1
394namelist /user_inputs/ bx0, ca, e_wrt,
g, r0ref, re_inv, t_wrt, web, adv_n, alpha_rho_e_wrt, alpha_rho_wrt, alpha_wrt, &
395 & alt_soundspeed, avg_state,
bc_x,
bc_y,
bc_z, bub_pp, bubbles_euler, bubbles_lagrange, c_wrt, case_dir, cf_wrt, &
396 & cfl_adap_dt, cfl_const_dt, cfl_target, chem_wrt_t, chem_wrt_y, cons_vars_wrt, cont_damage, cyl_coord, down_sample, &
397 & fd_order, fft_wrt, file_per_process, fluid_pp, flux_lim, flux_wrt,
format, gamma_wrt, heat_ratio_wrt, hyper_cleaning, &
398 & hypoelasticity, ib, ib_force_stride, ib_force_wrt, ib_state_wrt, igr, igr_order, lag_betac_wrt, lag_betat_wrt, lag_db_wrt, &
399 & lag_dphidt_wrt, lag_header, lag_id_wrt, lag_mg_wrt, lag_mv_wrt, lag_pos_prev_wrt, lag_pos_wrt, lag_pres_wrt, lag_r0_wrt, &
400 & lag_rad_wrt, lag_rmax_wrt, lag_rmin_wrt, lag_rvel_wrt, lag_txt_wrt, lag_vel_wrt, liutex_wrt, m, mhd, mixture_err, &
401 & model_eqns, mom_wrt, mpp_lim, muscl_order, n, n_start, nb, num_bc_patches, num_fluids, num_ibs, num_particle_clouds, &
402 & omega_wrt, output_partial_domain, p, parallel_io, particle_cloud, pi_inf_wrt, poly_sigma, polydisperse, polytropic, &
403 & precision, pres_inf_wrt, pres_wrt, prim_vars_wrt, qbmm, qm_wrt, rburn, reactive_burn, recon_type, relativity, relax, &
404 & relax_model, rho_wrt, schlieren_alpha, schlieren_wrt, sigr, sigma, sim_data, surface_tension, t_save, t_step_save, &
406# 65 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp" 2
408 file_loc =
'post_process.inp'
409 inquire (file=trim(file_loc), exist=file_check)
412 open (1, file=trim(file_loc), form=
'formatted', status=
'old', action=
'read')
413 read (1, nml=user_inputs, iostat=iostatus)
415 if (iostatus /= 0)
then
417 read (1, fmt=
'(A)') line
418 print *,
'Invalid line in namelist: ' // trim(line)
419 call s_mpi_abort(
'Invalid line in post_process.inp. It is ' //
'likely due to a datatype mismatch. Exiting.')
426 if (down_sample)
then
427 m = int((m + 1)/3) - 1
428 n = int((n + 1)/3) - 1
429 p = int((p + 1)/3) - 1
438 if (cfl_adap_dt .or. cfl_const_dt)
cfl_dt = .true.
444 call s_mpi_abort(
'File post_process.inp is missing. Exiting.')
453 character(LEN=len_trim(case_dir)) :: file_loc
456 case_dir = adjustl(case_dir)
458 file_loc = trim(case_dir) //
'/.'
462 if (dir_check .neqv. .true.)
then
463 call s_mpi_abort(
'Unsupported choice for the value of ' //
'case_dir. Exiting.')
474 integer,
intent(inout) :: t_step
475 integer :: eta_hh, eta_mm, eta_ss
481 eta_hh = int(eta_sec)/3600
482 eta_mm = mod(int(eta_sec), 3600)/60
483 eta_ss = mod(int(eta_sec), 60)
484 print
'(" [", I3, "%] Saving ", I0, " of ", I0, " t/step ", ES9.2, "s (avg ", ES9.2, "s) ETA ", I0, ":", I2.2, ":", I2.2)', &
488 eta_sec =
wall_time_avg*real((t_step_stop - t_step)/t_step_save, wp)
489 eta_hh = int(eta_sec)/3600
490 eta_mm = mod(int(eta_sec), 3600)/60
491 eta_ss = mod(int(eta_sec), 60)
492 print
'(" [", I3, "%] Saving ", I0, " of ", I0, " (t_step ", I0, ") t/step ", ES9.2, "s (avg ", ES9.2, "s) ETA ", I0, ":", I2.2, ":", I2.2)', &
493 & int(ceiling(100._wp*(real(t_step - t_step_start)/(t_step_stop - t_step_start + 1)))), &
494 & (t_step - t_step_start)/t_step_save + 1, (t_step_stop - t_step_start)/t_step_save + 1, t_step,
wall_time, &
510 else if (p == 0)
then
513 call s_populate_grid_variables_buffers(
x_cb,
x_cc,
dx,
offset_x,
offset_y,
offset_z,
y_cb,
y_cc,
dy,
z_cb,
z_cc,
dz)
525 integer,
intent(inout) :: t_step
526 character(LEN=name_len),
intent(inout) :: varname
527 real(wp),
intent(inout) :: pres, c
529 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
530 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
531 integer :: i,
j,
k,
l, kx, ky, kz, kf, j_glb, k_glb, l_glb
532 character(50) :: filename
533 logical :: file_exists
534 real(wp),
dimension(num_fluids) :: alpha_rho
536 integer :: x_beg, x_end, y_beg, y_end, z_beg, z_end
538 if (output_partial_domain)
then
569 if (omega_wrt(2) .or. omega_wrt(3) .or. qm_wrt .or. liutex_wrt .or. schlieren_wrt)
then
573 if (omega_wrt(1) .or. omega_wrt(3) .or. qm_wrt .or. liutex_wrt .or. (n > 0 .and. schlieren_wrt))
then
577 if (omega_wrt(1) .or. omega_wrt(2) .or. qm_wrt .or. liutex_wrt .or. (p > 0 .and. schlieren_wrt))
then
583 if (alpha_rho_wrt(i) .or. (cons_vars_wrt .or. prim_vars_wrt))
then
584 write (varname,
'(A,I0)')
'alpha_rho', i
590 if ((rho_wrt .or. (model_eqns ==
model_eqns_gamma_law .and. (cons_vars_wrt .or. prim_vars_wrt))) .and. (.not. relativity)) &
592 out%q_sf(:,:,:) =
rho_sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
593 write (varname,
'(A)')
'rho'
597 if (relativity .and. (rho_wrt .or. prim_vars_wrt))
then
598 write (varname,
'(A)')
'rho'
602 if (relativity .and. (rho_wrt .or. cons_vars_wrt))
then
604 write (varname,
'(A)')
'D'
608 do i = 1, eqn_idx%E - eqn_idx%mom%beg
609 if (mom_wrt(i) .or. cons_vars_wrt)
then
610 write (varname,
'(A,I0)')
'mom', i
611 call s_write_field(varname, t_step,
q_cons_vf(i + eqn_idx%cont%end), x_beg, x_end, y_beg, y_end, z_beg, z_end)
615 do i = 1, eqn_idx%E - eqn_idx%mom%beg
616 if (vel_wrt(i) .or. prim_vars_wrt)
then
617 write (varname,
'(A,I0)')
'vel', i
618 call s_write_field(varname, t_step,
q_prim_vf(i + eqn_idx%cont%end), x_beg, x_end, y_beg, y_end, z_beg, z_end)
623 do i = 1, num_species
624 if (chem_wrt_y(i) .or. prim_vars_wrt)
then
625 write (varname,
'(A,A)')
'Y_', trim(species_names(i))
632 out%q_sf(:,:,:) =
q_t_sf%sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
633 write (varname,
'(A)')
'T'
638 do i = 1, eqn_idx%E - eqn_idx%mom%beg
639 if (flux_wrt(i))
then
641 write (varname,
'(A,I0)')
'flux', i
646 if (e_wrt .or. cons_vars_wrt)
then
647 write (varname,
'(A)')
'E'
653 if (alpha_rho_e_wrt(i) .or. cons_vars_wrt)
then
654 write (varname,
'(A,I0)')
'alpha_rho_e', i
655 call s_write_field(varname, t_step,
q_cons_vf(i + eqn_idx%int_en%beg - 1), x_beg, x_end, y_beg, y_end, z_beg, &
712 if (j_glb >= (
m_glb + 1)/2)
then
713 kx = (j_glb - 1) - (
m_glb + 1)
718 if (k_glb >= (
n_glb + 1)/2)
then
719 ky = (k_glb - 1) - (
n_glb + 1)
724 if (l_glb >= (
p_glb + 1)/2)
then
725 kz = (l_glb - 1) - (
p_glb + 1)
730 kf = nint(sqrt(kx**2._wp + ky**2._wp + kz**2._wp)) + 1
738 call mpi_allreduce(mpi_in_place,
en,
nf, mpi_p, mpi_sum, mpi_comm_world,
ierr)
743 write (filename,
'(a,i0,a)')
'En_FFT_DATA/En_tot', t_step,
'.dat'
744 inquire (file=filename, exist=file_exists)
745 if (file_exists)
then
752 write (filename,
'(a,i0,a)')
'En_FFT_DATA/En_tot', t_step,
'.dat'
753 inquire (file=filename, exist=file_exists)
754 if (file_exists)
then
755 open (1, file=filename, position=
'append', status=
'old')
756 write (1, *)
en(kf), t_step
759 open (1, file=filename, status=
'new')
760 write (1, *)
en(kf), t_step
767 if (mhd .and. prim_vars_wrt)
then
768 do i = eqn_idx%B%beg, eqn_idx%B%end
771 if (i == eqn_idx%B%beg)
then
772 write (varname,
'(A)')
'By'
774 write (varname,
'(A)')
'Bz'
778 if (i == eqn_idx%B%beg)
then
779 write (varname,
'(A)')
'Bx'
780 else if (i == eqn_idx%B%beg + 1)
then
781 write (varname,
'(A)')
'By'
783 write (varname,
'(A)')
'Bz'
790 if (hypoelasticity)
then
791 do i = 1, eqn_idx%stress%end - eqn_idx%stress%beg + 1
792 if (prim_vars_wrt)
then
793 write (varname,
'(A,I0)')
'tau', i
794 call s_write_field(varname, t_step,
q_prim_vf(i - 1 + eqn_idx%stress%beg), x_beg, x_end, y_beg, y_end, z_beg, &
800 if (cont_damage)
then
801 write (varname,
'(A)')
'damage_state'
805 if (hyper_cleaning)
then
806 write (varname,
'(A)')
'psi'
810 if (pres_wrt .or. prim_vars_wrt)
then
811 write (varname,
'(A)')
'pres'
816 do i = 1, num_fluids - 1
817 if (alpha_wrt(i) .or. (cons_vars_wrt .or. prim_vars_wrt))
then
818 write (varname,
'(A,I0)')
'alpha', i
823 if (alpha_wrt(num_fluids) .or. (cons_vars_wrt .or. prim_vars_wrt))
then
828 out%q_sf(i,
j,
k) = 1._wp
829 do l = 1, num_fluids - 1
836 out%q_sf(:,:,:) =
q_cons_vf(eqn_idx%adv%end)%sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
838 write (varname,
'(A,I0)')
'alpha', num_fluids
843 if (gamma_wrt .or. (model_eqns ==
model_eqns_gamma_law .and. (cons_vars_wrt .or. prim_vars_wrt)))
then
844 out%q_sf(:,:,:) =
gamma_sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
845 write (varname,
'(A)')
'gamma'
849 if (heat_ratio_wrt)
then
851 write (varname,
'(A)')
'heat_ratio'
855 if (pi_inf_wrt .or. (model_eqns ==
model_eqns_gamma_law .and. (cons_vars_wrt .or. prim_vars_wrt)))
then
856 out%q_sf(:,:,:) =
pi_inf_sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
857 write (varname,
'(A)')
'pi_inf'
861 if (pres_inf_wrt)
then
863 write (varname,
'(A)')
'pres_inf'
871 do l = 1, eqn_idx%adv%end - eqn_idx%E
873 alpha_rho(
l) =
q_prim_vf(eqn_idx%cont%beg +
l - 1)%sf(i,
j,
k)
878 call s_compute_speed_of_sound(pres,
rho_sf(i,
j,
k),
gamma_sf(i,
j,
k),
pi_inf_sf(i,
j,
k),
adv, c, &
881 out%q_sf(i,
j,
k) = c
886 write (varname,
'(A)')
'c'
898 out%q_sf(i,
j,
k) = t
902 write (varname,
'(A,I0)')
'T',
l
908 if (omega_wrt(i))
then
910 write (varname,
'(A,I0)')
'omega', i
918 varname =
'ib_markers'
922 if (p > 0 .and. qm_wrt)
then
924 write (varname,
'(A)')
'qm'
931 out%q_sf = liutex_mag
932 write (varname,
'(A)')
'liutex_mag'
936 out%q_sf = liutex_axis(:,:,:,i)
937 write (varname,
'(A,I0)')
'liutex_axis', i
942 if (schlieren_wrt)
then
944 write (varname,
'(A)')
'schlieren'
949 write (varname,
'(A,I0)')
'color_function'
953 if (bubbles_euler)
then
954 do i = eqn_idx%adv%beg, eqn_idx%adv%end
955 write (varname,
'(A,I0)')
'alpha', i - eqn_idx%E
960 if (bubbles_euler)
then
963 write (varname,
'(A,I3.3)')
'nR', i
969 write (varname,
'(A,I3.3)')
'nV', i
972 if ((polytropic .neqv. .true.) .and. (.not. qbmm))
then
975 write (varname,
'(A,I3.3)')
'nP', i
981 write (varname,
'(A,I3.3)')
'nM', i
988 write (varname,
'(A)')
'n'
993 if (bubbles_lagrange)
then
997 write (varname,
'(A)')
'voidFraction'
1020 impure subroutine s_write_field(varname, t_step, src, x_beg, x_end, y_beg, y_end, z_beg, z_end)
1022 character(LEN=name_len),
intent(inout) :: varname
1023 integer,
intent(in) :: t_step
1025 integer,
intent(in),
optional :: x_beg, x_end, y_beg, y_end, z_beg, z_end
1027 if (
present(src))
then
1028 if (.not. (
present(x_beg) .and.
present(x_end) .and.
present(y_beg) .and.
present(y_end) .and.
present(z_beg) .and.
present(z_end)))
then
1029# 688 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1030 call s_mpi_abort(
"m_start_up.fpp:688: " // .and..and..and..and..and.
"Assertion failed: present(x_beg) present(x_end) present(y_beg) present(y_end) present(z_beg) present(z_end). " &
1031# 688 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1032 & //
"s_write_field: src requires all six output bounds")
1033# 688 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1035# 690 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1036 out%q_sf(:,:,:) = src%sf(x_beg:x_end,y_beg:y_end,z_beg:z_end)
1046 complex(c_double_complex),
allocatable :: sendbuf(:), recvbuf(:)
1047 integer :: dest_rank, src_rank
1048 integer :: i, j, k, l
1054 do dest_rank = 0, num_procs_y - 1
1059 & + dest_rank*
nxloc, k, l)
1068 do src_rank = 0, num_procs_y - 1
1079 deallocate (sendbuf)
1080 deallocate (recvbuf)
1088 complex(c_double_complex),
allocatable :: sendbuf(:), recvbuf(:)
1089 integer :: dest_rank, src_rank
1096 do dest_rank = 0, num_procs_z - 1
1101 & k + dest_rank*
nyloc2, l)
1110 do src_rank = 0, num_procs_z - 1
1122 deallocate (sendbuf)
1123 deallocate (recvbuf)
1131 integer :: size_n(1), inembed(1), onembed(1)
1134 if (bubbles_euler .or. bubbles_lagrange)
then
1148 if (parallel_io .neqv. .true.)
then
1156 num_procs_x = (
m_glb + 1)/(m + 1)
1157 num_procs_y = (
n_glb + 1)/(n + 1)
1158 num_procs_z = (
p_glb + 1)/(p + 1)
1172# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1174# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1175 use iso_fortran_env,
only: output_unit
1176# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1178# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1179 print *,
'm_start_up.fpp:825: ',
'@:ALLOCATE(data_in(Nx*Nyloc*Nzloc))'
1180# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1182# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1183 call flush (output_unit)
1184# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1186# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1188# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1190# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1192# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1194# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1195#if defined(MFC_OpenACC)
1196# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1198# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1199#elif defined(MFC_OpenMP)
1200# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1202# 825 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1205# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1207# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1208 use iso_fortran_env,
only: output_unit
1209# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1211# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1212 print *,
'm_start_up.fpp:826: ',
'@:ALLOCATE(data_out(Nx*Nyloc*Nzloc))'
1213# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1215# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1216 call flush (output_unit)
1217# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1219# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1221# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1223# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1225# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1227# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1228#if defined(MFC_OpenACC)
1229# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1231# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1232#elif defined(MFC_OpenMP)
1233# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1235# 826 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1239# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1241# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1242 use iso_fortran_env,
only: output_unit
1243# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1245# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1246 print *,
'm_start_up.fpp:828: ',
'@:ALLOCATE(data_cmplx(Nx, Nyloc, Nzloc))'
1247# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1249# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1250 call flush (output_unit)
1251# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1253# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1255# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1257# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1259# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1261# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1262#if defined(MFC_OpenACC)
1263# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1265# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1266#elif defined(MFC_OpenMP)
1267# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1269# 828 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1272# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1274# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1275 use iso_fortran_env,
only: output_unit
1276# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1278# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1279 print *,
'm_start_up.fpp:829: ',
'@:ALLOCATE(data_cmplx_y(Nxloc, Ny, Nzloc))'
1280# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1282# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1283 call flush (output_unit)
1284# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1286# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1288# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1290# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1292# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1294# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1295#if defined(MFC_OpenACC)
1296# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1298# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1299#elif defined(MFC_OpenMP)
1300# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1302# 829 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1305# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1307# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1308 use iso_fortran_env,
only: output_unit
1309# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1311# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1312 print *,
'm_start_up.fpp:830: ',
'@:ALLOCATE(data_cmplx_z(Nxloc, Nyloc2, Nz))'
1313# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1315# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1316 call flush (output_unit)
1317# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1319# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1321# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1323# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1325# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1327# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1328#if defined(MFC_OpenACC)
1329# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1331# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1332#elif defined(MFC_OpenMP)
1333# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1335# 830 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1339# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1341# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1342 use iso_fortran_env,
only: output_unit
1343# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1345# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1346 print *,
'm_start_up.fpp:832: ',
'@:ALLOCATE(En_real(Nxloc, Nyloc2, Nz))'
1347# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1349# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1350 call flush (output_unit)
1351# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1353# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1355# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1357# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1359# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1361# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1362#if defined(MFC_OpenACC)
1363# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1365# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1366#elif defined(MFC_OpenMP)
1367# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1369# 832 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1372# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1374# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1375 use iso_fortran_env,
only: output_unit
1376# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1378# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1379 print *,
'm_start_up.fpp:833: ',
'@:ALLOCATE(En(Nf))'
1380# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1382# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1383 call flush (output_unit)
1384# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1386# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1388# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1390# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1392# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1394# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1395#if defined(MFC_OpenACC)
1396# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1398# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1399#elif defined(MFC_OpenMP)
1400# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1402# 833 "/home/runner/work/MFC/MFC/src/post_process/m_start_up.fpp"
1409 fwd_plan_x = fftw_plan_many_dft(1, size_n,
nyloc*
nzloc,
data_in, inembed, 1,
nx,
data_out, onembed, 1,
nx, &
1410 & fftw_forward, fftw_measure)
1416 fwd_plan_y = fftw_plan_many_dft(1, size_n,
nxloc*
nzloc,
data_out, inembed, 1,
ny,
data_in, onembed, 1,
ny, &
1417 & fftw_forward, fftw_measure)
1423 fwd_plan_z = fftw_plan_many_dft(1, size_n,
nxloc*
nyloc2,
data_in, inembed, 1,
nz,
data_out, onembed, 1,
nz, &
1424 & fftw_forward, fftw_measure)
1426 call mpi_cart_create(mpi_comm_world, 3, (/num_procs_x, num_procs_y, num_procs_z/), (/.true., .true., .true./), &
1512 type(int_bounds_info),
dimension(3) :: output_offsets
1514 num_dims = 1 + min(1, n) + min(1, p)
1516 call s_mpi_initialize()
1518 if (proc_rank == 0)
then
1519 call s_assign_default_values_to_user_inputs()
1523 print
'(" Post-processing a ", I0, "x", I0, "x", I0, " case on ", I0, " rank(s)")', m, n, p, num_procs
1526 call s_mpi_bcast_user_inputs()
1533 call s_initialize_parallel_io()
1534 output_offsets = (/offset_x, offset_y, offset_z/)
1535 call s_mpi_decompose_computational_domain(write_silo_ghost_offsets=
format == format_silo, adjust_local_domains=.false., &
1536 & output_offsets=output_offsets)
1537 offset_x = output_offsets(1)
1538 offset_y = output_offsets(2)
1539 offset_z = output_offsets(3)
1540 call s_check_inputs_fft()
1542 bc = bc_xyz_info(bc_x, bc_y, bc_z)
1549 s_read_data_files => null()
1561 if (
allocated(
en))
deallocate (
en)
1573 call s_finalize_data_output_module()
1574 call s_finalize_derived_variables_module()
1575 call s_finalize_data_input_module()
1576 call s_finalize_variables_conversion_module()
1577 call s_finalize_eos_module()
1578 if (num_procs > 1)
then
1579 call s_finalize_mpi_proxy_module()
1580 call s_finalize_mpi_common_module()
1582 call s_finalize_global_parameters_module()
1584 call s_mpi_finalize()
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
subroutine, public s_populate_grid_variables_buffers(x_cb_in, x_cc_in, dx_in, x_offset, y_offset, z_offset, y_cb_in, y_cc_in, dy_in, z_cb_in, z_cc_in, dz_in, global_bounds)
Populate the buffers of the grid variables, which are constituted of the cell-boundary locations and ...
impure subroutine, public s_populate_variables_buffers(bc_type, q_prim_vf, pb_in, mv_in, q_t_sf)
Populate the buffers of the primitive variables based on the selected boundary conditions.
impure subroutine, public s_initialize_boundary_common_module(use_dirichlet_buffers)
Allocate and set up boundary condition buffer arrays for all coordinate directions.
Boundary condition restart I/O, capillary/IGR buffer population, and grid-variable buffers.
Shared input validation checks for grid dimensions and AMD GPU compiler limits.
impure subroutine, public s_check_inputs_common(check_total_cells, n_global)
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)
Inquire on the existence of a directory or file.
impure subroutine s_create_directory(dir_name)
Create a directory and all its parents if it does not exist.
Compile-time constant parameters: default values, tolerances, and physical constants.
integer, parameter model_eqns_5eq
integer, parameter format_silo
real(wp), parameter sgm_eps
Segmentation tolerance.
integer, parameter model_eqns_6eq
integer, parameter model_eqns_gamma_law
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...
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...
impure subroutine, public s_write_ib_bodies_to_formatted_database_file(t_step)
Read IB state and write a Silo point mesh with per-body scalar fields.
type(output_context), public out
Output workspace: flow variable buffers, VisIt extents/offsets, directory paths, file handles,...
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...
type(fd_context), public fd
Finite-difference state: density gradient magnitude and centered FD coefficients in x-,...
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 ...
impure subroutine, public s_initialize_derived_variables_module
Computation of parameters, allocation procedures, and/or any other tasks needed to properly setup the...
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...
Equations of state in Gamma/Pi form, rho e = Gamma(rho) p + Pi(rho).
subroutine, public s_phase_temperature(rho, pres, i, t)
Temperature of phase i at (rho, p): the stiffened-gas relation, or T_ref(rho) + (e - e_ref)/c_v.
impure subroutine, public s_initialize_eos_module()
Resolve every fluid's EOS coefficients once, before any conversion runs.
subroutine, public s_compute_speed_of_sound(pres, rho, gamma, pi_inf, adv, c, alpha_rho)
Speed of sound of a thermodynamic state. Enthalpy is not an argument: for a real state H,...
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...
type(int_bounds_info), dimension(1:3) idwint
integer beta_idx
Index of lagrange bubbles beta.
type(int_bounds_info) offset_y
type(int_bounds_info) bc_z
type(qbmm_idx_info) qbmm_idx
QBMM moment index mappings.
real(wp), dimension(:), allocatable y_cc
integer proc_rank
Rank of the local processor.
real(wp), dimension(:), allocatable adv
Advection variables.
type(int_bounds_info) z_output_idx
Indices of domain to output for post-processing.
real(wp), dimension(:), allocatable y_cb
type(bounds_info) x_output
real(wp), dimension(:), allocatable dz
integer fd_number
Finite-difference half-stencil size: MAX(1, fd_order/2).
type(int_bounds_info), dimension(1:3) idwbuff
integer buff_size
Number of ghost cells for boundary condition storage.
real(wp), dimension(:), allocatable z_cb
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
type(int_bounds_info) bc_x
real(wp), dimension(:), allocatable x_cb
real(wp), dimension(:), allocatable dy
type(int_bounds_info) offset_x
real(wp), dimension(:), allocatable z_cc
integer num_procs
Number of processors.
type(int_bounds_info) y_output_idx
type(int_bounds_info) offset_z
type(cell_num_bounds) cells_bounds
real(wp) wall_time_avg
Wall time measurements.
real(wp), dimension(:), allocatable dx
Cell-width distributions in the x-, y- and z-coordinate directions.
integer(kind=8) nglobal
Total number of cells in global domain.
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(exchange_all_chemistry_temperatures_in, use_rdma_transport_in)
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_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
impure subroutine s_save_data(t_step, varname, pres, c)
Derive requested flow quantities from primitive variables and write them to the formatted database fi...
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
impure subroutine s_write_field(varname, t_step, src, x_beg, x_end, y_beg, y_end, z_beg, z_end)
Fill outq_sf from src (if given), write varname to the database, and clear varname.
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, 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,...
real(wp), dimension(:,:,:), allocatable, public pi_inf_sf
Scalar liquid stiffness function.
real(wp), dimension(:,:,:), allocatable, public gamma_sf
Scalar sp. heat ratio function.
impure subroutine, public s_initialize_variables_conversion_module(store_mixture_fields, enforce_density_floor, preserve_qbmm_number, lagrange_beta_index)
Initialize the variables conversion module.
real(wp), dimension(:,:,:), allocatable, public rho_sf
Scalar density function.
Derived type annexing a scalar field (SF).