!> @file euler_1d.f90 !> @brief Entry point for the 1D Euler CFD solver. !! !! Sequences the session-based driver calls: !! !! 1. Parse CLI — `resolve_cli_namelist` (defaults to `input.nml`) !! 2. Create — `solver_session_create` !! 3. Load config — `solver_session_load_namelist` !! 4. Initialise — `solver_session_initialize` !! 5. Run — `solver_session_run_to_end` !! 6. Write result — `solver_session_write_result` !! 7. Destroy — `solver_session_destroy` program euler_1d use solver_runtime, only: resolve_cli_namelist use solver_session, only: solver_session_t, solver_session_create, & solver_session_load_namelist, solver_session_initialize, & solver_session_run_to_end, solver_session_write_result, & solver_session_destroy, solver_status_ok implicit none type(solver_session_t) :: session integer :: status character(len=512) :: message, nml_file call resolve_cli_namelist(nml_file) call solver_session_create(session) call solver_session_load_namelist(session, trim(nml_file), status, message) if (status /= solver_status_ok) error stop trim(message) call solver_session_initialize(session, status, message) if (status /= solver_status_ok) error stop trim(message) call solver_session_run_to_end(session, status, message) if (status /= solver_status_ok) error stop trim(message) call solver_session_write_result(session, status=status, message=message) if (status /= solver_status_ok) error stop trim(message) call solver_session_destroy(session) end program euler_1d