diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90 index a007608e02722e063335da9a3fb2be1e542059fe..f4bf016b8d1123dd4d025a0532333ca0f333c7b3 100644 --- a/src/MNH/write_diachro.f90 +++ b/src/MNH/write_diachro.f90 @@ -68,8 +68,10 @@ !! add the initialization of the dimensions of !! MASK array in MASK case with write outside the !! routine. -!! J.Escobar 02/10/2015 modif for JPHEXT(JPVEXT) variable +!! J.Escobar 02/10/2015 modif for JPHEXT(JPVEXT) variable !! D.Gazen+ G.Delautier 06/2016 modif for ncl files +!! P. Wautelet 09/06/2017: name of the variable added to the name of the written field +!! and better comment (true comment + units) !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -114,7 +116,7 @@ REAL,DIMENSION(:,:,:),OPTIONAL :: PTRAJZ ! CHARACTER(LEN=16) :: YRECFM CHARACTER(LEN=LEN(HFILEDIA)+4) :: YFILEDIA -CHARACTER(LEN=20) :: YCOMMENT +CHARACTER(LEN=100) :: YCOMMENT CHARACTER(LEN=3) :: YJ INTEGER :: ILENG, ILENCH, ILENTITRE, ILENUNITE, ILENCOMMENT, ILE, IRESP INTEGER :: ILUOUTDIA, IRESPDIA,INPRARDIA,IFTYPEDIA,IVERBDIA,ININARDIA @@ -132,7 +134,7 @@ LOGICAL :: GPACK GPACK=LPACK LPACK=.FALSE. YCOMMENT='NOTHING' -ILENCH = LEN(YCOMMENT) +ILENCH = LEN_TRIM(YCOMMENT) ! ! BUG ...ca passe que si PRESENT(OICP) sinon OICP non defini ! Question: doit-on mettre condition comme: @@ -243,7 +245,7 @@ YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TYPE') #if defined(MNH_IOCDF4) CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - HTYPE,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + HTYPE,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) #else @@ -254,7 +256,7 @@ DO J = 1,ILENG ENDDO !print *,SIZE(ITABCHAR),' ITABCHAR ',ITABCHAR,' KGRID ',KGRID,HLUOUTDIA,HFILEDIA CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + ITABCHAR,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) DEALLOCATE(ITABCHAR) #endif @@ -293,7 +295,7 @@ SELECT CASE(HTYPE) ITABCHAR(31)=IKMASK; ITABCHAR(32)=ITMASK ITABCHAR(33)=INMASK; ITABCHAR(34)=IPMASK CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & - KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) DEALLOCATE(ITABCHAR) IF (NVERB>=5) THEN WRITE(ILUOUTDIA,*)' ILENTITRE,ILENUNITE,ILENCOMMENT ',ILENTITRE,ILENUNITE,ILENCOMMENT @@ -315,9 +317,9 @@ SELECT CASE(HTYPE) ITABCHAR(22)=IKMASK; ITABCHAR(23)=ITMASK ITABCHAR(24)=INMASK; ITABCHAR(25)=IPMASK ! CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ILENTITRE,ILENUNITE, & -! ILENCOMMENT,II,IJ,IK,IT,IN,IP,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) +! ILENCOMMENT,II,IJ,IK,IT,IN,IP,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & - KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) DEALLOCATE(ITABCHAR) END SELECT IF (NVERB>=5) THEN @@ -330,7 +332,7 @@ YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TITRE') #if defined(MNH_IOCDF4) CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - HTITRE(1:IP),KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + HTITRE(1:IP),KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) #else @@ -346,7 +348,7 @@ DO JJ = 1,IP ENDIF ENDDO CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + ITABCHAR,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) DEALLOCATE(ITABCHAR) #endif @@ -361,7 +363,7 @@ YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.UNITE') #if defined(MNH_IOCDF4) CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - HUNITE(1:IP),KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + HUNITE(1:IP),KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) #else @@ -377,7 +379,7 @@ DO JJ = 1,IP ENDIF ENDDO CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + ITABCHAR,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) DEALLOCATE(ITABCHAR) #endif @@ -393,7 +395,7 @@ YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.COMMENT') #if defined(MNH_IOCDF4) CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - HCOMMENT(1:IP),KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + HCOMMENT(1:IP),KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) #else @@ -409,7 +411,7 @@ DO JJ = 1,IP ENDIF ENDDO CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + ITABCHAR,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) DEALLOCATE(ITABCHAR) #endif @@ -433,22 +435,22 @@ DO J = 1,IP ELSE IF(J >= 100 .AND. J < 1000) THEN WRITE(YJ,'(I3)')J ENDIF - YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.PROC'//YJ) + YRECFM = TRIM(HGROUP)//'.'//TRIM(HTITRE(J)) ILENG = II*IJ*IK*IT*IN + YCOMMENT = TRIM(HCOMMENT(J))//' ('//TRIM(HUNITE(J))//')' + ILENCH = LEN_TRIM(YCOMMENT) !print *,' PVAR ' !print *,' YJ ILENG YRECFM KGRID(J) ',YJ,ILENG,YRECFM,KGRID(J) ! BUG ...ca passe que si PRESENT(OICP) sinon OICP non defini IF (PRESENT(OICP) .AND. PRESENT(OJCP)) THEN IF(HTYPE == 'CART' .AND. .NOT. OICP .AND. .NOT. OJCP) THEN CALL FMWRITBOX(HFILEDIA,YRECFM,HLUOUTDIA,'BUDGET',PVAR(:,:,:,:,:,J),KGRID(J), & - HTITRE(J),KIL+JPHEXT,KIH+JPHEXT,KJL+JPHEXT,KJH+JPHEXT,IRESPDIA) + TRIM(YCOMMENT),KIL+JPHEXT,KIH+JPHEXT,KJL+JPHEXT,KJH+JPHEXT,IRESPDIA) ELSE - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J), & - LEN(HTITRE(J)),HTITRE(J),IRESPDIA) + CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J),ILENCH,TRIM(YCOMMENT),IRESPDIA) ENDIF ELSE - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J), & - LEN(HTITRE(J)),HTITRE(J),IRESPDIA) + CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J),ILENCH,TRIM(YCOMMENT),IRESPDIA) END IF IF (NVERB>=5) THEN WRITE(ILUOUTDIA,*)J,TRIM(YRECFM) @@ -458,12 +460,15 @@ IF (NVERB>=5) THEN WRITE(ILUOUTDIA,*)' 6th ENREGISTREMENT: OK' ENDIF ! +YCOMMENT='NOTHING' +ILENCH = LEN_TRIM(YCOMMENT) +! ! 7eme enregistrement TRAJT ! YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJT') ILENG = IT*INTRAJT CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - PTRAJT,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + PTRAJT,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) IF (NVERB>=5) THEN WRITE(ILUOUTDIA,*)' 7th ENREGISTREMENT(',TRIM(YRECFM),'): OK' ENDIF @@ -477,7 +482,7 @@ IF(PRESENT(PTRAJX))THEN YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJX') ILENG = IKTRAJX*ITTRAJX*INTRAJX CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - PTRAJX,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + PTRAJX,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) ENDIF ! ! ou @@ -486,7 +491,7 @@ IF(PRESENT(PMASK))THEN YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.MASK') ILENG = IIMASK*IJMASK*IKMASK*ITMASK*INMASK*IPMASK CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'XY',PMASK,KGRID(1), & - ILENCH,YCOMMENT,IRESPDIA) + ILENCH,TRIM(YCOMMENT),IRESPDIA) ENDIF ! ! 9eme enregistrement TRAJY @@ -495,7 +500,7 @@ IF(PRESENT(PTRAJY))THEN YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJY') ILENG = IKTRAJY*ITTRAJY*INTRAJY CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - PTRAJY,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + PTRAJY,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) ENDIF ! ! 10eme enregistrement TRAJZ @@ -504,7 +509,7 @@ IF(PRESENT(PTRAJZ))THEN YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJZ') ILENG = IKTRAJZ*ITTRAJZ*INTRAJZ CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - PTRAJZ,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + PTRAJZ,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) ENDIF ! ! 11eme enregistrement PDATIME @@ -512,7 +517,7 @@ ENDIF YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.DATIM') ILENG=16*IT CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & - PDATIME,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + PDATIME,KGRID(1),ILENCH,TRIM(YCOMMENT),IRESPDIA) ! CALL MENU_DIACHRO(HFILEDIA,HLUOUTDIA,HGROUP) LPACK=GPACK