From d50d9c8f1142ce791d1c0863e019d3930b9fcdbd Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 29 Mar 2018 09:13:55 +0200 Subject: [PATCH] Philippe 29/03/2018: IO: more explicit dimension names --- src/LIB/SURCOUCHE/src/modd_netcdf.f90 | 2 +- src/LIB/SURCOUCHE/src/mode_netcdf.f90 | 26 +++++++++++--------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/modd_netcdf.f90 b/src/LIB/SURCOUCHE/src/modd_netcdf.f90 index a9ae971cd..bc9ae7bcb 100644 --- a/src/LIB/SURCOUCHE/src/modd_netcdf.f90 +++ b/src/LIB/SURCOUCHE/src/modd_netcdf.f90 @@ -18,7 +18,7 @@ TYPE IOCDF END TYPE IOCDF TYPE DIMCDF - CHARACTER(LEN=8) :: NAME = '' + CHARACTER(LEN=32) :: NAME = '' INTEGER(KIND=IDCDF_KIND) :: LEN = 0 INTEGER(KIND=IDCDF_KIND) :: ID = -1 TYPE(DIMCDF), POINTER :: NEXT => NULL() diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 index 12b8ab3fb..a9c24f4af 100644 --- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 +++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 @@ -855,9 +855,8 @@ TYPE(DIMCDF), POINTER :: GETDIMCDF TYPE(DIMCDF), POINTER :: TMP INTEGER :: COUNT -CHARACTER(LEN=7) :: YSUFFIX -CHARACTER(LEN=8) :: YDIMNAME -CHARACTER(LEN=20) :: YLEN +CHARACTER(LEN=16) :: YSUFFIX +CHARACTER(LEN=20) :: YDIMNAME INTEGER(KIND=IDCDF_KIND) :: STATUS LOGICAL :: GCHKLEN !Check if KLEN is valid TYPE(IOCDF), POINTER :: PIOCDF @@ -874,9 +873,10 @@ IF (PRESENT(HDIMNAME)) THEN END IF END IF +WRITE(YSUFFIX,'(I0)') KLEN + IF (GCHKLEN .AND. KLEN < 1) THEN - WRITE(YLEN,*) KLEN - CALL PRINT_MSG(NVERB_FATAL,'IO','GETDIMCDF','KLEN='//TRIM(YLEN)) + CALL PRINT_MSG(NVERB_FATAL,'IO','GETDIMCDF','KLEN='//TRIM(YSUFFIX)) END IF IF (PRESENT(HDIMNAME)) THEN @@ -891,8 +891,7 @@ ELSE TMP=>TMP%NEXT COUNT = COUNT+1 END DO - WRITE(YSUFFIX,'(i7)') KLEN - YDIMNAME = 'D'//ADJUSTL(YSUFFIX) + YDIMNAME = 'size'//TRIM(YSUFFIX) END IF IF (.NOT. ASSOCIATED(TMP)) THEN @@ -918,16 +917,15 @@ INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KLEN INTEGER(KIND=IDCDF_KIND) :: GETSTRDIMID TYPE(DIMCDF), POINTER :: TMP -CHARACTER(LEN=7) :: YSUFFIX -CHARACTER(LEN=8) :: YDIMNAME -CHARACTER(LEN=20) :: YLEN +CHARACTER(LEN=16) :: YSUFFIX INTEGER(KIND=IDCDF_KIND) :: STATUS CALL PRINT_MSG(NVERB_DEBUG,'IO','GETSTRDIMID','called') +WRITE(YSUFFIX,'(I0)') KLEN + IF (KLEN < 1) THEN - WRITE(YLEN,*) KLEN - CALL PRINT_MSG(NVERB_FATAL,'IO','GETSTRDIMID','KLEN='//TRIM(YLEN)) + CALL PRINT_MSG(NVERB_FATAL,'IO','GETSTRDIMID','KLEN='//TRIM(YSUFFIX)) END IF ! Search string dimension with KLEN length @@ -936,13 +934,11 @@ DO WHILE(ASSOCIATED(TMP)) IF (TMP%LEN == KLEN) EXIT TMP=>TMP%NEXT END DO -WRITE(YSUFFIX,'(i7)') KLEN -YDIMNAME = 'S'//ADJUSTL(YSUFFIX) IF (.NOT. ASSOCIATED(TMP)) THEN ! Not found then define new dimension ALLOCATE(TMP) - TMP%NAME = YDIMNAME + TMP%NAME = 'char'//TRIM(YSUFFIX) TMP%LEN = KLEN STATUS = NF90_DEF_DIM(TPFILE%NNCID, TMP%NAME, KLEN, TMP%ID) IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'GETSTRDIMID[NF90_DEF_DIM]') -- GitLab