diff --git a/src/MNH/ini_seriesn.f90 b/src/MNH/ini_seriesn.f90 index 45bdbdcca4945fcc696de676559089056cc5ec4c..f6cf8208f49ecc988fd8d2abf32f84b5cc0f1ff8 100644 --- a/src/MNH/ini_seriesn.f90 +++ b/src/MNH/ini_seriesn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2002-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -93,12 +93,14 @@ CHARACTER (LEN=5), DIMENSION(3) :: YSUF INTEGER :: ILUOUT ! Logical unit number for output-listing INTEGER :: IRESP ! Return code of FM-routines INTEGER :: IMI ! Current model index +INTEGER :: IDIGITS, ISIZE ! Length of character string !------------------------------------------------------------------------------- ! !* 1. INITIALIZATIONS ! --------------- ! IMI = GET_CURRENT_MODEL_INDEX() +IDIGITS = INT( LOG10(REAL(IMI)+0.1) + 1 ) !Get the number of digits of IMI ! CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKE = NKMAX + JPVEXT @@ -317,7 +319,9 @@ YMASK(3) = 'SEA' ! ----------------- ! DO JI=1,NSTEMP_SERIE1 - WRITE(CSCOMMENT1(JI),'("TEMPORAL SERIE (t) : ",A,".",I0,".",A)') CEXP,IMI,CSEG + ISIZE = LEN("TEMPORAL SERIES (t) : ") + LEN_TRIM(CEXP) + 1 + IDIGITS + 1 + LEN_TRIM(CSEG) + IF ( ISIZE > LEN(CSCOMMENT1(JI)) ) CALL PRINT_MSG( NVERB_WARNING, 'IO', 'INI_SERIES_n', 'CSCOMMENT1 truncated' ) + WRITE(CSCOMMENT1(JI),'("TEMPORAL SERIES (t) : ",A,".",I0,".",A)') TRIM(CEXP), IMI, TRIM(CSEG) IF (JI==1) WRITE(ILUOUT,FMT=*) CSCOMMENT1(JI) END DO ! @@ -383,7 +387,9 @@ end if ! --------------------- ! DO JI=1,NSTEMP_SERIE2 - WRITE(CSCOMMENT2(JI),'("TEMPORAL SERIE (z,t) : ",A,".",I0,".",A)') CEXP,IMI,CSEG + ISIZE = LEN("TEMPORAL SERIES (z,t): ") + LEN_TRIM(CEXP) + 1 + IDIGITS + 1 + LEN_TRIM(CSEG) + IF ( ISIZE > LEN(CSCOMMENT2(JI)) ) CALL PRINT_MSG( NVERB_WARNING, 'IO', 'INI_SERIES_n', 'CSCOMMENT2 truncated' ) + WRITE(CSCOMMENT2(JI),'("TEMPORAL SERIES (z,t): ",A,".",I0,".",A)') TRIM(CEXP), IMI, TRIM(CSEG) IF (JI==1) WRITE(ILUOUT,FMT=*) CSCOMMENT2(JI) END DO ! @@ -428,7 +434,9 @@ end if !* 2.3 Temporal series (x,t) ! DO JI=1,NSTEMP_SERIE3 - WRITE(CSCOMMENT3(JI),'("TEMPORAL SERIE (x,t) : ",A,".",I0,".",A)') CEXP,IMI,CSEG + ISIZE = LEN("TEMPORAL SERIES (x,t): ") + LEN_TRIM(CEXP) + 1 + IDIGITS + 1 + LEN_TRIM(CSEG) + IF ( ISIZE > LEN(CSCOMMENT3(JI)) ) CALL PRINT_MSG( NVERB_WARNING, 'IO', 'INI_SERIES_n', 'CSCOMMENT3 truncated' ) + WRITE(CSCOMMENT3(JI),'("TEMPORAL SERIES (x,t): ",A,".",I0,".",A)') TRIM(CEXP), IMI, TRIM(CSEG) IF (JI==1) WRITE(ILUOUT,FMT=*) CSCOMMENT3(JI) END DO diff --git a/src/MNH/modd_seriesn.f90 b/src/MNH/modd_seriesn.f90 index b407ae675e0c28458fbc50ca03bcce61e273d138..2c8ea55e08bed78845fd18189b8a55bcc5b385bc 100644 --- a/src/MNH/modd_seriesn.f90 +++ b/src/MNH/modd_seriesn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1998-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -39,7 +39,7 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_PARAMETERS, ONLY: JPMODELMAX +USE MODD_PARAMETERS, ONLY: JPMODELMAX, NCOMMENTLGTMAX, NMNHNAMELGTMAX, NUNITLGTMAX use modd_type_date, only: date_time IMPLICIT NONE @@ -68,18 +68,15 @@ TYPE SERIES_t REAL, DIMENSION(:,:,:,:,:,:), POINTER :: XSSERIES2=>NULL() ! 2nd group:temporal serie (z,t) REAL, DIMENSION(:,:,:,:,:,:), POINTER :: XSSERIES3=>NULL() ! 3rd group:temporal serie (x,t) type(date_time), dimension(:), pointer :: tpsdates => NULL() ! dates - CHARACTER(LEN=50),DIMENSION(:),POINTER :: CSCOMMENT1=>NULL() ! strings -! associated with the 1st group - CHARACTER(LEN=50),DIMENSION(:),POINTER :: CSCOMMENT2=>NULL() ! with the 2nd - CHARACTER(LEN=50),DIMENSION(:),POINTER :: CSCOMMENT3=>NULL() ! with the 3rd - CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSTITLE1=>NULL() ! strings -! associated with the 1st group - CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSTITLE2=>NULL() ! with the 2nd - CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSTITLE3=>NULL() ! with the 3rd - CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT1=>NULL() ! strings -! associated with the 1st group - CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT2=>NULL() ! with the 2nd - CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT3=>NULL() ! with the 3rd + CHARACTER(LEN=NCOMMENTLGTMAX), DIMENSION(:), POINTER :: CSCOMMENT1 => NULL() ! comments associated with the 1st group + CHARACTER(LEN=NCOMMENTLGTMAX), DIMENSION(:), POINTER :: CSCOMMENT2 => NULL() ! with the 2nd + CHARACTER(LEN=NCOMMENTLGTMAX), DIMENSION(:), POINTER :: CSCOMMENT3 => NULL() ! with the 3rd + CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:), POINTER :: CSTITLE1 => NULL() ! titles associated with the 1st group + CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:), POINTER :: CSTITLE2 => NULL() ! with the 2nd + CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:), POINTER :: CSTITLE3 => NULL() ! with the 3rd + CHARACTER(LEN=NUNITLGTMAX), DIMENSION(:), POINTER :: CSUNIT1 => NULL() ! units associated with the 1st group + CHARACTER(LEN=NUNITLGTMAX), DIMENSION(:), POINTER :: CSUNIT2 => NULL() ! with the 2nd + CHARACTER(LEN=NUNITLGTMAX), DIMENSION(:), POINTER :: CSUNIT3 => NULL() ! with the 3rd CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK1=>NULL() CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK2=>NULL() ! CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK3=>NULL() @@ -130,15 +127,15 @@ REAL, DIMENSION(:,:,:,:,:,:), POINTER :: XSSERIES1=>NULL() REAL, DIMENSION(:,:,:,:,:,:), POINTER :: XSSERIES2=>NULL() REAL, DIMENSION(:,:,:,:,:,:), POINTER :: XSSERIES3=>NULL() type(date_time), dimension(:), pointer :: tpsdates => NULL() -CHARACTER(LEN=50),DIMENSION(:),POINTER :: CSCOMMENT1=>NULL() -CHARACTER(LEN=50),DIMENSION(:),POINTER :: CSCOMMENT2=>NULL() -CHARACTER(LEN=50),DIMENSION(:),POINTER :: CSCOMMENT3=>NULL() -CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSTITLE1=>NULL() -CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSTITLE2=>NULL() -CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSTITLE3=>NULL() -CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT1=>NULL() -CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT2=>NULL() -CHARACTER(LEN=100),DIMENSION(:),POINTER :: CSUNIT3=>NULL() +CHARACTER(LEN=NCOMMENTLGTMAX), DIMENSION(:), POINTER :: CSCOMMENT1 => NULL() +CHARACTER(LEN=NCOMMENTLGTMAX), DIMENSION(:), POINTER :: CSCOMMENT2 => NULL() +CHARACTER(LEN=NCOMMENTLGTMAX), DIMENSION(:), POINTER :: CSCOMMENT3 => NULL() +CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:), POINTER :: CSTITLE1 => NULL() +CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:), POINTER :: CSTITLE2 => NULL() +CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:), POINTER :: CSTITLE3 => NULL() +CHARACTER(LEN=NUNITLGTMAX), DIMENSION(:), POINTER :: CSUNIT1 => NULL() +CHARACTER(LEN=NUNITLGTMAX), DIMENSION(:), POINTER :: CSUNIT2 => NULL() +CHARACTER(LEN=NUNITLGTMAX), DIMENSION(:), POINTER :: CSUNIT3 => NULL() CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK1=>NULL() CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK2=>NULL() ! CHARACTER(LEN=4), DIMENSION(:),POINTER :: CSMASK3=>NULL()