#include <misc.h>
#include <preproc.h>
module abortutils 221,1
!-----------------------------------------------------------------------
!BOP
! !MODULE: abortutils
!
! !DESCRIPTION:
! Abort the model for abnormal termination
!
! !USES:
use clm_varctl
, only : iulog
!
! !REVISION HISTORY:
! Author: CCM Core group
!
!EOP
!-----------------------------------------------------------------------
private
save
public :: endrun
CONTAINS
!-----------------------------------------------------------------------
!BOP
! !IROUTINE: endrun
!
! !INTERFACE:
subroutine endrun(msg) 1683,7
!
! !DESCRIPTION:
! Abort the model for abnormal termination
!
! Author: CCM Core group
!
!-----------------------------------------------------------------------
use spmdMod
, only: mpicom
use shr_sys_mod
, only: shr_sys_flush
!
! !ARGUMENTS:
implicit none
character(len=*), intent(in), optional :: msg ! string to be printed
!
! !REVISION HISTORY:
! Author: CCM Core group
!
!EOP
!-----------------------------------------------------------------------
if (present (msg)) then
write(iulog,*)'ENDRUN:', msg
else
write(iulog,*)'ENDRUN: called without a message string'
end if
#if defined(NEC_SX)
call mesput("ENDRUN", len("ENDRUN"), 1)
#elif defined(AIX) && !defined(BGL) && !defined(BGP)
close(5) ! needed to prevent batch jobs from hanging in xl__trbk
call xl__trbk()
#endif
#ifndef UNICOSMP
call shr_sys_flush
(iulog) ! Flush all output to standard output
#endif
! passing an argument of 1 to mpi_abort will lead to a STOPALL output
! error code of 257
call mpi_abort (mpicom, 1)
end subroutine endrun
end module abortutils