From 44ee3ada6add73587b93695dfa376245c84dc8b5 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 25 Jan 2018 17:23:03 +0100 Subject: [PATCH] Philippe 25/01/2018: IO: add NSTDNAMELGTMAX and NFILENAMELGTMAX parameters + correction for DMFCONV attributes --- src/LIB/SURCOUCHE/src/modd_io.f90 | 5 +++-- src/LIB/SURCOUCHE/src/mode_field.f90 | 6 +++--- src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 | 9 +++++++-- src/MNH/modd_parameters.f90 | 3 +++ 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/modd_io.f90 b/src/LIB/SURCOUCHE/src/modd_io.f90 index f3f7f4f7b..70b8e9d57 100644 --- a/src/LIB/SURCOUCHE/src/modd_io.f90 +++ b/src/LIB/SURCOUCHE/src/modd_io.f90 @@ -14,7 +14,8 @@ MODULE MODD_IO_ll ! -USE MODD_NETCDF, ONLY: IDCDF_KIND, IOCDF +USE MODD_NETCDF, ONLY: IDCDF_KIND, IOCDF +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! IMPLICIT NONE ! @@ -65,7 +66,7 @@ END TYPE TOUTBAK !Structure describing the characteristics of a file TYPE TFILEDATA - CHARACTER(LEN=28) :: CNAME !Filename + CHARACTER(LEN=NFILENAMELGTMAX) :: CNAME !Filename CHARACTER(LEN=13) :: CTYPE = "UNKNOWN" !Filetype (backup, output, prepidealcase...) CHARACTER(LEN=7) :: CFORMAT = "UNKNOWN" !Fileformat (NETCDF4, LFI, LFICDF4...) CHARACTER(LEN=7) :: CMODE = "UNKNOWN" !Opening mode (read, write...) diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index 73292321d..a324cab46 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -66,7 +66,7 @@ END TYPE TFIELDPTR_T0D !Structure describing the characteristics of a field TYPE TFIELDDATA CHARACTER(LEN=NMNHNAMELGTMAX) :: CMNHNAME = '' !Name of the field (for MesoNH, non CF convention) - CHARACTER(LEN=32) :: CSTDNAME = '' !Standard name (CF convention) + CHARACTER(LEN=NSTDNAMELGTMAX) :: CSTDNAME = '' !Standard name (CF convention) CHARACTER(LEN=32) :: CLONGNAME = '' !Long name (CF convention) CHARACTER(LEN=40) :: CUNITS = '' !Canonical units (CF convention) CHARACTER(LEN=2) :: CDIR = '' !Type of the data field (XX,XY,--...) @@ -2499,11 +2499,11 @@ IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'DMFCONV' -TFIELDLIST(IDX)%CSTDNAME = 'X_Y_Downdraft Convective Mass Flux' +TFIELDLIST(IDX)%CSTDNAME = '' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: DMFCONV' TFIELDLIST(IDX)%CUNITS = 'kg s-1 m-2' TFIELDLIST(IDX)%CDIR = 'XY' -TFIELDLIST(IDX)%CCOMMENT = '' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Downdraft Convective Mass Flux' TFIELDLIST(IDX)%NGRID = 4 TFIELDLIST(IDX)%NTYPE = TYPEREAL TFIELDLIST(IDX)%NDIMS = 3 diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 index 03d3bc3d2..48727cbf3 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 @@ -818,6 +818,8 @@ END SUBROUTINE IO_FILE_ADD2LIST ! SUBROUTINE IO_FILE_FIND_BYNAME(HNAME,TPFILE,KRESP,OOLD) ! +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +! CHARACTER(LEN=*), INTENT(IN) :: HNAME ! Name of the file to find TYPE(TFILEDATA),POINTER,INTENT(OUT) :: TPFILE ! File structure to return INTEGER, INTENT(OUT) :: KRESP ! Return value @@ -826,7 +828,7 @@ LOGICAL, OPTIONAL, INTENT(IN) :: OOLD ! FALSE if new file (should not be TYPE(TFILEDATA),POINTER :: TZFILE ! File structure LOGICAL :: GOLD ! -CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_FILE_FIND_BYNAME','looking for: '//TRIM(HNAME)) +CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_FILE_FIND_BYNAME','looking for '//TRIM(HNAME)) ! NULLIFY(TPFILE) KRESP = 0 @@ -837,6 +839,9 @@ ELSE GOLD = .TRUE. END IF ! +IF (LEN_TRIM(HNAME)>NFILENAMELGTMAX) & + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_FIND_BYNAME','HNAME length is bigger than NFILENAMELGTMAX for '//TRIM(HNAME)) +! IF (.NOT.ASSOCIATED(TFILE_FIRST)) THEN IF (GOLD) CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_FIND_BYNAME','filelist is empty') ELSE @@ -844,7 +849,7 @@ ELSE TZFILE => TFILE_FIRST ! DO - IF (TRIM(TZFILE%CNAME) == TRIM(HNAME) ) THEN + IF (TRIM(TZFILE%CNAME) == TRIM(HNAME(1:MIN(NFILENAMELGTMAX,LEN(HNAME)))) ) THEN TPFILE => TZFILE EXIT END IF diff --git a/src/MNH/modd_parameters.f90 b/src/MNH/modd_parameters.f90 index ae029c22d..19ecd626f 100644 --- a/src/MNH/modd_parameters.f90 +++ b/src/MNH/modd_parameters.f90 @@ -81,6 +81,9 @@ INTEGER, PARAMETER :: JPOUTMAX = 192 ! Maximum allowed number of OUTput files INTEGER, PARAMETER :: JPOUTVARMAX = 192 ! Maximum allowed number of variables in an output file ! INTEGER, PARAMETER :: NMNHNAMELGTMAX = 32 ! Maximum length of a MNH variable name +INTEGER, PARAMETER :: NSTDNAMELGTMAX = 64 ! Maximum length of the standard name of a variable (CF convention) +! +INTEGER, PARAMETER :: NFILENAMELGTMAX = 32 ! Maximum length of a file name ! INTEGER, PARAMETER :: JPLIMACCNMAX = 10 ! Maximum allowed number of CCN modes in LIMA INTEGER, PARAMETER :: JPLIMAIFNMAX = 10 ! Maximum allowed number of IFN modes in LIMA -- GitLab