From b8145b1bb1fc97abbb9dd55e36cb45d5d4386165 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Tue, 15 May 2018 10:45:12 +0200 Subject: [PATCH] Philippe 15/05/2018: IO: bug and problems corrections: * IO_READ_CHECK_FIELD_LFI: reduce error level to warning if unexpected grid for scalar variable * IO_FILE_OPEN_ll: missing NDIMS for MASDEV * INI_MODEL_n: associate TINIFILEPGD to TFILE_DUMMY if necessary * WRITE_BUDGET: set NGRID=1 for 6D MASK variables * WRITE_DIACHRO: reverted name of field to old behavior (kept improved comment) (patch was lost in previous merge) * PREPARE_METADATA_WRITE_SURF: keep TPFIELD fieldvalues when in conflict with passed values --- src/LIB/SURCOUCHE/src/fmreadwrit.f90 | 9 +++++++-- src/LIB/SURCOUCHE/src/mode_fm.f90 | 1 + src/MNH/ini_modeln.f90 | 4 +++- src/MNH/write_budget.f90 | 2 +- src/MNH/write_diachro.f90 | 12 ++++++------ src/MNH/write_surf_mnh.f90 | 24 +++++++----------------- 6 files changed, 25 insertions(+), 27 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/fmreadwrit.f90 b/src/LIB/SURCOUCHE/src/fmreadwrit.f90 index 7e5f20dc5..ebd3572b1 100644 --- a/src/LIB/SURCOUCHE/src/fmreadwrit.f90 +++ b/src/LIB/SURCOUCHE/src/fmreadwrit.f90 @@ -613,7 +613,7 @@ INTEGER(KIND=LFI_INT), INTENT(OUT) :: KTOTAL INTEGER(KIND=LFI_INT), INTENT(OUT) :: KRESP LOGICAL, INTENT(OUT) :: OGOOD ! -INTEGER :: IROW,J +INTEGER :: IERRLEVEL,IROW,J INTEGER,DIMENSION(JPXKRK) :: ICOMMENT INTEGER(KIND=LFI_INT) :: ICOMLEN,INUMBR,IPOSEX CHARACTER(LEN=:),ALLOCATABLE :: YMSG @@ -687,7 +687,12 @@ ENDIF IF (KWORK(1)/=TPFIELD%NGRID) THEN WRITE(YVAL_FILE,'(I12)') KWORK(1) WRITE(YVAL_MEM, '(I12)') TPFIELD%NGRID - CALL PRINT_MSG(NVERB_ERROR,'IO','IO_READ_CHECK_FIELD_LFI','expected GRID value ('//TRIM(ADJUSTL(YVAL_MEM))// & + IF (TPFIELD%NDIMS==0) THEN + IERRLEVEL = NVERB_WARNING + ELSE + IERRLEVEL = NVERB_ERROR + END IF + CALL PRINT_MSG(IERRLEVEL,'IO','IO_READ_CHECK_FIELD_LFI','expected GRID value ('//TRIM(ADJUSTL(YVAL_MEM))// & ') is different than found in file ('//TRIM(ADJUSTL(YVAL_FILE))//') for variable '//TRIM(TPFIELD%CMNHNAME)) TPFIELD%NGRID = KWORK(1) KRESP = -111 !Used later to broadcast modified metadata diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90 index 434009ccf..6a47642fa 100644 --- a/src/LIB/SURCOUCHE/src/mode_fm.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fm.f90 @@ -173,6 +173,7 @@ SELECT CASE(TPFILE%CTYPE) IF (IRESP2/=0) THEN TZFIELD%CMNHNAME = 'MASDEV' TZFIELD%CLONGNAME = 'MesoNH version (without bugfix)' + TZFIELD%NDIMS = 0 CALL IO_READ_FIELD(TPFILE,TZFIELD,IMASDEV,IRESP2) IF (IRESP2/=0) THEN CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_OPEN_ll','unknown MASDEV version for '//TRIM(TPFILE%CNAME)) diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index b2c466e82..4f21d4ef4 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -424,7 +424,7 @@ USE MODD_ADVFRC_n USE MODD_RELFRC_n USE MODD_2D_FRC USE MODD_IO_SURF_MNH, ONLY : IO_SURF_MNH_MODEL -USE MODD_IO_ll, ONLY : CIO_DIR,TFILEDATA,TFILE_FIRST,TFILE_LAST +USE MODD_IO_ll, ONLY : CIO_DIR,TFILEDATA,TFILE_DUMMY,TFILE_FIRST,TFILE_LAST ! USE MODD_CH_PRODLOSSTOT_n USE MODI_CH_INIT_PRODLOSSTOT_n @@ -2084,6 +2084,8 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='SPAWN ')) THEN CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','') ENDIF ENDIF +! +IF (.NOT.ASSOCIATED(TINIFILEPGD)) TINIFILEPGD => TFILE_DUMMY ! !* special case after spawning in prep_real_case IF (CSURF=='EXRM' .AND. CPROGRAM=='REAL ') CSURF = 'EXTE' diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90 index 54ea6b7a3..15eb87a89 100644 --- a/src/MNH/write_budget.f90 +++ b/src/MNH/write_budget.f90 @@ -1027,7 +1027,7 @@ SELECT CASE (CBUTYPE) TZFIELD%CUNITS = '' TZFIELD%CDIR = 'XY' WRITE(TZFIELD%CCOMMENT,FMT="('X_Y_MASK',I4.4)") NBUTSHIFT - TZFIELD%NGRID = 0 + TZFIELD%NGRID = 1 TZFIELD%NTYPE = TYPEREAL TZFIELD%NDIMS = 6 TZFIELD%LTIMEDEP = .FALSE. diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90 index b14011321..544eda16f 100644 --- a/src/MNH/write_diachro.f90 +++ b/src/MNH/write_diachro.f90 @@ -373,12 +373,12 @@ DO J = 1,IP ! BUG ...ca passe que si PRESENT(OICP) sinon OICP non defini IF (PRESENT(OICP) .AND. PRESENT(OJCP)) THEN IF(HTYPE == 'CART' .AND. .NOT. OICP .AND. .NOT. OJCP) THEN - TZFIELD%CMNHNAME = TRIM(HGROUP)//'.'//TRIM(HTITRE(J)) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.PROC'//YJ TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) TZFIELD%CUNITS = TRIM(HUNITE(J)) TZFIELD%CDIR = 'XY' - TZFIELD%CCOMMENT = TRIM(HCOMMENT(J)) + TZFIELD%CCOMMENT = TRIM(HTITRE(J))//' - '//TRIM(HCOMMENT(J))//' ('//TRIM(HUNITE(J))//')' TZFIELD%NGRID = KGRID(J) TZFIELD%NTYPE = TYPEREAL TZFIELD%NDIMS = 5 @@ -386,12 +386,12 @@ IF (PRESENT(OICP) .AND. PRESENT(OJCP)) THEN CALL IO_WRITE_FIELD_BOX(TPDIAFILE,TZFIELD,'BUDGET',PVAR(:,:,:,:,:,J), & KIL+JPHEXT,KIH+JPHEXT,KJL+JPHEXT,KJH+JPHEXT) ELSE - TZFIELD%CMNHNAME = TRIM(HGROUP)//'.'//TRIM(HTITRE(J)) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.PROC'//YJ TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) TZFIELD%CUNITS = TRIM(HUNITE(J)) TZFIELD%CDIR = '--' - TZFIELD%CCOMMENT = TRIM(HCOMMENT(J)) + TZFIELD%CCOMMENT = TRIM(HTITRE(J))//' - '//TRIM(HCOMMENT(J))//' ('//TRIM(HUNITE(J))//')' TZFIELD%NGRID = KGRID(J) TZFIELD%NTYPE = TYPEREAL TZFIELD%NDIMS = 5 @@ -399,12 +399,12 @@ IF (PRESENT(OICP) .AND. PRESENT(OJCP)) THEN CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,PVAR(:,:,:,:,:,J)) ENDIF ELSE - TZFIELD%CMNHNAME = TRIM(HGROUP)//'.'//TRIM(HTITRE(J)) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.PROC'//YJ TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) TZFIELD%CUNITS = TRIM(HUNITE(J)) TZFIELD%CDIR = '--' - TZFIELD%CCOMMENT = TRIM(HCOMMENT(J)) + TZFIELD%CCOMMENT = TRIM(HTITRE(J))//' - '//TRIM(HCOMMENT(J))//' ('//TRIM(HUNITE(J))//')' TZFIELD%NGRID = KGRID(J) TZFIELD%NTYPE = TYPEREAL TZFIELD%NDIMS = 5 diff --git a/src/MNH/write_surf_mnh.f90 b/src/MNH/write_surf_mnh.f90 index f454f46b1..926cb739c 100644 --- a/src/MNH/write_surf_mnh.f90 +++ b/src/MNH/write_surf_mnh.f90 @@ -34,13 +34,13 @@ IF (IRESP==0) THEN IF (TRIM(TPFIELD%CLONGNAME)/=TRIM(HREC)) THEN CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'CLONGNAME different ('//TRIM(TPFIELD%CLONGNAME) & //'/'//TRIM(HREC)//') than expected for article '//TRIM(HREC)) - TPFIELD%CLONGNAME = TRIM(HREC) +! TPFIELD%CLONGNAME = TRIM(HREC) END IF !Modify and check CDIR IF (TPFIELD%CDIR/=HDIR) THEN CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'CDIR different ('//TRIM(TPFIELD%CDIR) & //'/'//TRIM(HDIR)//') than expected for article '//TRIM(HREC)) - TPFIELD%CDIR = HDIR +! TPFIELD%CDIR = HDIR END IF !Modify and check CCOMMENT IF (LEN_TRIM(HCOMMENT)/=0) THEN @@ -60,7 +60,7 @@ IF (IRESP==0) THEN IF (GWARN) THEN CALL PRINT_MSG(NVERB_INFO,'IO',TRIM(HSUBR),'CCOMMENT different ('//TRIM(TPFIELD%CCOMMENT) & //'/'//TRIM(HCOMMENT)//') than expected for article '//TRIM(HREC)) - TPFIELD%CCOMMENT = TRIM(HCOMMENT) +! TPFIELD%CCOMMENT = TRIM(HCOMMENT) END IF END IF ELSE @@ -72,21 +72,21 @@ IF (IRESP==0) THEN WRITE(YTXT,'( I0,"/",I0 )') TPFIELD%NGRID,KGRID CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'NGRID different ('//TRIM(YTXT) & //') than expected for article '//TRIM(HREC)) - TPFIELD%NGRID = KGRID +! TPFIELD%NGRID = KGRID END IF !Modify and check NTYPE IF (TPFIELD%NTYPE/=KTYPE) THEN WRITE(YTXT,'( I0,"/",I0 )') TPFIELD%NTYPE,KTYPE CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'NTYPE different ('//TRIM(YTXT) & //') than expected for article '//TRIM(HREC)) - TPFIELD%NTYPE = KTYPE +! TPFIELD%NTYPE = KTYPE END IF !Modify and check NDIMS IF (TPFIELD%NDIMS/=KDIMS) THEN WRITE(YTXT,'( I0,"/",I0 )') TPFIELD%NDIMS,KDIMS CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'NDIMS different ('//TRIM(YTXT) & //') than expected for article '//TRIM(HREC)) - TPFIELD%NDIMS = KDIMS +! TPFIELD%NDIMS = KDIMS END IF ELSE CALL PRINT_MSG(NVERB_DEBUG,'IO',TRIM(HSUBR),TRIM(HREC)//' not found in FIELDLIST. Generating default metadata') @@ -1122,17 +1122,7 @@ IF ( (CSTORAGE_TYPE=='PG' .OR. CSTORAGE_TYPE=='SU') & GCARTESIAN = .TRUE. END IF ! - TZFIELD%CMNHNAME = 'CARTESIAN' - TZFIELD%CSTDNAME = '' - TZFIELD%CLONGNAME = 'CARTESIAN' - TZFIELD%CUNITS = '' - TZFIELD%CDIR = '--' - TZFIELD%CCOMMENT = '' - TZFIELD%NGRID = 0 - TZFIELD%NTYPE = TYPELOG - TZFIELD%NDIMS = 0 - TZFIELD%LTIMEDEP = .FALSE. - CALL IO_WRITE_FIELD(TFILE_SURFEX,TZFIELD,GCARTESIAN,KRESP) + CALL IO_WRITE_FIELD(TFILE_SURFEX,'CARTESIAN',GCARTESIAN,KRESP) ! IF (KRESP /=0) THEN WRITE ( YMSG, '( I5 )' ) KRESP -- GitLab