clm5.0/src_clm40/main/abortutils.F90
2025-01-12 20:48:10 +08:00

83 lines
2.3 KiB
Fortran

module abortutils
!-----------------------------------------------------------------------
! !MODULE: abortutils
!
! !DESCRIPTION:
! Abort the model for abnormal termination
!-----------------------------------------------------------------------
private
save
public :: endrun
interface endrun
module procedure endrun_vanilla
module procedure endrun_globalindex
end interface
CONTAINS
!-----------------------------------------------------------------------
subroutine endrun_vanilla(msg)
!-----------------------------------------------------------------------
! !DESCRIPTION:
! Abort the model for abnormal termination
!
use shr_sys_mod , only: shr_sys_abort
use clm_varctl , only: iulog
!
! !ARGUMENTS:
implicit none
character(len=*), intent(in), optional :: msg ! string to be printed
!-----------------------------------------------------------------------
if (present (msg)) then
write(iulog,*)'ENDRUN:', msg
else
write(iulog,*)'ENDRUN: called without a message string'
end if
call shr_sys_abort()
end subroutine endrun_vanilla
!-----------------------------------------------------------------------
subroutine endrun_globalindex(decomp_index, clmlevel, msg)
!-----------------------------------------------------------------------
! Description:
! Abort the model for abnormal termination
!
use clmtype
use shr_sys_mod , only: shr_sys_abort
use clm_varctl , only: iulog
use GetGlobalValuesMod, only: GetGlobalWrite
!
! Arguments:
implicit none
integer , intent(in) :: decomp_index
character(len=*) , intent(in) :: clmlevel
character(len=*) , intent(in), optional :: msg ! string to be printed
!
! Local Variables:
integer :: igrc, ilun, icol
!-----------------------------------------------------------------------
write(6,*)'calling getglobalwrite with decomp_index= ',decomp_index,' and clmlevel= ',trim(clmlevel)
call GetGlobalWrite(decomp_index, clmlevel)
if (present (msg)) then
write(iulog,*)'ENDRUN:', msg
else
write(iulog,*)'ENDRUN: called without a message string'
end if
call shr_sys_abort()
end subroutine endrun_globalindex
end module abortutils