diff --git a/src/MNH/turb_ver_sv_flux.f90 b/src/MNH/turb_ver_sv_flux.f90 index dbabf71d3659b88fb6f47a8ab8f57aad81d5aa50..ece1d98848ab6aa04206b1e4ce8efe56bcf701ee 100644 --- a/src/MNH/turb_ver_sv_flux.f90 +++ b/src/MNH/turb_ver_sv_flux.f90 @@ -281,6 +281,9 @@ USE MODD_LES USE MODD_CONF USE MODD_NSV, ONLY : NSV_LGBEG,NSV_LGEND ! +USE MODE_FIELD, ONLY: TFIELDDATA,TYPEREAL +USE MODE_FMWRIT +! USE MODI_GRADIENT_U USE MODI_GRADIENT_V USE MODI_GRADIENT_W @@ -290,7 +293,6 @@ USE MODI_TRIDIAG USE MODI_TRIDIAG_WIND USE MODI_EMOIST USE MODI_ETHETA -USE MODE_FMWRIT USE MODI_LES_MEAN_SUBGRID ! USE MODI_SECOND_MNH @@ -354,8 +356,6 @@ REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3)) :: & ZSOURCE, & ! source of evolution for the treated variable ZKEFF ! effectif diffusion coeff = LT * SQRT( TKE ) INTEGER :: IRESP ! Return code of FM routines -INTEGER :: IGRID ! C-grid indicator in LFIFM file -INTEGER :: ILENCH ! Length of comment string in LFIFM file INTEGER :: IKB,IKE ! I index values for the Beginning and End ! mass points of the domain in the 3 direct. INTEGER :: IKT ! array size in k direction @@ -363,20 +363,16 @@ INTEGER :: IKTB,IKTE ! start, end of k loops in physical domain INTEGER :: JSV ! loop counters INTEGER :: JK ! loop INTEGER :: ISV ! number of scalar var. -CHARACTER (LEN=28) :: YFMFILE ! Name of FM-file to write -CHARACTER (LEN=100) :: YCOMMENT ! comment string in LFIFM file -CHARACTER (LEN=16) :: YRECFM ! Name of the desired field in LFIFM file ! REAL :: ZTIME1, ZTIME2 REAL :: ZCSVP = 4.0 ! constant for scalar flux presso-correlation (RS81) +TYPE(TFIELDDATA) :: TZFIELD !---------------------------------------------------------------------------- ! !* 1. PRELIMINARIES ! ------------- ! -YFMFILE = TPFILE%CNAME -! IKB=KKA+JPVEXT_TURB*KKL IKE=KKU-JPVEXT_TURB*KKL IKT=SIZE(PSVM,3) @@ -456,11 +452,18 @@ DO JSV=1,ISV ! IF (OTURB_FLX .AND. OCLOSE_OUT) THEN ! stores the JSVth vertical flux - WRITE(YRECFM,'("WSV_FLX_",I3.3)') JSV - YCOMMENT='X_Y_Z_'//YRECFM//' (SVUNIT*M/S)' - IGRID = 4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP) + WRITE(TZFIELD%CMNHNAME,'("WSV_FLX_",I3.3)') JSV + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + !PW: TODO: use the correct units of the JSV variable (and multiply it by m s-1) + TZFIELD%CUNITS = 'SVUNIT m s-1' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME) + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,HLUOUT,IRESP,ZFLXZ) END IF ! ! Storage in the LES configuration diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90 index a589610a919956c420a6346690dd6d097c4790e9..650ddcc6fdad4e8e5329b423f4f73885c56f7cd8 100644 --- a/src/MNH/write_lbn.f90 +++ b/src/MNH/write_lbn.f90 @@ -565,7 +565,14 @@ IF (NSV >=1) THEN CALL ABORT STOP END IF ! Test IMOMENTS - + ! + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = '--' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! IF (IMOMENTS == 1) THEN DO JMODE=1, NMODE_DST !Index from which names are picked @@ -575,19 +582,18 @@ IF (NSV >=1) THEN + (NSV_DSTBEG -1) !Previous list of tracers IF(NSIZELBXSV_ll /= 0) THEN !Check on border points in X direction - YRECFM = 'LBX_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& - IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'LBX_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBX' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV)) ENDIF !Check on border points in X direction IF(NSIZELBYSV_ll /= 0) THEN - YRECFM = 'LBY_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& - IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) - + TZFIELD%CMNHNAME = 'LBY_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBY' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV)) ENDIF !Check on points in Y direction ENDDO ! Loop on mode ELSE ! valeur IMOMENTS =/ 1 @@ -599,18 +605,18 @@ IF (NSV >=1) THEN + (NSV_DSTBEG -1) ! IF(NSIZELBXSV_ll /= 0) THEN !Check on border points in X direction - YRECFM = 'LBX_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),& - IRIMX,NSIZELBXSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'LBX_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBX' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV)) ENDIF !Check on border points in X direction IF(NSIZELBYSV_ll /= 0) THEN - YRECFM = 'LBY_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),& - IRIMY,NSIZELBYSV_ll, IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'LBY_'//TRIM(YPDUST_INI(ISV_NAME_IDX)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBY' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV)) ENDIF !Check on points in Y direction ENDDO ! Loop on moments ENDDO ! Loop on modes @@ -619,22 +625,30 @@ IF (NSV >=1) THEN ELSE ! Test CPROGRAM ! We are in the subprogram MESONH, CDUSTNAMES are allocated and are !in the same order as the variables in XSVM (i.e. following JPDUSTORDER) + ! + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'kg kg-1' + TZFIELD%CDIR = '--' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = NSV_DSTBEG,NSV_DSTEND IF(NSIZELBXSV_ll /= 0) THEN - YRECFM = 'LBX_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBX",XLBXSVM(:,:,:,JSV),IRIMX,NSIZELBXSV_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'LBX_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBX' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3,A8)')'2_Y_Z_','LBXSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBXSV_ll,IRESP,XLBXSVM(:,:,:,JSV)) END IF ! IF(NSIZELBYSV_ll /= 0) THEN - YRECFM = 'LBY_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1)) - WRITE(YCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT_LB(YFMFILE,YRECFM,CLUOUT,"LBY",XLBYSVM(:,:,:,JSV),IRIMY,NSIZELBYSV_ll,& - & IGRID,ILENCH,YCOMMENT,IRESP) - END IF + TZFIELD%CMNHNAME = 'LBY_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + TZFIELD%CLBTYPE = 'LBY' + WRITE(TZFIELD%CCOMMENT,'(A6,A6,I3.3,A8)')'X_2_Z_','LBYSVM',JSV + CALL IO_WRITE_FIELD_LB(TPFILE,TZFIELD,CLUOUT,NSIZELBYSV_ll,IRESP,XLBYSVM(:,:,:,JSV)) + END IF END DO IF (LDEPOS_DST(IMI)) THEN DO JSV = NSV_DSTDEPBEG,NSV_DSTDEPEND diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index b706ce9d4eaf65f0f12bb5d90d89d52fc137cbbe..7cbe3df74c64632a8efac318b8896fbb27fe9d43 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -924,8 +924,8 @@ IF (NSV >=1) THEN JSA=JSA+1 END DO ! Passive scalar variables - IF (LPASPOL) THEN - DO JSV = NSV_PPBEG,NSV_PPEND + IF (LPASPOL) THEN + DO JSV = NSV_PPBEG,NSV_PPEND WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) @@ -935,7 +935,7 @@ IF (NSV >=1) THEN END DO END IF ! - IF ( ((CCLOUD == 'KHKO') .OR.(CCLOUD == 'C2R2')) .AND. (.NOT. LSUPSAT)) THEN + IF ( ((CCLOUD == 'KHKO') .OR.(CCLOUD == 'C2R2')) .AND. (.NOT. LSUPSAT)) THEN YRECFM= 'SUPSATMAX' YCOMMENT='X_Y_Z_Supersaturation' ILENCH=LEN(YCOMMENT) @@ -947,8 +947,8 @@ IF (NSV >=1) THEN ILENCH=LEN(YCOMMENT) CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XNACT(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) - END IF - IF ( ((CCLOUD == 'KHKO') .OR.(CCLOUD == 'C2R2')) .AND. LSUPSAT) THEN + END IF + IF ( ((CCLOUD == 'KHKO') .OR.(CCLOUD == 'C2R2')) .AND. LSUPSAT) THEN YRECFM= 'SSPRO' YCOMMENT='X_Y_Z_Supersaturation' ILENCH=LEN(YCOMMENT) @@ -960,33 +960,33 @@ IF (NSV >=1) THEN ILENCH=LEN(YCOMMENT) CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XNPRO(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) - END IF + END IF ! #ifdef MNH_FOREFIRE ! ForeFire scalar variables - IF ( LFOREFIRE ) THEN - DO JSV = NSV_FFBEG,NSV_FFEND - WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - JSA=JSA+1 - END DO - END IF + IF ( LFOREFIRE ) THEN + DO JSV = NSV_FFBEG,NSV_FFEND + WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + JSA=JSA+1 + END DO + END IF #endif ! Conditional sampling variables - IF (LCONDSAMP) THEN - DO JSV = NSV_CSBEG,NSV_CSEND - WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - JSA=JSA+1 - END DO -! - END IF + IF (LCONDSAMP) THEN + DO JSV = NSV_CSBEG,NSV_CSEND + WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + JSA=JSA+1 + END DO + ! + END IF ! number of chemical variables (chem+aero+dust) ICH_NBR = 0 IF (LUSECHEM) ICH_NBR = ICH_NBR +NSV_CHEMEND-NSV_CHEMBEG+1 @@ -1113,7 +1113,7 @@ IF (NSV >=1) THEN CALL DUSTLFI_n(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF) !At this point, we have the tracer array in order of importance, i.e. !if mode 2 is most important it will occupy place 1-3 of XSVT - IF ((CPROGRAM == 'REAL ').AND.((LDSTINIT).OR.(LDSTPRES)).OR.& + IF ((CPROGRAM == 'REAL ').AND.((LDSTINIT).OR.(LDSTPRES)).OR.& (CPROGRAM == 'IDEAL ') ) THEN ! In this case CDUSTNAMES is not allocated. We will use YPDUST_INI, !but remember that this variable does not follow JPDUSTORDER @@ -1128,38 +1128,41 @@ IF (NSV >=1) THEN STOP END IF ! Test IMOMENTS ALLOCATE(YDSTNAMES(NSV_DSTEND - NSV_DSTBEG+1)) - -IF (IMOMENTS == 1) THEN - - DO JMODE=1, NMODE_DST - ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + 2 - JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted - + 1 & !Number of moments in this mode - + (NSV_DSTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,& - YCOMMENT,IRESP) - - YDSTNAMES((JMODE-1)*IMOMENTS+1)=YRECFM(1:LEN_TRIM(YRECFM)-1) - END DO ! Loop on mode -ELSE - DO JMODE=1,NMODE_DST - DO JMOM=1,IMOMENTS - ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + JMOM - JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted - + JMOM & !Number of moments in this mode - + (NSV_DSTBEG -1) - YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' !The refererence which will be written to file - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - YDSTNAMES((JMODE-1)*IMOMENTS+JMOM)=YRECFM(1:LEN_TRIM(YRECFM)-1) - END DO ! Loop on moment - END DO ! loop on mode -END IF ! Valeur IMOMENTS + ! + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! + IF (IMOMENTS == 1) THEN + DO JMODE=1, NMODE_DST + ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + 2 + JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + + 1 & !Number of moments in this mode + + (NSV_DSTBEG -1) !Previous list of tracers + TZFIELD%CMNHNAME = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) + YDSTNAMES((JMODE-1)*IMOMENTS+1)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) + END DO ! Loop on mode + ELSE + DO JMODE=1,NMODE_DST + DO JMOM=1,IMOMENTS + ISV_NAME_IDX = (JPDUSTORDER(JMODE) - 1)*3 + JMOM + JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + + JMOM & !Number of moments in this mode + + (NSV_DSTBEG -1) + TZFIELD%CMNHNAME = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' !The refererence which will be written to file + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) + YDSTNAMES((JMODE-1)*IMOMENTS+JMOM)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) + END DO ! Loop on moment + END DO ! loop on mode + END IF ! Valeur IMOMENTS ! DO JSV = NSV_DSTBEG,NSV_DSTEND YCHNAMES(JSV-JSA) = YDSTNAMES(JSV-NSV_DSTBEG+1) @@ -1168,18 +1171,25 @@ END IF ! Valeur IMOMENTS ELSE ! We are in the subprogram MESONH, CDUSTNAMES are allocated and are !in the same order as the variables in XSVT (i.e. following JPDUSTORDER) + ! + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 'ppp' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = NSV_DSTBEG,NSV_DSTEND - YRECFM=TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) + TZFIELD%CMNHNAME = TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'T' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XSVT(:,:,:,JSV)) IF (JSV==NSV_DSTBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTBEG ',JSV IF (JSV==NSV_DSTEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTEND ',JSV - YCHNAMES(JSV-JSA) = YRECFM(1:LEN_TRIM(YRECFM)-1) + YCHNAMES(JSV-JSA) = TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1) END DO ! Loop on dust scalar variables END IF - IF (LDEPOS_DST(IMI)) THEN + IF (LDEPOS_DST(IMI)) THEN DO JSV = NSV_DSTDEPBEG,NSV_DSTDEPEND YRECFM=TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))//'T' WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' @@ -1460,101 +1470,96 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN END IF ! IF ( LCHTRANS .AND. NSV > 0 ) THEN - ! scalar variables are recorded - IGRID=1 ! individually in the file + ! scalar variables are recorded + ! individually in the file + TZFIELD%CSTDNAME = '' + TZFIELD%CUNITS = 's-1' + TZFIELD%CDIR = 'XY' + TZFIELD%NGRID = 1 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 3 + ! DO JSV = 1, NSV_USER - WRITE(YRECFM,'(A7,I3.3)')'DSVCONV',JSV - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + WRITE(TZFIELD%CMNHNAME,'(A7,I3.3)')'DSVCONV',JSV + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO DO JSV = NSV_C2R2BEG, NSV_C2R2END - YRECFM = 'DSVCONV_'//TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1)) - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DSVCONV_'//TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO DO JSV = NSV_C1R3BEG, NSV_C1R3END - YRECFM = 'DSVCONV_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1)) - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DSVCONV_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO DO JSV = NSV_ELECBEG, NSV_ELECEND - YRECFM = 'DSVCONV_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)) - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DSVCONV_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO DO JSV = NSV_PPBEG, NSV_PPEND - WRITE(YRECFM,'(A7,I3.3)')'DSVCONV',JSV - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + WRITE(TZFIELD%CMNHNAME,'(A7,I3.3)')'DSVCONV',JSV + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO #ifdef MNH_FOREFIRE IF (LFOREFIRE) THEN - DO JSV = NSV_FFBEG, NSV_FFEND - WRITE(YRECFM,'(A7,I3.3)')'DSVCONV',JSV - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) - END DO + DO JSV = NSV_FFBEG, NSV_FFEND + WRITE(TZFIELD%CMNHNAME,'(A7,I3.3)')'DSVCONV',JSV + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) + END DO END IF #endif IF (LUSECHEM) THEN DO JSV = NSV_CHEMBEG, NSV_CHEMEND - YRECFM = 'DSVCONV_'//TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1))) - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DSVCONV_'//TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1))) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO IF (LORILAM) THEN DO JSV = NSV_AERBEG, NSV_AEREND - YRECFM = 'DSVCONV_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1))) - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DSVCONV_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1))) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO END IF ! linox scalar variables ELSE IF (LCH_CONV_LINOX) THEN DO JSV = NSV_LNOXBEG,NSV_LNOXEND - YRECFM='DSVCONV_LINOX' - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DSVCONV_LINOX' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO END IF DO JSV = NSV_LGBEG, NSV_LGEND - YRECFM = 'DSVCONV_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1)) - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DSVCONV_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO DO JSV = NSV_DSTBEG, NSV_DSTEND - YRECFM = 'DSVCONV_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1)) - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DSVCONV_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO DO JSV = NSV_SLTBEG, NSV_SLTEND - YRECFM = 'DSVCONV_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1)) - WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)' - ILENCH = LEN(YCOMMENT) - CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV), & - IGRID,ILENCH,YCOMMENT,IRESP) + TZFIELD%CMNHNAME = 'DSVCONV_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1)) + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(TZFIELD%CMNHNAME) + WRITE(TZFIELD%CCOMMENT,'(A6,A7,I3.3)')'X_Y_Z_','DSVCONV',JSV + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,XDSVCONV(:,:,:,JSV)) END DO END IF !