euler_1d.f90 Source File


Source Code

!> @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