diff --git a/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 b/LIBTOOLS/tools/lfi2cdf/src/lfi2cdf.f90 index 544a2bfee38904c370c9c8da097092936115335a..44354d56b8d0d0c0da98d9743637c12c23df1f73 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 1de66f6373628a60955aca132255b9e22427e155..962c74684b5de3ee6e31574e274315c1662032cb 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 3ef4567720ca2b306b8fd21623bb11fae59c0596..5af85e8d1869d24ade9f9abdcc70ad5d6e881702 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 3bb3639a221f3b1a18b3295fe14f48ac24d71e35..0ddb6828df367c941a4fe5b0f62bde77df98cfdb 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 3eab1eee3e95d55cc709bc9171c89da0f5f0ca8e..839a0c7841dff85625bd195d80515a835dbedb60 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) !! !!