SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/abor1_sfx.F90
Go to the documentation of this file.
00001 !     #############################################################
00002       SUBROUTINE ABOR1_SFX(YTEXT)
00003 !     #############################################################
00004 !
00005 !!****  *ABOR1_SFX* - abor1 subroutine
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      P. Le Moigne   *Meteo France*   
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    06/2008 
00031 !-------------------------------------------------------------------------------
00032 !
00033 !*       0.    DECLARATIONS
00034 !              ------------
00035 !
00036 USE MODD_SURFEX_MPI, ONLY : NRANK, NPROC
00037 USE MODD_SURFEX_OMP, ONLY : NBLOCK, NBLOCKTOT
00038 USE MODD_SURF_CONF,  ONLY : CPROGNAME, CSOFTWARE
00039 !
00040 USE MODI_GET_LUOUT
00041 USE MODI_CLOSE_FILE
00042 !      
00043 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00044 USE PARKIND1  ,ONLY : JPRB
00045 !
00046 IMPLICIT NONE
00047 !
00048 !*       0.1   Declarations of arguments
00049 !              -------------------------
00050 !
00051  CHARACTER(LEN=*),  INTENT(IN)  :: YTEXT
00052 !
00053 !*       0.2   Declarations of local variables
00054 !              -------------------------------
00055 !
00056  CHARACTER(LEN=6)  :: YPROGRAM   
00057  CHARACTER(LEN=20) :: YSTRING
00058 INTEGER           :: ILUOUT         ! logical unit of output file      
00059 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00060 !
00061 #ifdef ARO
00062 #include "abor1.intfb.h"
00063 #endif
00064 !-------------------------------------------------------------------------------
00065 !
00066 !* get output listing file logical unit
00067 !
00068 IF (LHOOK) CALL DR_HOOK('ABOR1_SFX',0,ZHOOK_HANDLE)
00069 YPROGRAM = CPROGNAME
00070 !      
00071  CALL GET_LUOUT(YPROGRAM,ILUOUT)
00072 !
00073 IF (YPROGRAM=='ASCII ' .OR. YPROGRAM=='TEXTE ' .OR. YPROGRAM=='BINARY') THEN
00074    IF ( NPROC>1 .OR. NBLOCKTOT>1 ) &
00075      WRITE(*,*)"MPI TASK NUMBER = ",NRANK,", OMP THREAD NUMBER = ",NBLOCK
00076    WRITE(*,*)YTEXT
00077    YSTRING='LISTING_'//TRIM(CSOFTWARE)//'.txt'
00078    WRITE(*,*)'-------------------------------------------------------------------------------'
00079    WRITE(*,*) 'MORE DETAILS ABOUT THE CRASH IN THE OUTPUT LISTING FILE: ', TRIM(YSTRING)
00080    WRITE(*,*)'-------------------------------------------------------------------------------'   
00081 ENDIF
00082 !
00083 WRITE(ILUOUT,*) '---------------------------------------------------------------------------'
00084 WRITE(ILUOUT,*) '---------------------------------------------------------------------------'
00085 WRITE(ILUOUT,*) '--------------------   FATAL ERROR in SURFEX  -----------------------------'
00086 WRITE(ILUOUT,*) '---------------------------------------------------------------------------'
00087 WRITE(ILUOUT,*) '---------------------------------------------------------------------------'
00088 WRITE(ILUOUT,*) '-                                                                         -'
00089 WRITE(ILUOUT,*)YTEXT
00090 WRITE(ILUOUT,*) '-                                                                         -'
00091 WRITE(ILUOUT,*) '---------------------------------------------------------------------------'
00092 WRITE(ILUOUT,*) '---------------------------------------------------------------------------'
00093  CALL CLOSE_FILE(YPROGRAM,ILUOUT)
00094 !
00095 #ifdef ARO
00096 call abor1('abort by abor1_sfx')
00097 #else
00098  CALL ABORT
00099 STOP
00100 #endif
00101 IF (LHOOK) CALL DR_HOOK('ABOR1_SFX',1,ZHOOK_HANDLE)
00102 !
00103 END SUBROUTINE ABOR1_SFX