SURFEX v7.3
General documentation of Surfex
|
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