From 4ddf6158f750fd84d9cc5ad228bef2068775d997 Mon Sep 17 00:00:00 2001 From: Gaelle DELAUTIER <gaelle.delautier@meteo.fr> Date: Thu, 26 Apr 2018 11:12:43 +0200 Subject: [PATCH] Juan + Gaelle 26/04/2018 : bug IO --- LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 | 1 + src/LIB/SURCOUCHE/src/mode_field.f90 | 18 +++++++++++++++++- src/LIB/SURCOUCHE/src/mode_netcdf.f90 | 6 ++++-- src/MNH/prep_ideal_case.f90 | 7 ++++++- src/SURFEX/sfx_xios_check_field.F90 | 15 +++++++++++++++ 5 files changed, 43 insertions(+), 4 deletions(-) diff --git a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 index 544a2bfee..44354d56b 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 @@ -16,6 +16,7 @@ program LFI2CDF USE mode_options USE MODE_SPLITTINGZ_ll, ONLY: INI_PARAZ_ll USE mode_util + USE MODI_VERSION USE MODN_CONFIO, ONLY: LCDF4, LLFIOUT, LLFIREAD diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index 1de66f637..962c74684 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -119,7 +119,9 @@ TYPE(TFIELDDATA),DIMENSION(MAXFIELDS),SAVE :: TFIELDLIST CONTAINS ! SUBROUTINE INI_FIELD_LIST(KMODEL) -! +! Modif +! J.Escobar 25/04/2018: missing def of FRC +!------------------------------------------------ USE MODD_CONF, ONLY: NMODEL ! INTEGER,INTENT(IN),OPTIONAL :: KMODEL @@ -3249,6 +3251,20 @@ TFIELDLIST(IDX)%LTIMEDEP = .TRUE. ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'FRC' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'FRC' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = '--' +TFIELDLIST(IDX)%CCOMMENT = 'Number of forcing profiles' +TFIELDLIST(IDX)%NGRID = 0 +TFIELDLIST(IDX)%NTYPE = TYPEINT +TFIELDLIST(IDX)%NDIMS = 0 +TFIELDLIST(IDX)%LTIMEDEP = .FALSE. +IDX = IDX+1 +! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! IF (TRIM(CPROGRAM)=='REAL' .OR. TRIM(CPROGRAM) == 'LFICDF') THEN !PW: not yet known: IF (LFILTERING) THEN diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 index 3ef456772..5af85e8d1 100644 --- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 +++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 @@ -2184,7 +2184,9 @@ KRESP = IRESP END SUBROUTINE IO_WRITE_FIELD_NC4_C0 SUBROUTINE IO_WRITE_FIELD_NC4_C1(TPFILE,TPFIELD,HFIELD,KRESP) -! +! Modif +! J.Escobar : 25/04/2018 : missing 'IF ALLOCATED(IVDIMSTMP)' DEALLOCATE +!---------------------------------------------------------------- TYPE(TFILEDATA), INTENT(IN) :: TPFILE TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD CHARACTER(LEN=*),DIMENSION(:),INTENT(IN) :: HFIELD @@ -2244,7 +2246,7 @@ CALL IO_WRITE_FIELD_ATTR_NC4(TPFILE,TPFIELD,IVARID,GEXISTED) STATUS = NF90_PUT_VAR(INCID, IVARID, HFIELD(1:ISIZE)(1:ILEN), START=(/IONE,IONE/), COUNT=(/ILEN,ISIZE/)) IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'IO_WRITE_FIELD_NC4_C1[NF90_PUT_VAR] '//TRIM(TPFIELD%CMNHNAME),IRESP) -DEALLOCATE(IVDIMSTMP) +IF(ALLOCATED(IVDIMSTMP)) DEALLOCATE(IVDIMSTMP) KRESP = IRESP END SUBROUTINE IO_WRITE_FIELD_NC4_C1 diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index 3bb3639a2..0ddb6828d 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -1775,6 +1775,7 @@ IF (CSURF =='EXTE') THEN TPGDFILE => TINIFILE CALL PGD_GRID_SURF_ATM(YSURF_CUR%UG, YSURF_CUR%U,YSURF_CUR%GCP,'MESONH',TINIFILE%CNAME,'MESONH',.TRUE.,HDIR='-') CALL PGD_SURF_ATM (YSURF_CUR,'MESONH',TINIFILE%CNAME,'MESONH',.TRUE.) + CALL IO_FILE_ADD2LIST(TINIFILEPGD,TRIM(CINIFILEPGD),'PREPIDEALCASE','WRITE',KLFINPRAR=NNPRAR,KLFITYPE=NTYPE,KLFIVERB=NVERB) TPGDFILE => TINIFILEPGD ELSE ! ... or read from file. @@ -1794,7 +1795,11 @@ IF (CSURF =='EXTE') THEN !* writing of physiographic fields in the file CSTORAGE_TYPE='PG' ! - CALL IO_FILE_ADD2LIST(TZINIFILEPGD,TRIM(CINIFILEPGD),'PREPIDEALCASE','WRITE',KLFINPRAR=NNPRAR,KLFITYPE=NTYPE,KLFIVERB=NVERB) + IF (ASSOCIATED(TINIFILEPGD)) THEN + TZINIFILEPGD => TINIFILEPGD + ELSE + CALL IO_FILE_ADD2LIST(TZINIFILEPGD,TRIM(CINIFILEPGD),'PREPIDEALCASE','WRITE',KLFINPRAR=NNPRAR,KLFITYPE=NTYPE,KLFIVERB=NVERB) + END IF ! CALL IO_FILE_OPEN_ll(TZINIFILEPGD) ! diff --git a/src/SURFEX/sfx_xios_check_field.F90 b/src/SURFEX/sfx_xios_check_field.F90 index 3eab1eee3..839a0c784 100644 --- a/src/SURFEX/sfx_xios_check_field.F90 +++ b/src/SURFEX/sfx_xios_check_field.F90 @@ -2,6 +2,21 @@ !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. +MODULE MODI_SFX_XIOS_CHECK_FIELD +INTERFACE +SUBROUTINE SFX_XIOS_CHECK_FIELD(U, HREC, HCOMMENT, OWRITE, PFIELD1, PFIELD2, PFIELD3, HAXIS) +USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t +TYPE(SURF_ATM_t) , INTENT(INOUT) :: U +CHARACTER(LEN=*) ,INTENT(IN) :: HREC ! name of the field to check +CHARACTER(LEN=100) ,INTENT(IN) :: HCOMMENT ! Comment string +LOGICAL ,INTENT(OUT):: OWRITE ! TRUE if no issue re. Xios for this field +REAL,DIMENSION(:) ,INTENT(IN) , OPTIONAL :: PFIELD1 ! value +REAL,DIMENSION(:,:) ,INTENT(IN) , OPTIONAL :: PFIELD2 ! value +REAL,DIMENSION(:,:,:) ,INTENT(IN) , OPTIONAL :: PFIELD3 ! value +CHARACTER(LEN=*) ,INTENT(IN) , OPTIONAL :: HAXIS ! name of the additional axis +END SUBROUTINE SFX_XIOS_CHECK_FIELD +END INTERFACE +END MODULE MODI_SFX_XIOS_CHECK_FIELD SUBROUTINE SFX_XIOS_CHECK_FIELD(U, HREC, HCOMMENT, OWRITE, PFIELD1, PFIELD2, PFIELD3, HAXIS) !! !! -- GitLab