diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index c6cfe08936fa374ef1691f733e97788b3afaf64c..50829cae70d09f953f71213eee2eea50a30534c3 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -683,6 +683,7 @@ CONTAINS IF (YACTION == 'READ' .AND. .NOT. LLFIREAD) THEN ! Open NetCDF File for reading TZFD_IOZ%CDF => NEWIOCDF() + CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','NF90_OPEN(IO_ZSPLIT) for '//TRIM(FILE)//cfile//'.nc') IOSCDF = NF90_OPEN(TRIM(FILE)//cfile//".nc", NF90_NOWRITE, TZFD_IOZ%CDF%NCID) IF (IOSCDF /= NF90_NOERR) THEN PRINT *, 'Error in opening (NF90_OPEN) ', TRIM(FILE)//cfile//'.nc', ' : ', NF90_STRERROR(IOSCDF) @@ -690,13 +691,13 @@ CONTAINS ELSE IOS = 0 END IF - PRINT *, 'NF90_OPEN(IO_ZSPLIT): ',TRIM(FILE)//cfile//'.nc' END IF IF (YACTION == 'WRITE') THEN ! YACTION == 'WRITE' ! Create NetCDF File for writing TZFD_IOZ%CDF => NEWIOCDF() + CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','NF90_CREATE(IO_ZSPLIT) for '//TRIM(FILE)//cfile//'.nc') IOSCDF = NF90_CREATE(TRIM(FILE)//cfile//".nc", & &IOR(NF90_CLOBBER,NF90_NETCDF4), TZFD_IOZ%CDF%NCID) IF (IOSCDF /= NF90_NOERR) THEN @@ -705,7 +706,6 @@ CONTAINS ELSE IOS = 0 END IF - PRINT *, 'NF90_CREATE(IO_ZSPLIT): ',TRIM(FILE)//cfile//'.nc' END IF END IF #endif diff --git a/src/MNH/advec_4th_order_aux.f90 b/src/MNH/advec_4th_order_aux.f90 index 9da1b685187d1ed71f69670f5b10840cd969db92..3d3bd9de828081ad3d24ce59d20f9cc5607a4914 100644 --- a/src/MNH/advec_4th_order_aux.f90 +++ b/src/MNH/advec_4th_order_aux.f90 @@ -113,7 +113,6 @@ END MODULE MODI_ADVEC_4TH_ORDER_AUX ! USE MODE_ll ! -USE MODD_LUNIT USE MODD_CONF USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll USE MODE_IO_ll @@ -167,21 +166,8 @@ SELECT CASE ( HLBCX(1) ) ! X direction LBC type: (1) for left side ! CASE ('CYCL') ! In that case one must have HLBCX(1) == HLBCX(2) ! -!!$ IF(NHALO == 1) THEN IW=IIB+1 IE=IIE -! IE=IIE-1 -!!$ ELSE -!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) -!!$ WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' -!!$ WRITE(ILUOUT,*) 'cannot be used with NHALO=2' -!!$ !callabortstop -!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) -!!$ CALL ABORT -!!$ STOP -!!$! IW=IIB -!!$! IE=IIE -!!$ END IF ! IF(KGRID == 2) THEN IWF=IW-1 @@ -294,21 +280,8 @@ IF ( .NOT. L2D ) THEN CASE ('CYCL') ! In that case one must have HLBCY(1) == HLBCY(2) ! ! -!!$ IF(NHALO == 1) THEN IS=IJB+1 IN=IJE -! IN=IJE-1 -!!$ ELSE -!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) -!!$ WRITE(ILUOUT,*) 'ERROR : 4th order advection in CYCLic case ' -!!$ WRITE(ILUOUT,*) 'cannot be used with NHALO=2' -!!$!callabortstop -!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) -!!$ CALL ABORT -!!$ STOP -!!$! IS=IJB -!!$! IN=IJE -!!$ END IF ! IF(KGRID == 3) THEN ISF=IS-1 diff --git a/src/MNH/budget.f90 b/src/MNH/budget.f90 index bed79a905fbfa201cad576828aa8f4ae23e4c5b2..e5af6155b39ee9d70aeefd303d508d2e60a815bf 100644 --- a/src/MNH/budget.f90 +++ b/src/MNH/budget.f90 @@ -95,6 +95,7 @@ USE MODD_LES ! USE MODE_FM USE MODE_IO_ll +USE MODE_MSG ! USE MODI_LES_BUDGET USE MODI_CART_COMPRESS @@ -220,14 +221,12 @@ SELECT CASE (KBUDN) IF( IBUSV <= NSV ) THEN CALL BUDGET_CASE(XBURSV(:,:,:,:,IBUSV)) ELSE - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) + ILUOUT0 = TLUOUT0%NLU WRITE(UNIT=ILUOUT0,FMT='("BUDGET: SCALAR VARIABLE",I2," IS ABSENT !!")') & IBUSV WRITE(UNIT=ILUOUT0,FMT='("CHECK FOR THE CALL BUDGET OF THAT VARIABLE")') !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','BUDGET','') END IF END SELECT ! @@ -327,7 +326,7 @@ CONTAINS CBUACTION(KBUDN,NBUCTR_ACTV(KBUDN))/='CC' ) THEN IF( YBUVAR_ADJUSTED(100-ILEN:99) /= YBUCOMMENT_ADJUSTED(100-ILEN:99) & .OR. ILEN==0 ) THEN - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) + ILUOUT0 = TLUOUT0%NLU WRITE(UNIT=ILUOUT0,FMT='("BUDGET: WRONG BUDGET IDENTIFICATION !!")') WRITE(UNIT=ILUOUT0,FMT='("BUDGET: PRESENT VARIABLE: ",I2)') KBUDN WRITE(UNIT=ILUOUT0,FMT='("BUDGET: PRESENT IDENTIFIER: ",A99)') & @@ -337,9 +336,7 @@ CONTAINS WRITE(UNIT=ILUOUT0,FMT='("PLEASE CHECK THE CALL BUDGET OF THE VARIABLE")') WRITE(UNIT=ILUOUT0,FMT='("AND THE BUDGET PROCESS ORDER IN INI_BUDGET !")') !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','BUDGET','') END IF END IF ! diff --git a/src/MNH/call_rttov11.f90 b/src/MNH/call_rttov11.f90 index 5493c3f64fad161e44847861475c9f70a78a7278..f50ba1f01edadfe27af258e87ba7ae64689f63e8 100644 --- a/src/MNH/call_rttov11.f90 +++ b/src/MNH/call_rttov11.f90 @@ -105,6 +105,7 @@ USE MODE_FMREAD USE MODE_ll USE MODE_FM USE MODE_IO_ll +USE MODE_MSG USE MODE_POS ! #ifdef MNH_RTTOV_11 @@ -321,16 +322,12 @@ DO JSAT=1,IJSAT ! loop over sensors CALL rttov_read_coefs (errorstatus, coef_rttov, opts, instrument=instrument) IF(errorstatus /= 0) THEN WRITE(*,*) 'error rttov_readcoeffs :',errorstatus - CALL CLOSE_ll(CLUOUT) - CALL ABORT - STOP "error rttov_readcoeffs" + CALL PRINT_MSG(NVERB_FATAL,'GEN','CALL_RTTOV11','error rttov_readcoeffs') ENDIF ! CALL rttov_initcoeffs (errorstatus,coef_rttov) ! IF( errorstatus/= 0) THEN ! WRITE(*,*) 'error rttov_initcoeffs :',errorstatus -! CALL CLOSE_ll(CLUOUT) -! CALL ABORT -! STOP "error rttov_initcoeffs" +! CALL PRINT_MSG(NVERB_FATAL,'GEN','CALL_RTTOV11','error rttov_initcoeffs') ! ENDIF ! Read coef file for cloud/rain absorption/scattering diff --git a/src/MNH/call_rttov8.f90 b/src/MNH/call_rttov8.f90 index c41920a726cf7adc42f02bb0ec3b92e7d0f7d23c..2d857e5312646cf7249bc325701dba897c90c498 100644 --- a/src/MNH/call_rttov8.f90 +++ b/src/MNH/call_rttov8.f90 @@ -92,7 +92,6 @@ USE MODD_CST USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS USE MODD_GRID_n -USE MODD_LUNIT_n USE MODD_DEEP_CONVECTION_n USE MODD_REF_n USE MODD_RADIATIONS_n, ONLY : XSEA @@ -110,6 +109,7 @@ USE MODE_FMREAD USE MODE_ll USE MODE_FM USE MODE_IO_ll +USE MODE_MSG USE MODE_POS ! #ifdef MNH_RTTOV_8 @@ -1161,17 +1161,13 @@ DO JSAT=1,IJSAT ! loop over sensors IF(errorstatus /= 0) THEN WRITE(*,*) 'error rttov_readcoeffs :',errorstatus !callabortstop - CALL CLOSE_ll(CLUOUT) - CALL ABORT - STOP "error rttov_readcoeffs" + CALL PRINT_MSG(NVERB_FATAL,'GEN','CALL_RTTOV8','error rttov_readcoeffs') ENDIF CALL rttov_initcoeffs (errorstatus,coef) IF(errorstatus /= 0) THEN WRITE(*,*) 'error rttov_initcoeffs :',errorstatus !callabortstop - CALL CLOSE_ll(CLUOUT) - CALL ABORT - STOP "error rttov_initcoeffs" + CALL PRINT_MSG(NVERB_FATAL,'GEN','CALL_RTTOV8','error rttov_initcoeffs') ENDIF ! Read coef file for cloud/rain absorption/scattering diff --git a/src/MNH/close_file_mnh.f90 b/src/MNH/close_file_mnh.f90 index 39c99465dfc857b9f5d79f7c47c0bfa1b503c611..486db2897e554412c51a18e434d402e164c7be4c 100644 --- a/src/MNH/close_file_mnh.f90 +++ b/src/MNH/close_file_mnh.f90 @@ -60,6 +60,8 @@ END MODULE MODI_CLOSE_FILE_MNH USE MODE_ll USE MODE_FM USE MODE_IO_ll +USE MODE_MSG +! USE MODD_LUNIT, ONLY : CLUOUT0 USE MODD_CONF, ONLY : CPROGRAM USE MODD_IO_NAM, ONLY : CFILE @@ -118,9 +120,7 @@ ELSE WRITE(ILUOUT,*) 'Error for closing a file: ' WRITE(ILUOUT,*) 'logical unit ',KUNIT,' does not correspond to file', CFILE !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','CLOSE_FILE_MNH','') END IF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/compare_with_pgd_domain.f90 b/src/MNH/compare_with_pgd_domain.f90 index 23a5b110e41f5f677dd9c5f45261b6f9b14b0a20..e30056cd612825ef8caeadd34b7dfc67184bc929 100644 --- a/src/MNH/compare_with_pgd_domain.f90 +++ b/src/MNH/compare_with_pgd_domain.f90 @@ -53,7 +53,7 @@ END MODULE MODI_COMPARE_WITH_PGD_DOMAIN !! Module MODD_CONF : contains configuration variables for all models. !! NVERB : verbosity level for output-listing !! Module MODD_LUNIT : contains logical unit names for all models -!! CLUOUT0 : name of output-listing +!! TLUOUT0 : output-listing file !! Module MODD_GRID !! XBETA : rotation of the domain !! XRPK : parameter of projection @@ -87,6 +87,7 @@ END MODULE MODI_COMPARE_WITH_PGD_DOMAIN ! USE MODE_FM USE MODE_IO_ll +USE MODE_MSG ! USE MODD_CONF ! declaration modules USE MODD_LUNIT @@ -123,7 +124,7 @@ REAL, DIMENSION(SIZE(XPGDYHAT)) :: ZDIFFY ! difference between the two y coordin !* 1. INITIALIZATIONS ! --------------- ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ZEPS=1.E-7 ! !------------------------------------------------------------------------------- @@ -187,9 +188,7 @@ IF ( (ABS(PLAT0-XLAT0)>ZEPS*MAX(1.,ABS(XLAT0))) & WRITE(ILUOUT0,*) ' +----------------------------------------------------------+' WRITE(ILUOUT0,*) !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPARE_WITH_PGD_DOMAIN','') ENDIF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/compute_r00.f90 b/src/MNH/compute_r00.f90 index 8b851d765dbfa8a8ab8ea707b8b1ca261dc04218..ef71107751d0a038f1db00d4b556a18df72299b7 100644 --- a/src/MNH/compute_r00.f90 +++ b/src/MNH/compute_r00.f90 @@ -42,7 +42,7 @@ END MODULE MODI_COMPUTE_R00 !! ------------------ !! MODD_STO_FILE : CFILES !! MODD_GRID1 : XZZ, XXHAT,XYHAT -!! MODD_LUNIT1: CINIFILE, CLUOUT +!! MODD_LUNIT1: CINIFILE !! MODD_FIELD1: XSVM !! MODD_CONF : NVERB !! MODD_PARAMETERS : NUNDEF @@ -86,6 +86,7 @@ USE MODE_FMREAD USE MODE_IO_ll USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST USE MODE_ll +USE MODE_MSG USE MODD_TYPE_DATE ! IMPLICIT NONE @@ -153,9 +154,7 @@ IF (IFILECUR==0) THEN PRINT*,'PROBLEM WITH THE FOLLOWING FILE: ',CINIFILE PRINT*,CFILES !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPUTE_R00','') ENDIF ! ! Search the number of the files(NFILES), where the Lagrangian tracers @@ -519,9 +518,7 @@ DO JK=1,NKU PRINT*,'XREL, YREL, Z =',ZXREL,ZYREL,ZZ PRINT*,'ZZLXY(NKU)',ZZLXY(NKU) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPUTE_R00','') END IF ! ZEPS3=(ZZ-ZZLXY(IK))/(ZZLXY(IK+1)-ZZLXY(IK)) diff --git a/src/MNH/compute_spectre.f90 b/src/MNH/compute_spectre.f90 index 280e620f4ca36ffa5e3291ac8757086c359147b7..282da52f4583dbe66dd263fedc66f261c1a670ad 100644 --- a/src/MNH/compute_spectre.f90 +++ b/src/MNH/compute_spectre.f90 @@ -58,9 +58,10 @@ USE MODD_PARAMETERS USE MODD_CONF USE MODE_ll USE MODD_ARGSLIST_ll, ONLY : LIST_ll -USE MODD_LUNIT_n, ONLY: CLUOUT +USE MODD_LUNIT_n, ONLY: TLUOUT USE MODE_FM USE MODE_IO_ll +USE MODE_MSG USE MODE_SPLITTINGZ_ll ! USE MODI_FFT55 @@ -146,6 +147,8 @@ INTEGER :: IRESP ! return code in FM routines REAL :: ZMOY_C, ZMOY_S, ZVAR_C, ZVAR_S, ZVAR_S2 !computation of statistical moments !------------------------------------------------------------------------------- ! +ILUOUT = TLUOUT%NLU +! !* 1. COMPUTE LOOP BOUNDS ! ------------------- ! @@ -179,13 +182,8 @@ ALLOCATE(ZTRIGSY(3*IJMAX_ll)) !-- Safety limitation IF(PDXHATM/PDYHATM>1.2 .OR. PDYHATM/PDXHATM>1.2) THEN - WRITE(UNIT=ILUOUT,FMT="(' ERROR',/, & - & ' DELTA X AND DELTA Y MUST BE CLOSE' ,/,& - & ' TOGETHER.')") !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPUTE_SPECTRE','delta X and delta Y must be close') ENDIF ! !------------------------------------------------------------------------------- @@ -196,15 +194,12 @@ ENDIF ! CALL SET99(ZTRIGSX,IIFAXX,IIMAX_ll) IF (IIFAXX(10) /= IIMAX_ll) THEN - CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) WRITE(UNIT=ILUOUT,FMT="(' ERROR',/, & & ' THE FORM OF THE FFT REQUIRES' ,/,& & ' THAT NIMAX MUST BE FACTORIZABLE' ,/,& & ' AS A PRODUCT OF POWERS OF 2, 3 AND 5.')") !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPUTE_SPECTRE','') END IF ! ! extra trigs for shifted (co) sine transform (FFT55) @@ -222,15 +217,12 @@ END IF IF (.NOT. L2D) THEN CALL SET99(ZTRIGSY,IIFAXY,IJMAX_ll) IF (IIFAXY(10) /= IJMAX_ll) THEN - CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) WRITE(UNIT=ILUOUT,FMT="(' ERROR',/, & & ' THE FORM OF THE FFT REQUIRES' ,/,& & ' THAT NJMAX MUST BE FACTORIZABLE' ,/,& & ' AS A PRODUCT OF POWERS OF 2, 3 AND 5.')") !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPUTE_SPECTRE','') END IF ! ! extra trigs for shifted (co) sine transform diff --git a/src/MNH/define_maskn.f90 b/src/MNH/define_maskn.f90 index aff1cd3ffcafd79fb657b1acc23fddcdf014335b..965c6deed63d01d91e4aa2b9496a58c2f6c44edf 100644 --- a/src/MNH/define_maskn.f90 +++ b/src/MNH/define_maskn.f90 @@ -68,6 +68,7 @@ USE MODD_NEST_PGD_n ! USE MODE_FM USE MODE_IO_ll +USE MODE_MSG USE MODE_MODELN_HANDLER ! USE MODD_VAR_ll, ONLY : YSPLITTING @@ -95,7 +96,7 @@ TYPE(ZONE_ll) :: TZCOARSESONGLB ! global son domain in father grid TYPE(ZONE_ll), DIMENSION(1) :: TZCOARSESONLCL ! intersection of global son domain and local father subdomain !------------------------------------------------------------------------------- ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU IMI=GET_CURRENT_MODEL_INDEX() ! ALLOCATE ( NNESTMASK (NIMAX+2*JPHEXT,NJMAX+2*JPHEXT,1+COUNT(NDAD(:)==IMI))) @@ -145,11 +146,8 @@ DO JLOOP=1,NMODEL END DO ! IF (ANY (SUM(NNESTMASK(:,:,:),DIM=3)>1) ) THEN - WRITE(ILUOUT0,*) 'Two nested models in the same father are overlapping each other' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','DEFINE_MASK_n','two nested models with the same father are overlapping each other') END IF ! NNESTMASK(:,:,1) = 1.-SUM(NNESTMASK(:,:,:),DIM=3) diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90 index 57d1784f95aff985f7a01fc3c96cf718ccef6fa1..ee4d8c32b3b31323c2768208a418135850164380 100644 --- a/src/MNH/diag.f90 +++ b/src/MNH/diag.f90 @@ -420,13 +420,8 @@ IF (LTRAJ) THEN ! IF (JF/=1) THEN IF (CINIFILE==CFILES(JF-1)) THEN - PRINT*,'*****************************' - PRINT*,'* INITIAL FILE NON TREATED *' - PRINT*,'*****************************' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','DIAG','initial file not treated') END IF END IF ! @@ -439,10 +434,8 @@ END IF ! ----------- ! IF ( LEN_TRIM(CINIFILE)==0 ) THEN - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + !callabortstop + CALL PRINT_MSG(NVERB_FATAL,'GEN','DIAG','LEN_TRIM(CINIFILE)==0') ENDIF ! INPRAR = 24 +2*(4+NRR+NSV) @@ -461,7 +454,7 @@ ZTIME1=ZTIME2 ! CALL INIT_MNH ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! WRITE(ILUOUT0,*) ' ' WRITE(ILUOUT0,*) '****************************************' @@ -489,10 +482,7 @@ IF (LRADAR .AND. NVERSION_RAD==2 .AND. NPROC/=1) THEN PRINT*, '-> JOB ABORTED' PRINT*, '***************************************' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP - + CALL PRINT_MSG(NVERB_FATAL,'GEN','DIAG','') ENDIF !------------------------------------------------------------------------------- ! @@ -747,14 +737,12 @@ IF (GCLOSE_OUT) THEN CALL IO_FILE_CLOSE_ll(TINIFILE) END IF ! -CALL CLOSE_ll (CLUOUT,IOSTAT=IRESP) +CALL IO_FILE_CLOSE_ll(TLUOUT) ! CALL SECOND_MNH2(ZTIME2) ZTIME2=ZTIME2-ZTIME0 !------------------------------------------------------------------------------- ! -!CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) -! !WRITE(ILUOUT0,*) '+--------------------------------------------------------------+' !WRITE(ILUOUT0,*) '| |' !WRITE(ILUOUT0,*) '| COMPUTING TIME ANALYSIS in DIAG |' @@ -799,9 +787,9 @@ WRITE(ILUOUT0,*) ' ' WRITE(ILUOUT0,*) '***************************** **************' WRITE(ILUOUT0,*) '* EXIT DIAG CORRECTLY *' WRITE(ILUOUT0,*) '**************************** ***************' -!WRITE(ILUOUT0,*) ' (see time analysis in ',TRIM(CLUOUT0),' )' +!WRITE(ILUOUT0,*) ' (see time analysis in ',TRIM(TLUOUT0%CNAME),' )' WRITE(ILUOUT0,*) ' ' -CALL CLOSE_ll (CLUOUT0,IOSTAT=IRESP) +CALL IO_FILE_CLOSE_ll(TLUOUT0) !------------------------------------------------------------------------------- ! !* 10. FINALIZE THE PARALLEL SESSION diff --git a/src/MNH/forcing.f90 b/src/MNH/forcing.f90 index 3aac75017d4fda72fe0973cd0a9254d3ba1b46c9..38ca0ed7fe6cc44badc5a3f3a14d68705cebd5a2 100644 --- a/src/MNH/forcing.f90 +++ b/src/MNH/forcing.f90 @@ -115,7 +115,7 @@ END MODULE MODI_FORCING !! XGXTHFRC,XGYTHFRC: large scale gradient of Theta !! XTENDTHFRC,XTENDRVFRC: large scale tendencies for Theta and Rv !! Module MODD_LUNIT : contains logical unit names for all models -!! CLUOUT0 : name of output-listing +!! TLUOUT0 : output-listing file !! Module MODD_PARAMETERS: declaration of parameter variables !! JPVEXT: define the number of marginal points out of the !! physical domain along the vertical direction. @@ -152,6 +152,7 @@ END MODULE MODI_FORCING ! USE MODE_FM USE MODE_IO_ll +USE MODE_MSG ! USE MODD_CONF USE MODD_DYN @@ -242,14 +243,14 @@ IIU=SIZE(PUT,1) IJU=SIZE(PUT,2) IKU=SIZE(PUT,3) ! +ILUOUT0 = TLUOUT0%NLU +! !* 1. PREPARATION OF FORCING ! ---------------------- ! IF (GSFIRSTCALL) THEN ! GSFIRSTCALL = .FALSE. -! - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) ! !* 1.1 printout number of forcing profiles ! @@ -390,7 +391,6 @@ ELSE IF( .NOT. TEMPORAL_LT ( TPDTCUR, TDTFRC(JXP) ) ) THEN JSX = JSX +1 JXP= JSX +1 - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) WRITE(UNIT=ILUOUT0,FMT='(" THE FORCING FIELDS ARE INTERPOLATED NOW" ,& & " BETWEEN SOUNDING NUMBER ",I2," AND SOUNDING NUMBER ",I2)') JSX,JXP CALL TEMPORAL_DIST ( TDTFRC(JXP)%TDATE%YEAR,TDTFRC(JXP)%TDATE%MONTH, & @@ -728,9 +728,7 @@ IF( LRELAX_THRV_FRC .OR. LRELAX_UV_FRC ) THEN CASE DEFAULT ! the following error should not occur, since tests are made earlier !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP "Error in FORCING: wrong CRELAX_HEIGHT_TYPE option." + CALL PRINT_MSG(NVERB_FATAL,'GEN','FORCING','wrong CRELAX_HEIGHT_TYPE option') END SELECT WHERE ( MZF(1,IKU,1,PZZ(:,:,:)) .LE. XRELAX_HEIGHT_FRC ) GRELAX_MASK_FRC = .FALSE. @@ -863,7 +861,6 @@ CONTAINS END DO ! IF (NVERB >= 10) THEN - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) WRITE(ILUOUT0,*) 'DEFINE_RELAX_FORCING: IKGRAD_TH_MAX = ',IKGRAD_TH_MAX END IF ! diff --git a/src/MNH/horibl.f90 b/src/MNH/horibl.f90 index 05d80a55db5e8d1df0572a542168f4e8b51a238e..6ac7750c2b988017e5dcc0c14b7fbf808be1e570 100644 --- a/src/MNH/horibl.f90 +++ b/src/MNH/horibl.f90 @@ -144,6 +144,7 @@ END MODULE MODI_HORIBL ! USE MODE_FM USE MODE_IO_ll +USE MODE_MSG ! USE MODD_LUNIT ! @@ -220,7 +221,6 @@ REAL :: ZVECT ! -1 if input is vectorial LOGICAL :: LDLSM ! Specify if land/sea mask is present or not ! Variables used for the out put listing INTEGER :: ILUOUT0 ! Logical unit number -INTEGER :: IRET ! Return code of FMLOOK ! Loop counters INTEGER :: JOPOS ! Output position INTEGER :: JIPOS ! Input position @@ -239,7 +239,7 @@ INTEGER :: IRESP ! Return code of FM-routines ! CALL SECOND_MNH(ZTIME1) ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRET) +ILUOUT0 = TLUOUT0%NLU ! !------------------------------------------------------------------------------ ! @@ -525,12 +525,8 @@ DO JLOOP1 = 1, KOLEN ! IF ((IOSS<1).OR.(IONN>IINLA).OR. & (IOSS<1).OR.(IONN>IINLA)) THEN - WRITE (ILUOUT0,'(A)') & - ' -> [HORIBL.F90] Input domain is smaller than output one - latitude. Abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','HORIBL','input domain is smaller than output one') END IF ! ! 3.1.2. northern @@ -575,26 +571,16 @@ DO JLOOP1 = 1, KOLEN (IP3 <-2) .OR. (IP6 >IINLO(ION )+1) .OR. & (IP7 <-2) .OR. (IP10>IINLO(IOS )+1) .OR. & (IP11<-2) .OR. (IP12>IINLO(IOSS)+1)) THEN - WRITE (ILUOUT0,'(A,A)') & - ' -> [HORIBL.F90] Input domain is smaller than output one ', & - '- longitude global, abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','HORIBL','input domain is smaller than output one - longitude global') END IF ELSE IF ((IP1 <0) .OR. (IP2 >IINLO(IONN)-1) .OR. & (IP3 <0) .OR. (IP6 >IINLO(ION )-1) .OR. & (IP7 <0) .OR. (IP10>IINLO(IOS )-1) .OR. & (IP11<0) .OR. (IP12>IINLO(IOSS)-1)) THEN - WRITE (ILUOUT0,'(A,A)') & - ' -> [HORIBL.F90] Input domain is smaller than output one ', & - '- longitude local, abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','HORIBL','input domain is smaller than output one - longitude local') END IF END IF ! diff --git a/src/MNH/ini_lesn.f90 b/src/MNH/ini_lesn.f90 index e2a4b6890d4fadc3979eace5ea31d2b63aebdc36..1d839e333f81809ad7b2069fd680f0dbe9eb198f 100644 --- a/src/MNH/ini_lesn.f90 +++ b/src/MNH/ini_lesn.f90 @@ -41,6 +41,7 @@ ! USE MODE_ll USE MODE_IO_ll +USE MODE_MSG USE MODE_MODELN_HANDLER ! USE MODD_LES @@ -103,7 +104,7 @@ CALL GET_GLOBALDIMS_ll(IIMAX_ll,IJMAX_ll) IIU_ll = IIMAX_ll+2*JPHEXT IJU_ll = IJMAX_ll+2*JPHEXT ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! NLES_TOTADV = 1 NLES_RELA = 2 @@ -163,9 +164,7 @@ IF (CTURB=='NONE') THEN WRITE(ILUOUT,FMT=*) 'You have chosen CTURB="NONE". You must choose a turbulence scheme.' WRITE(ILUOUT,FMT=*) 'STOP' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_LB_n','') END IF !------------------------------------------------------------------------------- ! diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 8de68ce96f9a66b05f6ca0e28e71db95e8b35079..1ba26445a8dd9ee4b1dda0dadd69d4b91923ffdf 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -546,9 +546,7 @@ IF (LFORCING) THEN ! Retrieve the number of time-dependent forcings. "INI_MODEL_n ERROR: you want to read forcing variables from FMfile", & " but no fields have been found by IO_READ_FIELD" !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','') END IF END IF ! @@ -561,9 +559,7 @@ END IF "INI_MODELn ERROR: you want to read forcing ADV variables from FMfile", & " but no fields have been found by IO_READ_FIELD" !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','') END IF WRITE(ILUOUT,*) 'NADVFRC = ', NADVFRC END IF @@ -576,9 +572,7 @@ IF ( L2D_REL_FRC ) THEN ! Retrieve the number of time-dependent forcings. "INI_MODELn ERROR: you want to read forcing REL variables from FMfile", & " but no fields have been found by IO_READ_FIELD" !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','') END IF WRITE(ILUOUT,*) 'NRELFRC = ', NRELFRC END IF @@ -593,9 +587,7 @@ IF (XALZBOT>=XZHAT(IKU) .AND. LVE_RELAX) THEN WRITE(ILUOUT,FMT=*) " but bottom of layer XALZBOT(",XALZBOT,")" WRITE(ILUOUT,FMT=*) " is upper than model top (",XZHAT(IKU),")" !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','') END IF IF (LVE_RELAX) THEN IF (XALZBOT>=XZHAT(IKU-4) ) THEN @@ -1947,9 +1939,7 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG ')) THEN WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNITn" !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','') ENDIF ELSE ! case after a spawning @@ -1987,9 +1977,7 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='SPAWN ')) THEN WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNIT2_SPA" !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','') ENDIF ENDIF ! diff --git a/src/MNH/ini_segn.f90 b/src/MNH/ini_segn.f90 index 398af9c811d00c01ff01429232e28d1db3c86182..ec0e858ad15730f2a280e130265c86026417b87c 100644 --- a/src/MNH/ini_segn.f90 +++ b/src/MNH/ini_segn.f90 @@ -174,9 +174,9 @@ USE MODD_CONF USE MODD_CONF_n, ONLY : CSTORAGE_TYPE USE MODN_CONFZ USE MODD_DYN -USE MODD_IO_ll, ONLY : ISP,LIOCDF4,LLFIREAD,NVERB_FATAL,NVERB_WARNING,TFILEDATA +USE MODD_IO_ll, ONLY : ISP,LIOCDF4,LLFIREAD,NVERB_FATAL,NVERB_WARNING,TFILE_OUTPUTLISTING,TFILEDATA USE MODD_LUNIT -USE MODD_LUNIT_n, ONLY : CINIFILE_n=> CINIFILE, TINIFILE_n => TINIFILE, CINIFILEPGD_n=> CINIFILEPGD +USE MODD_LUNIT_n, ONLY : CINIFILE_n=> CINIFILE, TINIFILE_n => TINIFILE, CINIFILEPGD_n=> CINIFILEPGD, TLUOUT USE MODD_PARAM_n, ONLY : CSURF USE MODD_PARAMETERS USE MODD_REF, ONLY : LBOUSS @@ -264,9 +264,13 @@ TPINIFILE => NULL() ! WRITE(YMI,'(I2.0)') KMI HLUOUT='OUTPUT_LISTING'//ADJUSTL(YMI) - -CALL OPEN_ll(UNIT=ILUOUT,FILE=HLUOUT,IOSTAT=IRESP,FORM='FORMATTED',ACTION='WRITE', & - MODE='GLOBAL') +CALL IO_FILE_ADD2LIST(TLUOUT,HLUOUT,'OUTPUTLISTING','WRITE') +CALL IO_FILE_OPEN_ll(TLUOUT) +! +!Set output file for PRINT_MSG +TFILE_OUTPUTLISTING => TLUOUT +! +ILUOUT=TLUOUT%NLU ! WRITE(UNIT=ILUOUT,FMT='(50("*"),/,"*",17X,"MODEL ",I1," LISTING",16X,"*",/, & & 50("*"))') KMI diff --git a/src/MNH/ini_seriesn.f90 b/src/MNH/ini_seriesn.f90 index e28bca423d9340cb280b10fae5eccc5ca5e76cce..56d0b75eabd6526db66011b3be3874791a340606 100644 --- a/src/MNH/ini_seriesn.f90 +++ b/src/MNH/ini_seriesn.f90 @@ -51,6 +51,7 @@ ! USE MODE_ll USE MODE_IO_ll +USE MODE_MSG USE MODE_MODELN_HANDLER ! USE MODD_TIME ! Experiment and segment times (TDTEXP and TDTSEG) @@ -62,7 +63,7 @@ USE MODD_PARAMETERS USE MODD_CONF_n, ONLY: LUSERV,LUSERC,LUSERR,LUSERI,LUSERS,LUSERG,LUSERH USE MODD_DIM_n, ONLY: NKMAX USE MODD_DYN_n, ONLY: XTSTEP,NSTOP -USE MODD_LUNIT_n, ONLY: CLUOUT +USE MODD_LUNIT_n, ONLY: TLUOUT USE MODD_PARAM_n, ONLY: CSURF USE MODD_PRECIP_n, ONLY: XINPRR,XINPRS,XINPRG USE MODD_TIME_n @@ -109,7 +110,7 @@ IJB_ll = 1 ! + JPHEXT IIE_ll = IIMAX_ll ! + JPHEXT IJE_ll = IJMAX_ll ! + JPHEXT ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! ! !* 1.1 Dimensions @@ -145,9 +146,7 @@ IF ( ( NFREQSERIES*XTSTEP < XSEGLEN ) .AND. & NKCLS,NKCLA,NKLOW,NKMID,NKUP WRITE(ILUOUT,FMT=*) '**********************************************' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','') END IF ! ALLOCATE(LINBOX(IIU,IJU)) @@ -183,9 +182,7 @@ IF (NBJSLICE > 0 ) THEN WRITE(ILUOUT,*) ' NJSLICEL=', NJSLICEL(JJ),'NJSLICEH=',NJSLICEH(JJ) WRITE(ILUOUT,*) ' NISL=',NISL(JJ),'NJSLICESL=',NJSLICESL(JJ),'NISH=',NISH(JJ),'NJSLICESH=',NJSLICESH(JJ) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','') END IF WRITE(UNIT=ILUOUT,FMT=*) 'INI_SERIESn: intersection with slice ',JJ ELSE ! the intersection is void @@ -377,9 +374,7 @@ IF (ISB1.NE.NSTEMP_SERIE1) THEN WRITE(UNIT=ILUOUT,FMT=*) ' NUMBER OF SERIES1 DIFFERS FROM ALLOC, ISB1=', & ISB1,' NSTEMP_SERIE1=',NSTEMP_SERIE1 !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','') END IF ! !* 2.2 Temporal series (z,t) @@ -426,9 +421,7 @@ IF (ISB2.NE.NSTEMP_SERIE2) THEN WRITE(ILUOUT,FMT=*) ' NUMBER OF SERIES2 DIFFERS FROM ALLOC, ISB2=',ISB2, & ' NSTEMP_SERIE2=',NSTEMP_SERIE2 !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','') END IF ! !* 2.3 Temporal series (x,t) @@ -476,9 +469,7 @@ IF (ISB3.NE.NSTEMP_SERIE3) THEN WRITE(ILUOUT,FMT=*) ' NUMBER OF SERIES3 DIFFERS FROM ALLOC, ISB3=',ISB3, & ' NTEMP_SERIE3=',NSTEMP_SERIE3 !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','') END IF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/ini_size_spawn.f90 b/src/MNH/ini_size_spawn.f90 index b0ba2a6df49c7a6cea1636ab9754754241d2924d..ec110b5291b16f96ee330e5a14ccfd0509943a96 100644 --- a/src/MNH/ini_size_spawn.f90 +++ b/src/MNH/ini_size_spawn.f90 @@ -97,6 +97,7 @@ USE MODE_FMREAD USE MODE_GRIDPROJ USE MODE_IO_ll USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST +USE MODE_MSG USE MODE_MODELN_HANDLER USE MODE_SPLITTINGZ_ll ! @@ -147,7 +148,7 @@ TYPE(TFILEDATA),POINTER :: TZDOMAIN => NULL() IMI = GET_CURRENT_MODEL_INDEX() CALL GOTO_MODEL(2) ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! !* 1. INITIALIZATIONS : ! @@ -187,11 +188,8 @@ IF (LBAL_ONLY) THEN NYOR =1 IF (LEN_TRIM(CDADSPAFILE) >0 ) THEN IF (LEN_TRIM(CDADINIFILE) == 0 ) THEN - WRITE(ILUOUT,*) 'ERROR in INI_SIZE_SPAWN: YDADINIFILE not initialized in namelist NAM_LUNIT2_SPA' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SIZE_SPAWN','YDADINIFILE not initialized in namelist NAM_LUNIT2_SPA') ELSE CALL IO_READ_FIELD(TPINIFILE,'DAD_NAME',YDAD_NAME) IF (ADJUSTL(ADJUSTR(YDAD_NAME)) .NE. ADJUSTL(ADJUSTR(CDADINIFILE))) THEN @@ -199,18 +197,13 @@ IF (LBAL_ONLY) THEN WRITE(ILUOUT,*) ' YDADINIFILE='//TRIM(CDADINIFILE) WRITE(ILUOUT,*) ' DAD_NAME of model1='//TRIM(YDAD_NAME) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SIZE_SPAWN','') ELSE ! CALL COMPARE_DAD(CDADINIFILE,CDADSPAFILE,IRESP) IF (IRESP .NE. 0) THEN - WRITE(ILUOUT,*) 'ERROR in INI_SIZE_SPAWN: Unable to replace the DAD of model 1 with YDADSPAFILE' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SIZE_SPAWN','unable to replace the DAD of model 1 with YDADSPAFILE') ENDIF ! ENDIF diff --git a/src/MNH/ini_sizen.f90 b/src/MNH/ini_sizen.f90 index 146b6e7a8e735ceb5374c005f508d035c41378f8..7240fce03fbf0073358b3615e0d6b0612ddfffbf 100644 --- a/src/MNH/ini_sizen.f90 +++ b/src/MNH/ini_sizen.f90 @@ -123,6 +123,7 @@ USE MODE_ll USE MODE_IO_ll USE MODE_FMREAD USE MODE_FM +USE MODE_MSG USE MODE_POS ! !JUAN @@ -163,18 +164,14 @@ CALL IO_READ_FIELD(TPINIFILE,'MY_NAME',CMY_NAME(KMI),IRESP) IF (IRESP /= 0) THEN WRITE(ILUOUT,FMT=9000) 'MY_NAME',IRESP !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SIZE_n','') END IF ! CALL IO_READ_FIELD(TPINIFILE,'DAD_NAME',CDAD_NAME(KMI),IRESP) IF (IRESP /= 0) THEN WRITE(ILUOUT,FMT=9000) 'DAD_NAME',IRESP !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SIZE_n','') END IF ! IF ( KMI > 1 ) THEN @@ -185,9 +182,7 @@ IF ( KMI > 1 ) THEN WRITE(UNIT=ILUOUT,FMT=*) 'CDAD_NAME(KMI)='//TRIM(CDAD_NAME(KMI)) WRITE(UNIT=ILUOUT,FMT=*) 'CMY_NAME(NDAD(KMI))='//TRIM(CMY_NAME(NDAD(KMI))) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SIZE_n','') END IF END IF ! @@ -210,9 +205,7 @@ IF ( IJPHEXT .NE. JPHEXT ) THEN & JPHEXT=',JPHEXT WRITE(ILUOUT,FMT=*)' different from LFI file=',TPINIFILE%CNAME ,' value JPHEXT=',IJPHEXT WRITE(ILUOUT,FMT=*) '-> JOB ABORTED' - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SIZE_n','') !WRITE(NLUOUT,FMT=*) ' JPHEXT HAS BEEN SET TO ', IJPHEXT !IJPHEXT = JPHEXT END IF @@ -275,12 +268,8 @@ IF (KMI == 1) THEN ENDIF IF (L1D .AND. .NOT.GSMONOPROC) THEN WRITE(UNIT=ILUOUT,FMT=9003) KMI - WRITE(ILUOUT,FMT=*) 'THIS IS A 1D SIMULATION : IT HAS TO BE & - & PERFORMED WITH MONOPROCESSOR MODE' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SIZE_n','this is a 1D simulation: it has to be performed in monoprocess mode') ENDIF ! IF( (NIMAX_ll /= 1).AND.(NJMAX_ll == 1) .AND. .NOT.L2D) THEN @@ -290,12 +279,8 @@ IF (KMI == 1) THEN ENDIF IF (L2D .AND. .NOT.GSMONOPROC) THEN WRITE(UNIT=ILUOUT,FMT=9003) KMI - WRITE(ILUOUT,FMT=*) 'THIS IS A 2D SIMULATION : IT HAS TO BE & - & PERFORMED WITH MONOPROCESSOR MODE' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SIZE_n','this is a 2D simulation: it has to be performed in monoprocess mode') ENDIF ! CALL SET_FMPACK_ll(L1D,L2D,LPACK) diff --git a/src/MNH/init_mnh.f90 b/src/MNH/init_mnh.f90 index 8581cf671cafd0683a94f54dfa4f2d4148fd9f64..8a7b928f01c2a58b4db009faa7292dd1c32adf0b 100644 --- a/src/MNH/init_mnh.f90 +++ b/src/MNH/init_mnh.f90 @@ -82,13 +82,14 @@ ! ------------ USE MODD_CONF USE MODD_DYN_n, ONLY: CPRESOPT,NITR ! only for spawning purpose -USE MODD_IO_ll, ONLY: TPTR2FILE +USE MODD_IO_ll, ONLY: TFILE_OUTPUTLISTING,TPTR2FILE USE MODD_LBC_n, ONLY: CLBCX,CLBCY ! only for spawning purpose USE MODD_LUNIT USE MODD_LUNIT_n USE MODD_PARAMETERS ! USE MODE_IO_ll +USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST USE MODE_ll USE MODE_FM ! @@ -137,8 +138,11 @@ CHARACTER(LEN=4), DIMENSION(:), POINTER :: DPTR_CLBCX,DPTR_CLBCY ! IF (CPROGRAM/='REAL ') THEN CLUOUT0 = 'OUTPUT_LISTING0' - CALL OPEN_ll(UNIT=ILUOUT0,FILE=CLUOUT0,IOSTAT=IRESP,FORM='FORMATTED', & - ACTION='WRITE',MODE='GLOBAL') + CALL IO_FILE_ADD2LIST(TLUOUT0,'OUTPUT_LISTING0','OUTPUTLISTING','WRITE') + CALL IO_FILE_OPEN_ll(TLUOUT0) + !Set output file for PRINT_MSG + TFILE_OUTPUTLISTING => TLUOUT0 + ILUOUT0=TLUOUT0%NLU ELSE CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) END IF diff --git a/src/MNH/mnhclose_namelist.f90 b/src/MNH/mnhclose_namelist.f90 index 54c36f3e476bf08282a10a9e016d926cd6e626f5..aa52de069b03901d2843bcb05dd09bb59c2a008b 100644 --- a/src/MNH/mnhclose_namelist.f90 +++ b/src/MNH/mnhclose_namelist.f90 @@ -60,6 +60,8 @@ END MODULE MODI_MNHCLOSE_NAMELIST USE MODE_ll USE MODE_FM USE MODE_IO_ll +USE MODE_MSG +! USE MODD_LUNIT, ONLY : CLUOUT0 USE MODD_CONF, ONLY : CPROGRAM USE MODD_IO_NAM, ONLY : CNAM @@ -106,9 +108,7 @@ ELSE WRITE(ILUOUT,*) 'Error for closing a namelist file: ' WRITE(ILUOUT,*) 'logical unit ',KLUNAM,' does not correspond to namelist file', CNAM !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','MNHCLOSE_NAMELIST','') END IF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/modd_lunit.f90 b/src/MNH/modd_lunit.f90 index fe133c5385b3bca541f61ad546d162cebaf59c3c..17ab524cccee1b52de4fd69adc6973dfabfe90e5 100644 --- a/src/MNH/modd_lunit.f90 +++ b/src/MNH/modd_lunit.f90 @@ -41,8 +41,12 @@ !* 0. DECLARATIONS ! ------------ ! +USE MODD_IO_ll, ONLY: TFILEDATA +! IMPLICIT NONE +! CHARACTER(LEN=16),SAVE :: CLUOUT0 ! Name of output_listing file +TYPE(TFILEDATA),POINTER :: TLUOUT0 => NULL() ! output_listing file CHARACTER(LEN=28),SAVE :: COUTFMFILE ! name of the output FM-file being written CHARACTER(LEN=28),SAVE :: CPGDFILE ! name of the PGD file for PREP_REAL_CASE ! diff --git a/src/MNH/modd_lunitn.f90 b/src/MNH/modd_lunitn.f90 index 1003455809274f4c3b5174c6cb1044cf9393f8b0..0a0437b7e3aebeb84629f6a9dd468863fcf6aa9b 100644 --- a/src/MNH/modd_lunitn.f90 +++ b/src/MNH/modd_lunitn.f90 @@ -60,6 +60,7 @@ TYPE LUNIT_t TYPE(TFILEDATA),POINTER :: TDIAFILE => NULL() ! diachronic output file ! CHARACTER(LEN=16) :: CLUOUT = '' ! Name of output_listing file + TYPE(TFILEDATA),POINTER :: TLUOUT => NULL() ! output_listing file !JUAN CHARACTER(LEN=28),DIMENSION(:),POINTER :: CCPLFILE =>NULL() ! Names of the ! coupling FM-files @@ -79,12 +80,16 @@ TYPE(TFILEDATA), POINTER :: TINIFILEPGD => NULL() CHARACTER(LEN=24), POINTER :: COUTFILE=>NULL() TYPE(TFILEDATA), POINTER :: TDIAFILE=>NULL() CHARACTER(LEN=16), POINTER :: CLUOUT=>NULL() +TYPE(TFILEDATA), POINTER :: TLUOUT=>NULL() CHARACTER(LEN=28),DIMENSION(:), POINTER :: CCPLFILE=>NULL() TYPE(TPTR2FILE), DIMENSION(:), POINTER :: TCPLFILE=>NULL() CONTAINS SUBROUTINE LUNIT_GOTO_MODEL(KFROM, KTO) +! +USE MODD_IO_ll, ONLY : TFILE_OUTPUTLISTING +! INTEGER, INTENT(IN) :: KFROM, KTO ! !JUAN @@ -94,7 +99,9 @@ ALLOCATE (LUNIT_MODEL(KTO)%TCPLFILE(JPCPLFILEMAX)) LUNIT_FIRST_CALL(KTO) = .FALSE. ENDIF !JUAN - +! +TFILE_OUTPUTLISTING => LUNIT_MODEL(KTO)%TLUOUT +! ! Save current state for allocated arrays ! ! Current model is set to model KTO @@ -105,6 +112,7 @@ TINIFILEPGD=>LUNIT_MODEL(KTO)%TINIFILEPGD COUTFILE=>LUNIT_MODEL(KTO)%COUTFILE TDIAFILE=>LUNIT_MODEL(KTO)%TDIAFILE CLUOUT=>LUNIT_MODEL(KTO)%CLUOUT +TLUOUT=>LUNIT_MODEL(KTO)%TLUOUT CCPLFILE=>LUNIT_MODEL(KTO)%CCPLFILE TCPLFILE=>LUNIT_MODEL(KTO)%TCPLFILE diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index afd38b62b95ac7300a02acc1ab332f6122f0e4c1..89fcd75131782fa0e15268f43799068215e56369 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -569,7 +569,7 @@ CALL UPDATE_NSV(IMI) ! !* 1.1 RECOVER THE LOGICAL UNIT NUMBER FOR THE OUTPUT PRINTS ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! !* 1.2 SET ARRAY SIZE ! @@ -2080,8 +2080,8 @@ IF (OEXIT) THEN ! ! ! - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - IF (IMI==NMODEL) CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) + CALL IO_FILE_CLOSE_ll(TLUOUT) + IF (IMI==NMODEL) CALL IO_FILE_CLOSE_ll(TLUOUT0) END IF ! END SUBROUTINE MODEL_n diff --git a/src/MNH/open_luoutn.f90 b/src/MNH/open_luoutn.f90 deleted file mode 100644 index 6cbab5f6bd248035c86872e260e5eab658a087bd..0000000000000000000000000000000000000000 --- a/src/MNH/open_luoutn.f90 +++ /dev/null @@ -1,95 +0,0 @@ -!MNH_LIC Copyright 1994-2014 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. -!----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 prep_nest_pgd 2006/05/18 13:07:25 -!----------------------------------------------------------------- -!###################### -MODULE MODI_OPEN_LUOUTn -!###################### -! - -INTERFACE - SUBROUTINE OPEN_LUOUT_n(HLUOUT) -! -CHARACTER(LEN=28), INTENT(IN) :: HLUOUT ! name of the output listing file -END SUBROUTINE OPEN_LUOUT_n -! -END INTERFACE -END MODULE MODI_OPEN_LUOUTn -! ############################## - SUBROUTINE OPEN_LUOUT_n(HLUOUT) -! ############################## -! -!!**** *OPEN_LUOUT_n* - openning of listing file of model _n -!! -!! -!! PURPOSE -!! ------- -!! -!!** METHOD -!! ------ -!! -!! -!! EXTERNAL -!! -------- -!! -!! Routine FMATTR -!! Routine FMOPEN -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! Module MODD_LUNIT : contains logical unit names for all models -!! CLUOUT0 : name of output-listing -!! Module MODD_LUNIT_n : contains logical unit names for all models -!! CLUOUT : name of output-listing for model _n -!! -!! REFERENCE -!! --------- -!! -!! Book 2 -!! -!! AUTHOR -!! ------ -!! -!! V.Masson Meteo-France -!! -!! MODIFICATIONS -!! ------------- -!! Original 30/09/96 -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODE_IO_ll -! -USE MODD_LUNIT -USE MODD_LUNIT_n -! -IMPLICIT NONE -! -!* 0.1 Declaration of arguments -! ------------------------ -! -CHARACTER(LEN=28), INTENT(IN) :: HLUOUT ! name of the output listing file -! -!* 0.2 Declaration of local variables -! ------------------------------ -! -INTEGER :: IRESP ! return-code if problems eraised -INTEGER :: ILUOUT ! logical unit for listing file for model _n -!------------------------------------------------------------------------------- -! -CLUOUT=HLUOUT -CALL OPEN_ll(UNIT=ILUOUT,FILE=CLUOUT,IOSTAT=IRESP,FORM='FORMATTED',ACTION='WRITE', & - MODE='GLOBAL') -! -!------------------------------------------------------------------------------- -! -END SUBROUTINE OPEN_LUOUT_n diff --git a/src/MNH/open_nestpgd_files.f90 b/src/MNH/open_nestpgd_files.f90 index c2de84da91a94947ddee99bfee4573aef46dd04f..f0c06499f257bc984bc502c52cbc021f0a9b48bc 100644 --- a/src/MNH/open_nestpgd_files.f90 +++ b/src/MNH/open_nestpgd_files.f90 @@ -78,14 +78,14 @@ END MODULE MODI_OPEN_NESTPGD_FILES ! ------------ ! USE MODD_LUNIT +USE MODD_LUNIT_n USE MODD_CONF USE MODD_NESTING USE MODD_PARAMETERS -USE MODD_IO_ll, ONLY : LIOCDF4,LLFIOUT,TFILEDATA,TPTR2FILE +USE MODD_IO_ll, ONLY : LIOCDF4,LLFIOUT,TFILE_OUTPUTLISTING,TFILEDATA,TPTR2FILE ! USE MODI_OPEN_LUOUTn ! -USE MODE_FIELD, ONLY : INI_FIELD_LIST USE MODE_IO_ll USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST USE MODE_FM @@ -125,6 +125,7 @@ CHARACTER(LEN=28) :: YPGD1, YPGD2, YPGD3, YPGD4, & YPGD5, YPGD6, YPGD7, YPGD8 ! ! name of all pgd files ! ! in the namelist +CHARACTER(LEN=100) :: YMSG INTEGER :: IDAD ! father of one model INTEGER :: JPGD ! loop counter LOGICAL :: GADD ! @@ -159,8 +160,12 @@ CLUOUT0='OUTPUT_LISTING0' !* 2. OPENNING OF CLUOUT0 ! ------------------- ! -CALL OPEN_ll(UNIT=ILUOUT0,FILE=CLUOUT0,IOSTAT=IRESP,FORM='FORMATTED',ACTION='WRITE', & - MODE='GLOBAL') +CALL IO_FILE_ADD2LIST(TLUOUT0,'OUTPUT_LISTING0','OUTPUTLISTING','WRITE') +CALL IO_FILE_OPEN_ll(TLUOUT0) +!Set output file for PRINT_MSG +TFILE_OUTPUTLISTING => TLUOUT0 +! +ILUOUT0=TLUOUT0%NLU ! !------------------------------------------------------------------------------- ! @@ -247,9 +252,7 @@ DO JPGD=1,JPMODELMAX IF (JPGD==1) THEN WRITE(ILUOUT0,*) 'No pgd file was present for model 1 in namelist NAM_PGD1' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_NESTPGD_FILES','No pgd file was present for model 1 in namelist NAM_PGD1') ELSE GADD=.FALSE. CYCLE @@ -257,11 +260,9 @@ DO JPGD=1,JPMODELMAX END IF ! IF ( (IDAD<1 .OR. IDAD>JPMODELMAX) .AND. (JPGD>1) ) THEN - WRITE(ILUOUT0,*) 'No father indicated for model ',JPGD,' in namelist NAM_PGD',JPGD !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'No father indicated for model ',JPGD,' in namelist NAM_PGD',JPGD + CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_NESTPGD_FILES',YMSG) END IF ! IF (GADD) THEN @@ -271,9 +272,7 @@ DO JPGD=1,JPMODELMAX WRITE(ILUOUT0,*) 'pgd files are not correctly ordered:' WRITE(ILUOUT0,*) ' in namelist NAM_PGD',JPGD,' was found IDAD= ', IDAD !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_NESTPGD_FILES','') END IF ! NDAD(JPGD)=IDAD @@ -282,7 +281,18 @@ END DO ! !------------------------------------------------------------------------------- ! -!* 5. NAMES OF OUTPUT PGD FILES +!* 5. OPENING OF OUTPUT LISTING FILES FOR ALL MODELS +! ---------------------------------------------- +! +DO JPGD=1,NMODEL + WRITE(YLUOUT,'("OUTPUT_LISTING",I0)') JPGD + CALL IO_FILE_ADD2LIST(LUNIT_MODEL(JPGD)%TLUOUT,YLUOUT,'OUTPUTLISTING','WRITE') + CALL IO_FILE_OPEN_ll(LUNIT_MODEL(JPGD)%TLUOUT) +END DO +! +!------------------------------------------------------------------------------- +! +!* 6. NAMES OF OUTPUT PGD FILES ! ------------------------- ! CALL POSNAM(IPRE_NEST_PGD,'NAM_NEST_PGD',GFOUND,ILUOUT0) @@ -311,7 +321,7 @@ END DO CALL CLOSE_ll(HPRE_NEST_PGD) !------------------------------------------------------------------------------- ! -!* 6. OPENING OF INPUT AND OUTPUT PGD FILES +!* 7. OPENING OF INPUT AND OUTPUT PGD FILES ! ------------------------------------- ! DO JPGD=1,NMODEL @@ -321,15 +331,4 @@ END DO ! !------------------------------------------------------------------------------- ! -!* 7. OPENING OF OUTPUT LISTING FILES FOR ALL MODELS -! ---------------------------------------------- -! -DO JPGD=1,NMODEL - CALL GOTO_MODEL(JPGD) - WRITE(YLUOUT,'("OUTPUT_LISTING",I0)') JPGD - CALL OPEN_LUOUT_n(YLUOUT) -END DO -! -!------------------------------------------------------------------------------- -! END SUBROUTINE OPEN_NESTPGD_FILES diff --git a/src/MNH/open_prc_files.f90 b/src/MNH/open_prc_files.f90 index b6e20d86ad41f9c96f7d1bd5a0fd0f5c35792b6e..e9fdced51eafaa4ee0f68cc59cd62989132a923b 100644 --- a/src/MNH/open_prc_files.f90 +++ b/src/MNH/open_prc_files.f90 @@ -105,7 +105,7 @@ USE MODD_CONF_n !JUAN Z_SPLITTING !USE MODD_CONFZ !JUAN Z_SPLITTING -USE MODD_IO_ll, ONLY: TFILEDATA +USE MODD_IO_ll, ONLY: TFILE_OUTPUTLISTING,TFILEDATA USE MODD_LUNIT USE MODD_LUNIT_n, CINIFILE_n=>CINIFILE , CINIFILEPGD_n=>CINIFILEPGD ! @@ -114,6 +114,7 @@ USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST USE MODE_POS USE MODE_FM USE MODE_IO_ll +USE MODE_MSG ! USE MODN_CONFIO, ONLY : NAM_CONFIO !JUAN Z_SPLITTING @@ -173,8 +174,12 @@ CLUOUT = CLUOUT0 !* 2. OPENNING OF THE OUTPUT LISTING FILE ! ----------------------------------- ! -CALL OPEN_ll(UNIT=ILUOUT0,FILE=CLUOUT0,IOSTAT=IRESP,FORM='FORMATTED',ACTION='WRITE', & - MODE='GLOBAL') +CALL IO_FILE_ADD2LIST(TLUOUT0,'OUTPUT_LISTING0','OUTPUTLISTING','WRITE') +CALL IO_FILE_OPEN_ll(TLUOUT0) +!Set output file for PRINT_MSG +TFILE_OUTPUTLISTING => TLUOUT0 +! +ILUOUT0=TLUOUT0%NLU ! IF (NVERB>=5) WRITE(ILUOUT0,*) 'Routine OPEN_PRC_FILES started' !------------------------------------------------------------------------------- @@ -185,11 +190,8 @@ IF (NVERB>=5) WRITE(ILUOUT0,*) 'Routine OPEN_PRC_FILES started' CALL OPEN_ll(UNIT=IPRE_REAL1,FILE=HPRE_REAL1,IOSTAT=IRESP,ACTION='READ', & DELIM='QUOTE',MODE='GLOBAL',STATUS='OLD') IF (IRESP.NE.0 ) THEN - PRINT "(' STOP :: Routine OPEN_PRC_FILES :: IRESP=',I6,' --> file PRE_REAL1.nam not found ')", IRESP !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_PRC_FILES','file PRE_REAL1.nam not found') ENDIF ! !------------------------------------------------------------------------------- @@ -228,11 +230,9 @@ IF (ILEN>0) THEN IF (HCHEMFILE==HATMFILE) HCHEMFILE='' END IF IF (LEN_TRIM(HCHEMFILE)>0 .AND. HATMFILETYPE/='GRIBEX') THEN - WRITE(ILUOUT0,*) 'Additional CHEMical file is only possible when ATMospheric file is of GRIBEX type' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_PRC_FILES',& + 'Additional CHEMical file is only possible when ATMospheric file is of GRIBEX type') END IF WRITE(ILUOUT0,*) 'HCHEMFILE=', HCHEMFILE ! @@ -262,10 +262,8 @@ IF (LEN_TRIM(HPGDFILE)==0) THEN ! HPGDFILE = HATMFILE ! WRITE(ILUOUT0,*) 'HPGDFILE set to ', HPGDFILE ! ELSE - WRITE(ILUOUT0,*) 'You need the HPGDFILE file when starting from a large-scale file' - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_PRC_FILES',& + 'You need the HPGDFILE file when starting from a large-scale file') ! END IF ELSE !------------------------------------------------------------------------------- @@ -276,11 +274,8 @@ ELSE CALL IO_FILE_ADD2LIST(TPPGDFILE,TRIM(HPGDFILE),'UNKNOWN','READ',KLFINPRAR=0,KLFITYPE=2,KLFIVERB=NVERB) CALL IO_FILE_OPEN_ll(TPPGDFILE,IRESP,OPARALLELIO=.FALSE.) IF (IRESP/=0) THEN - WRITE(ILUOUT0,*) 'STOP: problem during opening of PGD file ',HPGDFILE !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_PRC_FILES',' problem during opening of PGD file '//TRIM(HPGDFILE)) END IF END IF ! diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90 index cd4dee213e24606c191e9e5f904cd84a3937f192..1b573403b8ec59eba5ee5d29cbedfba7a63fe174 100644 --- a/src/MNH/phys_paramn.f90 +++ b/src/MNH/phys_paramn.f90 @@ -438,7 +438,7 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSAVE_DIRFLASWD, ZSAVE_SCAFLASWD,ZSAVE NULLIFY(TZFIELDS_ll) IMI=GET_CURRENT_MODEL_INDEX() ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU CALL GET_DIM_EXT_ll ('B',IIU,IJU) IKU=SIZE(XTHT,3) IKB = 1 + JPVEXT diff --git a/src/MNH/ppm.f90 b/src/MNH/ppm.f90 index 7f52edc77ef6ea6067c55bd8907c85db255d44df..e66202efca64a848be81afdc908539e0e1aea9f9 100644 --- a/src/MNH/ppm.f90 +++ b/src/MNH/ppm.f90 @@ -199,9 +199,6 @@ USE MODI_GET_HALO ! USE MODD_CONF !USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll -!BEG JUAN PPM_LL -USE MODD_LUNIT -!END JUAN PPM_LL ! IMPLICIT NONE ! @@ -253,15 +250,6 @@ IJN=IJE ! !* initialise & update halo & halo2 for PSRC ! -!!$IF(NHALO /= 1) THEN -!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) -!!$ WRITE(ILUOUT,*) 'ERROR : PPM ppm_met.f90 --> Juan ' -!!$ WRITE(ILUOUT,*) 'PPM not yet implemented/tested with NHALO /= 1' -!!$ !callabortstop -!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) -!!$ CALL ABORT -!!$ STOP -!!$ENDIF CALL GET_HALO(PSRC) PR=PSRC ZQL=PSRC @@ -647,9 +635,6 @@ USE MODI_GET_HALO ! USE MODD_CONF !USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll -!BEG JUAN PPM_LL -USE MODD_LUNIT -!END JUAN PPM_LL ! IMPLICIT NONE ! @@ -696,15 +681,6 @@ INTEGER :: IIW,IIA CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) IIW=IIB IIA=IIE -!!$IF(NHALO /= 1) THEN -!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) -!!$ WRITE(ILUOUT,*) 'ERROR : PPM ppm_met.f90 --> Juan ' -!!$ WRITE(ILUOUT,*) 'PPM not yet implemented/tested with NHALO /= 1' -!!$ !callabortstop -!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) -!!$ CALL ABORT -!!$ STOP -!!$ENDIF CALL GET_HALO(PSRC) ! @@ -1299,7 +1275,6 @@ USE MODI_GET_HALO ! USE MODD_CONF !BEG JUAN PPM_LL -USE MODD_LUNIT USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll !END JUAN PPM_LL ! @@ -1351,16 +1326,6 @@ IJN=IJE ! !* initialise & update halo & halo2 for PSRC ! -!!$IF(NHALO /= 1) THEN -!!$ CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT,IRESP) -!!$ WRITE(ILUOUT,*) 'ERROR : PPM ppm_met.f90 --> Juan ' -!!$ WRITE(ILUOUT,*) 'PPM not yet implemented/tested with NHALO /= 1' -!!$ !callabortstop -!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) -!!$ CALL ABORT -!!$ STOP -!!$ENDIF -! CALL GET_HALO2(PSRC,TZ_PSRC_HALO2_ll) ZPHAT=PSRC ZFPOS=PSRC @@ -1574,7 +1539,6 @@ USE MODE_IO_ll USE MODI_SHUMAN USE MODI_GET_HALO ! -USE MODD_LUNIT USE MODD_CONF !USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll ! @@ -1969,7 +1933,6 @@ USE MODE_IO_ll USE MODI_SHUMAN ! USE MODD_CONF -USE MODD_LUNIT USE MODD_PARAMETERS !USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll ! @@ -2222,7 +2185,6 @@ USE MODE_ll USE MODE_IO_ll USE MODI_SHUMAN ! -USE MODD_LUNIT USE MODD_CONF USE MODD_PARAMETERS !USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index 6f33b988d4844a10aa7505b60f38e5594d652448..304057d263fb629123cfe02c8a7414e9f13df2c6 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -319,6 +319,7 @@ ! ------------ ! USE MODD_PARAMETERS ! Declarative modules +USE MODD_ARGSLIST_ll, ONLY : LIST_ll USE MODD_DIM_n USE MODD_CONF USE MODD_CST @@ -344,7 +345,9 @@ USE MODD_CH_AEROSOL,ONLY: LORILAM, CORGANIC, LVARSIGI, LVARSIGJ, LINITPM, XINIR USE MODD_DUST, ONLY: LDUST, NMODE_DST, CRGUNITD, XINISIG, XINIRADIUS, XN0MIN USE MODD_SALT, ONLY: LSALT, NMODE_SLT, CRGUNITS, XINISIG_SLT, XINIRADIUS_SLT, XN0MIN_SLT USE MODD_VAR_ll, ONLY: NPROC +USE MODD_LUNIT, ONLY: TLUOUT0 USE MODD_LUNIT_n +USE MODD_IO_ll, ONLY: TFILE_OUTPUTLISTING USE MODD_CONF_n USE MODD_NSV, ONLY : NSV,NSV_CHEM, & NSV_DSTEND, NSV_DSTBEG @@ -360,7 +363,6 @@ USE MODE_FMREAD USE MODE_IO_ll USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST USE MODE_ll -USE MODD_ARGSLIST_ll, ONLY : LIST_ll USE MODE_MODELN_HANDLER USE MODE_FIELD USE MODE_MSG @@ -676,8 +678,13 @@ CALL DEFAULT_EXPRE CLUOUT = 'OUTPUT_LISTING1' CLUOUT0 = CLUOUT CEXPRE = 'PRE_IDEA1.nam' -CALL OPEN_ll(UNIT=NLUOUT,FILE=CLUOUT,IOSTAT=NRESP,FORM='FORMATTED',ACTION='WRITE', & - MODE='GLOBAL') +CALL IO_FILE_ADD2LIST(TLUOUT0,CLUOUT0,'OUTPUTLISTING','WRITE') +CALL IO_FILE_OPEN_ll(TLUOUT) +NLUOUT = TLUOUT%NLU +!Set output files for PRINT_MSG +TLUOUT => TLUOUT0 +TFILE_OUTPUTLISTING => TLUOUT0 +! CALL OPEN_ll(UNIT=NLUPRE,FILE=CEXPRE,IOSTAT=NRESP,ACTION='READ', & DELIM='QUOTE',MODE='GLOBAL') ! @@ -737,9 +744,7 @@ IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN & JPHEXT=',JPHEXT WRITE(NLUOUT,FMT=*) ' different from PGD files=', CINIFILEPGD,' value JPHEXT=',IJPHEXT WRITE(NLUOUT,FMT=*) '-> JOB ABORTED' - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','') !WRITE(NLUOUT,FMT=*) ' JPHEXT HAS BEEN SET TO ', IJPHEXT !IJPHEXT = JPHEXT END IF @@ -811,12 +816,8 @@ IF (.NOT.LUSERV) THEN END IF ! IF((LUSERI .OR. LUSERC).AND. (CIDEAL /= 'RSOU')) THEN - WRITE(NLUOUT,FMT=*) 'USE OF HYDROMETEORS IS ONLY ALLOWED IN RSOU CASE' - WRITE(NLUOUT,FMT=*) '-> JOB ABORTED' - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + !callabortstop + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','use of hydrometeors is only allowed in RSOU case') ENDIF IF (LUSERI) THEN LUSERC =.TRUE. @@ -950,12 +951,8 @@ SELECT CASE(CIDEAL) CASE('RSOU','CSTN') IF (LGEOSBAL) ALLOCATE(XCORIOZ(NIU,NJU,NKU)) ! exceptionally a 3D array CASE DEFAULT ! undefined preinitialization - WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE : CIDEAL IS NOT CORRECTLY DEFINED' - WRITE(NLUOUT,FMT=*) '-> JOB ABORTED' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','CIDEAL is not correctly defined') END SELECT ! !* 4.4 Prognostic variables at M instant (module MODD_FIELD1): @@ -1265,13 +1262,9 @@ ELSE WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE : XLATORI=' , XLATORI, & ' XLONORI= ', XLONORI ELSE - WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE : LATITUDE AND LONGITUDE OF THE CENTER & - & POINT MUST BE INITIALIZED ALL TOGETHER OR NOT' - WRITE(NLUOUT,FMT=*) '-> JOB ABORTED' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE',& + 'latitude and longitude of the center point must be initialized alltogether or not') END IF END IF ! @@ -1379,12 +1372,8 @@ IF ( LEN_TRIM(CPGD_FILE) == 0 .OR. .NOT. LREAD_ZS) THEN END DO ! CASE DEFAULT ! undefined shape of orography - WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE: ERRONEOUS TERRAIN TYPE' - WRITE(NLUOUT,FMT=*) '-> JOB ABORTED' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','erroneous terrain type') END SELECT ! CALL ADD2DFIELD_ll(TZ_FIELDS_ll, XZS) @@ -1397,11 +1386,8 @@ END IF ! ((CLBCX(1) /= "OPEN" ) .OR. & ! (CLBCX(2) /= "OPEN" ) .OR. (CLBCY(1) /= "OPEN" ) .OR. & ! (CLBCY(2) /= "OPEN" )) ) THEN -! WRITE(NLUOUT,FMT=*) 'STOP:WITH A PGD FILE YOU CANNOT BE IN CYCLIC LBC' ! !callabortstop -! CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) -! CALL ABORT -! STOP +! CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','with a PGD file, you cannot be in a cyclic LBC') !END IF ! IF (LWEST_ll()) THEN @@ -1457,9 +1443,7 @@ IF (CTYPELOC =='LATLON' ) THEN WRITE(NLUOUT,FMT=*) 'CTYPELOC CANNOT BE LATLON IN CARTESIAN GEOMETRY' WRITE(NLUOUT,FMT=*) '-> JOB ABORTED' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','CTYPELOC cannot be LATLON in cartesian geometry') END IF END IF ! @@ -1488,21 +1472,14 @@ END IF ! and 1D anelastic reference state ! IF(LPV_PERT .AND. .NOT.(LGEOSBAL)) THEN - WRITE(NLUOUT,FMT=*) 'FOR PV INVERSION, LGEOSBAL HAS TO BE TRUE' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','for PV inversion, LGEOSBAL has to be true') STOP ENDIF ! IF(LPV_PERT .AND. NPROC>1) THEN - WRITE(NLUOUT,FMT=*) 'PREP_IDEAL_CASE : THE USE OF A PV INVERSION HAS TO BE & - & PERFORMED WITH MONOPROCESSOR MODE' - WRITE(NLUOUT,FMT=*) '-> JOB ABORTED' - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + !callabortstop + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','PV inversion has to be performed in monoprocess mode') ENDIF ! !* 5.2.1 Use a Radiosounding : CIDEAL='RSOU'' @@ -1791,11 +1768,8 @@ IF (CSURF =='EXTE') THEN IF (LEN_TRIM(CPGD_FILE)/=0) THEN CINIFILEPGD=CPGD_FILE ELSE - WRITE(NLUOUT,FMT=*) 'STOP : CINIFILEPGD needed in NAM_LUNITn' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','CINIFILEPGD needed in NAM_LUNITn') ENDIF ENDIF CALL SURFEX_ALLOC_LIST(1) @@ -1934,7 +1908,7 @@ WRITE(NLUOUT,FMT=*) '****************************************************' WRITE(NLUOUT,FMT=*) '* PREP_IDEAL_CASE: PREP_IDEAL_CASE ENDS CORRECTLY. *' WRITE(NLUOUT,FMT=*) '****************************************************' ! -CALL CLOSE_ll(CLUOUT,IOSTAT=NRESP) +CALL IO_FILE_CLOSE_ll(TLUOUT) CALL END_PARA_ll(IINFO_ll) ! ! diff --git a/src/MNH/prep_nest_pgd.f90 b/src/MNH/prep_nest_pgd.f90 index dc16a5caa61dd074c23b394b520b6b138180eb27..0a65ebd0201298e38f90edc77bde49bc7fe49957 100644 --- a/src/MNH/prep_nest_pgd.f90 +++ b/src/MNH/prep_nest_pgd.f90 @@ -115,6 +115,7 @@ USE MODI_NEST_FIELD_n USE MODI_NEST_ZSMT_n USE MODI_READ_HGRID ! +USE MODE_FIELD, ONLY : INI_FIELD_LIST USE MODE_FM USE MODE_FMREAD USE MODE_FMWRIT @@ -192,7 +193,7 @@ NVERB=1 CALL OPEN_NESTPGD_FILES(TZFILEPGD,TZFILENESTPGD) CALL SET_JP_ll(JPMODELMAX,JPHEXT,JPVEXT,JPHEXT) ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! CALL SURFEX_ALLOC_LIST(NMODEL) YSURF_CUR => YSURF_LIST(1) @@ -392,7 +393,7 @@ WRITE(ILUOUT0,FMT=*) WRITE(ILUOUT0,FMT=*) '************************************************' WRITE(ILUOUT0,FMT=*) '* PREP_NEST_PGD: PREP_NEST_PGD ends correctly. *' WRITE(ILUOUT0,FMT=*) '************************************************' -CALL CLOSE_ll(CLUOUT0) +CALL IO_FILE_CLOSE_ll(TLUOUT0) ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90 index 1bf38ed17e81d0d4fcf727b50d7879ac754904d4..cb2de5d16ed4deededc196d1f9f704dcac2540fd 100644 --- a/src/MNH/prep_pgd.f90 +++ b/src/MNH/prep_pgd.f90 @@ -77,17 +77,18 @@ ! USE MODD_CONF, ONLY : CPROGRAM, L1D, L2D, LPACK, LCARTESIAN USE MODD_CONF_n,ONLY : CSTORAGE_TYPE -USE MODD_LUNIT, ONLY : CLUOUT0 +USE MODD_LUNIT, ONLY : CLUOUT0,TLUOUT0 +USE MODD_LUNIT_n,ONLY : LUNIT_MODEL USE MODD_PARAMETERS, ONLY : XUNDEF -USE MODD_IO_ll, ONLY : GSMONOPROC,LIOCDF4,LLFIOUT,TFILEDATA,TFILE_SURFEX +USE MODD_IO_ll, ONLY : GSMONOPROC,LIOCDF4,LLFIOUT,TFILEDATA,TFILE_OUTPUTLISTING,TFILE_SURFEX USE MODD_IO_SURF_MNH, ONLY : NHALO USE MODD_SPAWN, ONLY : NDXRATIO,NDYRATIO,NXSIZE,NYSIZE,NXOR,NYOR ! USE MODE_POS +USE MODE_FM USE MODE_FMWRIT USE MODE_IO_ll USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST -USE MODE_FM USE MODE_MODELN_HANDLER USE MODE_MSG USE MODE_FIELD @@ -127,6 +128,7 @@ INTEGER :: ININAR LOGICAL :: GFOUND CHARACTER(LEN=28) :: YDAD =' ' ! name of dad of input FM file CHARACTER(LEN=28) :: CPGDFILE ='PGDFILE' ! name of the output file +CHARACTER(LEN=100) :: YMSG INTEGER :: NZSFILTER=1 ! number of iteration for filter for fine orography LOGICAL :: LHSLOP=.FALSE. ! filtering of slopes higher than XHSLOP REAL :: XHSLOP=1.2 ! if LHSLOP filtering of slopes higher than XHSLOP @@ -160,19 +162,22 @@ CALL INITIO_ll() NHALO=15 ! CLUOUT0='OUTPUT_LISTING0' ! Name of the output-listing. +CALL IO_FILE_ADD2LIST(TLUOUT0,'OUTPUT_LISTING0','OUTPUTLISTING','WRITE') +CALL IO_FILE_OPEN_ll(TLUOUT0) ! -CALL OPEN_ll(UNIT=ILUOUT0,FILE=CLUOUT0,IOSTAT=IRESP, & - FORM='FORMATTED',ACTION='WRITE',MODE='GLOBAL') +!Set output file for PRINT_MSG +TFILE_OUTPUTLISTING => TLUOUT0 +! +LUNIT_MODEL(1)%TLUOUT => TLUOUT0 +ILUOUT0=TLUOUT0%NLU ! !JUAN CALL OPEN_ll(UNIT=ILUNAM,FILE='PRE_PGD1.nam',IOSTAT=IRESP, & FORM='FORMATTED',ACTION='READ',STATUS='OLD',MODE='GLOBAL') IF (IRESP.NE.0 ) THEN -PRINT "('PREP_PGD :: IRESP=',I6,' --> file PRE_PGD1.nam not found ')", IRESP + WRITE(YMSG,*) 'file PRE_PGD1.nam not found, IRESP=', IRESP !callabortstop -CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) -CALL ABORT -STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_PGD',YMSG) ENDIF !JUAN @@ -316,12 +321,13 @@ WRITE(ILUOUT0,*) '***************************' ! ---------------------- ! CALL IO_FILE_CLOSE_ll(TZFILE,OPARALLELIO=.FALSE.) -CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP,OPARALLELIO=.FALSE.) -! -CALL END_PARA_ll(IINFO_ll) ! CALL SURFEX_DEALLO_LIST ! +CALL IO_FILE_CLOSE_ll(TLUOUT0,OPARALLELIO=.FALSE.) +! +CALL END_PARA_ll(IINFO_ll) +! !------------------------------------------------------------------------------- ! END PROGRAM PREP_PGD diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90 index 90016161f1e55cda908e8fe065871c0896c9327f..c03c6b73de46d58939087d96330d183a957fa88d 100644 --- a/src/MNH/prep_real_case.f90 +++ b/src/MNH/prep_real_case.f90 @@ -395,6 +395,7 @@ USE MODE_FMWRIT, ONLY : IO_WRITE_HEADER USE MODE_IO_ll USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST USE MODE_ll +USE MODE_MSG USE MODE_MODELN_HANDLER USE MODE_FMREAD USE MODE_FIELD @@ -575,7 +576,7 @@ CALL OPEN_PRC_FILES(YPRE_REAL1,YATMFILE, YATMFILETYPE & ,YCHEMFILE,YCHEMFILETYPE & ,YSURFFILE,YSURFFILETYPE & ,YPGDFILE,TZPGDFILE) -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! CPGDFILE = YPGDFILE ! @@ -594,9 +595,7 @@ ELSE WRITE(ILUOUT0,FMT=*) 'EITHER MESONH OR GRIBEX' WRITE(ILUOUT0,FMT=*) '-> JOB ABORTED' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_REAL_CASE','') END IF ! LCPL_AROME=.FALSE. @@ -1181,7 +1180,7 @@ END IF !------------------------------------------------------------------------------- ! CALL IO_FILE_CLOSE_ll(TINIFILE) -CALL CLOSE_ll(CLUOUT0, IOSTAT=IRESP) +CALL IO_FILE_CLOSE_ll(TLUOUT0) ! ! CALL END_PARA_ll(IINFO_ll) diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90 index 2a3e83afdaa5135a3621bc8c6c03e42adfbf6140..b17c1531fb4706f26f3fed57de6352f5f666589b 100644 --- a/src/MNH/prep_surfex.f90 +++ b/src/MNH/prep_surfex.f90 @@ -39,7 +39,7 @@ USE MODD_CONF, ONLY : CPROGRAM,NMASDEV,NBUGFIX,CBIBUSER,& L1D, L2D, LPACK USE MODD_CONF_n, ONLY : CSTORAGE_TYPE USE MODD_IO_ll, ONLY : TFILEDATA, LIOCDF4, LLFIOUT, TFILE_SURFEX -USE MODD_LUNIT, ONLY : CLUOUT0, CPGDFILE,COUTFMFILE +USE MODD_LUNIT, ONLY : CLUOUT0, CPGDFILE,COUTFMFILE, TLUOUT0 USE MODD_LUNIT_n, ONLY : CINIFILE USE MODD_MNH_SURFEX_n USE MODD_PARAMETERS, ONLY : JPMODELMAX,JPHEXT,JPVEXT, NUNDEF, XUNDEF @@ -52,6 +52,7 @@ USE MODE_FMWRIT USE MODE_IO_ll USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST USE MODE_ll +USE MODE_MSG USE MODE_MODELN_HANDLER USE MODE_SPLITTINGZ_ll ! @@ -111,7 +112,7 @@ CALL OPEN_PRC_FILES(YPRE_REAL1,YATMFILE, YATMFILETYPE & ,YCHEMFILE,YCHEMFILETYPE & ,YSURFFILE,YSURFFILETYPE & ,YPGDFILE,TZPGDFILE) -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! CPGDFILE = YPGDFILE ! @@ -205,7 +206,7 @@ WRITE(ILUOUT0,*) '| PREP_SURFEX ends correctly |' WRITE(ILUOUT0,*) '| |' WRITE(ILUOUT0,*) '----------------------------------' CALL IO_FILE_CLOSE_ll(TZFILE) -CALL CLOSE_ll(CLUOUT0, IOSTAT=IRESP) +CALL IO_FILE_CLOSE_ll(TLUOUT0) ! CALL END_PARA_ll(IINFO_ll) CALL SURFEX_DEALLO_LIST diff --git a/src/MNH/pressure_in_prep.f90 b/src/MNH/pressure_in_prep.f90 index f82bc45c3631bfc218a953b0ff5cd12930152083..df22cb3e9e6e64e5d8119eaa6e6521f3c668ac74 100644 --- a/src/MNH/pressure_in_prep.f90 +++ b/src/MNH/pressure_in_prep.f90 @@ -73,9 +73,9 @@ END MODULE MODI_PRESSURE_IN_PREP !* 0. DECLARATIONS ! ------------ ! -USE MODE_FM USE MODE_ll USE MODE_IO_ll +USE MODE_MSG ! USE MODI_ANEL_BALANCE_n USE MODI_GDIV @@ -134,7 +134,7 @@ INTEGER :: I,J,K !* 1. Initialisations ! --------------- ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! IKB=1+JPVEXT IKE=NKMAX+JPVEXT @@ -282,9 +282,7 @@ CALL EXTRAPOL('S',ZRV) WRITE(ILUOUT0,*) '******************************************************************************' WRITE(ILUOUT0,*) ' ' !callabortstop -CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) -CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','PRESSURE_IN_PREP','') END IF ELSE !* 7. Happy conclusion diff --git a/src/MNH/radar_scattering.f90 b/src/MNH/radar_scattering.f90 index 29269bbdd1d1dd5dd538fa3e1b189e584ace7e93..0d9437165a89985775cff1d0f17c23d3cbbfa709 100644 --- a/src/MNH/radar_scattering.f90 +++ b/src/MNH/radar_scattering.f90 @@ -104,16 +104,8 @@ END MODULE MODI_RADAR_SCATTERING ! ------------ ! USE MODD_CST +USE MODD_LUNIT USE MODD_PARAMETERS -USE MODD_RAIN_ICE_DESCR, ONLY: XALPHAR_I=>XALPHAR,XNUR_I=>XNUR,XDR_I=>XDR,XLBEXR_I=>XLBEXR,& - XLBR_I=>XLBR,XCCR_I=>XCCR,XBR_I=>XBR,XCR_I=>XCR,& - XALPHAS_I=>XALPHAS,XNUS_I=>XNUS,XDS_I=>XDS,XLBEXS_I=>XLBEXS,& - XLBS_I=>XLBS,XCCS_I=>XCCS,XAS_I=>XAS,XBS_I=>XBS,XCXS_I=>XCXS,XCS_I=>XCS,& - XALPHAG_I=>XALPHAG,XNUG_I=>XNUG,XDG_I=>XDG,XLBEXG_I=>XLBEXG,& - XLBG_I=>XLBG,XCCG_I=>XCCG,XAG_I=>XAG,XBG_I=>XBG,XCXG_I=>XCXG,XCG_I=>XCG,& - XALPHAI_I=>XALPHAI,XNUI_I=>XNUI,XDI_I=>XDI,XLBEXI_I=>XLBEXI,& - XLBI_I=>XLBI,XAI_I=>XAI,XBI_I=>XBI,XC_I_I=>XC_I,& - XRTMIN_I=>XRTMIN !!LIMA USE MODD_PARAM_LIMA_WARM, ONLY: XDR_L=>XDR,XLBEXR_L=>XLBEXR,XLBR_L=>XLBR,XBR_L=>XBR,XCR_L=>XCR USE MODD_PARAM_LIMA_COLD, ONLY: XDI_L=>XDI,XLBEXI_L=>XLBEXI,XLBI_L=>XLBI,XAI_L=>XAI,XBI_L=>XBI,XC_I_L=>XC_I,& @@ -126,17 +118,25 @@ USE MODD_PARAM_LIMA, ONLY: XALPHAR_L=>XALPHAR,XNUR_L=>XNUR,XALPHAS_L=>XALPHAS,XN !!LIMA USE MODD_RADAR, ONLY:XLAM_RAD,XSTEP_RAD,NBELEV,NDIFF,LATT,NPTS_GAULAG,LQUAD,XVALGROUND,NDGS, & LFALL,LWBSCS,LWREFL,XREFLVDOPMIN,XREFLMIN,LSNRT,XSNRMIN +USE MODD_RAIN_ICE_DESCR, ONLY: XALPHAR_I=>XALPHAR,XNUR_I=>XNUR,XDR_I=>XDR,XLBEXR_I=>XLBEXR,& + XLBR_I=>XLBR,XCCR_I=>XCCR,XBR_I=>XBR,XCR_I=>XCR,& + XALPHAS_I=>XALPHAS,XNUS_I=>XNUS,XDS_I=>XDS,XLBEXS_I=>XLBEXS,& + XLBS_I=>XLBS,XCCS_I=>XCCS,XAS_I=>XAS,XBS_I=>XBS,XCXS_I=>XCXS,XCS_I=>XCS,& + XALPHAG_I=>XALPHAG,XNUG_I=>XNUG,XDG_I=>XDG,XLBEXG_I=>XLBEXG,& + XLBG_I=>XLBG,XCCG_I=>XCCG,XAG_I=>XAG,XBG_I=>XBG,XCXG_I=>XCXG,XCG_I=>XCG,& + XALPHAI_I=>XALPHAI,XNUI_I=>XNUI,XDI_I=>XDI,XLBEXI_I=>XLBEXI,& + XLBI_I=>XLBI,XAI_I=>XAI,XBI_I=>XBI,XC_I_I=>XC_I,& + XRTMIN_I=>XRTMIN USE MODD_TMAT ! USE MODE_ARF +USE MODE_FGAU , ONLY:GAULAG USE MODE_FSCATTER +USE MODE_IO_ll +USE MODE_MSG USE MODE_READTMAT -USE MODE_FGAU , ONLY:GAULAG -USE MODI_GAMMA, ONLY:GAMMA ! -USE MODE_FM -USE MODE_IO_ll -USE MODD_LUNIT +USE MODI_GAMMA, ONLY:GAMMA ! IMPLICIT NONE ! @@ -273,11 +273,11 @@ REAL :: ZCCS,ZLBS,ZLBEXS,ZDS,ZALPHAS,ZNUS,ZAS,ZBS,ZCXS REAL :: ZCCG,ZLBG,ZLBEXG,ZDG,ZALPHAG,ZNUG,ZAG,ZBG,ZCXG REAL :: ZLBI,ZLBEXI,ZDI,ZALPHAI,ZNUI,ZAI,ZBI REAL,DIMENSION(:),ALLOCATABLE :: ZRTMIN +CHARACTER(LEN=100) :: YMSG ! !* 1. INITIALISATION !-------------- -! ouverture fichier listing -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! IF (PRESENT(PCR_RAY)) THEN GLIMA=.TRUE. @@ -473,18 +473,14 @@ IF (GLIMA .AND. NDIFF==7) THEN WRITE(ILUOUT0,*) " ERROR : TMATRICE TABLE ARE MADE WITH XALPHAR=1 XNUR=2" WRITE(ILUOUT0,*) " FOR CCLOUD=LIMA. PLEASE CHANGE THIS VALUES OR PROVIDE " WRITE(ILUOUT0,*) " NEW TMATRICE TABLES " - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','RADAR_SCATTERING','') ENDIF ELSE IF (ZALPHAR/=1 .AND. ZNUR /=1.) THEN WRITE(ILUOUT0,*) " ERROR : TMATRICE TABLE ARE MADE WITH XALPHAR=1 XNUR=1" WRITE(ILUOUT0,*) " FOR CCLOUD=ICE3. PLEASE CHANGE THIS VALUEs OR PROVIDE " WRITE(ILUOUT0,*) " NEW TMATRICE TABLES " - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','RADAR_SCATTERING','') ENDIF ENDIF @@ -584,9 +580,7 @@ DO JI=1,INBRAD WRITE(ILUOUT0,*) "Tmatrice tables are only available for XLAM_RAD=0.1062" WRITE(ILUOUT0,*) "or XLAM_RAD=0.053.2 or XLAM_RAD=0.031.8" WRITE(ILUOUT0,*) "change XLAM_RAD in namelist or compute new tmatrice table" - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','RADAR_SCATTERING','') ENDIF !************ fichiers Min Max Pas et Coef Tmat *********** @@ -633,10 +627,8 @@ DO JI=1,INBRAD !rain CALL OPEN_ll(UNIT=IUNIT,FILE=YFILE_COEFINT(1),FORM="FORMATTED",ACCESS="SEQUENTIAL",ACTION="READ",IOSTAT=IRESP,MODE='GLOBAL') IF ( IRESP /= 0 ) THEN - WRITE(ILUOUT0,*) "STOP : PROBLEM OPENING FILE : ", YFILE_COEFINT(1) - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) "problem opening file ",TRIM(YFILE_COEFINT(1)) + CALL PRINT_MSG(NVERB_FATAL,'GEN','RADAR_SCATTERING',YMSG) ENDIF ILINE=1 DO WHILE (ILINE .LE. INB_LINE(1)) @@ -659,10 +651,8 @@ DO JI=1,INBRAD !snow CALL OPEN_ll(UNIT=IUNIT,FILE=YFILE_COEFINT(2),FORM="FORMATTED",ACCESS="SEQUENTIAL",ACTION="READ",IOSTAT=IRESP,MODE='GLOBAL') IF ( IRESP /= 0 ) THEN - WRITE(ILUOUT0,*) "STOP : PROBLEM OPENING FILE : ", YFILE_COEFINT(2) - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) "problem opening file ",TRIM(YFILE_COEFINT(2)) + CALL PRINT_MSG(NVERB_FATAL,'GEN','RADAR_SCATTERING',YMSG) ENDIF ILINE=1 DO WHILE (ILINE .LE. INB_LINE(2)) @@ -685,10 +675,8 @@ DO JI=1,INBRAD !graupel CALL OPEN_ll(UNIT=IUNIT,FILE=YFILE_COEFINT(3),FORM="FORMATTED",ACCESS="SEQUENTIAL",ACTION="READ",IOSTAT=IRESP,MODE='GLOBAL') IF ( IRESP /= 0 ) THEN - WRITE(ILUOUT0,*) "STOP : PROBLEM OPENING FILE : ", YFILE_COEFINT(3) - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) "problem opening file ",TRIM(YFILE_COEFINT(3)) + CALL PRINT_MSG(NVERB_FATAL,'GEN','RADAR_SCATTERING',YMSG) ENDIF ILINE=1 DO WHILE (ILINE .LE. INB_LINE(3)) @@ -711,10 +699,8 @@ DO JI=1,INBRAD !wet graupel CALL OPEN_ll(UNIT=IUNIT,FILE=YFILE_COEFINT(4),FORM="FORMATTED",ACCESS="SEQUENTIAL",ACTION="READ",IOSTAT=IRESP,MODE='GLOBAL') IF ( IRESP /= 0 ) THEN - WRITE(ILUOUT0,*) "STOP : PROBLEM OPENING FILE : ", YFILE_COEFINT(4) - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) "problem opening file ",TRIM(YFILE_COEFINT(4)) + CALL PRINT_MSG(NVERB_FATAL,'GEN','RADAR_SCATTERING',YMSG) ENDIF ILINE=1 DO WHILE (ILINE .LE. INB_LINE(4)) diff --git a/src/MNH/radar_simulator.f90 b/src/MNH/radar_simulator.f90 index c43a351c4d26ea1f5a61d2973513700ba70ae249..b1ccff110d732a3932dec82844d6ec793521cc4c 100644 --- a/src/MNH/radar_simulator.f90 +++ b/src/MNH/radar_simulator.f90 @@ -139,7 +139,7 @@ USE MODD_PARAMETERS USE MODD_LUNIT ! USE MODE_IO_ll -USE MODE_FM +USE MODE_MSG ! USE MODD_GR_FIELD_n USE MODD_GRID_n @@ -266,7 +266,7 @@ REAL, DIMENSION(:,:,:,:,:,:),ALLOCATABLE :: ZWORK ! !* 1.1 IO and dimensions initialization ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! IIU=SIZE(PTEMP,1) IJU=SIZE(PTEMP,2) @@ -531,12 +531,9 @@ DO JI=1,NBRAD IF(XRPK<0.) ZLAT(JH,JV)=-ZLAT(JH,JV) ! projection from north pole IF(ABS(ZRPK-1.)>1.E-10 .AND. ABS(COS(ZRDSDG*ZLAT(JH,JV)))<1.E-10) THEN - WRITE(ILUOUT0,*) 'Error in projection : ' - WRITE(ILUOUT0,*) 'pole in the domain, but not with stereopolar projection' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','RADAR_SIMULATOR',& + 'Error in projection: pole in the domain, but not with stereopolar projection') ENDIF ! IF(ABS(ZCLAT0)<1.E-10 .AND. ABS(ZRPK-1.)<1.E-10) THEN diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90 index 9852d64cd65691cf26978766e3eaf3cd8045e99f..7aec59f93abd084359477c9094f0ade3ed31a6d7 100644 --- a/src/MNH/read_all_data_grib_case.f90 +++ b/src/MNH/read_all_data_grib_case.f90 @@ -135,8 +135,7 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE ! !* 0. DECLARATIONS !------------ -USE MODE_FM -USE MODE_IO_ll +USE MODE_MSG USE MODE_TIME USE MODE_THERMO ! @@ -297,6 +296,7 @@ CHARACTER, PARAMETER :: YPCOM = CHAR(44)! COMma character is ASCII CHARACTER(LEN=40), DIMENSION(:), ALLOCATABLE :: YMNHNAME ! species names INTEGER :: JN, JNREAL ! loop control variables CHARACTER(LEN=40) :: YFORMAT +CHARACTER(LEN=100) :: YMSG ! temperature and humidity INTEGER :: IT,IQ REAL, DIMENSION(:,:), ALLOCATABLE :: ZPF_G ! Pressure (flux point) @@ -328,7 +328,7 @@ IMI = GET_CURRENT_MODEL_INDEX() !* 1. READ PGD FILE ! ------------- ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRET) +ILUOUT0 = TLUOUT0%NLU CALL READ_HGRID_n(TPPGDFILE,YPGD_NAME,YPGD_DAD_NAME,YPGD_TYPE) ! ! 1.1 Domain restriction @@ -379,11 +379,7 @@ ALLOCATE (ZYOUT(INO)) IF (HFILE(1:3)=='ATM' .OR. HFILE=='CHEM') THEN WRITE (ILUOUT0,'(A,A4)') ' -- Grib reader started for ',HFILE ELSE - WRITE (ILUOUT0,'(A)') ' -> Bad input argument in read_all_data_grib_case - abort' - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','bad input argument') END IF ! !* 2.1 Charge in memory the grib messages @@ -391,20 +387,16 @@ END IF ! open grib file CALL GRIB_OPEN_FILE(IUNIT,HGRIB,'R',IRET_GRIB) IF (IRET_GRIB /= 0) THEN - WRITE (ILUOUT0,'(A,A,A,I2)') ' -> Error opening the grib file ',HGRIB,', error code ', IRET_GRIB !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'Error opening the grib file ',TRIM(HGRIB),', error code ', IRET_GRIB + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF ! count the messages in the file CALL GRIB_COUNT_IN_FILE(IUNIT,ICOUNT,IRET_GRIB) IF (IRET_GRIB /= 0) THEN - WRITE (ILUOUT0,'(A,I2)')' -> Error in reading the grib file - error code ', IRET_GRIB !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'Error in reading the grib file ',TRIM(HGRIB),', error code ', IRET_GRIB + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF ALLOCATE(IGRIB(ICOUNT)) ! initialize the tabular with a negativ number @@ -414,11 +406,9 @@ IGRIB(:)=-12 DO JLOOP=1,ICOUNT CALL GRIB_NEW_FROM_FILE(IUNIT,IGRIB(JLOOP),IRET_GRIB) IF (IRET_GRIB /= 0) THEN - WRITE (ILUOUT0,'(A,I3,A,I2)') ' -> Error in reading the grib file - ILOOP= ',JLOOP,' - error code ', IRET_GRIB !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'Error in reading the grib file - ILOOP=',JLOOP,' - error code ', IRET_GRIB + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF END DO ! close the grib file @@ -431,19 +421,15 @@ CALL GRIB_CLOSE_FILE(IUNIT) ! CALL GRIB_GET(IGRIB(1),'centre',ICENTER,IRET_GRIB) IF (IRET_GRIB /= 0) THEN - WRITE (ILUOUT0,'(A,I2)')' -> Error in reading center - error code ', IRET_GRIB !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'Error in reading center - error code ', IRET_GRIB + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF CALL GRIB_GET(IGRIB(1),'typeOfGrid',HGRID,IRET_GRIB) IF (IRET_GRIB /= 0) THEN - WRITE (ILUOUT0,'(A,I2)')' -> Error in reading type of grid - error code ', IRET_GRIB !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'Error in reading type of grid - error code ', IRET_GRIB + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF ! IMODEL = -1 @@ -481,11 +467,8 @@ SELECT CASE (ICENTER) END SELECT END SELECT IF (IMODEL==-1) THEN - WRITE (ILUOUT0,'(A)') ' -> Unsupported Grib file format - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','unsupported Grib file format') END IF ! !--------------------------------------------------------------------------------------- @@ -692,20 +675,16 @@ DO JLOOP1=1, INLEVEL ILEV1 = JLOOP1-1+ISTARTLEVEL CALL SEARCH_FIELD(IQ,109,ILEV1,-1,IGRIB,INUM) IF (INUM< 0) THEN - WRITE (ILUOUT0,'(A,I2,A)') ' -> Atmospheric humidity level ',JLOOP1,' is missing - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'atmospheric humidity level ',JLOOP1,' is missing' + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF CALL GRIB_GET(IGRIB(INUM),'values',ZQ_G(:,INLEVEL-JLOOP1+1)) CALL SEARCH_FIELD(IT,109,ILEV1,-1,IGRIB,INUM) IF (INUM< 0) THEN - WRITE (ILUOUT0,'(A,I2,A)') ' -> Atmospheric temperature level ',JLOOP1,' is missing - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'atmospheric temperature level ',JLOOP1,' is missing' + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF CALL GRIB_GET(IGRIB(INUM),'values',ZT_G(:,INLEVEL-JLOOP1+1)) CALL GRIB_GET(IGRIB(INUM),'Nj',INJ,IRET_GRIB) @@ -737,11 +716,8 @@ IF (INLEVEL > 0) THEN ALLOCATE(ZPV(IPV)) CALL GRIB_GET(IGRIB(INUM),'pv',ZPV) ELSE - WRITE (ILUOUT0,'(A)') "THERE IS NO PV VALUE IN THIS MESSAGE : abort" !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','there is no PV value in this message') ENDIF SELECT CASE (IMODEL) CASE (0,3,4) @@ -769,11 +745,8 @@ IF (INLEVEL > 0) THEN END DO END SELECT ELSE - WRITE (ILUOUT0,'(A)') ' -> Level definition section is missing - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','level definition section is missing') END IF ! !* 2.5.3 Compute atmospheric pressure on grib grid @@ -959,11 +932,9 @@ IF (NRR >1) THEN CALL SEARCH_FIELD(IPAR,109,ILEV1,-1,IGRIB,INUM) IF (INUM < 0) THEN - WRITE (ILUOUT0,'(A,I3,A,I2,A)') ' -> Specific ratio ',IPAR,' at level ',JLOOP1,' is missing - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'Specific ratio ',IPAR,' at level ',JLOOP1,' is missing' + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE) ALLOCATE(ZVALUE(ISIZE)) @@ -985,11 +956,9 @@ IF (CTURB=='TKEL') THEN ILEV1 = JLOOP1-1+ISTARTLEVEL CALL SEARCH_FIELD(IPAR,109,ILEV1,-1,IGRIB,INUM) IF (INUM < 0) THEN - WRITE (ILUOUT0,'(A,I3,A,I2,A)') ' -> TKE at level ',JLOOP1,' is missing - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'TKE at level ',JLOOP1,' is missing' + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE) ALLOCATE(ZVALUE(ISIZE)) @@ -1026,11 +995,8 @@ IF (IMODEL==5) THEN DEALLOCATE(XSV_LS) ALLOCATE (XSV_LS(IIU,IJU,INLEVEL,NSV)) ELSE - WRITE (ILUOUT0,'(A)') ' -> Mocage model: Bad input argument in read_all_data_grib_case - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','Mocage model: Bad input argument in read_all_data_grib_case') END IF XSV_LS(:,:,:,:) = 0. ITYP=109 @@ -1090,12 +1056,9 @@ IF (IMODEL==5) THEN ILEV1 = JLOOP1 CALL SEARCH_FIELD(INUMGRIB(JN),ITYP,ILEV1,ILEV2,IGRIB,INUM) IF (INUM < 0) THEN - WRITE (ILUOUT0,'(A,I3,A,I2,A)') ' -> Atmospheric ',INUMGRIB(JN),& - ' grib chemical species level ',JLOOP1,' is missing - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'Atmospheric ',INUMGRIB(JN),' grib chemical species level ',JLOOP1,' is missing' + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF CALL GRIB_GET(IGRIB(INUM),'Nj',INJ,IRET_GRIB) ALLOCATE(IINLO(INJ)) @@ -1187,12 +1150,9 @@ DO JLOOP1 = ISTARTLEVEL, ISTARTLEVEL+INLEVEL-1 ! read component u CALL SEARCH_FIELD(IPAR,ITYP,ILEV1,ILEV2,IGRIB,INUM) IF (INUM < 0) THEN - WRITE (ILUOUT0,'(A,I2,A)') ' -> Wind vector component "u", level ', & - JLOOP1,' is missing - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'wind vector component "u" at level ',JLOOP1,' is missing' + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE) ALLOCATE(ZVALUE(ISIZE)) @@ -1218,12 +1178,9 @@ DO JLOOP1 = ISTARTLEVEL, ISTARTLEVEL+INLEVEL-1 ILEV1 = JLOOP1 CALL SEARCH_FIELD(IPAR+1,ITYP,ILEV1,ILEV2,IGRIB,INUM) IF (INUM < 0) THEN - WRITE (ILUOUT0,'(A,I2,A)') ' -> Wind vector component "v", level ', & - JLOOP1,' is missing - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'wind vector component "v" at level ',JLOOP1,' is missing' + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE) ALLOCATE(ZVALUE(ISIZE)) @@ -1524,9 +1481,8 @@ IF (ODUMMY_REAL) THEN IF (IVAR /= IMOC) THEN WRITE (ILUOUT0,'(A,I3,A,I3,A)') ' -> Number of correct lines (',IVAR,') is different of ',IMOC,' - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'number of correct lines (',IVAR,') is different of ',IMOC + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF ! !* 2.10.2 read and interpolate variables onto dummy variables XDUMMY_2D @@ -1537,9 +1493,8 @@ IF (ODUMMY_REAL) THEN IF (INUM < 0) THEN WRITE (ILUOUT0,'(A,I3,A,I2,A)') ' -> 2D field ',INUMGRIB(JI),' is missing - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) '2D field ',INUMGRIB(JI),' is missing' + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG) END IF CALL GRIB_GET(IGRIB(INUM),'Nj',INJ,IRET_GRIB) ALLOCATE(IINLO(INJ)) @@ -1614,11 +1569,8 @@ INTEGER :: JLOOP2_A1T2 INTEGER :: JPOS_A1T2 ! IF (KN1 < KL1*KL2) THEN - WRITE (ILUOUT0,'(A)') ' | Error in "ARRAY_1D_TO_2D", sizes do not match - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','ARRAY_1D_TO_2D','sizes do not match') END IF JPOS_A1T2 = 1 DO JLOOP2_A1T2 = 1, KL2 @@ -1642,7 +1594,6 @@ SUBROUTINE SEARCH_FIELD(KPARAM,KLTYPE,KLEV1,KLEV2,KGRIB,KNUM) USE MODD_LUNIT USE GRIB_API ! -USE MODE_FM USE MODE_IO_ll ! IMPLICIT NONE @@ -1670,7 +1621,7 @@ CHARACTER(LEN=20) :: YLTYPE ! Variables used to display messages INTEGER :: ILUOUT0 ! Logical unit number of the listing ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRET) +ILUOUT0 = TLUOUT0%NLU ! SELECT CASE (KLTYPE) CASE(109) diff --git a/src/MNH/read_all_data_mesonh_case.f90 b/src/MNH/read_all_data_mesonh_case.f90 index 3f0280a2dc988f373615f7fa6ed9fce748631a47..70c1d45337b93ba36fa4a97bbb2873779cf57971 100644 --- a/src/MNH/read_all_data_mesonh_case.f90 +++ b/src/MNH/read_all_data_mesonh_case.f90 @@ -75,7 +75,7 @@ END MODULE MODI_READ_ALL_DATA_MESONH_CASE !! Module MODD_CONF : contains configuration variables for all models. !! NVERB : verbosity level for output-listing !! Module MODD_LUNIT : contains logical unit names for all models -!! CLUOUT0 : name of output-listing +!! TLUOUT0 : output-listing file !! Module MODD_PGDDIM : contains dimension of PGD fields !! NPGDIMAX: dimension along x (no external point) !! NPGDJMAX: dimension along y (no external point) @@ -117,9 +117,9 @@ END MODULE MODI_READ_ALL_DATA_MESONH_CASE !* 0. DECLARATIONS ! ------------ ! -USE MODE_FM USE MODE_IO_ll USE MODE_FMREAD +USE MODE_MSG ! USE MODI_READ_GRID_TIME_MESONH_CASE ! interface modules USE MODI_READ_HGRID @@ -184,7 +184,7 @@ INTEGER :: IXOR_LS ! I shift between PGD file and LS atmospheric file INTEGER :: IYOR_LS ! J shift between PGD file and LS atmospheric file ! INTEGER :: IRESP ! return-code if problems occured -INTEGER :: ILUOUT0 ! logical unit for file CLUOUT0 +INTEGER :: ILUOUT0 ! logical unit for file TLUOUT0 ! CHARACTER(LEN=28) :: YPGD_NAME, YPGD_DAD_NAME CHARACTER(LEN=28) :: YOUTFILE @@ -207,7 +207,7 @@ TYPE(LIST_ll), POINTER :: TZFIELDS_ll => NULL() ! list of fields to exchange ! !------------------------------------------------------------------------------ ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! !------------------------------------------------------------------------------- ! @@ -275,12 +275,8 @@ CALL READ_VER_GRID(HPRE_REAL1,XZHAT_LS,LSLEVE_LS,XLEN1_LS,XLEN2_LS) IF (LBOGUSSING) THEN IF (LEN_TRIM(CDADBOGFILE) >0 ) THEN IF (LEN_TRIM(CDADATMFILE) == 0 ) THEN - WRITE(ILUOUT0,*) 'READ_ALL_DATA_MESONH_CASE: CDADATMFILE not initialized in nml NAM_HURR_CONF' - WRITE(ILUOUT0,*) '-> JOB ABORTED' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_MESONH_CASE','CDADATMFILE not initialized in nml NAM_HURR_CONF') ELSE IF (LEN_TRIM(HDAD_NAME) >0 ) THEN IF (ADJUSTL(ADJUSTR(HDAD_NAME)) .NE. ADJUSTL(ADJUSTR(CDADATMFILE))) THEN @@ -290,19 +286,13 @@ IF (LBOGUSSING) THEN WRITE(ILUOUT0,*) ' DAD_NAME of model1='//TRIM(HDAD_NAME) WRITE(ILUOUT0,*) '-> JOB ABORTED' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_MESONH_CASE','') ELSE CALL COMPARE_DAD(CDADATMFILE,CDADBOGFILE,IRESP) IF (IRESP .NE. 0) THEN - WRITE(ILUOUT0,*) & - 'READ_ALL_DATA_MESONH_CASE: Unable to replace the DAD of output file with CDADBOGFILE' - WRITE(ILUOUT0,*) '-> JOB ABORTED' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_MESONH_CASE',& + 'unable to replace the DAD of output file with CDADBOGFILE') ENDIF HDAD_NAME=CDADBOGFILE ENDIF diff --git a/src/MNH/read_exspa.f90 b/src/MNH/read_exspa.f90 index 0d3137fc6cc5f10eaeac3fdb1462c030d02e6d5b..0cec68dfa8019854ed779f949f34af7b86f4e26b 100644 --- a/src/MNH/read_exspa.f90 +++ b/src/MNH/read_exspa.f90 @@ -105,10 +105,13 @@ END MODULE MODI_READ_EXSPA ! ------------ ! USE MODD_CONF +USE MODD_IO_ll, ONLY : TFILE_OUTPUTLISTING USE MODD_LUNIT_n, ONLY : LUNIT_MODEL USE MODD_PARAMETERS ! +USE MODE_FM, ONLY : IO_FILE_OPEN_ll USE MODE_IO_ll +USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST USE MODE_POS USE MODE_MODELN_HANDLER ! @@ -201,8 +204,13 @@ YDADINIFILE = ' ' YDADSPAFILE = ' ' ! LUNIT_MODEL(2)%CLUOUT = 'OUTPUT_LISTING2' -CALL OPEN_ll(UNIT=ILUOUT,FILE=LUNIT_MODEL(2)%CLUOUT,IOSTAT=IRESP,FORM='FORMATTED',ACTION='WRITE', & - MODE='GLOBAL') +CALL IO_FILE_ADD2LIST(LUNIT_MODEL(2)%TLUOUT,LUNIT_MODEL(2)%CLUOUT,'OUTPUTLISTING','WRITE') +CALL IO_FILE_OPEN_ll(LUNIT_MODEL(2)%TLUOUT) +! +!Set output file for PRINT_MSG +TFILE_OUTPUTLISTING => LUNIT_MODEL(2)%TLUOUT +! +ILUOUT=LUNIT_MODEL(2)%TLUOUT%NLU ! YEXSPA = 'SPAWN1.nam' CALL OPEN_ll(unit=ILUSPA,FILE=YEXSPA,iostat=IRESP,status="OLD",action='READ', & diff --git a/src/MNH/read_hgrid.f90 b/src/MNH/read_hgrid.f90 index fa859bb0a8a4e718fdbfaf94eaf3f5048e94053c..ca8c0063c9167eb2512d510ffa46d1823ccf775d 100644 --- a/src/MNH/read_hgrid.f90 +++ b/src/MNH/read_hgrid.f90 @@ -65,8 +65,6 @@ END MODULE MODI_READ_HGRID !! NJMAX !! Module MODD_PARAMETERS : !! JPHEXT -!! Module MODD_LUNIT : -!! CLUOUT0 !! !! REFERENCE !! --------- @@ -88,7 +86,6 @@ END MODULE MODI_READ_HGRID USE MODD_CONF, ONLY : CPROGRAM USE MODD_GRID USE MODD_IO_ll, ONLY: TFILEDATA -USE MODD_LUNIT USE MODD_PARAMETERS USE MODD_PGDDIM USE MODD_PGDGRID @@ -97,6 +94,7 @@ USE MODE_FIELD, ONLY : TFIELDDATA,TFIELDLIST,FIND_FIELD_ID_FROM_MNHNAME USE MODE_FMREAD USE MODE_GRIDPROJ USE MODE_IO_ll +USE MODE_MSG USE MODE_MODELN_HANDLER ! USE MODI_READ_HGRID_n @@ -127,12 +125,7 @@ TYPE(TFIELDDATA) :: TZFIELD ! ------------------- ! ! KMI may be 0 ! -IF (KMI<0 .OR. KMI>JPMODELMAX) THEN - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP -ENDIF +IF (KMI<0 .OR. KMI>JPMODELMAX) CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_HGRID','KMI<0 .OR. KMI>JPMODELMAX') IF (KMI/=0) THEN IMI = GET_CURRENT_MODEL_INDEX() CALL GOTO_MODEL(KMI) diff --git a/src/MNH/read_hgridn.f90 b/src/MNH/read_hgridn.f90 index 2d7685f0cbf5259cc2f0f24517cca8ea3f315a26..99ca4e03442831851d4430f4b270d8c4e494bd6c 100644 --- a/src/MNH/read_hgridn.f90 +++ b/src/MNH/read_hgridn.f90 @@ -90,10 +90,10 @@ USE MODD_LUNIT_n USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT, JPMODELMAX ! USE MODE_FIELD, ONLY : TFIELDDATA,TFIELDLIST,FIND_FIELD_ID_FROM_MNHNAME -USE MODE_FM USE MODE_FMREAD USE MODE_GRIDPROJ USE MODE_IO_ll +USE MODE_MSG USE MODE_MODELN_HANDLER ! IMPLICIT NONE @@ -124,7 +124,7 @@ INTEGER :: IXOR, IYOR, IXEND, IYEND INTEGER :: IJPHEXT TYPE(TFIELDDATA) :: TZFIELD ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! !* 1. General information : ! ------------------- @@ -167,9 +167,7 @@ ELSE WRITE(ILUOUT,*) 'model 1 : XLAT0= ',XLAT0,' XLON0= ',XLON0, & ' XBETA= ',XBETA !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_HGRID_n','') END IF IF (.NOT.LCARTESIAN ) THEN IF ( ABS(XRPK-ZRPK)> ZEPS ) THEN @@ -177,9 +175,7 @@ ELSE WRITE(ILUOUT,*) 'model ',IMI,' : XRPK= ',ZRPK WRITE(ILUOUT,*) 'model 1 : XRPK= ',XRPK !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_HGRID_n','') END IF END IF END IF @@ -206,9 +202,7 @@ IF (CPROGRAM/='IDEAL ') THEN WRITE(ILUOUT,FMT=*) ' different from PGD files=',TPFMFILE%CNAME ,' value JPHEXT=',IJPHEXT WRITE(ILUOUT,FMT=*) '-> JOB ABORTED' - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_HGRID_n','') END IF END IF ! diff --git a/src/MNH/read_prc_fmfile.f90 b/src/MNH/read_prc_fmfile.f90 index 1f404226639caeb3707272de3d8be1d222bdd465..169e13ca0e022fcf91ab209adb9eb1697de5610d 100644 --- a/src/MNH/read_prc_fmfile.f90 +++ b/src/MNH/read_prc_fmfile.f90 @@ -118,9 +118,6 @@ USE MODD_GRID_n USE MODD_TIME_n USE MODD_PREP_REAL ! -USE MODE_FMREAD -USE MODE_FM -USE MODE_IO_ll USE MODE_FIELD ! USE MODI_TRUNC_FIELD @@ -193,7 +190,7 @@ IJU=KJSUP-KJINF+1 ILU=SIZE(XTHT,3) CALL GET_INDICE_ll(IIB,IJB,IIE,IJE) ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! !20131105 nullify tzfield NULLIFY(TZFIELDS_ll) @@ -392,13 +389,6 @@ END IF !* 7. ERASES LATERAL BOUNDARIES ! ------------------------- ! -!!$IF (JPHEXT>1) THEN -!!$ WRITE (ILUOUT0,*) 'READ_PRC_FMFILE: abort (JPHEXT= ',JPHEXT,' )' -!!$ !callabortstop -!!$ CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) -!!$ CALL ABORT -!!$ STOP -!!$END IF ! !* 7.1 left boundary I=1+JPHEXT for U ! ------------------------------ diff --git a/src/MNH/read_ver_grid.f90 b/src/MNH/read_ver_grid.f90 index 510daad5d6d05061b5c0e74f191157de6a409dfb..ec7e6bb775cb0fc1ccd1f0dce945d9e0dd2cddfb 100644 --- a/src/MNH/read_ver_grid.f90 +++ b/src/MNH/read_ver_grid.f90 @@ -108,8 +108,8 @@ END MODULE MODI_READ_VER_GRID ! ------------ ! USE MODE_FM +USE MODE_MSG USE MODE_POS -USE MODE_IO_ll ! USE MODI_DEFAULT_SLEVE ! @@ -165,7 +165,7 @@ NAMELIST/NAM_VER_GRID/ LTHINSHELL,NKMAX,YZGRID_TYPE,ZDZGRD,ZDZTOP,ZZMAX_STRGRD,Z ! !* 1. READING OF THE NAMELIST IN FILE HPRE_REAL1 : ! ------------------------------------------ -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU CALL FMLOOK_ll(HPRE_REAL1,CLUOUT0,IPRE_REAL1,IRESP) ! !* 1.1 Vertical grid default value @@ -224,9 +224,7 @@ CASE('SAMEGR') WRITE(ILUOUT0,*) ' FM file: ',SIZE(PZHAT)-2*JPVEXT WRITE(ILUOUT0,*) ' NKMAX : ',NKMAX_n !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_VER_GRID','') END IF XZHAT(:)=PZHAT(1:NKMAX_n+2*JPVEXT) @@ -248,12 +246,8 @@ CASE('SAMEGR') END IF ELSE - WRITE(ILUOUT0,*) 'ERROR IN READ_VER_GRID :' - WRITE(ILUOUT0,*) ' THE VERTICAL GRID CAN BE KEPT ONLY IF THE INPUT FILE IS A MESONH FILE' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_VER_GRID','the vertical grid can be kept only if the input file is a MESONH file') END IF ! ! @@ -275,9 +269,7 @@ CASE('FUNCTN') WRITE(ILUOUT0,*) 'CHANGE THESE PARAMETERS AND TRY AGAIN' WRITE(ILUOUT0,*) 'ZDZGRD =', ZDZGRD,' ZDZTOP =', ZDZTOP !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_VER_GRID','') END IF ! XZHAT(IKB-1)=-ZDZGRD @@ -326,9 +318,7 @@ CASE DEFAULT WRITE(ILUOUT0,FMT=*) ' YZGRID_TYPE =',YZGRID_TYPE WRITE(ILUOUT0,FMT=*) '-> JOB ABORTED' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_VER_GRID','') END SELECT ! !------------------------------------------------------------------------------- diff --git a/src/MNH/removal_vortex.f90 b/src/MNH/removal_vortex.f90 index 4d51e73a5727d33aa0fcb8224e0244ef888aefae..c79d1f8dde5fa13192c7b1ef097ee343829781e0 100644 --- a/src/MNH/removal_vortex.f90 +++ b/src/MNH/removal_vortex.f90 @@ -81,15 +81,14 @@ USE MODD_HURR_CONF USE MODD_CONF, ONLY: NVERB USE MODD_CST, ONLY: XPI USE MODD_PARAMETERS, ONLY: JPHEXT,XUNDEF -USE MODD_LUNIT, ONLY: CLUOUT0 +USE MODD_LUNIT, ONLY: TLUOUT0 USE MODD_HURR_FIELD_n USE MODD_DIM_n, ONLY: NIMAX,NJMAX USE MODD_GRID, ONLY: XLONORI,XLATORI USE MODD_GRID_n, ONLY: XXHAT,XYHAT ! -USE MODE_FM USE MODE_GRIDPROJ -USE MODE_IO_ll +USE MODE_MSG ! USE MODI_SHUMAN USE MODI_BARNES_FILTER @@ -112,7 +111,7 @@ REAL,DIMENSION(:,:), OPTIONAL, INTENT(INOUT) :: PPS_LS ! Pressure (mass points ! !* 0.2 Declarations of local variables ! -INTEGER :: IRET,ILUOUT0 +INTEGER :: ILUOUT0 ! REAL,DIMENSION(SIZE(PT_LS,1),SIZE(PT_LS,2),SIZE(PT_LS,3)) :: ZUMASS,ZVMASS REAL,DIMENSION(SIZE(PT_LS,1),SIZE(PT_LS,2),SIZE(PT_LS,3)) :: ZUDIS,ZVDIS @@ -156,7 +155,7 @@ INTEGER :: IRESP ! Return code of FM-routines !* 1. INITIALIZATIONS ! --------------- ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRET) +ILUOUT0 = TLUOUT0%NLU IIU= SIZE(PT_LS,1) IJU= SIZE(PT_LS,2) IP= SIZE(PT_LS,3) @@ -165,25 +164,19 @@ ZDELTAY= XYHAT(3) - XYHAT(2) ZDELTAR= MAX(ZDELTAX,ZDELTAY) ! IF (XLATGUESS == XUNDEF .AND. XLONGUESS == XUNDEF) THEN - WRITE(ILUOUT0,'(A)')' -> You do not specify a first guess position of the cyclone (XLATGUESS, XLONGUESS) - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','REMOVAL_VORTEX',& + 'You do not specify a first guess position of the cyclone (XLATGUESS, XLONGUESS)') END IF IF (XBOXWIND == XUNDEF) THEN - WRITE(ILUOUT0,'(A)')' -> You do not specify a radius to determine the cyclone center inside (XBOXWIND,km) - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','REMOVAL_VORTEX',& + 'ou do not specify a radius to determine the cyclone center inside (XBOXWIND,km)') END IF IF (XRADGUESS == XUNDEF) THEN - WRITE(ILUOUT0,'(A)')' -> You do not specify a guess for the filtered radius (XRADGUESS,km) - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','REMOVAL_VORTEX',& + 'You do not specify a guess for the filtered radius (XRADGUESS,km)') END IF ! ! Allocations @@ -245,11 +238,8 @@ IF (NVERB>=5) WRITE(ILUOUT0,'(A,I3,A,I3)')' equivalent indexes in the Meso-NH gr ! IF ( (IIMIN<1) .OR. (IIMIN>IIU+1) .OR. & (IJMIN<1) .OR. (IJMIN>IJU+1) ) THEN - WRITE(ILUOUT0,'(A)')' -> The first guess position of the fix is not in the Meso-NH domain - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','REMOVAL_VORTEX','The first guess position of the fix is not in the Meso-NH domain') END IF ! IAVGWINDI = NINT(XBOXWIND*1000./ZDELTAX) diff --git a/src/MNH/select_avg_pgd.f90 b/src/MNH/select_avg_pgd.f90 index 0c277fe95b8f141936d034ef54198d5800d7a24c..045f16296bc6c1c9e294040ddd93335236cec4d4 100644 --- a/src/MNH/select_avg_pgd.f90 +++ b/src/MNH/select_avg_pgd.f90 @@ -59,8 +59,7 @@ END MODULE MODI_SELECT_AVG_PGD ! ----------- ! USE MODD_LUNIT -USE MODE_FM -USE MODE_IO_ll +USE MODE_MSG ! IMPLICIT NONE ! @@ -283,7 +282,7 @@ SELECT CASE (YFIELD) !------------------------------------------------------------------------------- ! CASE DEFAULT - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) + ILUOUT0 = TLUOUT0%NLU WRITE(ILUOUT0) '*****************************************************************************' WRITE(ILUOUT0) ' ' WRITE(ILUOUT0) 'Error in field name specification for a personal initialization:' @@ -306,9 +305,7 @@ SELECT CASE (YFIELD) WRITE(ILUOUT0) ' ' WRITE(ILUOUT0) '*****************************************************************************' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SELECT_AVG_PGD','') ! END SELECT ! diff --git a/src/MNH/seriesn.f90 b/src/MNH/seriesn.f90 index a80c570f5e5c39c2ee93ec71bc4f957b4c57666b..09eecb4d64ca95580c0b8b6558dea6239e104a73 100644 --- a/src/MNH/seriesn.f90 +++ b/src/MNH/seriesn.f90 @@ -57,7 +57,7 @@ USE MODD_TYPE_DATE USE MODD_CONF_n, ONLY: LUSERV,LUSERC,LUSERR,LUSERI,LUSERS,LUSERG,LUSERH USE MODD_FIELD_n, ONLY: XTHT,XWT,XUT,XPABST,XRT USE MODD_GRID_n, ONLY: XZZ -USE MODD_LUNIT_n, ONLY: CLUOUT +USE MODD_LUNIT_n, ONLY: TLUOUT USE MODD_PRECIP_n, ONLY: XINPRC,XINPRR,XINPRS,XINPRG,XINPRH, & XACPRC,XACPRR,XACPRS,XACPRG,XACPRH USE MODD_TIME_n, ONLY: TDTCUR @@ -66,6 +66,7 @@ USE MODI_GET_SURF_VAR_n ! USE MODE_ll USE MODE_IO_ll +USE MODE_MSG ! USE MODI_TEMPORAL_DIST USE MODD_MNH_SURFEX_n @@ -106,7 +107,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSERIES !* 1. INITIALIZATIONS ! --------------- ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! IKU=SIZE(XTHT,3) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) @@ -218,9 +219,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'INPRT','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -251,9 +250,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'ACPRT','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -273,9 +270,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RVT ','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -293,9 +288,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RCT ','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -313,9 +306,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RRT ','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -333,9 +324,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RIT ','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -353,9 +342,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RST ','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -373,9 +360,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RGT ','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -393,9 +378,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RHT ','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF !SURFACE FIELDS @@ -441,9 +424,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'WMAX ','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF ! Min vertical velocity ISB1=ISB1+1 @@ -453,9 +434,7 @@ IF (LSERIES1) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'WMIN ','1',CSTITLE1(ISB1) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF ENDIF END DO @@ -483,9 +462,7 @@ IF (LSERIES2) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'WT ','2',CSTITLE2(ISB2) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF ! !* 3.2 Potential Temperature @@ -500,9 +477,7 @@ IF (LSERIES2) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'THT ','2',CSTITLE2(ISB2) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF ! !* 3.3 Pressure @@ -517,9 +492,7 @@ IF (LSERIES2) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'PASBT','2',CSTITLE2(ISB2) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF ! !* 3.4 Vapor @@ -535,9 +508,7 @@ IF (LSERIES2) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RVT ','2',CSTITLE2(ISB2) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -554,9 +525,7 @@ IF (LSERIES2) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RCT ','2',CSTITLE2(ISB2) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -573,9 +542,7 @@ IF (LSERIES2) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RRT ','2',CSTITLE2(ISB2) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -592,9 +559,7 @@ IF (LSERIES2) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RIT ','2',CSTITLE2(ISB2) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -611,9 +576,7 @@ IF (LSERIES2) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RST ','2',CSTITLE2(ISB2) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! @@ -630,9 +593,7 @@ IF (LSERIES2) THEN ELSE WRITE(UNIT=ILUOUT,FMT=1) 'RGT ','2',CSTITLE2(ISB2) !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SERIES_n','') END IF END IF ! diff --git a/src/MNH/set_advfrc.f90 b/src/MNH/set_advfrc.f90 index cd68f4b0b1963790241277ed4ed15e04b49d51ec..f62dd0c8ac2a17fa6ab02fa7c9da04dc806388bb 100644 --- a/src/MNH/set_advfrc.f90 +++ b/src/MNH/set_advfrc.f90 @@ -78,19 +78,18 @@ END MODULE MODI_SETADVFRC ! USE MODD_CST USE MODD_LUNIT_n -USE MODD_LUNIT USE MODD_GRID_n USE MODD_CONF USE MODD_FRC - USE MODD_GRID USE MODD_REF USE MODD_PARAMETERS ! JPHEXT ! -USE MODE_THERMO USE MODE_FM -! USE MODE_IO_ll +USE MODE_MSG +USE MODE_THERMO +! USE MODI_HEIGHT_PRESS ! interface modules USE MODI_PRESS_HEIGHT USE MODI_THETAVPU_THETAVPM @@ -114,7 +113,6 @@ CHARACTER(LEN=*), INTENT(IN) :: HEXPRE ! name of input data file !* 0.2 Declarations of local variables : ! INTEGER :: ILUPRE,IRESP ! logical unit number of the EXPRE and FM return code -INTEGER :: ILUOUT0 ! Logical unit number for output-listing INTEGER :: ILUOUT ! Logical unit number for output-listing INTEGER :: JKT,JL,JK,JI! Loop control INTEGER :: IIU,IIB,IIE !dimensions du modele @@ -144,9 +142,7 @@ print*,"!* 1. PROLOGUE : RETRIEVE LOGICAL UNIT NUMBERS " ! ---------------------------------------- ! CALL FMLOOK_ll(HEXPRE,CLUOUT,ILUPRE,IRESP) -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) -! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT = TLUOUT%NLU ! !------------------------------------------------------------------------------- ! @@ -165,18 +161,12 @@ READ(ILUPRE,*) NPRESSLEV_ADV ! nb of levels for low leves forcing=nb lev in ! and also by the name of forcing variables (format I3.3) ! You have to modify those if you need more forcing times :-( ! -IF (NADVFRC > 99*8) THEN - WRITE(ILUOUT,*) "SET_FRC ERROR: maximum forcing times NADVFRC is ", 99*8 - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 -END IF +IF (NADVFRC > 99*8) CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_ADVFRC','maximum forcing times NADVFRC is 99*8') ! - IIU=SIZE(XXHAT) IJU=SIZE(XYHAT) IKU=SIZE(XZHAT) - +! CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKB= 1+ JPVEXT IKE= IKU-JPVEXT @@ -353,10 +343,7 @@ DO JKT = 2,NADVFRC-1 TDTADVFRC(JKT)%TDATE%DAY, & TDTADVFRC(JKT)%TIME !callabortstop - ! depuis m48 - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_ADVFRC','') END IF END DO diff --git a/src/MNH/set_bogus_vortex.f90 b/src/MNH/set_bogus_vortex.f90 index 90a77354295afaaa34e8e2a865c7e09fd897c0c2..d5d6d5f3d5c968b421c179dbada113cdc7c19b00 100644 --- a/src/MNH/set_bogus_vortex.f90 +++ b/src/MNH/set_bogus_vortex.f90 @@ -79,12 +79,13 @@ END MODULE MODI_SET_BOGUS_VORTEX USE MODE_ll USE MODE_IO_ll USE MODE_GRIDPROJ +USE MODE_MSG ! USE MODD_HURR_CONF, ONLY: XLATBOG,XLONBOG,XVTMAXSURF,XRADWINDSURF, & XANGCONV0,XANGCONV1000,XANGCONV2000, & XB_0, XMAX USE MODD_PARAMETERS, ONLY: XUNDEF,JPVEXT -USE MODD_LUNIT, ONLY: CLUOUT0 +USE MODD_LUNIT, ONLY: TLUOUT0 USE MODD_CST, ONLY: XPI,XOMEGA USE MODD_CONF, ONLY: NVERB USE MODD_GRID, ONLY: XLONORI,XLATORI @@ -134,13 +135,14 @@ INTEGER :: II,IJ ! Indexes of the point of the 1st guess INTEGER :: IIBOG,IJBOG INTEGER :: IIU,IJU,IKU,IKB,IKE INTEGER :: IRESP ! Return code of FM-routines +CHARACTER(LEN=100) :: YMSG ! !------------------------------------------------------------------------------- ! !* 1. INITIALIZATION ! -------------- ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRET) +ILUOUT0 = TLUOUT0%NLU ! WRITE(ILUOUT0,'(A)')' Begin of SET_BOGUS_VORTEX routine' ! @@ -153,25 +155,17 @@ IKE = IKU-JPVEXT ZRADSDG = XPI / 180. ! IF (XLATBOG == XUNDEF .OR. XLONBOG == XUNDEF) THEN - WRITE(ILUOUT0,'(A)')' -> You do not specify a first guess position of the bogus (XLATBOG, XLONBOG) - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_BOGUS_VORTEX','You do not specify a first guess position of the bogus (XLATBOG, XLONBOG)') END IF IF (XVTMAXSURF == XUNDEF) THEN - WRITE(ILUOUT0,'(A)')' -> You do not specify a maximum for the tangential wind (XVTMAXSURF,m/s) - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_BOGUS_VORTEX','You do not specify a maximum for the tangential wind (XVTMAXSURF,m/s)') END IF IF (XRADWINDSURF == XUNDEF) THEN - WRITE(ILUOUT0,'(A)')' -> You do not specify a radius for the maximum tangential wind (XRADWINDSURF,m) - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN',& + 'SET_BOGUS_VORTEX','You do not specify a radius for the maximum tangential wind (XRADWINDSURF,m)') END IF ! ZU_BOG(:,:,:) = 0. @@ -197,11 +191,8 @@ IF (NVERB>=5) WRITE(ILUOUT0,'(A,I3,A,I3)')' equivalent indexes in the Meso-NH gr ! IF ( (IIBOG<1) .OR. (IIBOG>IIU+1) .OR. & (IJBOG<1) .OR. (IJBOG>IJU+1) ) THEN - WRITE(ILUOUT0,'(A)')' -> The first guess position of the vortex is not in the Meso-NH domain - abort' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_BOGUS_VORTEX','The first guess position of the vortex is not in the Meso-NH domain') END IF ! ! @@ -278,12 +269,9 @@ DO JK = IKB+1, IKE IF((ZZHATM(1,1,JK+1).GT.XMAX).AND.(XMAX.GE.ZZHATM(1,1,JK))) IREF_MAX=JK-1 END DO IF (IREF_MAX==-1) THEN - WRITE(ILUOUT0,'(A,F4.1,A)')' -> The maximum height for the bogus vortex (',& - XMAX,'km) is not in the vertical grid - abort' + WRITE(YMSG,'(A,F4.1,A)')'The maximum height for the bogus vortex (',XMAX,' km) is not in the vertical grid' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_BOGUS_VORTEX',YMSG) END IF ZTH_REF_MEAN = SUM(XTHVREFZ(IKB:IREF_MAX)) / (IREF_MAX-IKB+1) IF (NVERB>=10) THEN diff --git a/src/MNH/set_frc.f90 b/src/MNH/set_frc.f90 index 1e5a1f2e4d5f3780cd1adb82634a9b313aa0f844..6541a1ce12444265bff5db1fe902a8fe7bfbcc62 100644 --- a/src/MNH/set_frc.f90 +++ b/src/MNH/set_frc.f90 @@ -112,6 +112,7 @@ USE MODD_PARAMETERS USE MODE_THERMO USE MODE_FM USE MODE_IO_ll +USE MODE_MSG ! USE MODI_HEIGHT_PRESS ! interface modules USE MODI_PRESS_HEIGHT @@ -155,6 +156,7 @@ REAL, DIMENSION(SIZE(XZHAT)) :: ZZHATM ! Height of mass model grid ! levels without orography REAL, DIMENSION(SIZE(XZHAT)) :: ZSHEAR ! vertical wind shear CHARACTER(LEN=4) :: YZP ! choice of zfrc or pfrc +CHARACTER(LEN=100) :: YMSG ! REAL, DIMENSION(SIZE(XZHAT)) :: ZEXREFZ, & ! Pi_ref ZRVREFZ, & ! r_vref @@ -168,7 +170,7 @@ REAL :: ZEPS, & ! XRV/XRD-1.0 ! ---------------------------------------- ! CALL FMLOOK_ll(HEXPRE,CLUOUT,ILUPRE,IRESP) -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! ZRVSRD = XRV/XRD ! @@ -181,12 +183,9 @@ BACKSPACE(ILUPRE) READ(ILUPRE,*) YZP ! Z-altitude or P-altitude ! IF( YZP/='PFRC' .AND. YZP/='ZFRC' ) THEN - WRITE(ILUOUT,*) "SET_FRC ERROR: undefined type of forcing:", YZP - WRITE(ILUOUT,*) " it should be PFRC or ZFRC" !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 + WRITE(YMSG,*) 'undefined type of forcing: ',TRIM(YZP),'. It should be PFRC or ZFRC' + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_FRC',YMSG) END IF ! READ(ILUPRE,*) NFRC ! Number of time-dependent forcing soundings @@ -195,11 +194,8 @@ READ(ILUPRE,*) NFRC ! Number of time-dependent forcing soundings ! and also by the name of forcing variables (format I3.3) ! You have to modify those if you need more forcing times :-( IF (NFRC > 99*8) THEN - WRITE(ILUOUT,*) "SET_FRC ERROR: maximum forcing times NFRC is ", 99*8 + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_FRC','maximum forcing times NFRC is 99*8') !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 END IF ! !* Allocate the MODD_FRC forcing arrays @@ -447,9 +443,7 @@ DO JKT = 2,NFRC-1 TDTFRC(JKT)%TDATE%DAY, & TDTFRC(JKT)%TIME !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_FRC','') END IF END DO ! diff --git a/src/MNH/set_relfrc.f90 b/src/MNH/set_relfrc.f90 index 397d333aa76a70688d829a72fe48af5bac8d430f..1fb2f63b04763981bcb8c1408e7ecfa57ce511b5 100644 --- a/src/MNH/set_relfrc.f90 +++ b/src/MNH/set_relfrc.f90 @@ -78,7 +78,6 @@ END MODULE MODI_SET_RELFRC ! USE MODD_CST USE MODD_LUNIT_n -USE MODD_LUNIT USE MODD_GRID_n USE MODD_CONF USE MODD_FRC @@ -89,6 +88,7 @@ USE MODD_PARAMETERS ! JPHEXT ! USE MODE_THERMO USE MODE_FM +USE MODE_MSG ! USE MODE_IO_ll USE MODI_HEIGHT_PRESS ! interface modules @@ -114,7 +114,6 @@ CHARACTER(LEN=*), INTENT(IN) :: HEXPRE ! name of input data file !* 0.2 Declarations of local variables : ! INTEGER :: ILUPRE,IRESP ! logical unit number of the EXPRE and FM return code -INTEGER :: ILUOUT0 ! Logical unit number for output-listing INTEGER :: ILUOUT ! Logical unit number for output-listing INTEGER :: JKT,JL,JK,JI! Loop control INTEGER :: IIU,IIB,IIE !dimensions du modele @@ -145,9 +144,7 @@ print*,"!* 1. PROLOGUE : RETRIEVE LOGICAL UNIT NUMBERS" ! ---------------------------------------- ! CALL FMLOOK_ll(HEXPRE,CLUOUT,ILUPRE,IRESP) -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) -! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT = TLUOUT%NLU ! !------------------------------------------------------------------------------- ! @@ -167,10 +164,7 @@ READ(ILUPRE,*) NPRESSLEV_REL ! nb of levels for low leves forcing=nb lev in ! You have to modify those if you need more forcing times :-( ! IF (NRELFRC > 99*8) THEN - WRITE(ILUOUT,*) "SET_FRC ERROR: maximum forcing times NRELFRC is ", 99*8 - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RELFRC','maximum forcing times NRELFRC is 99*8') END IF ! @@ -373,10 +367,7 @@ DO JKT = 2,NRELFRC-1 TDTRELFRC(JKT)%TDATE%DAY, & TDTRELFRC(JKT)%TIME !callabortstop - ! depuis m48 - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP 1 + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RELFRC','') END IF END DO diff --git a/src/MNH/set_rsou.f90 b/src/MNH/set_rsou.f90 index 5bcc56b3ac511f74ac7e4e1806650c101f0ecdfe..dd51d3519bb7247e52d3b3ea0b31bc0d26045318 100644 --- a/src/MNH/set_rsou.f90 +++ b/src/MNH/set_rsou.f90 @@ -267,6 +267,7 @@ USE MODE_THERMO USE MODE_FM USE MODE_IO_ll USE MODE_ll +USE MODE_MSG ! USE MODI_HEIGHT_PRESS ! interface modules USE MODI_PRESS_HEIGHT @@ -380,6 +381,7 @@ REAL,DIMENSION(SIZE(XXHAT),SIZE(XYHAT)) ::ZZS_LS REAL,DIMENSION(SIZE(XXHAT),SIZE(XYHAT),SIZE(XZHAT)) ::ZZFLUX_MX,ZZMASS_MX ! mixed grid INTEGER :: JJ,JI INTEGER :: JLOOP +CHARACTER(LEN=100) :: YMSG !------------------------------------------------------------------------------- ! !* 1. PROLOGUE : INITIALIZE SOME CONSTANTS, RETRIEVE LOGICAL @@ -400,7 +402,7 @@ ZRDSRV = XRD/XRV ! ! CALL FMLOOK_ll(HEXPRE,CLUOUT,ILUPRE,IRESP) -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! !* 1.3 Read data kind in EXPRE file ! @@ -408,39 +410,24 @@ READ(ILUPRE,*) YKIND ! ! IF(LUSERC .AND. YKIND/='PUVTHDMR' .AND. YKIND/='ZUVTHDMR' .AND. YKIND/='ZUVTHLMR') THEN - WRITE(ILUOUT,FMT=*) 'HYDROMETEORS ARE NOT ALLOWED FOR YKIND = ', YKIND - WRITE(ILUOUT,FMT=*)'JOB ABORTED ' + WRITE(YMSG,*) 'hydrometeors are not allowed for YKIND = ', YKIND !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU',YMSG) ENDIF ! Demande Thierry Bergot Sept 2012 !IF(LUSERC .AND.(YKIND == 'PUVTHDMR' .OR. YKIND == 'ZUVTHDMR').AND. .NOT. L1D) THEN -! WRITE(ILUOUT,FMT=*) 'USE OF HYDROMETEORS FOR YKIND=P(Z)UVTHDMR IS ONLY ALLOWED IN 1D CASE' -! WRITE(ILUOUT,FMT=*)'JOB ABORTED ' ! !callabortstop -! CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) -! CALL ABORT -! STOP +! CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU','use of hydrometeors for YKIND=P(Z)UVTHDMR is only allowed in 1D case') !ENDIF ! !IF(LUSERI .AND. YKIND=='ZUVTHLMR') THEN -! WRITE(ILUOUT,FMT=*) 'USE OF ICE FOR YKIND=ZUVTHLMR IS NOT ALLOWED' -! WRITE(ILUOUT,FMT=*)'JOB ABORTED ' ! !callabortstop -! CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) -! CALL ABORT -! STOP +! CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU','use of ice for YKIND=ZUVTHLMR is not allowed') !ENDIF ! IF(YKIND=='ZUVTHLMR' .AND. .NOT. LUSERC) THEN - WRITE(ILUOUT,FMT=*) 'LUSERC=T IS REQUIRED FOR YKIND=ZUVTHLMR' - WRITE(ILUOUT,FMT=*)'JOB ABORTED ' !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU','LUSERC=T is required for YKIND=ZUVTHLMR') ENDIF ! GUSERC=.FALSE. @@ -1127,12 +1114,9 @@ SELECT CASE(YKIND) ZRT(:)=ZMR(:) ZTHL(:)=ZTHV(:)*(1+ZRT(:))/(1+ZRVSRD*ZRT(:)) CASE DEFAULT - WRITE(ILUOUT,FMT='("DATA TYPE YKIND IN PREFILE UNKNOWN",/, & - & "JOB ABORTED ")') !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'data type YKIND=',TRIM(YKIND),' in PREFILE unknown' + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_RSOU',YMSG) END SELECT ! !------------------------------------------------------------------------------- diff --git a/src/MNH/set_subdomain.f90 b/src/MNH/set_subdomain.f90 index 0564def4cf3b0cf07f6972266b133dd94f840a91..d5212659a497cc39871587153ec9742716429663 100644 --- a/src/MNH/set_subdomain.f90 +++ b/src/MNH/set_subdomain.f90 @@ -51,7 +51,7 @@ END MODULE MODI_SET_SUBDOMAIN !! Module MODD_CONF : contains configuration variables for all models. !! NVERB : verbosity level for output-listing !! Module MODD_LUNIT : contains logical unit names for all models -!! CLUOUT0 : name of output-listing +!! TLUOUT0 : output-listing file !! Module MODD_PARAMETERS !! JPHEXT !! Module MODD_GRID1 @@ -93,6 +93,7 @@ USE MODE_GRIDPROJ ! executive module USE MODE_POS USE MODE_FM USE MODE_IO_ll +USE MODE_MSG ! USE MODD_CONF ! declaration modules USE MODD_IO_ll, ONLY : TFILEDATA @@ -147,7 +148,7 @@ NAMELIST/NAM_MESONH_DOM/ NIMAX,NJMAX,NXOR,NYOR ! ! definition of MESO-NH ! ! horizontal domain !------------------------------------------------------------------------------- -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU !------------------------------------------------------------------------------- ! !* 1. COMPUTATION OF THE LATITUDE AND LONGITUDE OF LARGE DOMAIN POINTS @@ -199,18 +200,14 @@ IF ( NXOR==NUNDEF .OR. NYOR==NUNDEF ) THEN WRITE(ILUOUT0,*) 'NXOR = ',NXOR WRITE(ILUOUT0,*) 'Please also define NYOR or choose an other domain initialization mode' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_SUBDOMAIN','bottom-left domain X index is given, but not its Y index') END IF IF ( NYOR/=NUNDEF ) THEN WRITE(ILUOUT0,*) 'bottom-left domain Y index is given, but not its X index' WRITE(ILUOUT0,*) 'NYOR = ',NYOR WRITE(ILUOUT0,*) 'Please also define NXOR or choose an other domain initialization mode' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_SUBDOMAIN','bottom-left domain Y index is given, but not its X index') END IF NXOR= (IIU - NIMAX)/2 NYOR= (IJU - NJMAX)/2 @@ -262,9 +259,7 @@ IF ( MOD(NIMAX,KDXRATIO) /= 0 ) THEN WRITE(ILUOUT0,*) 'Your NIMAX is :', NIMAX WRITE(ILUOUT0,*) '**************************************' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_SUBDOMAIN','') END IF ! IF ( MOD(NJMAX,KDYRATIO) /= 0 ) THEN @@ -274,9 +269,7 @@ IF ( MOD(NJMAX,KDYRATIO) /= 0 ) THEN WRITE(ILUOUT0,*) 'Your NJMAX is :', NJMAX WRITE(ILUOUT0,*) '**************************************' !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_SUBDOMAIN','') END IF ! IF ( MOD(NXOR-1,KDXRATIO) /= 0 ) THEN @@ -330,9 +323,7 @@ THEN WRITE(ILUOUT0,*) ' +----------------------------------------------------------+' WRITE(ILUOUT0,*) !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SET_SUBDOMAIN','input PGD domain too small or output domain not well centered') ENDIF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/spawn_grid2.f90 b/src/MNH/spawn_grid2.f90 index 02936c8626aa7a6c1f29a8b5367bd2346a16169b..440b0ca5ce1fc49d782ef4b98ee48e0f245c0e13 100644 --- a/src/MNH/spawn_grid2.f90 +++ b/src/MNH/spawn_grid2.f90 @@ -175,7 +175,8 @@ USE MODI_BIKHARDT USE MODI_SPAWN_ZS ! USE MODE_MODELN_HANDLER -USE MODE_MPPDB +USE MODE_MPPDB +USE MODE_MSG ! IMPLICIT NONE ! @@ -281,26 +282,22 @@ ENDIF ! !* 1.2 recovers logical unit number of output listing ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! !* 1.3 checks that model 2 domain is included in the one of model 1 IF ( (IXEND_F) > SIZE(XXHAT1) ) THEN WRITE(ILUOUT,FMT=*) 'SPAWN_MODEL2: MODEL 2 DOMAIN OUTSIDE THE MODEL1 DOMAIN ', & ' IXOR_F = ', IXOR_F,' IXEND_F = ', IXEND_F, & ' IIU of model1 = ',SIZE(XXHAT1) - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + !callabortstop + CALL PRINT_MSG(NVERB_FATAL,'GEN','SPAWN_GRID2','MODEL 2 DOMAIN OUTSIDE THE MODEL1 DOMAIN') END IF IF ( (IYEND_F) > SIZE(XYHAT1) ) THEN WRITE(ILUOUT,FMT=*) 'SPAWN_MODEL2: MODEL 2 DOMAIN OUTSIDE THE MODEL1 DOMAIN ', & ' IYOR_F = ', IYOR_F,' IYEND_F = ', IYEND_F, & ' IJU of model1 = ',SIZE(XYHAT1) - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + !callabortstop + CALL PRINT_MSG(NVERB_FATAL,'GEN','SPAWN_GRID2','MODEL 2 DOMAIN OUTSIDE THE MODEL1 DOMAIN') END IF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90 index 97dd4c716ff2f9636912273104c78917206f3220..f727c5e86a2e64971a327970ded37739a147e16e 100644 --- a/src/MNH/spawn_model2.f90 +++ b/src/MNH/spawn_model2.f90 @@ -397,7 +397,7 @@ IMI = GET_CURRENT_MODEL_INDEX() CALL GOTO_MODEL(2) CSTORAGE_TYPE='TT' ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT=TLUOUT%NLU ! !* 1. INITIALIZATIONS : ! --------------- @@ -473,9 +473,7 @@ IKE = IKU - JPVEXT ! WRITE(ILUOUT,*) 'SPAWN_MODEL2: MODEL 2 DOMAIN X-SIZE INCOHERENT WITH THE', & ! ' MODEL1 MESH ',' IIB = ',IIB,' IIE = ', IIE ,'NDXRATIO = ',NDXRATIO ! !callabortstop -! CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) -! CALL ABORT -! STOP +! CALL PRINT_MSG(NVERB_FATAL,'GEN','SPAWN_MODEL2','') !END IF !$ !$20140506 the condition on NXSIZE*NXRATIO ==IIE-IIB+1 only works for monoproc @@ -484,9 +482,7 @@ IKE = IKU - JPVEXT ! WRITE(ILUOUT,*) 'SPAWN_MODEL2: MODEL 2 DOMAIN Y-SIZE INCOHERENT WITH THE', & ! ' MODEL1 MESH ',' IJB = ',IJB,' IJE = ', IJE ,'NDYRATIO = ',NDYRATIO ! !callabortstop -! CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) -! CALL ABORT -! STOP +! CALL PRINT_MSG(NVERB_FATAL,'GEN','SPAWN_MODEL2','') !END IF !$ ! @@ -510,26 +506,20 @@ IF (LEN_TRIM(HSONFILE) /= 0 ) THEN IF (ADJUSTL(ADJUSTR(YDAD_SON)).NE.ADJUSTL(ADJUSTR(CMY_NAME(1)))) THEN WRITE(ILUOUT,*) 'SPAWN_MODEL2: DAD of SON file is different from the one of model2' WRITE(ILUOUT,*) ' DAD of SON = ',TRIM(YDAD_SON),' DAD of model2 = ',TRIM(CMY_NAME(1)) - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + !callabortstop + CALL PRINT_MSG(NVERB_FATAL,'GEN','SPAWN_MODEL2','DAD of SON file is different from the one of model2') END IF IF ( IDXRATIOSON /= NDXRATIO ) THEN WRITE(ILUOUT,*) 'SPAWN_MODEL2: RATIOX of input SON file is different from the one of model2' ,& ' RATIOX SON = ',IDXRATIOSON,' RATIOX model2 = ',NDXRATIO - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + !callabortstop + CALL PRINT_MSG(NVERB_FATAL,'GEN','SPAWN_MODEL2','RATIOX of input SON file is different from the one of model2') END IF IF ( IDYRATIOSON /= NDYRATIO ) THEN WRITE(ILUOUT,*) 'SPAWN_MODEL2: RATIOY of input SON file is different from the one of model2' ,& ' RATIOY SON = ',IDYRATIOSON,' RATIOY model2 = ',NDYRATIO - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + !callabortstop + CALL PRINT_MSG(NVERB_FATAL,'GEN','SPAWN_MODEL2','RATIOY of input SON file is different from the one of model2') END IF ! IIUSON=IIMAXSON+2*JPHEXT @@ -1670,7 +1660,7 @@ WRITE(ILUOUT,*) ' ------------------------------------------------------------ ' 6 FORMAT(' | SPAWN_MODEL2 | ',F8.3,' | ',F8.3,' |') ! ! -CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) +CALL IO_FILE_CLOSE_ll(TLUOUT) ! 9900 FORMAT(' K = 001 ZHAT = ',E14.7) 9901 FORMAT(' K = ',I3.3,' ZHAT = ',E14.7,' DZ = ' ,E14.7) diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90 index af2400ea90bb9ae4250f3e80c8bafc8ccb460db8..e35b0cf5169184f11bf3424c18172367c49e7b25 100644 --- a/src/MNH/spawning.f90 +++ b/src/MNH/spawning.f90 @@ -182,7 +182,7 @@ CALL READ_EXSPA(CINIFILE,CINIFILEPGD,& YEXSPA = 'SPAWN1.nam' CALL OPEN_ll(unit=ILUSPA,FILE=YEXSPA,iostat=IRESP,status="OLD",action='READ', & form='FORMATTED',position="REWIND",mode='GLOBAL') -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! CALL INIT_NMLVAR CALL POSNAM(ILUSPA,'NAM_SPAWN_SURF',GFOUND) @@ -228,10 +228,10 @@ CALL MPPDB_CHECK3D(XUT,"SPAWNING-after boundaries::XUT",PRECISION) ! CALL OPEN_ll(unit=ILUSPA,FILE=YEXSPA,iostat=IRESP,status="OLD",action='READ', & form='FORMATTED',position="REWIND",mode='GLOBAL') -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU CALL SET_POINTERS_TO_MODEL1() CALL GOTO_MODEL(2) -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU CALL INIT_NMLVAR CALL POSNAM(ILUSPA,'NAM_SPAWN_SURF',GFOUND) IF (GFOUND) READ(UNIT=ILUSPA,NML=NAM_SPAWN_SURF) @@ -246,7 +246,7 @@ CALL SPAWN_MODEL2 (NRR,NSV_USER,CTURB,CSURF,CCLOUD, & CINIFILE, CINIFILEPGD, LSPAWN_SURF ) ! CALL SURFEX_DEALLO_LIST -CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) +CALL IO_FILE_CLOSE_ll(TLUOUT) CALL END_PARA_ll(IINFO_ll) !JUAN CALL ABORT STOP diff --git a/src/MNH/spectre.f90 b/src/MNH/spectre.f90 index 0e77a856225fb491ed941526a9d67886d0fd0741..db03b736c5db5c263ad4ea81ff8577419a78fe41 100644 --- a/src/MNH/spectre.f90 +++ b/src/MNH/spectre.f90 @@ -31,6 +31,7 @@ USE MODD_SPECTRE USE MODI_SPECTRE_MESONH USE MODI_SPECTRE_AROME ! +USE MODE_MSG USE MODE_POS USE MODE_IO_ll USE MODE_MODELN_HANDLER @@ -172,10 +173,7 @@ CINIFILE = YINIFILE(1) ! ----------- ! IF ( LEN_TRIM(CINIFILE)==0 ) THEN - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','SPECTRE','LEN_TRIM(CINIFILE)==0') ENDIF ! IF ( LEN_TRIM(YOUTFILE)==0 ) THEN @@ -188,10 +186,8 @@ ENDIF ! IF (CTYPEFILE=='MESONH') THEN CALL SPECTRE_MESONH(YOUTFILE) - ! close FM file - CALL CLOSE_ll (CLUOUT,IOSTAT=IRESP) - CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) - CALL CLOSE_ll (CLUOUT0,IOSTAT=IRESP) + CALL IO_FILE_CLOSE_ll(TLUOUT) + CALL IO_FILE_CLOSE_ll(TLUOUT0) ELSEIF (CTYPEFILE=='AROME ')THEN CALL SPECTRE_AROME(CINIFILE,YOUTFILE,XDELTAX,XDELTAY,NI,NJ,NK) ELSE diff --git a/src/MNH/ver_interp_to_mixed_grid.f90 b/src/MNH/ver_interp_to_mixed_grid.f90 index dbb9f1cc9337b112ae66104836b70a73a36d218f..5ddad2079695f8f27904fb4fb21f2dfd4c2f3237 100644 --- a/src/MNH/ver_interp_to_mixed_grid.f90 +++ b/src/MNH/ver_interp_to_mixed_grid.f90 @@ -200,6 +200,7 @@ USE MODE_REPRO_SUM USE MODE_ll USE MODE_EXTRAPOL !JUAN REALZ +USE MODE_MSG USE MODE_REPRO_SUM ! IMPLICIT NONE @@ -260,7 +261,7 @@ INTEGER :: IINFO_ll !------------------------------------------------------------------------------- ! -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU ! CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IIU=SIZE(PZMASS_LS,1) @@ -286,9 +287,7 @@ IF (MINVAL(PZMASS_LS (:,:,ILU))<0.5*(XZHAT(IKE)+XZHAT(IKE+1))) THEN WRITE(ILUOUT0,*) 'MESONH highest physical mass level : ', 0.5*(XZHAT(IKE)+XZHAT(IKE+1)) WRITE(ILUOUT0,*) 'input highest mass level : ', MINVAL(PZMASS_LS (:,:,ILU)) !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','VER_INTERP_TO_MIXED_GRID','MESONH highest mass level above highest input level') ENDIF ! IF (HFILE=='ATM ') THEN @@ -384,11 +383,7 @@ IF (HFILE=='ATM ') THEN XLSW_MX(:,:,:) =VER_INTERP_LIN(PLSW_LS(:,:,:),NKLIN(:,:,:),XCOEFLIN(:,:,:)) END IF ELSE - WRITE (ILUOUT0,'(A)') ' -> Bad input argument in ver_interp_to_mixed_grid - abort' - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','VER_INTERP_TO_MIXED_GRID','Bad HWLOC_LS input argument') END IF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90 index 57fcdec85a91b74df8270efe9ac43015412046fa..e0ef36feb4421099a55bf5110ed89466ed3cb6d7 100644 --- a/src/MNH/write_diachro.f90 +++ b/src/MNH/write_diachro.f90 @@ -116,7 +116,7 @@ REAL,DIMENSION(:,:,:,:,:,:), INTENT(IN),OPTIONAL :: PMASK CHARACTER(LEN=20) :: YCOMMENT CHARACTER(LEN=3) :: YJ INTEGER :: ILENG, ILENTITRE, ILENUNITE, ILENCOMMENT, IRESP -INTEGER :: ILUOUTDIA, IRESPDIA,INPRARDIA,IFTYPEDIA,IVERBDIA,ININARDIA +INTEGER :: ILUOUTDIA INTEGER :: II, IJ, IK, IT, IN, IP, INUM, J, JJ INTEGER :: INTRAJT, IKTRAJX, IKTRAJY, IKTRAJZ INTEGER :: ITTRAJX, ITTRAJY, ITTRAJZ @@ -221,9 +221,9 @@ IF (NVERB>=5) THEN WRITE(ILUOUTDIA,*)' WRITE_DIACHRO: ',TRIM(HLUOUTDIA),' IRESP=',IRESP ENDIF ! -CALL FMLOOK_ll(TRIM(TPDIAFILE%CNAME)//'.lfi',HLUOUTDIA,INUM,IRESPDIA) +CALL FMLOOK_ll(TRIM(TPDIAFILE%CNAME)//'.lfi',HLUOUTDIA,INUM,IRESP) IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' WRITE_DIACHRO: ',TRIM(TPDIAFILE%CNAME)//'.lfi',' IRESPDIA=',IRESPDIA + WRITE(ILUOUTDIA,*)' WRITE_DIACHRO: ',TRIM(TPDIAFILE%CNAME)//'.lfi',' IRESP=',IRESP ENDIF ! ! 1er enregistrement TYPE diff --git a/src/MNH/write_hgrid.f90 b/src/MNH/write_hgrid.f90 index 1ff97d59dfaea8f34b7d9bd41bd5c6652e51a8ea..203fb136e36c0b01508bc4b2ef97c02fce136ef8 100644 --- a/src/MNH/write_hgrid.f90 +++ b/src/MNH/write_hgrid.f90 @@ -59,17 +59,18 @@ END MODULE MODI_WRITE_HGRID ! !* 0. DECLARATIONS ! -USE MODD_LUNIT USE MODD_CONF USE MODD_CONF_n USE MODD_GRID USE MODD_IO_ll, ONLY: TFILEDATA -USE MODD_PGDGRID USE MODD_PGDDIM +USE MODD_PGDGRID ! -USE MODI_WRITE_HGRIDn -USE MODE_IO_ll USE MODE_FMWRIT +USE MODE_IO_ll +USE MODE_MSG +! +USE MODI_WRITE_HGRIDn ! IMPLICIT NONE ! @@ -88,12 +89,7 @@ INTEGER :: IRESP !* 1. TEST ON MODEL INDEX ! ------------------- ! KMI may be 0 -IF (KMI<0 .OR. KMI>JPMODELMAX) THEN - !callabortstop - CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) - CALL ABORT - STOP -ENDIF +IF (KMI<0 .OR. KMI>JPMODELMAX) CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_HGRID_n','KMI<0 .OR. KMI>JPMODELMAX') IF (KMI/=0) THEN CALL WRITE_HGRID_n(TPFILE) RETURN diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90 index 959be81109b4ca88350a71dd444a8c5b59122e04..f5d838517b10a7f3347bc8be5f7d8a80d80f5002 100644 --- a/src/MNH/write_lbn.f90 +++ b/src/MNH/write_lbn.f90 @@ -99,6 +99,7 @@ USE MODD_PARAM_n USE MODE_FMWRIT USE MODE_ll USE MODE_IO_ll, ONLY: UPCASE, CLOSE_ll +USE MODE_MSG USE MODE_MODELN_HANDLER ! USE MODD_RAIN_C2R2_DESCR, ONLY: C2R2NAMES @@ -148,13 +149,14 @@ INTEGER :: JK INTEGER :: JMOM, IMOMENTS, JMODE, ISV_NAME_IDX INTEGER :: IMI ! Current model index CHARACTER(LEN=2) :: INDICE ! to index CCN and IFN fields of LIMA scheme +CHARACTER(LEN=100) :: YMSG TYPE(TFIELDDATA) :: TZFIELD !------------------------------------------------------------------------------- ! !* 1. SOME INITIALIZATIONS ! -------------------- ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT = TLUOUT%NLU ! IMI = GET_CURRENT_MODEL_INDEX() ! @@ -591,12 +593,8 @@ IF (NSV >=1) THEN IMOMENTS = INT(NSV_DSTEND - NSV_DSTBEG + 1)/NMODE_DST !Should equal 3 at this point IF (IMOMENTS > 3) THEN - WRITE(ILUOUT,*) 'Error in write_lbn: number of moments DST must be 3' - WRITE(ILUOUT,*) NSV_DSTBEG, NSV_DSTEND,NMODE_DST,IMOMENTS - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'number of DST moments must be 3',NSV_DSTBEG, NSV_DSTEND,NMODE_DST,IMOMENTS + CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_LB_n',YMSG) END IF ! Test IMOMENTS ! TZFIELD%CSTDNAME = '' @@ -741,12 +739,8 @@ IF (NSV >=1) THEN IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG + 1)/NMODE_SLT !Should equal 3 at this point IF (IMOMENTS > 3) THEN - WRITE(ILUOUT,*) 'Error in write_lbn: number of moments must be 3' - WRITE(ILUOUT,*) NSV_SLTBEG, NSV_SLTEND,NMODE_SLT,IMOMENTS - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'number of SLT moments must be 3',NSV_SLTBEG, NSV_SLTEND,NMODE_SLT,IMOMENTS + CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_LB_n',YMSG) END IF ! Test IMOMENTS ! TZFIELD%CSTDNAME = '' diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index 70db528d88c07dfc9675d208b599437c4638e26d..d9c6cdc08ec87e2069e64e638ec184134ac30231 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -164,7 +164,7 @@ USE MODD_PARAM_n USE MODD_CURVCOR_n USE MODD_REF USE MODD_REF_n -USE MODD_LUNIT, ONLY : CLUOUT0 +USE MODD_LUNIT, ONLY : TLUOUT0 USE MODD_LUNIT_n USE MODD_TURB_n USE MODD_RADIATIONS_n @@ -316,6 +316,7 @@ REAL, DIMENSION(SIZE(XZZ,1),SIZE(XZZ,2),SIZE(XZZ,3)) :: ZDELTAZ ! interval (m) b INTEGER :: ILUOUT0 ! Logical unit number for output-listing ! CHARACTER(LEN=2) :: INDICE +CHARACTER(LEN=100) :: YMSG INTEGER :: I,IID TYPE(TFIELDDATA) :: TZFIELD TYPE(TFIELDDATA),DIMENSION(2) :: TZFIELD2 @@ -334,7 +335,7 @@ IKB=1+JPVEXT IKE=IKU-JPVEXT IMI = GET_CURRENT_MODEL_INDEX() -CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP) +ILUOUT0 = TLUOUT0%NLU !------------------------------------------------------------------------------- ! !* 1. WRITES IN THE LFI FILE @@ -3256,10 +3257,8 @@ IF(LRADAR .AND. LUSERR) THEN NBRAD=COUNT(XLAT_RAD(:) /= XUNDEF) NMAX=INT(NBSTEPMAX*XSTEP_RAD/XGRID) IF(NBSTEPMAX*XSTEP_RAD/XGRID/=NMAX .AND. (LCART_RAD)) THEN - WRITE(ILUOUT0,*) 'NBSTEPMAX*XSTEP_RAD/XGRID is not an integer; please choose another combination' - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_LFIFM1_FOR_DIAG', & + 'NBSTEPMAX*XSTEP_RAD/XGRID is not an integer; please choose another combination') ENDIF DO JI=1,NBRAD NBELEV(JI)=COUNT(XELEV(JI,:) /= XUNDEF) @@ -3280,11 +3279,7 @@ IF(LRADAR .AND. LUSERR) THEN IF(NBRAD/=COUNT(XLON_RAD(:) /= XUNDEF).OR.NBRAD/=COUNT(XALT_RAD(:) /= XUNDEF).OR. & NBRAD/=COUNT(XLAM_RAD(:) /= XUNDEF).OR.NBRAD/=COUNT(XDT_RAD(:) /= XUNDEF).OR. & NBRAD/=COUNT(CNAME_RAD(:) /= "UNDEF")) THEN - WRITE(ILUOUT0,*) "Error: inconsistency in DIAG1.nam." - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_LFIFM1_FOR_DIAG','inconsistency in DIAG1.nam') END IF IF(NCURV_INTERPOL==0.AND.(LREFR.OR.LDNDZ)) THEN LREFR=.FALSE. @@ -3304,10 +3299,8 @@ IF(LRADAR .AND. LUSERR) THEN WRITE(ILUOUT0,*) "Warning: LWREFL cannot be set to .TRUE. if LWBSCS is also set to .TRUE.. Setting LWREFL to .FALSE.." END IF IF(CCLOUD=="LIMA" .AND. NDIFF/=7) THEN - WRITE(ILUOUT0,*) " ERROR : NDIFF=",NDIFF," not available with CCLOUD=LIMA" - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP + WRITE(YMSG,*) 'NDIFF=',NDIFF,' not available with CCLOUD=LIMA' + CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_LFIFM1_FOR_DIAG',YMSG) END IF INBOUT=28 !28: Temperature + RHR, RHS, RHG, ZDA, ZDS, ZDG, KDR, KDS, KDG IF (CCLOUD=='LIMA') INBOUT=INBOUT+1 ! rain concentration CRT diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 5382a90461bb2c94aaa5ff2aede9463d4ab8e46c..24ad092b5241af9c56494fbf4bad73c4fe134eb4 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -316,7 +316,7 @@ TYPE(TFIELDDATA) :: TZFIELD ! IMI = GET_CURRENT_MODEL_INDEX() ! -CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) +ILUOUT=TLUOUT%NLU ! ALLOCATE(ZWORK2D(SIZE(XTHT,1),SIZE(XTHT,2))) ALLOCATE(ZWORK3D(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))) @@ -1124,7 +1124,7 @@ IF (NSV >=1) THEN WRITE(ILUOUT,*) 'Error in write_lfin: number of moments must equal or inferior to 3' WRITE(ILUOUT,*) NSV_DSTBEG, NSV_DSTEND,NMODE_DST,IMOMENTS !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) + CALL IO_FILE_CLOSE_ll(TLUOUT) CALL ABORT STOP END IF ! Test IMOMENTS @@ -1227,7 +1227,7 @@ IF (NSV >=1) THEN WRITE(ILUOUT,*) 'Error in write_lfin: number of moments must be 3' WRITE(ILUOUT,*) NSV_SLTBEG, NSV_SLTEND,NMODE_SLT,IMOMENTS !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) + CALL IO_FILE_CLOSE_ll(TLUOUT) CALL ABORT STOP END IF diff --git a/src/MNH/zoom_pgd.f90 b/src/MNH/zoom_pgd.f90 index b784803b7aa04d301a5163c0038e4e5bef309f16..12de6215a242a5d7607d0cc1587cddfec1f25737 100644 --- a/src/MNH/zoom_pgd.f90 +++ b/src/MNH/zoom_pgd.f90 @@ -52,8 +52,8 @@ ! USE MODD_CONF, ONLY : CPROGRAM, NMASDEV, NBUGFIX, CBIBUSER, & L1D, L2D, LPACK -USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,TFILEDATA -USE MODD_LUNIT, ONLY : CLUOUT0, COUTFMFILE, CPGDFILE +USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,TFILE_OUTPUTLISTING,TFILEDATA +USE MODD_LUNIT, ONLY : CLUOUT0, COUTFMFILE, CPGDFILE, TLUOUT0 USE MODD_PARAMETERS, ONLY : XUNDEF, NUNDEF, JPVEXT, JPHEXT, JPMODELMAX USE MODD_PARAM_n, ONLY : CSURF USE MODD_DIM_n, ONLY : NIMAX, NJMAX @@ -127,9 +127,10 @@ CALL INI_CST CALL INITIO_ll() ! CLUOUT0='OUTPUT_LISTING0' ! name of the output-listing -! -CALL OPEN_ll(UNIT=ILUOUT0,FILE=CLUOUT0,IOSTAT=IRESP, & - FORM='FORMATTED',ACTION='WRITE',MODE='GLOBAL') +CALL IO_FILE_ADD2LIST(TLUOUT0,'OUTPUT_LISTING0','OUTPUTLISTING','WRITE') +CALL IO_FILE_OPEN_ll(TLUOUT0) +TFILE_OUTPUTLISTING => TLUOUT0 +ILUOUT0=TLUOUT0%NLU ! YNAMELIST = 'PRE_ZOOM1.nam' ! name of the namelist file @@ -265,7 +266,7 @@ WRITE(ILUOUT0,*) '***************************' WRITE(ILUOUT0,*) '* ZOOM_PGD ends correctly *' WRITE(ILUOUT0,*) '***************************' ! -CALL CLOSE_ll(CLUOUT0,IOSTAT=IRESP) +CALL IO_FILE_CLOSE_ll(TLUOUT0) ! CALL END_PARA_ll(IINFO_ll)