|
MFC
Exascale flow solver
|
Contains module m_start_up. More...
Go to the source code of this file.
Modules | |
| module | m_start_up |
| Reads input files, loads initial conditions and grid data, and orchestrates solver initialization and finalization. | |
Functions/Subroutines | |
| impure subroutine, public | m_start_up::s_read_data_files (q_cons_vf) |
| Read data files. Dispatch subroutine that replaces procedure pointer. | |
| impure subroutine, public | m_start_up::s_read_input_file |
| Verify the input file exists and read it. | |
| impure subroutine, public | m_start_up::s_check_input_file |
| Validate that all user-provided inputs form a consistent simulation configuration. | |
| impure subroutine, public | m_start_up::s_read_serial_data_files (q_cons_vf) |
| Read serial initial condition and grid data files and compute cell-width distributions. | |
| impure subroutine, public | m_start_up::s_read_parallel_data_files (q_cons_vf) |
| Read parallel initial condition and grid data files via MPI I/O. | |
| subroutine, public | m_start_up::s_initialize_internal_energy_equations (v_vf) |
| Initialize internal-energy equations from phase mass, mixture momentum, and total energy. | |
| impure subroutine, public | m_start_up::s_perform_time_step (t_step, time_avg) |
| Advance the simulation by one time step, handling CFL-based dt and time-stepper dispatch. | |
| impure subroutine, public | m_start_up::s_save_performance_metrics (time_avg, time_final, io_time_avg, io_time_final, proc_time, io_proc_time, file_exists) |
| Collect per-process wall-clock times and write aggregate performance metrics to file. | |
| impure subroutine, public | m_start_up::s_save_data (t_step, start, finish, io_time_avg, nt) |
| Save conservative variable data to disk at the current time step. | |
| impure subroutine, public | m_start_up::s_initialize_modules |
| Initialize all simulation sub-modules in the required dependency order. | |
| impure subroutine, public | m_start_up::s_initialize_mpi_domain |
| Set up the MPI execution environment, bind GPUs, and decompose the computational domain. | |
| subroutine, public | m_start_up::s_initialize_gpu_vars |
| Transfer initial conservative variable and model parameter data to the GPU device. | |
| impure subroutine, public | m_start_up::s_finalize_modules |
| Finalize and deallocate all simulation sub-modules in reverse initialization order. | |
| subroutine | m_start_up::s_assign_particle_cloud_ib_defaults (cloud_ib_idx, ib_patch) |
| Fills the properties of a generated particle-cloud IB that the IB state file does not carry (geometry, mass, moving_ibm, inert surface, identity rotation matrix, zeroed step state). This is the only place they are set - pre_process (s_add_cloud_particle) generates only position, kinematics and radius. cloud_ib_idx is the global patch id minus the number of namelist patches; pre_process numbers particles cloud by cloud. | |
| impure subroutine | m_start_up::s_read_ib_restart_data (t_step) |
| Loads the IBs this rank owns from the IB state file for t_step into patch_ib(1:num_ibs), all of which are local. Under file_per_process the rank reads only its own restart_data/lustre_<t_step>/ib_state_<t_step>_<rank>.dat, which holds exactly its IBs; otherwise every rank reads every record of restart_data/ib_state_<t_step>.dat and keeps the ones f_local_rank_owns_location assigns it. Records carry kinematics, position and radius; every other property comes from the namelist patch (global id <= num_ibs) or the particle cloud the IB was generated from. Written by pre_process at t_step = 0 (src/pre_process/m_data_output.fpp:s_write_ib_state_0_file) and by s_write_ib_state_file on later steps. | |
| subroutine | m_start_up::s_build_ib_neighborhood () |
| Completes this rank's IB neighborhood once s_read_ib_restart_data has loaded only the IBs it owns: every rank sends its own IBs to, and receives the owned IBs of, each distinct rank in ib_neighbor_ranks, appending them to patch_ib after its own. | |
| subroutine | m_start_up::s_compute_ib_neighbor_ranks () |
| Build ib_neighbor_ranks(-1:1,-1:1,-1:1): MPI ranks of all neighbor domains. Uses two rounds of MPI_SENDRECV cascades - face neighbors are known from bc_*, edge neighbors are obtained in round 1, and (3D) corner neighbors in round 2. | |
| subroutine | m_start_up::s_get_neighbor_bounds () |
Variables | |
| type(scalar_field), dimension(:), allocatable | m_start_up::q_cons_temp |
| real(wp) | m_start_up::dt_init |
Contains module m_start_up.
Definition in file m_start_up.fpp.f90.