From 608953f0420072b4d4920d5a52ac5b7d309bb003 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Mon, 20 Mar 2017 14:49:43 +0100 Subject: [PATCH] Philippe 20/03/2017: IO: use IO_WRITE_FIELD for diachronic files --- src/MNH/menu_diachro.f90 | 36 +++-- src/MNH/write_diachro.f90 | 309 +++++++++++++++++++------------------- 2 files changed, 182 insertions(+), 163 deletions(-) diff --git a/src/MNH/menu_diachro.f90 b/src/MNH/menu_diachro.f90 index d58d2c323..c508e80bc 100644 --- a/src/MNH/menu_diachro.f90 +++ b/src/MNH/menu_diachro.f90 @@ -57,10 +57,12 @@ !* 0. DECLARATIONS ! ------------ ! +USE MODD_CONF USE MODD_IO_ll, ONLY: TFILEDATA +! +USE MODE_FIELD USE MODE_FMREAD USE MODE_FMWRIT -USE MODD_CONF ! IMPLICIT NONE ! @@ -84,6 +86,7 @@ INTEGER :: IRESPDIA INTEGER,SAVE :: IGROUP=0 INTEGER,DIMENSION(:),ALLOCATABLE :: ITABCHAR LOGICAL :: GPACK +TYPE(TFIELDDATA) :: TZFIELD !------------------------------------------------------------------------------ ! YFILEDIA = TPDIAFILE%CNAME @@ -99,22 +102,37 @@ IF(HGROUP == 'END')THEN LPACK=GPACK RETURN ENDIF - IGRID=0 ILENG=16*IGROUP - ILENCH=LEN(YCOMMENT) - YRECFM='MENU_BUDGET.DIM' - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ILENG,& - IGRID,ILENCH,YCOMMENT,IRESPDIA) - YRECFM='MENU_BUDGET' + TZFIELD%CMNHNAME = 'MENU_BUDGET.DIM' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: MENU_BUDGET.DIM' + TZFIELD%CUNITS = '' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = TRIM(YCOMMENT) + TZFIELD%NGRID = 0 + TZFIELD%NTYPE = TYPEINT + TZFIELD%NDIMS = 0 + CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,ILENG) + ALLOCATE(ITABCHAR(ILENG)) DO JJ=1,IGROUP DO J = 1,16 ITABCHAR(16*(JJ-1)+J) = ICHAR(YGROUP(JJ)(J:J)) ENDDO ENDDO - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & - IGRID,ILENCH,YCOMMENT,IRESPDIA) + + TZFIELD%CMNHNAME = 'MENU_BUDGET' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: MENU_BUDGET' + TZFIELD%CUNITS = '' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = TRIM(YCOMMENT) + TZFIELD%NGRID = 0 + TZFIELD%NTYPE = TYPEINT + TZFIELD%NDIMS = 1 + CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,ITABCHAR) + DEALLOCATE(ITABCHAR) ELSE IF(HGROUP == 'READ')THEN diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90 index b1c8404f1..27df2eec3 100644 --- a/src/MNH/write_diachro.f90 +++ b/src/MNH/write_diachro.f90 @@ -75,16 +75,18 @@ !* 0. DECLARATIONS ! ------------ ! +USE MODD_BUDGET +USE MODD_CONF +USE MODE_FIELD +USE MODD_IO_ll, ONLY : TFILEDATA +USE MODD_PARAMETERS, ONLY : JPHEXT +! USE MODE_ll USE MODE_FM USE MODE_FMWRIT USE MODE_IO_ll ! USE MODI_MENU_DIACHRO -USE MODD_PARAMETERS, ONLY : JPHEXT -USE MODD_CONF -USE MODD_BUDGET -USE MODD_IO_ll, ONLY: TFILEDATA ! IMPLICIT NONE ! @@ -109,11 +111,9 @@ REAL,DIMENSION(:,:,:,:,:,:), INTENT(IN),OPTIONAL :: PMASK ! !* 0.1 Local variables ! --------------- -CHARACTER(LEN=16) :: YRECFM -CHARACTER(LEN=28) :: YFILEDIA CHARACTER(LEN=20) :: YCOMMENT CHARACTER(LEN=3) :: YJ -INTEGER :: ILENG, ILENCH, ILENTITRE, ILENUNITE, ILENCOMMENT, ILE, IRESP +INTEGER :: ILENG, ILENTITRE, ILENUNITE, ILENCOMMENT, IRESP INTEGER :: ILUOUTDIA, IRESPDIA,INPRARDIA,IFTYPEDIA,IVERBDIA,ININARDIA INTEGER :: II, IJ, IK, IT, IN, IP, INUM, J, JJ INTEGER :: INTRAJT, IKTRAJX, IKTRAJY, IKTRAJZ @@ -124,14 +124,12 @@ INTEGER :: ICOMPX, ICOMPY, ICOMPZ INTEGER :: IIMAX_ll, IJMAX_ll ! size of the physical global domain INTEGER,DIMENSION(:),ALLOCATABLE :: ITABCHAR LOGICAL :: GPACK +TYPE(TFIELDDATA) :: TZFIELD !------------------------------------------------------------------------------ ! -YFILEDIA = TPDIAFILE%CNAME -! GPACK=LPACK LPACK=.FALSE. YCOMMENT='NOTHING' -ILENCH = LEN(YCOMMENT) ! ! BUG ...ca passe que si PRESENT(OICP) sinon OICP non defini ! Question: doit-on mettre condition comme: @@ -225,45 +223,43 @@ IF(IRESP == -54)THEN IFTYPEDIA = 0; IVERBDIA = 5 ENDIF ! -CALL FMLOOK_ll(ADJUSTL(ADJUSTR(YFILEDIA)//'.lfi'),HLUOUTDIA,INUM,IRESPDIA) +CALL FMLOOK_ll(TRIM(TPDIAFILE%CNAME)//'.lfi',HLUOUTDIA,INUM,IRESPDIA) IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' WRITE_DIACHRO: ',TRIM(ADJUSTL(ADJUSTR(YFILEDIA)//'.lfi')),' IRESPDIA=',IRESPDIA + WRITE(ILUOUTDIA,*)' WRITE_DIACHRO: ',TRIM(TPDIAFILE%CNAME)//'.lfi',' IRESPDIA=',IRESPDIA ENDIF IF(IRESPDIA == -54)THEN - CALL FMOPEN_ll(YFILEDIA,'WRITE',HLUOUTDIA,INPRARDIA,IFTYPEDIA,IVERBDIA, & + CALL FMOPEN_ll(TPDIAFILE%CNAME,'WRITE',HLUOUTDIA,INPRARDIA,IFTYPEDIA,IVERBDIA, & ININARDIA,IRESPDIA) ENDIF ! ! 1er enregistrement TYPE ! -YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TYPE') - -#if defined(MNH_IOCDF4) - -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - HTYPE,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) - -#else - -ILENG = LEN(HTYPE) -ALLOCATE(ITABCHAR(ILENG)) -DO J = 1,ILENG - ITABCHAR(J) = ICHAR(HTYPE(J:J)) -ENDDO -!print *,SIZE(ITABCHAR),' ITABCHAR ',ITABCHAR,' KGRID ',KGRID,HLUOUTDIA,YFILEDIA -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) -DEALLOCATE(ITABCHAR) - -#endif +TZFIELD%CMNHNAME = TRIM(HGROUP)//'.TYPE' +TZFIELD%CSTDNAME = '' +TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.TYPE' +TZFIELD%CUNITS = '' +TZFIELD%CDIR = '--' +TZFIELD%CCOMMENT = TRIM(YCOMMENT) +TZFIELD%NGRID = KGRID(1) +TZFIELD%NTYPE = TYPECHAR +TZFIELD%NDIMS = 0 +CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,HTYPE) IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' 1st ENREGISTREMENT(',TRIM(YRECFM),'): OK' + WRITE(ILUOUTDIA,*)' 1st record (',TRIM(TZFIELD%CMNHNAME),'): OK' ENDIF ! ! 2eme enregistrement DIMENSIONS des MATRICES et LONGUEUR des TABLEAUX de CARACTERES et FLAGS de COMPRESSION sur les DIFFERENTS AXES ! -YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.DIM') +TZFIELD%CMNHNAME = TRIM(HGROUP)//'.DIM' +TZFIELD%CSTDNAME = '' +TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.DIM' +TZFIELD%CUNITS = '' +TZFIELD%CDIR = '--' +TZFIELD%CCOMMENT = TRIM(YCOMMENT) +TZFIELD%NGRID = KGRID(1) +TZFIELD%NTYPE = TYPEINT +TZFIELD%NDIMS = 1 SELECT CASE(HTYPE) CASE('CART','MASK','SPXY') ILENG = 34 @@ -290,8 +286,7 @@ SELECT CASE(HTYPE) ITABCHAR(29)=IIMASK; ITABCHAR(30)=IJMASK ITABCHAR(31)=IKMASK; ITABCHAR(32)=ITMASK ITABCHAR(33)=INMASK; ITABCHAR(34)=IPMASK - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & - KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,ITABCHAR) DEALLOCATE(ITABCHAR) IF (NVERB>=5) THEN WRITE(ILUOUTDIA,*)' ILENTITRE,ILENUNITE,ILENCOMMENT ',ILENTITRE,ILENUNITE,ILENCOMMENT @@ -312,108 +307,62 @@ SELECT CASE(HTYPE) ITABCHAR(20)=IIMASK; ITABCHAR(21)=IJMASK ITABCHAR(22)=IKMASK; ITABCHAR(23)=ITMASK ITABCHAR(24)=INMASK; ITABCHAR(25)=IPMASK -! CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ILENTITRE,ILENUNITE, & -! ILENCOMMENT,II,IJ,IK,IT,IN,IP,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & - KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,ITABCHAR) DEALLOCATE(ITABCHAR) END SELECT IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' 2nd ENREGISTREMENT(',TRIM(YRECFM),'): OK' + WRITE(ILUOUTDIA,*)' 2nd record (',TRIM(TZFIELD%CMNHNAME),'): OK' ENDIF ! ! 3eme enregistrement TITRE ! -YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TITRE') -#if defined(MNH_IOCDF4) - -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - HTITRE(1:IP),KGRID(1),ILENCH,YCOMMENT,IRESPDIA) - -#else - -ILE = LEN(HTITRE) -ILENG = ILE*IP -ALLOCATE(ITABCHAR(ILENG)) -DO JJ = 1,IP - DO J = 1,ILE - ITABCHAR(ILE*(JJ-1)+J) = ICHAR(HTITRE(JJ)(J:J)) - ENDDO - IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)JJ,TRIM(HTITRE(JJ)) - ENDIF -ENDDO -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) -DEALLOCATE(ITABCHAR) - -#endif +TZFIELD%CMNHNAME = TRIM(HGROUP)//'.TITRE' +TZFIELD%CSTDNAME = '' +TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.TITRE' +TZFIELD%CUNITS = '' +TZFIELD%CDIR = '--' +TZFIELD%CCOMMENT = TRIM(YCOMMENT) +TZFIELD%NGRID = KGRID(1) +TZFIELD%NTYPE = TYPECHAR +TZFIELD%NDIMS = 1 +CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,HTITRE(1:IP)) IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' 3rd ENREGISTREMENT(',TRIM(YRECFM),'): OK' + WRITE(ILUOUTDIA,*)' 3rd record (',TRIM(TZFIELD%CMNHNAME),'): OK' ENDIF ! ! 4eme enregistrement UNITE ! -YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.UNITE') -#if defined(MNH_IOCDF4) - -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - HUNITE(1:IP),KGRID(1),ILENCH,YCOMMENT,IRESPDIA) - -#else - -ILE = LEN(HUNITE) -ILENG = ILE*IP -ALLOCATE(ITABCHAR(ILENG)) -DO JJ = 1,IP - DO J = 1,ILE - ITABCHAR(ILE*(JJ-1)+J) = ICHAR(HUNITE(JJ)(J:J)) - ENDDO - IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)JJ,TRIM(HUNITE(JJ)) - ENDIF -ENDDO -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) -DEALLOCATE(ITABCHAR) - -#endif +TZFIELD%CMNHNAME = TRIM(HGROUP)//'.UNITE' +TZFIELD%CSTDNAME = '' +TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.UNITE' +TZFIELD%CUNITS = '' +TZFIELD%CDIR = '--' +TZFIELD%CCOMMENT = TRIM(YCOMMENT) +TZFIELD%NGRID = KGRID(1) +TZFIELD%NTYPE = TYPECHAR +TZFIELD%NDIMS = 1 +CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,HUNITE(1:IP)) IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' 4th ENREGISTREMENT(',TRIM(YRECFM),'): OK' + WRITE(ILUOUTDIA,*)' 4th record (',TRIM(TZFIELD%CMNHNAME),'): OK' ENDIF ! ! 5eme enregistrement COMMENT ! -YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.COMMENT') - -#if defined(MNH_IOCDF4) - -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - HCOMMENT(1:IP),KGRID(1),ILENCH,YCOMMENT,IRESPDIA) - -#else - -ILE = LEN(HCOMMENT) -ILENG = ILE*IP -ALLOCATE(ITABCHAR(ILENG)) -DO JJ = 1,IP - DO J = 1,ILE - ITABCHAR(ILE*(JJ-1)+J) = ICHAR(HCOMMENT(JJ)(J:J)) - ENDDO - IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)JJ,TRIM(HCOMMENT(JJ)) - ENDIF -ENDDO -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) -DEALLOCATE(ITABCHAR) - -#endif +TZFIELD%CMNHNAME = TRIM(HGROUP)//'.COMMENT' +TZFIELD%CSTDNAME = '' +TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.COMMENT' +TZFIELD%CUNITS = '' +TZFIELD%CDIR = '--' +TZFIELD%CCOMMENT = TRIM(YCOMMENT) +TZFIELD%NGRID = KGRID(1) +TZFIELD%NTYPE = TYPECHAR +TZFIELD%NDIMS = 1 +CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,HCOMMENT(1:IP)) IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' 5th ENREGISTREMENT(',TRIM(YRECFM),'): OK' + WRITE(ILUOUTDIA,*)' 5th record (',TRIM(TZFIELD%CMNHNAME),'): OK' ENDIF ! ! 6eme enregistrement PVAR @@ -431,39 +380,59 @@ DO J = 1,IP ELSE IF(J >= 100 .AND. J < 1000) THEN WRITE(YJ,'(I3)')J ENDIF - YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.PROC'//YJ) - ILENG = II*IJ*IK*IT*IN -!print *,' PVAR ' -!print *,' YJ ILENG YRECFM KGRID(J) ',YJ,ILENG,YRECFM,KGRID(J) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.PROC'//YJ ! 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(YFILEDIA,YRECFM,HLUOUTDIA,'BUDGET',PVAR(:,:,:,:,:,J),KGRID(J), & + CALL FMWRITBOX(TPDIAFILE%CNAME,TZFIELD%CMNHNAME,HLUOUTDIA,'BUDGET',PVAR(:,:,:,:,:,J),KGRID(J), & HTITRE(J),KIL+JPHEXT,KIH+JPHEXT,KJL+JPHEXT,KJH+JPHEXT,IRESPDIA) ELSE - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J), & - LEN(HTITRE(J)),HTITRE(J),IRESPDIA) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.PROC'//YJ + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.PROC'//YJ + TZFIELD%CUNITS = '' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = TRIM(HTITRE(J)) + TZFIELD%NGRID = KGRID(J) + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 5 + CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,PVAR(:,:,:,:,:,J)) ENDIF ELSE - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J), & - LEN(HTITRE(J)),HTITRE(J),IRESPDIA) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.PROC'//YJ + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.PROC'//YJ + TZFIELD%CUNITS = '' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = TRIM(HTITRE(J)) + TZFIELD%NGRID = KGRID(J) + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 5 + CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,PVAR(:,:,:,:,:,J)) END IF IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)J,TRIM(YRECFM) + WRITE(ILUOUTDIA,*)J,TRIM(TZFIELD%CMNHNAME) ENDIF ENDDO IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' 6th ENREGISTREMENT: OK' + WRITE(ILUOUTDIA,*)' 6th record: OK' ENDIF ! ! 7eme enregistrement TRAJT ! -YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJT') -ILENG = IT*INTRAJT -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - PTRAJT,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) +TZFIELD%CMNHNAME = TRIM(HGROUP)//'.TRAJT' +TZFIELD%CSTDNAME = '' +TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.TRAJT' +TZFIELD%CUNITS = '' +TZFIELD%CDIR = '--' +TZFIELD%CCOMMENT = TRIM(YCOMMENT) +TZFIELD%NGRID = KGRID(1) +TZFIELD%NTYPE = TYPEREAL +TZFIELD%NDIMS = 2 +CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,PTRAJT) + IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' 7th ENREGISTREMENT(',TRIM(YRECFM),'): OK' + WRITE(ILUOUTDIA,*)' 7th record (',TRIM(TZFIELD%CMNHNAME),'): OK' ENDIF ! ! Dans certains cas @@ -472,45 +441,77 @@ ENDIF ! 8eme enregistrement TRAJX ! IF(PRESENT(PTRAJX))THEN - YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJX') - ILENG = IKTRAJX*ITTRAJX*INTRAJX - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - PTRAJX,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.TRAJX' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.TRAJX' + TZFIELD%CUNITS = '' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = TRIM(YCOMMENT) + TZFIELD%NGRID = KGRID(1) + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,PTRAJX) ENDIF ! ! ou ! IF(PRESENT(PMASK))THEN - YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.MASK') - ILENG = IIMASK*IJMASK*IKMASK*ITMASK*INMASK*IPMASK - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'XY',PMASK,KGRID(1), & - ILENCH,YCOMMENT,IRESPDIA) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.MASK' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.MASK' + TZFIELD%CUNITS = '' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = TRIM(YCOMMENT) + TZFIELD%NGRID = KGRID(1) + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 6 + !PW: not yet implemented CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,PMASK) + CALL FMWRIT(TPDIAFILE%CNAME,TZFIELD%CMNHNAME,HLUOUTDIA,'XY',PMASK,KGRID(1), & + LEN_TRIM(YCOMMENT),YCOMMENT,IRESPDIA) ENDIF ! ! 9eme enregistrement TRAJY ! IF(PRESENT(PTRAJY))THEN - YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJY') - ILENG = IKTRAJY*ITTRAJY*INTRAJY - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - PTRAJY,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.TRAJY' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.TRAJY' + TZFIELD%CUNITS = '' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = TRIM(YCOMMENT) + TZFIELD%NGRID = KGRID(1) + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,PTRAJY) ENDIF ! ! 10eme enregistrement TRAJZ ! IF(PRESENT(PTRAJZ))THEN - YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJZ') - ILENG = IKTRAJZ*ITTRAJZ*INTRAJZ - CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - PTRAJZ,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) + TZFIELD%CMNHNAME = TRIM(HGROUP)//'.TRAJZ' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.TRAJZ' + TZFIELD%CUNITS = '' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = TRIM(YCOMMENT) + TZFIELD%NGRID = KGRID(1) + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,PTRAJZ) ENDIF ! ! 11eme enregistrement PDATIME ! -YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.DATIM') -ILENG=16*IT -CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & - PDATIME,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) +TZFIELD%CMNHNAME = TRIM(HGROUP)//'.DATIM' +TZFIELD%CSTDNAME = '' +TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(HGROUP)//'.DATIM' +TZFIELD%CUNITS = '' +TZFIELD%CDIR = '--' +TZFIELD%CCOMMENT = TRIM(YCOMMENT) +TZFIELD%NGRID = KGRID(1) +TZFIELD%NTYPE = TYPEREAL +TZFIELD%NDIMS = 2 +CALL IO_WRITE_FIELD(TPDIAFILE,TZFIELD,HLUOUTDIA,IRESPDIA,PDATIME) ! CALL MENU_DIACHRO(TPDIAFILE,HLUOUTDIA,HGROUP) LPACK=GPACK -- GitLab