wignerd__system.f Source File


Source Code

! ================================================================================================================================ !
module wignerd__system
  !! Contains the definitions of stderr and procedures to stop the execution of the program while
  !! printing error messages.

  use wignerd__types,                only: rp
  use, intrinsic :: iso_fortran_env, only: error_unit

  implicit none

  private

  public die

  integer, parameter, public :: stderr = error_unit
    !! The file unit associated with standard error

  interface die
    !! Stop program execution with one or two messages
    module procedure die_1
    module procedure die_2
  end interface die

! ================================================================================================================================ !
contains
! ================================================================================================================================ !

  ! ------------------------------------------------------------------------------------------------------------------------------ !
  subroutine die_1(message)
    !! Stop program execution with a message
    implicit none
    character(*), intent(in), optional :: message
    write(stderr,*)
    write(stderr,'("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")')
    write(stderr,'("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")')
    write(stderr,'("@@@@                                                           @@@@")')
    write(stderr,'("@@@@                          ERROR                            @@@@")')
    write(stderr,'("@@@@                                                           @@@@")')
    write(stderr,'("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")')
    write(stderr,'("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")')
    write(stderr,*)
    if(.not.present(message)) error stop
    write(stderr,'("STOP",X,"::",X,A)') message
    write(stderr,*)
    error stop
  end subroutine die_1
  ! ------------------------------------------------------------------------------------------------------------------------------ !
  subroutine die_2(message1,message2)
    !! Stop program execution with two messages
    implicit none
    character(*), intent(in) :: message1
    character(*), intent(in) :: message2
    write(stderr,*)
    write(stderr,'("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")')
    write(stderr,'("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")')
    write(stderr,'("@@@@                                                           @@@@")')
    write(stderr,'("@@@@                          ERROR                            @@@@")')
    write(stderr,'("@@@@                                                           @@@@")')
    write(stderr,'("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")')
    write(stderr,'("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")')
    write(stderr,*)
    write(stderr,'("STOP",X,"::",X,A,/,A)') message1, message2
    write(stderr,*)
    error stop
  end subroutine die_2

! ================================================================================================================================ !
end module wignerd__system
! ================================================================================================================================ !