From 05084accc82d493fcb517df6c7f527170ebd46ae Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Fri, 3 Nov 2023 16:22:35 +0100 Subject: [PATCH] Philippe 03/11/2023: replace STOP by PRINT_MSG calls --- src/MNH/call_rttov13.f90 | 4 +-- src/MNH/ch_meteo_trans_lima.f90 | 24 ++++++------- src/MNH/ch_monitorn.f90 | 4 +-- src/MNH/drag_bld.f90 | 47 ++++++++++++-------------- src/MNH/ground_paramn.f90 | 12 +++---- src/MNH/prep_real_case.f90 | 1 - src/MNH/read_chem_data_cams_case.f90 | 21 +++++++----- src/MNH/read_chem_data_mozart_case.f90 | 21 +++++++----- src/MNH/write_lfin.f90 | 9 ++--- 9 files changed, 71 insertions(+), 72 deletions(-) diff --git a/src/MNH/call_rttov13.f90 b/src/MNH/call_rttov13.f90 index 08cf7ba85..8c681d530 100644 --- a/src/MNH/call_rttov13.f90 +++ b/src/MNH/call_rttov13.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2003-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -497,7 +497,7 @@ DO JSAT=1,IJSAT ! loop over sensors CALL rttov_user_options_checkinput(errorstatus, opts, coefs) IF (errorstatus /= 0) THEN WRITE(*,*) 'error in rttov options' - STOP + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'CALL_RTTOV13', 'rttov_user_options_checkinput' ) ENDIF profiles(1) % date(1) = TDTCUR%nyear diff --git a/src/MNH/ch_meteo_trans_lima.f90 b/src/MNH/ch_meteo_trans_lima.f90 index 42e2a5006..56b3757c3 100644 --- a/src/MNH/ch_meteo_trans_lima.f90 +++ b/src/MNH/ch_meteo_trans_lima.f90 @@ -1,12 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ $Date$ -!----------------------------------------------------------------- !! ############################### MODULE MODI_CH_METEO_TRANS_LIMA !! ############################### @@ -126,6 +122,8 @@ USE MODD_PARAM_LIMA, ONLY: XNUC, XALPHAC, & ! Cloud droplets distrib. param USE MODD_PARAM_LIMA_WARM, ONLY: XLBC, XLBEXC, & !shape param. of the cloud droplets XLBR, XLBEXR !shape param. of the raindrops !! +USE MODE_MSG + USE MODI_GAMMA ! !------------------------------------------------------------------------------- @@ -182,13 +180,13 @@ firstcall : IF (GSFIRSTCALL) THEN ! corresponds to what the CCS expects ! IF (NMETEOVARS /= 13) THEN - WRITE(KLUOUT,*) "CH_METEO_TRANS ERROR: number of meteovars to transfer" - WRITE(KLUOUT,*) "does not correspond to the number expected by the CCS:" - WRITE(KLUOUT,*) " meteovars to transfer: ", 13 - WRITE(KLUOUT,*) " NMETEOVARS expected: ", NMETEOVARS - WRITE(KLUOUT,*) "Check the definition of NMETEOVARS in your .chf file." - WRITE(KLUOUT,*) "The program will be stopped now!" - STOP 1 + CMNHMSG(1) = "CH_METEO_TRANS ERROR: number of meteovars to transfer" + CMNHMSG(2) = "does not correspond to the number expected by the CCS:" + CMNHMSG(3) = " meteovars to transfer: 13" + WRITE(CMNHMSG(4) ,*) " NMETEOVARS expected: ", NMETEOVARS + CMNHMSG(5) = "Check the definition of NMETEOVARS in your .chf file." + CMNHMSG(6) = "The program will be stopped now!" + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'CH_METEO_TRANS_LIMA' ) END IF ! !* 1.2 initialize names of meteo vars diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90 index b61f19288..803f3814d 100644 --- a/src/MNH/ch_monitorn.f90 +++ b/src/MNH/ch_monitorn.f90 @@ -646,9 +646,7 @@ SELECT CASE (CCH_TDISCRETIZATION) IF (KVERB >= 10) WRITE(KLUOUT,*) "CH_MONITOR_n: using LAGGED option" CASE DEFAULT ! the following line should never be reached: - ! callabortstop - CALL ABORT - STOP "CH_MONITOR_n: CCH_TDISCRETIZATION option not valid" + call Print_msg( NVERB_FATAL, 'GEN', 'CH_MONITOR_n', 'invalid CCH_TDISCRETIZATION option ('//trim(CCH_TDISCRETIZATION)//')' ) END SELECT ! ! diff --git a/src/MNH/drag_bld.f90 b/src/MNH/drag_bld.f90 index edec3affd..a460dd5cc 100644 --- a/src/MNH/drag_bld.f90 +++ b/src/MNH/drag_bld.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2019-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2019-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -8,10 +8,10 @@ MODULE MODI_DRAG_BLD ! ####################### ! INTERFACE - ! - SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, & - PRT, PSVT, PRHODJ, PZZ, PRUS, PRVS, PRTKES, PRTHS, PRRS, & - PSFTH_WALL, PSFTH_ROOF, PCD_ROOF, PSFRV_WALL, PSFRV_ROOF ) + ! + SUBROUTINE DRAG_BLD( PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, PRT, & + PSVT, PRHODJ, PZZ, PRUS, PRVS, PRTKES, PRTHS, PRRS, & + PSFTH_WALL, PSFTH_ROOF, PCD_ROOF, PSFRV_WALL, PSFRV_ROOF ) ! REAL, INTENT(IN) :: PTSTEP ! Time step REAL, DIMENSION(:,:,:), INTENT(IN) :: PUT, PVT ! variables @@ -32,8 +32,8 @@ MODULE MODI_DRAG_BLD ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS ! Sources of Momentum REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTKES ! Sources of Tke - REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS + REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS + REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS ! END SUBROUTINE DRAG_BLD @@ -41,11 +41,11 @@ MODULE MODI_DRAG_BLD END MODULE MODI_DRAG_BLD ! -! ################################################################### -SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, PRT, & - PSVT, PRHODJ, PZZ, PRUS, PRVS, PRTKES, PRTHS, PRRS, & - PSFTH_WALL, PSFTH_ROOF, PCD_ROOF, PSFRV_WALL, PSFRV_ROOF ) - ! ################################################################### +! ######################################################################### +SUBROUTINE DRAG_BLD( PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, PRT, & + PSVT, PRHODJ, PZZ, PRUS, PRVS, PRTKES, PRTHS, PRRS, & + PSFTH_WALL, PSFTH_ROOF, PCD_ROOF, PSFRV_WALL, PSFRV_ROOF ) + ! ####################################################################### ! !!**** *DRAG_BLD_n * - !! @@ -87,6 +87,7 @@ SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, PRT, & USE MODD_PGDFIELDS use mode_budget, only: Budget_store_init, Budget_store_end + USE MODE_MSG USE MODI_MNHGET_SURF_PARAM_n USE MODI_SHUMAN @@ -114,8 +115,8 @@ SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, PRT, & ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS ! Sources of Momentum REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTKES ! Sources of Tke - REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS - REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS + REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS + REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS ! !* 0.2 Declarations of local variables : ! @@ -231,7 +232,7 @@ SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, PRT, & ZH_URBTRUN(JI,JJ) = MIN(ZH_URBTRUN(JI,JJ),0.3*ZH_URBTREE(JI,JJ)) ! IF (ZH_URBTRUN(JI,JJ).GT.ZH_URBTREE(JI,JJ)) THEN - STOP ("Trunk higher than tree") + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'DRAG_BLD', 'Trunk higher than tree' ) ENDIF ! ENDDO @@ -299,11 +300,11 @@ SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, PRT, & ENDDO ! IF ( ICHECK .NE. 1 ) THEN - STOP ("Roof level not attributed") + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'DRAG_BLD', 'Roof level not attributed' ) ENDIF ! IF ( ABS(ZSUM_BLD_DENSITY-ZF_BLD(JI,JJ)) .GT. 1.0E-6 ) THEN - STOP ("Wrong normalisation of frontal area density") + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'DRAG_BLD', 'Wrong normalisation of frontal area density' ) ENDIF ! ENDIF @@ -373,7 +374,7 @@ SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, PRT, & ! Check for correct normalisation of PLAD_CAN ! IF ( ABS(ZSUM_LAD_CAN-ZLAI_URBVEG(JI,JJ)).GT.1.0E-6 ) THEN - STOP ("Wrong normalisation of vegetation density") + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'DRAG_BLD', 'Wrong normalisation of vegetation density' ) ENDIF ! ENDIF @@ -468,19 +469,15 @@ SUBROUTINE DRAG_BLD(PTSTEP, PUT, PVT, PTKET, PPABST, PTHT, PRT, & ! Check for correct normalisation of fluxes ! IF ( ABS(ZSUM_SFTH_WALL-PSFTH_WALL(JI,JJ)).GT.1.0E-6 ) THEN - STOP ("Wrong normalisation of wall heat flux") + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'DRAG_BLD', 'Wrong normalisation of wall heat flux' ) ENDIF ! IF ( ABS(ZSUM_SFRV_WALL-PSFRV_WALL(JI,JJ)).GT.1.0E-6 ) THEN - STOP ("Wrong normalisation of wall evaporative flux") - ENDIF - ! - IF ( ABS(ZSUM_SFTH_ROOF-PSFTH_ROOF(JI,JJ)).GT.1.0E-6 ) THEN - STOP ("Wrong normalisation of roof heat flux") + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'DRAG_BLD', 'Wrong normalisation of roof heat flux' ) ENDIF ! IF ( ABS(ZSUM_SFRV_ROOF-PSFRV_ROOF(JI,JJ)).GT.1.0E-6 ) THEN - STOP ("Wrong normalisation of roof evaporative flux") + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'DRAG_BLD', 'Wrong normalisation of roof evaporative flux' ) ENDIF ! ENDIF diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90 index e43cd3034..e030f6f5e 100644 --- a/src/MNH/ground_paramn.f90 +++ b/src/MNH/ground_paramn.f90 @@ -693,8 +693,8 @@ DO ILEV=1,NLEV_COUPLE ! ZWEIGHT_VERT(:,:) = MIN(1.0,MAX(ZZREF_VERT(:,:)-5.0,0.0)/15.0) ! - IF (MAXVAL(ZWEIGHT_VERT).GT.1.0) STOP ("Wrong weight") - IF (MINVAL(ZWEIGHT_VERT).LT.0.0) STOP ("Wrong weight") + IF ( MAXVAL(ZWEIGHT_VERT) > 1. .OR. MINVAL(ZWEIGHT_VERT) < 0. ) & + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'GROUND_PARAM_n', 'Wrong weight' ) ! ZZREF(:,:,ILEV) = ZWEIGHT_VERT(:,:) * ZZREF_VERT(:,:) + (1.0 - ZWEIGHT_VERT(:,:)) * ZZREF_DIST(:,:) ! @@ -1030,10 +1030,10 @@ IF (LFLUXBLDG) THEN ! ! Test conservation of fluxes ! - IF (MAXVAL(ABS(ZSFTH(:,:)/XCPD/XRHODREF(:,:,IKB) - PSFTH(:,:) - PSFTH_WALL(:,:)& - - PSFTH_ROOF(:,:))).GT.1.0E-6) STOP ("Wrong H flux partition") - IF (MAXVAL(ABS(ZSFTQ(:,:)/XRHODREF(:,:,IKB) - PSFRV(:,:) - PSFRV_WALL(:,:)& - - PSFRV_ROOF(:,:))).GT.1.0E-6) STOP ("Wrong Q flux partition") + IF ( MAXVAL(ABS(ZSFTH(:,:)/XCPD/XRHODREF(:,:,IKB) - PSFTH(:,:) - PSFTH_WALL(:,:) - PSFTH_ROOF(:,:))).GT.1.0E-6 ) & + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'GROUND_PARAM_n', 'Wrong H flux partition' ) + IF ( MAXVAL(ABS(ZSFTQ(:,:)/XRHODREF(:,:,IKB) - PSFRV(:,:) - PSFRV_WALL(:,:) - PSFRV_ROOF(:,:))).GT.1.0E-6 ) & + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'GROUND_PARAM_n', 'Wrong Q flux partition' ) ! ELSE ! diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90 index 1384ee513..064d1c6be 100644 --- a/src/MNH/prep_real_case.f90 +++ b/src/MNH/prep_real_case.f90 @@ -834,7 +834,6 @@ IF(LEN_TRIM(YLIMAFILE)>0)THEN WRITE(ILUOUT0,FMT=*) !callabortstop CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_REAL_CASE','Pb in MACC/CAMS file') - STOP END IF END IF ! diff --git a/src/MNH/read_chem_data_cams_case.f90 b/src/MNH/read_chem_data_cams_case.f90 index 05335fc92..3a1c62dff 100644 --- a/src/MNH/read_chem_data_cams_case.f90 +++ b/src/MNH/read_chem_data_cams_case.f90 @@ -1066,15 +1066,18 @@ WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successf CONTAINS ! -! ############################# - SUBROUTINE HANDLE_ERR(STATUS) -! ############################# - INTEGER(KIND=CDFINT) STATUS - IF (STATUS .NE. NF90_NOERR) THEN - PRINT *, NF90_STRERROR(STATUS) - STOP 'Stopped' - ENDIF - END SUBROUTINE HANDLE_ERR +! ############################# + subroutine handle_err(istatus) +! ############################# + use mode_msg + + integer(kind=CDFINT) istatus + + if ( istatus /= NF90_NOERR ) then + call Print_msg( NVERB_FATAL, 'IO', 'HANDLE_ERR', NF90_STRERROR(istatus) ) + end if + + end subroutine handle_err ! ! ! ############################################# diff --git a/src/MNH/read_chem_data_mozart_case.f90 b/src/MNH/read_chem_data_mozart_case.f90 index e11f1c03a..2dfdb0e70 100644 --- a/src/MNH/read_chem_data_mozart_case.f90 +++ b/src/MNH/read_chem_data_mozart_case.f90 @@ -769,15 +769,18 @@ WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successf ! CONTAINS ! -! ############################# - SUBROUTINE HANDLE_ERR(STATUS) -! ############################# - INTEGER(KIND=CDFINT) STATUS - IF (STATUS .NE. NF90_NOERR) THEN - PRINT *, NF90_STRERROR(STATUS) - STOP 'Stopped' - ENDIF - END SUBROUTINE HANDLE_ERR +! ############################# + subroutine handle_err(istatus) +! ############################# + use mode_msg + + integer(kind=CDFINT) istatus + + if ( istatus /= NF90_NOERR ) then + call Print_msg( NVERB_FATAL, 'IO', 'HANDLE_ERR', NF90_STRERROR(istatus) ) + end if + + end subroutine handle_err ! ! ! ############################################# diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index f2070f6a0..9e99477d3 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -845,7 +845,7 @@ IF (MEAN_COUNT /= 0) THEN CALL IO_Field_write(TPFILE,TZFIELD,XWM_MAX) ! ! - ! Calculation of mean horizontal wind speed and + ! Calculation of mean horizontal wind speed and ! wind direction based on average components ! XWIFF_MEAN = SQRT((MXF(XUM_MEAN)/MEAN_COUNT)**2 + (MYF(XVM_MEAN)/MEAN_COUNT)**2) @@ -855,7 +855,8 @@ IF (MEAN_COUNT /= 0) THEN XWIDD_MEAN(:,:,:) = XWIDD_MEAN(:,:,:) - 360.0 ENDWHERE ! - IF ((MINVAL(XWIDD_MEAN).LT.0.0).OR.(MAXVAL(XWIDD_MEAN).GT.360.0)) STOP ("Wrong wind direction") + IF ( MINVAL(XWIDD_MEAN) < 0. .OR. MAXVAL(XWIDD_MEAN) > 360. ) & + call Print_msg( NVERB_FATAL, 'GEN', 'WRITE_LFIFM_n', 'Wrong wind direction' ) ! TZFIELD%CMNHNAME = 'WIFFME' TZFIELD%CLONGNAME = 'WIFFME' @@ -867,7 +868,7 @@ IF (MEAN_COUNT /= 0) THEN TZFIELD%CLONGNAME = 'WIDDME' TZFIELD%CUNITS = 'm s-1' TZFIELD%CCOMMENT = 'X_Y_Z_horizontal mean wind direction (degrees from north)' - CALL IO_Field_write(TPFILE,TZFIELD,XWIDD_MEAN) + CALL IO_Field_write(TPFILE,TZFIELD,XWIDD_MEAN) ! TZFIELD%CMNHNAME = 'WIFFMAX' TZFIELD%CLONGNAME = 'WIFFMAX' @@ -882,7 +883,7 @@ IF (MEAN_COUNT /= 0) THEN TZFIELD%CCOMMENT = 'X_Y_Z_horizontal maximum wind direction' CALL IO_Field_write(TPFILE,TZFIELD,XWIDD_MAX) XWIDD_MAX(:,:,:)=XNEGUNDEF -! +! TZFIELD%NGRID = 1 TZFIELD = TFIELDMETADATA( & CMNHNAME = 'generic for mean_count variables', & !Temporary name to ease identification -- GitLab