SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
abor1_sfx.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #############################################################
6  SUBROUTINE abor1_sfx(YTEXT)
7 ! #############################################################
8 !
9 !!**** *ABOR1_SFX* - abor1 subroutine
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !!** METHOD
15 !! ------
16 !!
17 !! EXTERNAL
18 !! --------
19 !!
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !!
28 !! AUTHOR
29 !! ------
30 !! P. Le Moigne *Meteo France*
31 !!
32 !! MODIFICATIONS
33 !! -------------
34 !! Original 06/2008
35 !-------------------------------------------------------------------------------
36 !
37 !* 0. DECLARATIONS
38 ! ------------
39 !
40 USE modd_surfex_mpi, ONLY : nrank, nproc
41 USE modd_surfex_omp, ONLY : nblock, nblocktot
42 USE modd_surf_conf, ONLY : cprogname, csoftware
43 !
44 USE modi_get_luout
45 USE modi_close_file
46 !
47 USE yomhook ,ONLY : lhook, dr_hook
48 USE parkind1 ,ONLY : jprb
49 !
50 IMPLICIT NONE
51 !
52 !* 0.1 Declarations of arguments
53 ! -------------------------
54 !
55  CHARACTER(LEN=*), INTENT(IN) :: ytext
56 !
57 !* 0.2 Declarations of local variables
58 ! -------------------------------
59 !
60  CHARACTER(LEN=6) :: yprogram
61  CHARACTER(LEN=20) :: ystring
62 INTEGER :: iluout ! logical unit of output file
63 REAL(KIND=JPRB) :: zhook_handle
64 !
65 #ifdef SFX_ARO
66 #include "abor1.intfb.h"
67 #endif
68 !-------------------------------------------------------------------------------
69 !
70 !* get output listing file logical unit
71 !
72 IF (lhook) CALL dr_hook('ABOR1_SFX',0,zhook_handle)
73 yprogram = cprogname
74 !
75  CALL get_luout(yprogram,iluout)
76 !
77 IF (yprogram=='ASCII ' .OR. yprogram=='TEXTE ' .OR. yprogram=='BINARY' .OR. yprogram=='NC ') THEN
78  IF ( nproc>1 .OR. nblocktot>1 ) &
79  WRITE(*,*)"MPI TASK NUMBER = ",nrank,", OMP THREAD NUMBER = ",nblock
80  WRITE(*,*)ytext
81  ystring='LISTING_'//trim(csoftware)//'.txt'
82  WRITE(*,*)'-------------------------------------------------------------------------------'
83  WRITE(*,*) 'MORE DETAILS ABOUT THE CRASH IN THE OUTPUT LISTING FILE: ', trim(ystring)
84  WRITE(*,*)'-------------------------------------------------------------------------------'
85 ENDIF
86 !
87 WRITE(iluout,*) '---------------------------------------------------------------------------'
88 WRITE(iluout,*) '---------------------------------------------------------------------------'
89 WRITE(iluout,*) '-------------------- FATAL ERROR in SURFEX -----------------------------'
90 WRITE(iluout,*) '---------------------------------------------------------------------------'
91 WRITE(iluout,*) '---------------------------------------------------------------------------'
92 WRITE(iluout,*) '- -'
93 WRITE(iluout,*)ytext
94 WRITE(iluout,*) '- -'
95 WRITE(iluout,*) '---------------------------------------------------------------------------'
96 WRITE(iluout,*) '---------------------------------------------------------------------------'
97  CALL close_file(yprogram,iluout)
98 !
99 #ifdef SFX_ARO
100 call abor1('abort by abor1_sfx')
101 #else
102  write(0,*) "aborted with text:",trim(ytext),"|"
103  CALL abort
104 stop
105 #endif
106 IF (lhook) CALL dr_hook('ABOR1_SFX',1,zhook_handle)
107 !
108 END SUBROUTINE abor1_sfx
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine close_file(HPROGRAM, KUNIT)
Definition: close_file.F90:6
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6