From 4251f988dcaaed4f03296ef5649d89371e094cfd Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Tue, 14 Mar 2017 11:22:33 +0100 Subject: [PATCH] Philippe 14/03/2017: IO: use TFILEDATA structure for diachronic files + use IO_WRITE_FIELD for several fields written in diachronic files --- src/LIB/SURCOUCHE/src/mode_field.f90 | 47 +- src/LIB/SURCOUCHE/src/mode_fm.f90 | 1 - src/MNH/diag.f90 | 39 +- src/MNH/endstep_budget.f90 | 38 +- src/MNH/ini_modeln.f90 | 21 +- src/MNH/ini_spectren.f90 | 22 +- src/MNH/les_specn.f90 | 60 ++- src/MNH/menu_diachro.f90 | 23 +- src/MNH/modd_les.f90 | 3 - src/MNH/modd_lunitn.f90 | 8 +- src/MNH/modd_refn.f90 | 12 +- src/MNH/mode_les_diachro.f90 | 56 ++- src/MNH/modeln.f90 | 39 +- src/MNH/modules_diachro.f90 | 56 ++- src/MNH/write_aircraft_balloon.f90 | 19 +- src/MNH/write_budget.f90 | 94 ++-- src/MNH/write_diachro.f90 | 96 ++-- src/MNH/write_les_budgetn.f90 | 18 +- src/MNH/write_les_rt_budgetn.f90 | 25 +- src/MNH/write_les_sv_budgetn.f90 | 22 +- src/MNH/write_lesn.f90 | 685 ++++++++++++++------------- src/MNH/write_lfifmn_fordiachron.f90 | 375 +++------------ src/MNH/write_profilern.f90 | 13 +- src/MNH/write_seriesn.f90 | 19 +- src/MNH/write_stationn.f90 | 13 +- 25 files changed, 874 insertions(+), 930 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index cf38d78bd..b4053138e 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -1534,6 +1534,33 @@ IDX = IDX+1 END IF ! CPROGRAM=MESONH ! ! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'RHODREF' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: RHODREF' +TFIELDLIST(IDX)%CUNITS = 'kg m-3' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'Dry density for reference state with orography' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'THVREF' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: THVREF' +TFIELDLIST(IDX)%CUNITS = 'K' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'Thetav for reference state with orography' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! +! IF (CPROGRAM=='MESONH') THEN IF (CRAD /= 'NONE') THEN ! @@ -2065,6 +2092,7 @@ USE MODD_LSFIELD_n USE MODD_PARAM_n USE MODD_PRECIP_n USE MODD_RADIATIONS_n +USE MODD_REF_n USE MODD_TIME_n USE MODD_TURB_n ! @@ -2149,6 +2177,11 @@ IF (CONF_MODEL(KFROM)%IDX_RHT>0) THEN END IF ! IF (CPROGRAM == 'MESONH') THEN + ! + CALL FIND_FIELD_ID_FROM_MNHNAME('US_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRUS_PRES + CALL FIND_FIELD_ID_FROM_MNHNAME('VS_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRVS_PRES + CALL FIND_FIELD_ID_FROM_MNHNAME('WS_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRWS_PRES + CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRTHS_CLD ! CALL FIND_FIELD_ID_FROM_MNHNAME('RS_CLD',IID,IRESP); TFIELDLIST(IID)%TFIELD_X4D(KFROM)%DATA => XRRS_CLD ! @@ -2181,10 +2214,6 @@ IF (CPROGRAM == 'MESONH') THEN TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRRS_CLD(:,:,:,CONF_MODEL(KFROM)%IDX_RHT) END IF ! - CALL FIND_FIELD_ID_FROM_MNHNAME('US_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRUS_PRES - CALL FIND_FIELD_ID_FROM_MNHNAME('VS_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRVS_PRES - CALL FIND_FIELD_ID_FROM_MNHNAME('WS_PRES',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRWS_PRES - CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRTHS_CLD END IF ! ! MODD_LSFIELD_n variables @@ -2244,6 +2273,11 @@ END IF ! CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XWTHVMF ! +! MODD_REF_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('RHODREF',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRHODREF +CALL FIND_FIELD_ID_FROM_MNHNAME('THVREF', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XTHVREF +! ! MODD_RADIATIONS_n variables ! IF (CPROGRAM=='MESONH') THEN @@ -2530,6 +2564,11 @@ CSURF => TFIELDLIST(IID)%TFIELD_C0D(KTO)%DATA ! CALL FIND_FIELD_ID_FROM_MNHNAME('WTHVMF',IID,IRESP); XWTHVMF => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA ! +! MODD_REF_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('RHODREF',IID,IRESP); XRHODREF => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('THVREF', IID,IRESP); XTHVREF => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA +! ! MODD_RADIATIONS_n variables ! IF (CPROGRAM=='MESONH') THEN diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90 index 57fc85553..13ea018af 100644 --- a/src/LIB/SURCOUCHE/src/mode_fm.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fm.f90 @@ -572,7 +572,6 @@ IF (ISP == TZFDLFI%OWNER) THEN YTRANS='fujitransfer.x' #endif IFITYP = TZFDLFI%PARAM%FITYP - PRINT *,'KTYPE=', IFITYP SELECT CASE (IFITYP) CASE(:-1) diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90 index a172b73d0..7ee918dbe 100644 --- a/src/MNH/diag.f90 +++ b/src/MNH/diag.f90 @@ -172,10 +172,7 @@ TYPE(DATE_TIME) :: TXDTBAL ! current time and date for BALLOON and AIRCRAFT CHARACTER (LEN=28), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file CHARACTER (LEN=28), DIMENSION(1) :: YINIFILEPGD ! names of the INPUT FM-file CHARACTER (LEN=28) :: YFMFILE ! name of the OUTPUT FM-file -CHARACTER (LEN=28) :: YFMFILE_SUP ! name of the OUTPUT FM-file for diag_sup -CHARACTER (LEN=28) :: YFMDIAC ! name of the OUTPUT Diachronic file CHARACTER (LEN=5) :: YSUFFIX ! character string for the OUTPUT FM-file number -!CHARACTER (LEN=32) :: YDESFM ! name of the desfm part of this FM-file CHARACTER (LEN=4) :: YRAD ! initial flag to call to radiation schemes CHARACTER (LEN=4) :: YDCONV ! initial flag to call to deep convection schemes CHARACTER (LEN=4) :: YSCONV ! initial flag to call to shallow convection schemes @@ -188,7 +185,6 @@ REAL*8,DIMENSION(2) :: ZTIME0,ZTIME1,ZTIME2,ZRAD,ZDCONV,ZSHADOWS,ZGROUND, & REAL*8,DIMENSION(2) :: ZSTART,ZINIT,ZWRIT,ZBALL,ZPHYS,ZSURF,ZWRITS,ZTRAJ ! storing variables INTEGER :: INPRAR ! number of articles predicted in ! the LFIFM file -INTEGER :: ITYPE=1 ! type of file (conv2dia and transfer) LOGICAL :: GCLOSE_OUT = .FALSE. ! conditional closure of the OUTPUT FM-file INTEGER :: ISTEPBAL ! loop indice for balloons and aircraft INTEGER :: ILUNAM ! Logical unit numbers for the namelist file @@ -203,6 +199,7 @@ INTEGER :: IINFO_ll ! return code for _ll routines REAL, DIMENSION(:,:),ALLOCATABLE :: ZSEA,ZTOWN ! TYPE(TFILEDATA),TARGET :: TZFILE +TYPE(TFILEDATA) :: TZDIACFILE ! NAMELIST/NAM_DIAG/ CISO, LVAR_RS, LVAR_LS, & NCONV_KF, NRAD_3D, CRAD_SAT, NRTTOVINFO, LRAD_SUBG_COND, & @@ -468,7 +465,7 @@ ELSE CALL PRINT_MSG(NVERB_FATAL,'IO','DIAG','unknown backup/output fileformat') ENDIF TZFILE%CMODE = 'WRITE' -TZFILE%NLFITYPE = ITYPE +TZFILE%NLFITYPE = 1 TZFILE%NLFIVERB = NVERB ! CALL IO_FILE_OPEN_ll(TZFILE,CLUOUT,IRESP) @@ -533,8 +530,28 @@ ZTIME1=ZTIME2 !* 4.1 BALLOON and AIRCRAFT ! IF ( LAIRCRAFT_BALLOON ) THEN - YFMDIAC=ADJUSTL(ADJUSTR(CINIFILE)//'BAL') - CALL FMOPEN_ll(YFMDIAC,'WRITE',CLUOUT,INPRAR,ITYPE,NVERB,INPRAR,IRESP) +! + TZDIACFILE%CNAME = TRIM(CINIFILE)//'BAL' + TZDIACFILE%CTYPE = 'DIACHRONIC' + IF (LCDF4) THEN + IF (.NOT.LLFIOUT) THEN + TZDIACFILE%CFORMAT = 'NETCDF4' + ELSE + TZDIACFILE%CFORMAT = 'LFICDF4' + TZDIACFILE%NLFINPRAR = INPRAR + END IF + ELSE IF (LLFIOUT) THEN + TZDIACFILE%CFORMAT = 'LFI' + TZDIACFILE%NLFINPRAR = INPRAR + ELSE + CALL PRINT_MSG(NVERB_FATAL,'IO','DIAG','unknown backup/output fileformat') + ENDIF + TZDIACFILE%CMODE = 'WRITE' + TZDIACFILE%NLFITYPE = 1 + TZDIACFILE%NLFIVERB = NVERB +! + CALL IO_FILE_OPEN_ll(TZDIACFILE,CLUOUT,IRESP) +! WRITE(ILUOUT0,*) ' ' WRITE(ILUOUT0,*) 'DIAG AFTER OPEN DIACHRONIC FILE' WRITE(ILUOUT0,*) ' ' @@ -570,10 +587,10 @@ IF ( LAIRCRAFT_BALLOON ) THEN TXDTBAL%TDATE%DAY, & TXDTBAL%TIME ) ENDDO - CALL WRITE_LFIFMN_FORDIACHRO_n(YFMDIAC) - CALL WRITE_AIRCRAFT_BALLOON(YFMDIAC) - CALL MENU_DIACHRO(YFMDIAC,CLUOUT,'END') - CALL FMCLOS_ll(YFMDIAC,'KEEP',CLUOUT,IRESP) + CALL WRITE_LFIFMN_FORDIACHRO_n(TZDIACFILE) + CALL WRITE_AIRCRAFT_BALLOON(TZDIACFILE) + CALL MENU_DIACHRO(TZDIACFILE,CLUOUT,'END') + CALL IO_FILE_CLOSE_ll(TZDIACFILE,CLUOUT,IRESP) WRITE(ILUOUT0,*) ' ' WRITE(ILUOUT0,*) 'DIAG AFTER CLOSE DIACHRONIC FILE' WRITE(ILUOUT0,*) ' ' diff --git a/src/MNH/endstep_budget.f90 b/src/MNH/endstep_budget.f90 index 4ad7716a0..74bd64b40 100644 --- a/src/MNH/endstep_budget.f90 +++ b/src/MNH/endstep_budget.f90 @@ -14,19 +14,19 @@ ! INTERFACE ! - SUBROUTINE ENDSTEP_BUDGET(HFMDIAC,HLUOUT,KTCOUNT, & + SUBROUTINE ENDSTEP_BUDGET(TPDIAFILE,HLUOUT,KTCOUNT, & TPDTCUR,TPDTMOD,PTSTEP,KSV ) ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_TYPE_DATE ! -CHARACTER (LEN=*), INTENT(IN) :: HFMDIAC ! name of FM-file to write +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name of output listing -INTEGER, INTENT(IN) :: KTCOUNT ! temporal loop counter -TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time -TYPE (DATE_TIME), INTENT(IN) :: TPDTMOD ! Creation date and time -REAL, INTENT(IN) :: PTSTEP ! time step -INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables - +INTEGER, INTENT(IN) :: KTCOUNT ! temporal loop counter +TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time +TYPE (DATE_TIME), INTENT(IN) :: TPDTMOD ! Creation date and time +REAL, INTENT(IN) :: PTSTEP ! time step +INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables ! END SUBROUTINE ENDSTEP_BUDGET ! @@ -35,7 +35,7 @@ END INTERFACE END MODULE MODI_ENDSTEP_BUDGET ! ! ############################################################### - SUBROUTINE ENDSTEP_BUDGET(HFMDIAC,HLUOUT,KTCOUNT, & + SUBROUTINE ENDSTEP_BUDGET(TPDIAFILE,HLUOUT,KTCOUNT, & TPDTCUR,TPDTMOD,PTSTEP,KSV ) ! ############################################################### ! @@ -106,6 +106,7 @@ END MODULE MODI_ENDSTEP_BUDGET !* 0. DECLARATIONS ! ------------ ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_TIME USE MODD_BUDGET ! @@ -116,14 +117,13 @@ IMPLICIT NONE ! !* 0.1 Declarations of arguments : ! -CHARACTER (LEN=*), INTENT(IN) :: HFMDIAC ! FM-file where the budget is to be - ! written -CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! Name for output listing -INTEGER, INTENT(IN) :: KTCOUNT ! temporal loop counter -TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time -TYPE (DATE_TIME), INTENT(IN) :: TPDTMOD ! Creation date and time -REAL, INTENT(IN) :: PTSTEP ! time step -INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write +CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name of output listing +INTEGER, INTENT(IN) :: KTCOUNT ! temporal loop counter +TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time +TYPE (DATE_TIME), INTENT(IN) :: TPDTMOD ! Creation date and time +REAL, INTENT(IN) :: PTSTEP ! time step +INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables ! !------------------------------------------------------------------------------- ! @@ -138,7 +138,7 @@ SELECT CASE(CBUTYPE) !* 1.1 storage of the budget fields ! IF( MODULO(KTCOUNT,NBUSTEP*NBUWRNB) == 0 ) THEN - CALL WRITE_BUDGET(HFMDIAC,HLUOUT,TPDTCUR,TPDTMOD,PTSTEP, KSV ) + CALL WRITE_BUDGET(TPDIAFILE,HLUOUT,TPDTCUR,TPDTMOD,PTSTEP, KSV ) ! !* 1.2 resetting the budget arrays to 0. ! @@ -174,7 +174,7 @@ SELECT CASE(CBUTYPE) ! !* 2.1 storage of the budget fields ! - CALL WRITE_BUDGET(HFMDIAC,HLUOUT,TPDTCUR,TPDTMOD,PTSTEP, KSV) + CALL WRITE_BUDGET(TPDIAFILE,HLUOUT,TPDTCUR,TPDTMOD,PTSTEP, KSV) ! !* 2.2 reset the budget fields to 0. ! diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 207a48a88..be57b8970 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -280,6 +280,7 @@ USE MODD_ARGSLIST_ll, ONLY : LIST_ll USE MODE_IO_ll USE MODE_FM USE MODE_FMREAD +USE MODE_MSG USE MODE_TYPE_ZDIFFU ! USE MODD_NSV @@ -414,6 +415,7 @@ USE MODD_ADVFRC_n USE MODD_RELFRC_n USE MODD_2D_FRC USE MODD_IO_SURF_MNH, ONLY : IO_SURF_MNH_MODEL +USE MODD_IO_ll, ONLY : LIOCDF4,LLFIOUT ! USE MODD_CH_PRODLOSSTOT_n USE MODI_CH_INIT_PRODLOSSTOT_n @@ -1531,7 +1533,24 @@ CALL INI_BIKHARDT_n (NDXRATIO_ALL(KMI),NDYRATIO_ALL(KMI),KMI) IF (KMI == 1) THEN DO IMI = 1 , NMODEL WRITE(IO_SURF_MNH_MODEL(IMI)%COUTFILE,'(A,".",I1,".",A)') CEXP,IMI,TRIM(ADJUSTL(CSEG)) - WRITE(LUNIT_MODEL(IMI)%CFMDIAC, '(A,".",I1,".",A)') CEXP,IMI,TRIM(ADJUSTL(CSEG))//'.000' + WRITE(LUNIT_MODEL(IMI)%TDIAFILE%CNAME, '(A,".",I1,".",A)') CEXP,IMI,TRIM(ADJUSTL(CSEG))//'.000' + LUNIT_MODEL(IMI)%TDIAFILE%CTYPE = 'DIACHRONIC' + IF (LIOCDF4) THEN + IF (.NOT.LLFIOUT) THEN + LUNIT_MODEL(IMI)%TDIAFILE%CFORMAT = 'NETCDF4' + ELSE + LUNIT_MODEL(IMI)%TDIAFILE%CFORMAT = 'LFICDF4' + LUNIT_MODEL(IMI)%TDIAFILE%NLFINPRAR = 50 + END IF + ELSE IF (LLFIOUT) THEN + LUNIT_MODEL(IMI)%TDIAFILE%CFORMAT = 'LFI' + LUNIT_MODEL(IMI)%TDIAFILE%NLFINPRAR = 50 + ELSE + CALL PRINT_MSG(NVERB_FATAL,'IO','INI_MODEL_n','unknown backup/output fileformat') + ENDIF + LUNIT_MODEL(IMI)%TDIAFILE%CMODE = 'WRITE' + LUNIT_MODEL(IMI)%TDIAFILE%NLFITYPE = 1 + LUNIT_MODEL(IMI)%TDIAFILE%NLFIVERB = NVERB END DO ! IF (CPROGRAM=='MESONH') THEN diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90 index 3aca74575..09d5f5a77 100644 --- a/src/MNH/ini_spectren.f90 +++ b/src/MNH/ini_spectren.f90 @@ -45,6 +45,7 @@ USE MODD_ARGSLIST_ll, ONLY : LIST_ll USE MODE_IO_ll USE MODE_FM USE MODE_FMREAD +USE MODE_MSG USE MODE_TYPE_ZDIFFU ! USE MODD_NSV @@ -55,6 +56,7 @@ USE MODD_DUST USE MODD_DYN USE MODD_DYNZD USE MODD_FRC +USE MODD_IO_ll, ONLY : LIOCDF4,LLFIOUT USE MODD_REF USE MODD_SERIES, ONLY: LSERIES USE MODD_TIME @@ -943,7 +945,25 @@ END IF ! ---------------------------- ! WRITE(COUTFILE,'(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG)) -WRITE(CFMDIAC, '(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))//'.000' +WRITE(TDIAFILE%CNAME, '(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))//'.000' +TDIAFILE%CTYPE = 'DIACHRONIC' +IF (LIOCDF4) THEN + IF (.NOT.LLFIOUT) THEN + TDIAFILE%CFORMAT = 'NETCDF4' + ELSE + TDIAFILE%CFORMAT = 'LFICDF4' + TDIAFILE%NLFINPRAR = 50 + END IF +ELSE IF (LLFIOUT) THEN + TDIAFILE%CFORMAT = 'LFI' + TDIAFILE%NLFINPRAR = 50 +ELSE + CALL PRINT_MSG(NVERB_FATAL,'IO','INI_SPECTRE_n','unknown backup/output fileformat') +ENDIF +TDIAFILE%CMODE = 'WRITE' +TDIAFILE%NLFITYPE = 1 +TDIAFILE%NLFIVERB = NVERB + !------------------------------------------------------------------------------- ! !* 17. INITIALIZE THE PARAMETERS FOR THE DYNAMICS diff --git a/src/MNH/les_specn.f90 b/src/MNH/les_specn.f90 index ff703bb0e..61f4aaa49 100644 --- a/src/MNH/les_specn.f90 +++ b/src/MNH/les_specn.f90 @@ -9,7 +9,13 @@ ! MASDEV4_7 les 2006/08/30 18:41:37 !----------------------------------------------------------------- ! ###################### - SUBROUTINE LES_SPEC_n + MODULE MODE_LES_SPEC_n +! ###################### +! +CONTAINS +! +! ###################### + SUBROUTINE LES_SPEC_n(TPDIAFILE) ! ###################### ! ! @@ -57,6 +63,7 @@ USE MODD_LES USE MODD_LES_n ! USE MODD_CONF_n +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LUNIT_n USE MODD_GRID_n USE MODD_LBC_n, ONLY : CLBCX, CLBCY @@ -75,6 +82,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write ! !* 0.2 declaration of local variables ! @@ -115,112 +123,112 @@ ALLOCATE( ZSPECTRAY(ISPECTRA_NJ,2,NSPECTRA_K,NLES_TIMES) ) IF (NSPECTRA_K>0) THEN CALL LES_SPEC('X',XCORRi_UU, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_UU, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("UU ","U*U spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"UU ","U*U spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_VV, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_VV, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("VV ","V*V spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"VV ","V*V spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_WW, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_WW, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("WW ","W*W spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"WW ","W*W spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_UV, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_UV, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("UV ","U*V spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"UV ","U*V spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_WU, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_WU, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("WU ","W*U spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"WU ","W*U spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_WV, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_WV, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("WV ","W*V spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"WV ","W*V spectra","m3/s2",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_ThTh, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_ThTh, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("THTH ","Th*Th spectra","mK2 ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"THTH ","Th*Th spectra","mK2 ",ZSPECTRAX,ZSPECTRAY) ! IF (LUSERC) THEN CALL LES_SPEC('X',XCORRi_ThlThl, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_ThlThl, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("TLTL ","Thl*Thl spectra","mK2 ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"TLTL ","Thl*Thl spectra","mK2 ",ZSPECTRAX,ZSPECTRAY) END IF ! CALL LES_SPEC('X',XCORRi_WTh, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_WTh, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("WTH ","W*Th spectra","m2K/s",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"WTH ","W*Th spectra","m2K/s",ZSPECTRAX,ZSPECTRAY) ! IF (LUSERC) THEN CALL LES_SPEC('X',XCORRi_WThl, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_WThl, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("WTHL ","W*Thl spectra","m2K/s",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"WTHL ","W*Thl spectra","m2K/s",ZSPECTRAX,ZSPECTRAY) END IF ! IF (LUSERV) THEN CALL LES_SPEC('X',XCORRi_RvRv, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_RvRv, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("RVRV ","rv*rv spectra","m ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"RVRV ","rv*rv spectra","m ",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_ThRv, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_ThRv, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("THRV ","th*rv spectra","Km ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"THRV ","th*rv spectra","Km ",ZSPECTRAX,ZSPECTRAY) ! IF (LUSERC) THEN CALL LES_SPEC('X',XCORRi_ThlRv, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_ThlRv, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("TLRV ","thl*rv spectra","Km ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"TLRV ","thl*rv spectra","Km ",ZSPECTRAX,ZSPECTRAY) END IF ! CALL LES_SPEC('X',XCORRi_WRv, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_WRv, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("WRV ","W*rv spectra","mK/s ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"WRV ","W*rv spectra","mK/s ",ZSPECTRAX,ZSPECTRAY) END IF IF (LUSERC) THEN CALL LES_SPEC('X',XCORRi_RcRc, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_RcRc, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("RCRC ","rc*rc spectra","m ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"RCRC ","rc*rc spectra","m ",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_ThRc, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_ThRc, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("THRC ","th*rc spectra","Km ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"THRC ","th*rc spectra","Km ",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_ThlRc, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_ThlRc, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("TLRC ","thl*rc spectra","Km ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"TLRC ","thl*rc spectra","Km ",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_WRc, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_WRc, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("WRC ","W*rc spectra","mK/s ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"WRC ","W*rc spectra","mK/s ",ZSPECTRAX,ZSPECTRAY) END IF IF (LUSERI) THEN CALL LES_SPEC('X',XCORRi_RiRi, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_RiRi, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("RIRI ","ri*ri spectra","m ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"RIRI ","ri*ri spectra","m ",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_ThRi, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_ThRi, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("THRI ","th*ri spectra","Km ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"THRI ","th*ri spectra","Km ",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_ThlRi, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_ThlRi, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("TLRI ","thl*ri spectra","Km ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"TLRI ","thl*ri spectra","Km ",ZSPECTRAX,ZSPECTRAY) ! CALL LES_SPEC('X',XCORRi_WRi, ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_WRi, ZSPECTRAY) - CALL LES_DIACHRO_SPEC("WRI ","W*ri spectra","mK/s ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,"WRI ","W*ri spectra","mK/s ",ZSPECTRAX,ZSPECTRAY) END IF DO JSV=1,NSV WRITE (YGROUP,FMT="(A2,I3.3)") "SS",JSV CALL LES_SPEC('X',XCORRi_SvSv(:,:,:,JSV), ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_SvSv(:,:,:,JSV), ZSPECTRAY) - CALL LES_DIACHRO_SPEC(YGROUP,"Sv*Sv spectra","m ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,YGROUP,"Sv*Sv spectra","m ",ZSPECTRAX,ZSPECTRAY) END DO DO JSV=1,NSV WRITE (YGROUP,FMT="(A2,I3.3)") "WS",JSV CALL LES_SPEC('X',XCORRi_WSv(:,:,:,JSV), ZSPECTRAX) CALL LES_SPEC('Y',XCORRj_WSv(:,:,:,JSV), ZSPECTRAY) - CALL LES_DIACHRO_SPEC(YGROUP,"W*Sv spectra","m2/s ",ZSPECTRAX,ZSPECTRAY) + CALL LES_DIACHRO_SPEC(TPDIAFILE,YGROUP,"W*Sv spectra","m2/s ",ZSPECTRAX,ZSPECTRAY) END DO END IF ! @@ -296,3 +304,5 @@ END SUBROUTINE LES_SPEC !------------------------------------------------------------------------------ ! END SUBROUTINE LES_SPEC_n + +END MODULE MODE_LES_SPEC_n diff --git a/src/MNH/menu_diachro.f90 b/src/MNH/menu_diachro.f90 index c222f2a54..d58d2c323 100644 --- a/src/MNH/menu_diachro.f90 +++ b/src/MNH/menu_diachro.f90 @@ -9,7 +9,7 @@ ! MASDEV4_7 diachro 2006/05/18 13:07:25 !----------------------------------------------------------------- ! ################################################## - SUBROUTINE MENU_DIACHRO(HFILEDIA,HLUOUTDIA,HGROUP) + SUBROUTINE MENU_DIACHRO(TPDIAFILE,HLUOUTDIA,HGROUP) ! ################################################## ! !!**** *MENU_DIACHRO* - Creation, ecriture (eventuellement lecture) de @@ -57,18 +57,19 @@ !* 0. DECLARATIONS ! ------------ ! - +USE MODD_IO_ll, ONLY: TFILEDATA USE MODE_FMREAD USE MODE_FMWRIT USE MODD_CONF - +! IMPLICIT NONE ! !* 0.1 Dummy arguments ! --------------- -CHARACTER(LEN=*) :: HGROUP -CHARACTER(LEN=*) :: HFILEDIA, HLUOUTDIA +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write +CHARACTER(LEN=*), INTENT(IN) :: HGROUP +CHARACTER(LEN=*), INTENT(IN) :: HLUOUTDIA ! !* 0.1 Local variables ! --------------- @@ -77,12 +78,16 @@ CHARACTER(LEN=*) :: HFILEDIA, HLUOUTDIA CHARACTER(LEN=16) :: YRECFM CHARACTER(LEN=20) :: YCOMMENT CHARACTER(LEN=16),DIMENSION(1500),SAVE :: YGROUP +CHARACTER(LEN=28) :: YFILEDIA INTEGER :: ILENG, ILENCH, IGRID, J, JJ, IALREADY INTEGER :: IRESPDIA INTEGER,SAVE :: IGROUP=0 INTEGER,DIMENSION(:),ALLOCATABLE :: ITABCHAR LOGICAL :: GPACK !------------------------------------------------------------------------------ +! +YFILEDIA = TPDIAFILE%CNAME +! GPACK=LPACK LPACK=.FALSE. YCOMMENT='Nothing' @@ -98,7 +103,7 @@ IF(HGROUP == 'END')THEN ILENG=16*IGROUP ILENCH=LEN(YCOMMENT) YRECFM='MENU_BUDGET.DIM' - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ILENG,& + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ILENG,& IGRID,ILENCH,YCOMMENT,IRESPDIA) YRECFM='MENU_BUDGET' @@ -108,14 +113,14 @@ IF(HGROUP == 'END')THEN ITABCHAR(16*(JJ-1)+J) = ICHAR(YGROUP(JJ)(J:J)) ENDDO ENDDO - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & IGRID,ILENCH,YCOMMENT,IRESPDIA) DEALLOCATE(ITABCHAR) ELSE IF(HGROUP == 'READ')THEN YRECFM='MENU_BUDGET.DIM' - CALL FMREAD(HFILEDIA,YRECFM,HLUOUTDIA,'--',ILENG,& + CALL FMREAD(YFILEDIA,YRECFM,HLUOUTDIA,'--',ILENG,& IGRID,ILENCH,YCOMMENT,IRESPDIA) IF(IRESPDIA == -47)THEN ! print *,' No record MENU_BUDGET ' @@ -125,7 +130,7 @@ ELSE IF(HGROUP == 'READ')THEN ALLOCATE(ITABCHAR(ILENG)) YRECFM='MENU_BUDGET' - CALL FMREAD(HFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & + CALL FMREAD(YFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & IGRID,ILENCH,YCOMMENT,IRESPDIA) IGROUP=ILENG/16 ! print *,' ILENG ILENCH IGROUP ',ILENG,ILENCH,IGROUP diff --git a/src/MNH/modd_les.f90 b/src/MNH/modd_les.f90 index 824ceeb2c..d13a5ff3c 100644 --- a/src/MNH/modd_les.f90 +++ b/src/MNH/modd_les.f90 @@ -176,9 +176,6 @@ INTEGER, DIMENSION(:,:,:), ALLOCATABLE :: NKLIN_CURRENT_SPEC REAL, DIMENSION(:,:,:), ALLOCATABLE :: XCOEFLIN_CURRENT_SPEC ! coefficients for vertical interpolation ! -CHARACTER(LEN=28) :: CCURRENT_FMDIAC -! current CFMDIAC file -! REAL,DIMENSION(2) :: XTIME_LES ! time spent in subgrid LES computations in this time-step in TURB ! diff --git a/src/MNH/modd_lunitn.f90 b/src/MNH/modd_lunitn.f90 index e83bdd42d..af4559b63 100644 --- a/src/MNH/modd_lunitn.f90 +++ b/src/MNH/modd_lunitn.f90 @@ -45,7 +45,9 @@ ! ------------ ! ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAMETERS, ONLY: JPMODELMAX, JPCPLFILEMAX + IMPLICIT NONE TYPE LUNIT_t @@ -53,7 +55,7 @@ TYPE LUNIT_t CHARACTER(LEN=28) :: CINIFILE ! Name of the input FM-file CHARACTER(LEN=28) :: CINIFILEPGD ! Name of the PGD associated to input FM-file CHARACTER(LEN=24) :: COUTFILE ! Generic name of the output FM-files - CHARACTER(LEN=28) :: CFMDIAC ! diachronic output FM-file + TYPE(TFILEDATA) :: TDIAFILE ! diachronic output file ! CHARACTER(LEN=16) :: CLUOUT ! Name of output_listing file !JUAN @@ -70,7 +72,7 @@ CHARACTER(LEN=4),SAVE :: CMASK_SURFEX='PREP' CHARACTER(LEN=28), POINTER :: CINIFILE=>NULL() CHARACTER(LEN=28), POINTER :: CINIFILEPGD=>NULL() CHARACTER(LEN=24), POINTER :: COUTFILE=>NULL() -CHARACTER(LEN=28), POINTER :: CFMDIAC=>NULL() +TYPE(TFILEDATA), POINTER :: TDIAFILE=>NULL() CHARACTER(LEN=16), POINTER :: CLUOUT=>NULL() CHARACTER(LEN=28),DIMENSION(:), POINTER :: CCPLFILE=>NULL() @@ -92,7 +94,7 @@ ENDIF CINIFILE=>LUNIT_MODEL(KTO)%CINIFILE CINIFILEPGD=>LUNIT_MODEL(KTO)%CINIFILEPGD COUTFILE=>LUNIT_MODEL(KTO)%COUTFILE -CFMDIAC=>LUNIT_MODEL(KTO)%CFMDIAC +TDIAFILE=>LUNIT_MODEL(KTO)%TDIAFILE CLUOUT=>LUNIT_MODEL(KTO)%CLUOUT CCPLFILE=>LUNIT_MODEL(KTO)%CCPLFILE diff --git a/src/MNH/modd_refn.f90 b/src/MNH/modd_refn.f90 index 3f3a72eae..56db08ddb 100644 --- a/src/MNH/modd_refn.f90 +++ b/src/MNH/modd_refn.f90 @@ -50,8 +50,8 @@ IMPLICIT NONE TYPE REF_t ! - REAL, DIMENSION(:,:,:), POINTER :: XRHODREF=>NULL()! dry density for ref. state - REAL, DIMENSION(:,:,:), POINTER :: XTHVREF=>NULL() ! Thetav for ref. state +! REAL, DIMENSION(:,:,:), POINTER :: XRHODREF=>NULL()! dry density for ref. state +! REAL, DIMENSION(:,:,:), POINTER :: XTHVREF=>NULL() ! Thetav for ref. state REAL, DIMENSION(:,:,:), POINTER :: XRVREF=>NULL() ! mixing Ratio for Vapor computed ! for the REFerence state REAL, DIMENSION(:,:,:), POINTER :: XEXNREF=>NULL() ! Exner function for ref. state @@ -83,15 +83,15 @@ SUBROUTINE REF_GOTO_MODEL(KFROM, KTO) INTEGER, INTENT(IN) :: KFROM, KTO ! ! Save current state for allocated arrays -REF_MODEL(KFROM)%XRHODREF=>XRHODREF -REF_MODEL(KFROM)%XTHVREF=>XTHVREF +!REF_MODEL(KFROM)%XRHODREF=>XRHODREF !Done in FIELDLIST_GOTO_MODEL +!REF_MODEL(KFROM)%XTHVREF=>XTHVREF !Done in FIELDLIST_GOTO_MODEL REF_MODEL(KFROM)%XRVREF=>XRVREF REF_MODEL(KFROM)%XEXNREF=>XEXNREF REF_MODEL(KFROM)%XRHODJ=>XRHODJ ! ! Current model is set to model KTO -XRHODREF=>REF_MODEL(KTO)%XRHODREF -XTHVREF=>REF_MODEL(KTO)%XTHVREF +!XRHODREF=>REF_MODEL(KTO)%XRHODREF !Done in FIELDLIST_GOTO_MODEL +!XTHVREF=>REF_MODEL(KTO)%XTHVREF !Done in FIELDLIST_GOTO_MODEL XRVREF=>REF_MODEL(KTO)%XRVREF XEXNREF=>REF_MODEL(KTO)%XEXNREF XRHODJ=>REF_MODEL(KTO)%XRHODJ diff --git a/src/MNH/mode_les_diachro.f90 b/src/MNH/mode_les_diachro.f90 index 94e451102..ac9dcc168 100644 --- a/src/MNH/mode_les_diachro.f90 +++ b/src/MNH/mode_les_diachro.f90 @@ -733,9 +733,10 @@ END SUBROUTINE LES_TIME_AVG !------------------------------------------------------------------------------ ! !######################################################## -SUBROUTINE LES_DIACHRO(HGROUP,HCOMMENT,HUNIT,PFIELD,HAVG) +SUBROUTINE LES_DIACHRO(TPDIAFILE,HGROUP,HCOMMENT,HUNIT,PFIELD,HAVG) !######################################################## ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_GRID USE MODI_WRITE_DIACHRO @@ -745,6 +746,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=*), INTENT(IN) :: HGROUP ! group title CHARACTER(LEN=*), INTENT(IN) :: HCOMMENT ! comment string CHARACTER(LEN=*), INTENT(IN) :: HUNIT ! physical unit @@ -839,7 +841,7 @@ YTITLE(1) = YGROUP ! ---------------------- ! IF (IRESP==0 .AND. ANY(ZWORK6/=XUNDEF)) & -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH, & PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ ) @@ -859,9 +861,10 @@ DEALLOCATE (ZDATIME) END SUBROUTINE LES_DIACHRO !------------------------------------------------------------------------------- !########################################################### -SUBROUTINE LES_DIACHRO_SV(HGROUP,HCOMMENT,HUNIT,PFIELD,HAVG) +SUBROUTINE LES_DIACHRO_SV(TPDIAFILE,HGROUP,HCOMMENT,HUNIT,PFIELD,HAVG) !########################################################### ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_GRID USE MODI_WRITE_DIACHRO @@ -871,6 +874,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=*), INTENT(IN) :: HGROUP ! group title CHARACTER(LEN=*), INTENT(IN) :: HCOMMENT ! comment string CHARACTER(LEN=*), INTENT(IN) :: HUNIT ! physical unit @@ -963,7 +967,7 @@ YTITLE(1) = YGROUP ! ! IF (IRESP==0 .AND. ANY(ZWORK6/=XUNDEF)) & -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH, & PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ ) @@ -983,9 +987,10 @@ DEALLOCATE(ZDATIME) END SUBROUTINE LES_DIACHRO_SV !------------------------------------------------------------------------------- !##################################################################### -SUBROUTINE LES_DIACHRO_MASKS(HGROUP,HTITLE,HCOMMENT,HUNIT,PFIELD,HAVG) +SUBROUTINE LES_DIACHRO_MASKS(TPDIAFILE,HGROUP,HTITLE,HCOMMENT,HUNIT,PFIELD,HAVG) !##################################################################### ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_GRID USE MODI_WRITE_DIACHRO @@ -995,6 +1000,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=*), INTENT(IN) :: HGROUP ! group title CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HTITLE ! title CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HCOMMENT ! comment string @@ -1092,7 +1098,7 @@ YTITLE (:) = YGROUP//HTITLE(:) ! ---------------------- ! IF (IRESP==0 .AND. ANY(ZWORK6/=XUNDEF)) & -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH, & PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ ) @@ -1112,9 +1118,10 @@ DEALLOCATE(ZDATIME) END SUBROUTINE LES_DIACHRO_MASKS !------------------------------------------------------------------------------- !######################################################################## -SUBROUTINE LES_DIACHRO_SV_MASKS(HGROUP,HTITLE,HCOMMENT,HUNIT,PFIELD,HAVG) +SUBROUTINE LES_DIACHRO_SV_MASKS(TPDIAFILE,HGROUP,HTITLE,HCOMMENT,HUNIT,PFIELD,HAVG) !######################################################################## ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_GRID USE MODI_WRITE_DIACHRO @@ -1124,6 +1131,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=*), INTENT(IN) :: HGROUP ! group title CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HTITLE ! title CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HCOMMENT ! comment string @@ -1225,7 +1233,7 @@ YTITLE (:) = YGROUP//HTITLE(:) ! ! IF (IRESP==0 .AND. ANY(ZWORK6/=XUNDEF)) & -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH, & PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ ) @@ -1246,9 +1254,10 @@ END SUBROUTINE LES_DIACHRO_SV_MASKS !------------------------------------------------------------------------------- !############################################################# -SUBROUTINE LES_DIACHRO_SURF(HGROUP,HCOMMENT,HUNIT,PFIELD,HAVG) +SUBROUTINE LES_DIACHRO_SURF(TPDIAFILE,HGROUP,HCOMMENT,HUNIT,PFIELD,HAVG) !############################################################# ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_GRID USE MODI_WRITE_DIACHRO @@ -1258,6 +1267,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=*), INTENT(IN) :: HGROUP ! group title CHARACTER(LEN=*), INTENT(IN) :: HCOMMENT ! comment string CHARACTER(LEN=*), INTENT(IN) :: HUNIT ! physical unit @@ -1338,7 +1348,7 @@ YTITLE(1) = HGROUP ! ---------------------- ! IF (IRESP==0) & -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH, & PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ ) @@ -1358,9 +1368,10 @@ DEALLOCATE(ZDATIME) END SUBROUTINE LES_DIACHRO_SURF !------------------------------------------------------------------------------- !################################################################ -SUBROUTINE LES_DIACHRO_SURF_SV(HGROUP,HCOMMENT,HUNIT,PFIELD,HAVG) +SUBROUTINE LES_DIACHRO_SURF_SV(TPDIAFILE,HGROUP,HCOMMENT,HUNIT,PFIELD,HAVG) !################################################################ ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_GRID USE MODI_WRITE_DIACHRO @@ -1370,6 +1381,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=*), INTENT(IN) :: HGROUP ! group title CHARACTER(LEN=*), INTENT(IN) :: HCOMMENT ! comment string CHARACTER(LEN=*), INTENT(IN) :: HUNIT ! physical unit @@ -1451,7 +1463,7 @@ YTITLE(1) = HGROUP ! ---------------------- ! IF (IRESP==0) & -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SSOL",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH, & PTRAJX=ZTRAJX,PTRAJY=ZTRAJY,PTRAJZ=ZTRAJZ ) @@ -1471,12 +1483,13 @@ DEALLOCATE(ZDATIME) END SUBROUTINE LES_DIACHRO_SURF_SV !------------------------------------------------------------------------------- !##################################################################### -SUBROUTINE LES_DIACHRO_2PT(HGROUP,HCOMMENT,HUNIT,PFIELDX,PFIELDY,HAVG) +SUBROUTINE LES_DIACHRO_2PT(TPDIAFILE,HGROUP,HCOMMENT,HUNIT,PFIELDX,PFIELDY,HAVG) !##################################################################### ! !* Modification 01/04/03 (V. Masson) safer use of ZWORK6 with loops ! ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_GRID USE MODD_CONF @@ -1487,6 +1500,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=*), INTENT(IN) :: HGROUP ! group title CHARACTER(LEN=*), INTENT(IN) :: HCOMMENT ! comment string CHARACTER(LEN=*), INTENT(IN) :: HUNIT ! physical unit @@ -1572,7 +1586,7 @@ END IF ! ---------------------- ! IF (IRESP==0) & -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH ) ! @@ -1614,7 +1628,7 @@ IF (GAVG) THEN YGROUP = 'T_'//YGROUP END IF ! -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH ) ! @@ -1628,12 +1642,13 @@ END SUBROUTINE LES_DIACHRO_2PT !------------------------------------------------------------------------------ ! !##################################################################### -SUBROUTINE LES_DIACHRO_SPEC(HGROUP,HCOMMENT,HUNIT,PSPECTRAX,PSPECTRAY) +SUBROUTINE LES_DIACHRO_SPEC(TPDIAFILE,HGROUP,HCOMMENT,HUNIT,PSPECTRAX,PSPECTRAY) !##################################################################### ! !* Modification 01/04/03 (V. Masson) safer use of ZWORK6 with loops ! ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_GRID USE MODD_CONF @@ -1644,6 +1659,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=*), INTENT(IN) :: HGROUP ! group title CHARACTER(LEN=*), INTENT(IN) :: HCOMMENT ! comment string CHARACTER(LEN=*), INTENT(IN) :: HUNIT ! physical unit @@ -1714,7 +1730,7 @@ WRITE(YSTRING,FMT="(I6.6)") NINT( XLES_CURRENT_DOMEGAX ) YCOMMENT(:) = " DOMEGAX="//YSTRING//' '//HCOMMENT ! ! -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH ) ! @@ -1726,7 +1742,7 @@ CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME) YGROUP = 'T_'//YGROUP ! IF (IRESP==0) & -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH ) DEALLOCATE(ZWORK6) @@ -1762,7 +1778,7 @@ YTITLE(:) = YGROUP WRITE(YSTRING,FMT="(I6.6)") NINT( XLES_CURRENT_DOMEGAY ) YCOMMENT(:) = " DOMEGAY="//YSTRING//' '//HCOMMENT ! -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH ) ! @@ -1773,7 +1789,7 @@ CALL LES_TIME_AVG(ZTRAJT,ZWORK6,IRESP,ZDATIME) YGROUP = 'T_'//YGROUP ! IF (IRESP==0) & -CALL WRITE_DIACHRO(CCURRENT_FMDIAC,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"SPXY",IGRID,ZDATIME, ZWORK6, & ZTRAJT,YTITLE,YUNIT,YCOMMENT,.FALSE.,.FALSE.,.FALSE., & IIL,IIH,IJL,IJH,IKL,IKH ) ! diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index a40eaa059..23a9bf6d5 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -280,7 +280,7 @@ USE MODD_LUNIT USE MODD_GRID, ONLY: XLONORI,XLATORI USE MODD_SERIES, ONLY: LSERIES USE MODD_TURB_CLOUD, ONLY: NMODEL_CLOUD,CTURBLEN_CLOUD,XCEI -USE MODD_IO_ll, ONLY: TFILEDATA,TFILE_SURFEX +USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,TFILEDATA,TFILE_SURFEX ! USE MODD_SUB_MODEL_n USE MODD_GET_n @@ -426,11 +426,6 @@ CHARACTER (LEN=32) :: YDESFM ! name of the desfm part of this FM-file INTEGER :: INBVAR ! number of HALO2_lls to allocate INTEGER :: IRESP ! return code in FM routines INTEGER :: IINFO_ll ! return code of parallel routine -INTEGER :: INPRAR ! number of articles predicted in - ! the LFIFM file -INTEGER :: ININAR ! number of articles present in - ! the LFIFM file -INTEGER :: ITYPE ! type of file (cpio or not) INTEGER :: IVERB ! LFI verbosity level LOGICAL :: GSTEADY_DMASS ! conditional call to mass computation ! @@ -530,6 +525,7 @@ TYPE(LIST_ll), POINTER :: TZFIELDC_ll ! list of fields to exchange TYPE(HALO2LIST_ll), POINTER :: TZHALO2C_ll ! list of fields to exchange ! TYPE(TFILEDATA),POINTER :: TZBAKFILE, TZOUTFILE +! TYPE(TFILEDATA),SAVE :: TZDIACFILE !------------------------------------------------------------------------------- ! !* 0. MICROPHYSICAL SCHEME @@ -564,7 +560,6 @@ END SELECT ! !* 1 PRELIMINARY ! ------------ -ITYPE = 1 IMI = GET_CURRENT_MODEL_INDEX() ! !* 1.0 update NSV_* variables for current model @@ -606,11 +601,11 @@ IF (KTCOUNT == 1) THEN IBAK=0 IOUT=0 ! - INPRAR = 50 - CALL FMOPEN_ll(CFMDIAC,'WRITE',CLUOUT,INPRAR,ITYPE,NVERB,ININAR,IRESP) - YDESFM=ADJUSTL(ADJUSTR(CFMDIAC)//'.des') + CALL IO_FILE_OPEN_ll(TDIAFILE,CLUOUT,IRESP) +! + YDESFM=TRIM(TDIAFILE%CNAME)//'.des' CALL WRITE_DESFM_n(IMI,YDESFM,CLUOUT) - CALL WRITE_LFIFMN_FORDIACHRO_n(CFMDIAC) + CALL WRITE_LFIFMN_FORDIACHRO_n(TDIAFILE) ! !* 1.4 Initialization of the list of fields for the halo updates ! @@ -1913,7 +1908,7 @@ CALL END_DIAG_IN_RUN ZTIME1 = ZTIME2 ! IF (NBUMOD==IMI .AND. CBUTYPE/='NONE') THEN - CALL ENDSTEP_BUDGET(CFMDIAC,CLUOUT,KTCOUNT,TDTCUR,TDTMOD,XTSTEP,NSV) + CALL ENDSTEP_BUDGET(TDIAFILE,CLUOUT,KTCOUNT,TDTCUR,TDTMOD,XTSTEP,NSV) END IF ! CALL SECOND_MNH2(ZTIME2) @@ -1956,16 +1951,16 @@ END IF ! IF (OEXIT) THEN ! - IF (LSERIES) CALL WRITE_SERIES_n(CFMDIAC,CLUOUT ) - CALL WRITE_AIRCRAFT_BALLOON(CFMDIAC) - CALL WRITE_STATION_n(CFMDIAC) - CALL WRITE_PROFILER_n(CFMDIAC) - CALL WRITE_LES_n(' ') - CALL WRITE_LES_n('A') - CALL WRITE_LES_n('E') - CALL WRITE_LES_n('H') - CALL MENU_DIACHRO(CFMDIAC,CLUOUT,'END') - CALL FMCLOS_ll(CFMDIAC,'KEEP',CLUOUT,IRESP) + IF (LSERIES) CALL WRITE_SERIES_n(TDIAFILE,CLUOUT) + CALL WRITE_AIRCRAFT_BALLOON(TDIAFILE) + CALL WRITE_STATION_n(TDIAFILE) + CALL WRITE_PROFILER_n(TDIAFILE) + CALL WRITE_LES_n(TDIAFILE,' ') + CALL WRITE_LES_n(TDIAFILE,'A') + CALL WRITE_LES_n(TDIAFILE,'E') + CALL WRITE_LES_n(TDIAFILE,'H') + CALL MENU_DIACHRO(TDIAFILE,CLUOUT,'END') + CALL IO_FILE_CLOSE_ll(TDIAFILE,CLUOUT,IRESP) ! CALL FMCLOS_ll(CINIFILE,'KEEP',CLUOUT,IRESP) IF (CSURF=="EXTE") CALL FMCLOS_ll(CINIFILEPGD,'KEEP',CLUOUT,IRESP,OPARALLELIO=.FALSE.) diff --git a/src/MNH/modules_diachro.f90 b/src/MNH/modules_diachro.f90 index 47cd397d2..aed84fc7c 100644 --- a/src/MNH/modules_diachro.f90 +++ b/src/MNH/modules_diachro.f90 @@ -14,9 +14,13 @@ ! INTERFACE ! -SUBROUTINE MENU_DIACHRO(HFILEDIA,HLUOUTDIA,HGROUP) -CHARACTER(LEN=*) :: HGROUP -CHARACTER(LEN=*) :: HFILEDIA,HLUOUTDIA +SUBROUTINE MENU_DIACHRO(TPDIAFILE,HLUOUTDIA,HGROUP) +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write +CHARACTER(LEN=*), INTENT(IN) :: HGROUP +CHARACTER(LEN=*), INTENT(IN) :: HLUOUTDIA +! END SUBROUTINE MENU_DIACHRO ! END INTERFACE @@ -29,8 +33,9 @@ END MODULE MODI_MENU_DIACHRO ! INTERFACE ! -SUBROUTINE WRITE_LFIFMN_FORDIACHRO_n(HFMFILE) -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! Name of FM-file to write +SUBROUTINE WRITE_LFIFMN_FORDIACHRO_n(TPFILE) +USE MODD_IO_ll, ONLY: TFILEDATA +TYPE(TFILEDATA),INTENT(IN) :: TPFILE END SUBROUTINE WRITE_LFIFMN_FORDIACHRO_n ! END INTERFACE @@ -42,27 +47,30 @@ END MODULE MODI_WRITE_LFIFMN_FORDIACHRO_n ! INTERFACE ! -SUBROUTINE WRITE_DIACHRO(HFILEDIA,HLUOUTDIA,HGROUP,HTYPE,KGRID, & +SUBROUTINE WRITE_DIACHRO(TPDIAFILE,HLUOUTDIA,HGROUP,HTYPE,KGRID, & PDATIME,PVAR,PTRAJT,HTITRE,HUNITE,HCOMMENT, & OICP, OJCP, OKCP, KIL, KIH, KJL, KJH, KKL, KKH, & - PTRAJX,PTRAJY,PTRAJZ,PMASK) -CHARACTER(LEN=*) :: HFILEDIA,HLUOUTDIA -CHARACTER(LEN=*) :: HGROUP, HTYPE -CHARACTER(LEN=*),DIMENSION(:) :: HTITRE, HUNITE, HCOMMENT - -INTEGER,DIMENSION(:) :: KGRID -INTEGER,OPTIONAL :: KIL, KIH -INTEGER,OPTIONAL :: KJL, KJH -INTEGER,OPTIONAL :: KKL, KKH -LOGICAL,OPTIONAL :: OICP, OJCP, OKCP -REAL,DIMENSION(:,:,:,:,:,:),OPTIONAL :: PMASK -REAL,DIMENSION(:,:) :: PDATIME -REAL,DIMENSION(:,:,:,:,:,:) :: PVAR -REAL,DIMENSION(:,:) :: PTRAJT -REAL,DIMENSION(:,:,:),OPTIONAL :: PTRAJX -REAL,DIMENSION(:,:,:),OPTIONAL :: PTRAJY -REAL,DIMENSION(:,:,:),OPTIONAL :: PTRAJZ - + PTRAJX,PTRAJY,PTRAJZ,PMASK) +! +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write +CHARACTER(LEN=*), INTENT(IN) :: HLUOUTDIA +CHARACTER(LEN=*), INTENT(IN) :: HGROUP, HTYPE +INTEGER,DIMENSION(:), INTENT(IN) :: KGRID +REAL,DIMENSION(:,:), INTENT(IN) :: PDATIME +REAL,DIMENSION(:,:,:,:,:,:), INTENT(IN) :: PVAR +REAL,DIMENSION(:,:), INTENT(IN) :: PTRAJT +CHARACTER(LEN=*),DIMENSION(:),INTENT(IN) :: HTITRE, HUNITE, HCOMMENT +LOGICAL, INTENT(IN),OPTIONAL :: OICP, OJCP, OKCP +INTEGER, INTENT(IN),OPTIONAL :: KIL, KIH +INTEGER, INTENT(IN),OPTIONAL :: KJL, KJH +INTEGER, INTENT(IN),OPTIONAL :: KKL, KKH +REAL,DIMENSION(:,:,:), INTENT(IN),OPTIONAL :: PTRAJX +REAL,DIMENSION(:,:,:), INTENT(IN),OPTIONAL :: PTRAJY +REAL,DIMENSION(:,:,:), INTENT(IN),OPTIONAL :: PTRAJZ +REAL,DIMENSION(:,:,:,:,:,:), INTENT(IN),OPTIONAL :: PMASK +! END SUBROUTINE WRITE_DIACHRO ! END INTERFACE diff --git a/src/MNH/write_aircraft_balloon.f90 b/src/MNH/write_aircraft_balloon.f90 index 3a7777062..37089e8be 100644 --- a/src/MNH/write_aircraft_balloon.f90 +++ b/src/MNH/write_aircraft_balloon.f90 @@ -14,9 +14,11 @@ MODULE MODI_WRITE_AIRCRAFT_BALLOON ! INTERFACE ! - SUBROUTINE WRITE_AIRCRAFT_BALLOON(HFMDIAC) + SUBROUTINE WRITE_AIRCRAFT_BALLOON(TPDIAFILE) ! -CHARACTER(LEN=*), INTENT(IN) :: HFMDIAC ! diachronic file name +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write ! END SUBROUTINE WRITE_AIRCRAFT_BALLOON ! @@ -25,7 +27,7 @@ END INTERFACE END MODULE MODI_WRITE_AIRCRAFT_BALLOON ! ! ########################################## - SUBROUTINE WRITE_AIRCRAFT_BALLOON(HFMDIAC) + SUBROUTINE WRITE_AIRCRAFT_BALLOON(TPDIAFILE) ! ########################################## ! ! @@ -72,6 +74,7 @@ END MODULE MODI_WRITE_AIRCRAFT_BALLOON ! ------------ ! USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LUNIT USE MODD_PARAMETERS ! @@ -107,7 +110,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -CHARACTER(LEN=*), INTENT(IN) :: HFMDIAC ! diachronic file name +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write ! !------------------------------------------------------------------------------- ! @@ -841,11 +844,11 @@ ALLOCATE (ZWZ6(1,1,IKU,SIZE(TPFLYER%TIME),1,JPROCZ)) ZWZ6 = ZWORKZ6(:,:,:,:,:,:JPROCZ) DEALLOCATE(ZWORKZ6) ! -CALL WRITE_DIACHRO(HFMDIAC,CLUOUT0,YGROUP,"RSPL",IGRID, TPFLYER%DATIME, ZW6, & - ZTRAJT,YTITLE,YUNIT,YCOMMENT, & - PTRAJX=ZTRAJX, PTRAJY=ZTRAJY, PTRAJZ=ZTRAJZ ) +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"RSPL",IGRID, TPFLYER%DATIME, ZW6, & + ZTRAJT,YTITLE,YUNIT,YCOMMENT, & + PTRAJX=ZTRAJX, PTRAJY=ZTRAJY, PTRAJZ=ZTRAJZ ) ! -CALL WRITE_DIACHRO(HFMDIAC,CLUOUT0,YGROUPZ,"CART",IGRIDZ, TPFLYER%DATIME, & +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUPZ,"CART",IGRIDZ, TPFLYER%DATIME, & ZWZ6,ZTRAJT,YTITLEZ,YUNITZ,YCOMMENTZ, & .TRUE.,.TRUE.,.FALSE., & KIL=1,KIH=1,KJL=1,KJH=1,KKL=1,KKH=IKU ) diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90 index a50b48fd9..21300126c 100644 --- a/src/MNH/write_budget.f90 +++ b/src/MNH/write_budget.f90 @@ -15,12 +15,13 @@ ! INTERFACE ! - SUBROUTINE WRITE_BUDGET(HFILEDIA,HLUOUT,TPDTCUR, & + SUBROUTINE WRITE_BUDGET(TPDIAFILE,HLUOUT,TPDTCUR, & TPDTMOD,PTSTEP, KSV ) ! +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_TYPE_DATE ! -CHARACTER (LEN=*), INTENT(IN) :: HFILEDIA ! name of FM-file to write +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name of output listing TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time TYPE (DATE_TIME), INTENT(IN) :: TPDTMOD ! Creation date and time @@ -36,7 +37,7 @@ END MODULE MODI_WRITE_BUDGET ! ! ! ################################################################## - SUBROUTINE WRITE_BUDGET(HFILEDIA,HLUOUT,TPDTCUR, & + SUBROUTINE WRITE_BUDGET(TPDIAFILE,HLUOUT,TPDTCUR, & TPDTMOD,PTSTEP, KSV ) ! ################################################################## ! @@ -46,7 +47,7 @@ END MODULE MODI_WRITE_BUDGET !! PURPOSE !! ------- ! The purpose of this routine is to write an initial LFIFM File -! of name HFILEDIA//'.lfi' with the FM routines. This routine is +! of name YFILEDIA//'.lfi' with the FM routines. This routine is ! temporary because the budget terms had to be stored in the diachronic ! MesoNH-files, not yet developped. ! @@ -135,6 +136,7 @@ END MODULE MODI_WRITE_BUDGET ! !* 0. ! ------------ +USE MODD_IO_ll, ONLY: TFILEDATA USE MODE_TIME USE MODD_BUDGET ! @@ -151,7 +153,7 @@ IMPLICIT NONE ! !* 0.1 Declarations of arguments : ! -CHARACTER (LEN=*), INTENT(IN) :: HFILEDIA ! name of FM-file to write +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name of output listing TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time TYPE (DATE_TIME), INTENT(IN) :: TPDTMOD ! Creation date and time @@ -161,7 +163,8 @@ INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables !* 0.2 Declarations of local variables : ! INTEGER :: IRESP ! IRESP : return-code if a problem appears - ! at the open of the file ! LFI routines + ! at the open of the file + ! LFI routines INTEGER :: IGRID ! IGRID : grid indicator INTEGER :: ILENCH ! ILENCH : length of comment string ! @@ -181,6 +184,7 @@ CHARACTER (LEN=99), ALLOCATABLE , DIMENSION(:) :: YBUCOMMENT ! comment CHARACTER (LEN=100), ALLOCATABLE , DIMENSION(:) :: YWORKCOMMENT ! comment CHARACTER (LEN=100), ALLOCATABLE , DIMENSION(:) :: YWORKUNIT ! comment CHARACTER (LEN=9) :: YGROUP_NAME ! group name +CHARACTER(LEN=28) :: YFILEDIA REAL, ALLOCATABLE , DIMENSION(:,:):: ZWORKDATIME ! global time ! info INTEGER :: JSV ! loop index @@ -190,6 +194,8 @@ INTEGER :: IP ! !------------------------------------------------------------------------------- ! +YFILEDIA = TPDIAFILE%CNAME +! !* 1. write TSTEP and BULEN ! --------------------- ! @@ -197,12 +203,12 @@ YRECFM='TSTEP' YCOMMENT=' ' IGRID=0 ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUT,'--',PTSTEP,IGRID,ILENCH,YCOMMENT,IRESP) +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUT,'--',PTSTEP,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM='BULEN' YCOMMENT=' ' ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUT,'--',XBULEN,IGRID,ILENCH,YCOMMENT,IRESP) +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUT,'--',XBULEN,IGRID,ILENCH,YCOMMENT,IRESP) ! !* 1.1 initialize NBUTSHIFT ! --------------------- @@ -295,7 +301,7 @@ SELECT CASE (CBUTYPE) WRITE(YGROUP_NAME,FMT="('UU___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(1, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -318,7 +324,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(1) = 2 WRITE(YGROUP_NAME,FMT="('RJX__',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME,'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME,'CART', IWORKGRID, & ZWORKDATIME, ZWORK, ZWORKTEMP, YBUCOMMENT, & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -367,7 +373,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 3 WRITE(YGROUP_NAME,FMT="('VV___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -389,7 +395,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(1) = 3 WRITE(YGROUP_NAME,FMT="('RJY__',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME,'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME,'CART', IWORKGRID, & ZWORKDATIME, ZWORK, ZWORKTEMP, YBUCOMMENT, & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -438,7 +444,7 @@ SELECT CASE (CBUTYPE) YWORKCOMMENT(:) = 'Budget of momentum along Z axis' IWORKGRID(:) = 4 WRITE(YGROUP_NAME,FMT="('WW___',I4.4)") NBUTSHIFT - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -460,7 +466,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(1) = 4 WRITE(YGROUP_NAME,FMT="('RJZ__',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME,'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME,'CART', IWORKGRID, & ZWORKDATIME, ZWORK, ZWORKTEMP, YBUCOMMENT, & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -493,7 +499,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(1) = 1 WRITE(YGROUP_NAME,FMT="('RJS__',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORK, ZWORKTEMP, YBUCOMMENT, & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -543,7 +549,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('TH___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -589,7 +595,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('TK___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -635,7 +641,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RV___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -681,7 +687,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RC___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -726,7 +732,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RR___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -771,7 +777,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RI___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -816,7 +822,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RS___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -861,7 +867,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RG___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -906,7 +912,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RH___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -955,7 +961,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('SV',I3.3,I4.4)") JSV,NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, 'CART', IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(IP, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1021,10 +1027,10 @@ SELECT CASE (CBUTYPE) WRITE(YRECFM,FMT="('MASK_',I4.4,'.MASK')") NBUTSHIFT WRITE(YCOMMENT,FMT="('X_Y_MASK',I4.4)") NBUTSHIFT ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUT,'XY',ZWORKMASK(:,:,:,:,:,:),IGRID, & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUT,'XY',ZWORKMASK(:,:,:,:,:,:),IGRID, & ILENCH,YCOMMENT,IRESP) WRITE(YRECFM,FMT="('MASK_',I4.4)") NBUTSHIFT - CALL MENU_DIACHRO(HFILEDIA,HLUOUT,YRECFM) + CALL MENU_DIACHRO(TPDIAFILE,HLUOUT,YRECFM) DEALLOCATE(ZWORKMASK) ! !* 3.2 storage of the budgets array @@ -1048,7 +1054,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 2 WRITE(YGROUP_NAME,FMT="('RJX__',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORK, ZWORKTEMP, CBUCOMMENT(1, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1079,7 +1085,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 2 WRITE(YGROUP_NAME,FMT="('UU___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(1, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1106,7 +1112,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 3 WRITE(YGROUP_NAME,FMT="('RJY__',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORK, ZWORKTEMP, CBUCOMMENT(1, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1135,7 +1141,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 3 WRITE(YGROUP_NAME,FMT="('VV___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(2, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1162,7 +1168,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 4 WRITE(YGROUP_NAME,FMT="('RJZ__',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORK, ZWORKTEMP, CBUCOMMENT(1, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1191,7 +1197,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 4 WRITE(YGROUP_NAME,FMT="('WW___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(3, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1218,7 +1224,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RJS__',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORK, ZWORKTEMP, CBUCOMMENT(1, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1249,7 +1255,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('TH___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(4, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1280,7 +1286,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('TK___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(5, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1311,7 +1317,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RV___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(6, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1342,7 +1348,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RC___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(7, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1373,7 +1379,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RR___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(8, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1404,7 +1410,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RI___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(9, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1435,7 +1441,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RS___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(10, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1466,7 +1472,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RG___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(11, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1497,7 +1503,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('RH___',I4.4)") NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(12, :), & YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & @@ -1531,7 +1537,7 @@ SELECT CASE (CBUTYPE) IWORKGRID(:) = 1 WRITE(YGROUP_NAME,FMT="('SV',I3.3,I4.4)") JSV,NBUTSHIFT ! - CALL WRITE_DIACHRO(HFILEDIA, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & + CALL WRITE_DIACHRO(TPDIAFILE, HLUOUT, YGROUP_NAME, CBUTYPE, IWORKGRID, & ZWORKDATIME, ZWORKT, ZWORKTEMP, CBUCOMMENT(12+JSV,:),& YWORKUNIT, YWORKCOMMENT, & LBU_ICP, LBU_JCP, LBU_KCP, & diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90 index a007608e0..b1c8404f1 100644 --- a/src/MNH/write_diachro.f90 +++ b/src/MNH/write_diachro.f90 @@ -9,7 +9,7 @@ ! MASDEV4_7 diachro 2006/05/18 13:07:25 !----------------------------------------------------------------- ! ################################################################# - SUBROUTINE WRITE_DIACHRO(HFILEDIA,HLUOUTDIA,HGROUP,HTYPE, & + SUBROUTINE WRITE_DIACHRO(TPDIAFILE,HLUOUTDIA,HGROUP,HTYPE, & KGRID,PDATIME,PVAR,PTRAJT, & HTITRE,HUNITE,HCOMMENT,OICP,OJCP,OKCP,KIL,KIH,KJL,KJH,KKL,KKH, & PTRAJX,PTRAJY,PTRAJZ,PMASK) @@ -84,36 +84,33 @@ USE MODI_MENU_DIACHRO USE MODD_PARAMETERS, ONLY : JPHEXT USE MODD_CONF USE MODD_BUDGET - +USE MODD_IO_ll, ONLY: TFILEDATA +! IMPLICIT NONE ! !* 0.1 Dummy arguments ! --------------- - -CHARACTER(LEN=*) :: HFILEDIA,HLUOUTDIA -CHARACTER(LEN=*) :: HGROUP, HTYPE -CHARACTER(LEN=*),DIMENSION(:) :: HTITRE, HUNITE, HCOMMENT - -INTEGER,DIMENSION(:) :: KGRID -INTEGER,OPTIONAL :: KIL, KIH -INTEGER,OPTIONAL :: KJL, KJH -INTEGER,OPTIONAL :: KKL, KKH -LOGICAL,OPTIONAL :: OICP, OJCP, OKCP -REAL,DIMENSION(:,:,:,:,:,:),OPTIONAL :: PMASK -REAL,DIMENSION(:,:,:,:,:,:) :: PVAR -REAL,DIMENSION(:,:) :: PDATIME -REAL,DIMENSION(:,:) :: PTRAJT -REAL,DIMENSION(:,:,:),OPTIONAL :: PTRAJX -REAL,DIMENSION(:,:,:),OPTIONAL :: PTRAJY -REAL,DIMENSION(:,:,:),OPTIONAL :: PTRAJZ - +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write +CHARACTER(LEN=*), INTENT(IN) :: HLUOUTDIA +CHARACTER(LEN=*), INTENT(IN) :: HGROUP, HTYPE +INTEGER,DIMENSION(:), INTENT(IN) :: KGRID +REAL,DIMENSION(:,:), INTENT(IN) :: PDATIME +REAL,DIMENSION(:,:,:,:,:,:), INTENT(IN) :: PVAR +REAL,DIMENSION(:,:), INTENT(IN) :: PTRAJT +CHARACTER(LEN=*),DIMENSION(:),INTENT(IN) :: HTITRE, HUNITE, HCOMMENT +LOGICAL, INTENT(IN),OPTIONAL :: OICP, OJCP, OKCP +INTEGER, INTENT(IN),OPTIONAL :: KIL, KIH +INTEGER, INTENT(IN),OPTIONAL :: KJL, KJH +INTEGER, INTENT(IN),OPTIONAL :: KKL, KKH +REAL,DIMENSION(:,:,:), INTENT(IN),OPTIONAL :: PTRAJX +REAL,DIMENSION(:,:,:), INTENT(IN),OPTIONAL :: PTRAJY +REAL,DIMENSION(:,:,:), INTENT(IN),OPTIONAL :: PTRAJZ +REAL,DIMENSION(:,:,:,:,:,:), INTENT(IN),OPTIONAL :: PMASK ! !* 0.1 Local variables ! --------------- - -! CHARACTER(LEN=16) :: YRECFM -CHARACTER(LEN=LEN(HFILEDIA)+4) :: YFILEDIA +CHARACTER(LEN=28) :: YFILEDIA CHARACTER(LEN=20) :: YCOMMENT CHARACTER(LEN=3) :: YJ INTEGER :: ILENG, ILENCH, ILENTITRE, ILENUNITE, ILENCOMMENT, ILE, IRESP @@ -129,6 +126,8 @@ INTEGER,DIMENSION(:),ALLOCATABLE :: ITABCHAR LOGICAL :: GPACK !------------------------------------------------------------------------------ ! +YFILEDIA = TPDIAFILE%CNAME +! GPACK=LPACK LPACK=.FALSE. YCOMMENT='NOTHING' @@ -226,13 +225,12 @@ IF(IRESP == -54)THEN IFTYPEDIA = 0; IVERBDIA = 5 ENDIF ! -YFILEDIA=ADJUSTL(ADJUSTR(HFILEDIA)//'.lfi') -CALL FMLOOK_ll(YFILEDIA,HLUOUTDIA,INUM,IRESPDIA) +CALL FMLOOK_ll(ADJUSTL(ADJUSTR(YFILEDIA)//'.lfi'),HLUOUTDIA,INUM,IRESPDIA) IF (NVERB>=5) THEN - WRITE(ILUOUTDIA,*)' WRITE_DIACHRO: ',TRIM(YFILEDIA),' IRESPDIA=',IRESPDIA + WRITE(ILUOUTDIA,*)' WRITE_DIACHRO: ',TRIM(ADJUSTL(ADJUSTR(YFILEDIA)//'.lfi')),' IRESPDIA=',IRESPDIA ENDIF IF(IRESPDIA == -54)THEN - CALL FMOPEN_ll(HFILEDIA,'WRITE',HLUOUTDIA,INPRARDIA,IFTYPEDIA,IVERBDIA, & + CALL FMOPEN_ll(YFILEDIA,'WRITE',HLUOUTDIA,INPRARDIA,IFTYPEDIA,IVERBDIA, & ININARDIA,IRESPDIA) ENDIF ! @@ -242,7 +240,7 @@ YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TYPE') #if defined(MNH_IOCDF4) -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & HTYPE,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) #else @@ -252,8 +250,8 @@ ALLOCATE(ITABCHAR(ILENG)) DO J = 1,ILENG ITABCHAR(J) = ICHAR(HTYPE(J:J)) ENDDO -!print *,SIZE(ITABCHAR),' ITABCHAR ',ITABCHAR,' KGRID ',KGRID,HLUOUTDIA,HFILEDIA -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +!print *,SIZE(ITABCHAR),' ITABCHAR ',ITABCHAR,' KGRID ',KGRID,HLUOUTDIA,YFILEDIA +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) DEALLOCATE(ITABCHAR) @@ -292,7 +290,7 @@ SELECT CASE(HTYPE) ITABCHAR(29)=IIMASK; ITABCHAR(30)=IJMASK ITABCHAR(31)=IKMASK; ITABCHAR(32)=ITMASK ITABCHAR(33)=INMASK; ITABCHAR(34)=IPMASK - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & KGRID(1),ILENCH,YCOMMENT,IRESPDIA) DEALLOCATE(ITABCHAR) IF (NVERB>=5) THEN @@ -314,9 +312,9 @@ SELECT CASE(HTYPE) ITABCHAR(20)=IIMASK; ITABCHAR(21)=IJMASK ITABCHAR(22)=IKMASK; ITABCHAR(23)=ITMASK ITABCHAR(24)=INMASK; ITABCHAR(25)=IPMASK -! CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ILENTITRE,ILENUNITE, & +! CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ILENTITRE,ILENUNITE, & ! ILENCOMMENT,II,IJ,IK,IT,IN,IP,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, & KGRID(1),ILENCH,YCOMMENT,IRESPDIA) DEALLOCATE(ITABCHAR) END SELECT @@ -329,7 +327,7 @@ ENDIF YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TITRE') #if defined(MNH_IOCDF4) -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & HTITRE(1:IP),KGRID(1),ILENCH,YCOMMENT,IRESPDIA) #else @@ -345,7 +343,7 @@ DO JJ = 1,IP WRITE(ILUOUTDIA,*)JJ,TRIM(HTITRE(JJ)) ENDIF ENDDO -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) DEALLOCATE(ITABCHAR) @@ -360,7 +358,7 @@ ENDIF YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.UNITE') #if defined(MNH_IOCDF4) -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & HUNITE(1:IP),KGRID(1),ILENCH,YCOMMENT,IRESPDIA) #else @@ -376,7 +374,7 @@ DO JJ = 1,IP WRITE(ILUOUTDIA,*)JJ,TRIM(HUNITE(JJ)) ENDIF ENDDO -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) DEALLOCATE(ITABCHAR) @@ -392,7 +390,7 @@ YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.COMMENT') #if defined(MNH_IOCDF4) -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & HCOMMENT(1:IP),KGRID(1),ILENCH,YCOMMENT,IRESPDIA) #else @@ -408,7 +406,7 @@ DO JJ = 1,IP WRITE(ILUOUTDIA,*)JJ,TRIM(HCOMMENT(JJ)) ENDIF ENDDO -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & ITABCHAR,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) DEALLOCATE(ITABCHAR) @@ -440,14 +438,14 @@ DO J = 1,IP ! 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), & + CALL FMWRITBOX(YFILEDIA,YRECFM,HLUOUTDIA,'BUDGET',PVAR(:,:,:,:,:,J),KGRID(J), & HTITRE(J),KIL+JPHEXT,KIH+JPHEXT,KJL+JPHEXT,KJH+JPHEXT,IRESPDIA) ELSE - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J), & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J), & LEN(HTITRE(J)),HTITRE(J),IRESPDIA) ENDIF ELSE - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J), & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--',PVAR(:,:,:,:,:,J),KGRID(J), & LEN(HTITRE(J)),HTITRE(J),IRESPDIA) END IF IF (NVERB>=5) THEN @@ -462,7 +460,7 @@ ENDIF ! YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJT') ILENG = IT*INTRAJT -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & PTRAJT,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) IF (NVERB>=5) THEN WRITE(ILUOUTDIA,*)' 7th ENREGISTREMENT(',TRIM(YRECFM),'): OK' @@ -476,7 +474,7 @@ ENDIF IF(PRESENT(PTRAJX))THEN YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJX') ILENG = IKTRAJX*ITTRAJX*INTRAJX - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & PTRAJX,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) ENDIF ! @@ -485,7 +483,7 @@ ENDIF 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), & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'XY',PMASK,KGRID(1), & ILENCH,YCOMMENT,IRESPDIA) ENDIF ! @@ -494,7 +492,7 @@ ENDIF IF(PRESENT(PTRAJY))THEN YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJY') ILENG = IKTRAJY*ITTRAJY*INTRAJY - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & PTRAJY,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) ENDIF ! @@ -503,7 +501,7 @@ ENDIF IF(PRESENT(PTRAJZ))THEN YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.TRAJZ') ILENG = IKTRAJZ*ITTRAJZ*INTRAJZ - CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & + CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & PTRAJZ,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) ENDIF ! @@ -511,10 +509,10 @@ ENDIF ! YRECFM = ADJUSTL(ADJUSTR(HGROUP)//'.DATIM') ILENG=16*IT -CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--', & +CALL FMWRIT(YFILEDIA,YRECFM,HLUOUTDIA,'--', & PDATIME,KGRID(1),ILENCH,YCOMMENT,IRESPDIA) ! -CALL MENU_DIACHRO(HFILEDIA,HLUOUTDIA,HGROUP) +CALL MENU_DIACHRO(TPDIAFILE,HLUOUTDIA,HGROUP) LPACK=GPACK !----------------------------------------------------------------------------- ! diff --git a/src/MNH/write_les_budgetn.f90 b/src/MNH/write_les_budgetn.f90 index c07e5520d..3f2883415 100644 --- a/src/MNH/write_les_budgetn.f90 +++ b/src/MNH/write_les_budgetn.f90 @@ -14,8 +14,11 @@ MODULE MODI_WRITE_LES_BUDGET_n ! INTERFACE ! - SUBROUTINE WRITE_LES_BUDGET_n(HLES_AVG) + SUBROUTINE WRITE_LES_BUDGET_n(TPDIAFILE,HLES_AVG) ! +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages ! ! or normalizations END SUBROUTINE WRITE_LES_BUDGET_n @@ -25,7 +28,7 @@ END INTERFACE END MODULE MODI_WRITE_LES_BUDGET_n ! ###################### - SUBROUTINE WRITE_LES_BUDGET_n(HLES_AVG) + SUBROUTINE WRITE_LES_BUDGET_n(TPDIAFILE,HLES_AVG) ! ###################### ! ! @@ -59,6 +62,7 @@ END MODULE MODI_WRITE_LES_BUDGET_n ! ------------ ! USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_LES_n USE MODD_CONF_n @@ -76,6 +80,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages ! ! or normalizations ! @@ -415,7 +420,8 @@ END DO ! ------- ! ! -CALL LES_DIACHRO_MASKS(YGROUP,YSUBTITLE(:ILES),"resolved KE budget"//YSUBTITLE(:ILES),"m2/s3",ZLES_BUDGET(:,:,:ILES),HLES_AVG) +CALL LES_DIACHRO_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),"resolved KE budget"//YSUBTITLE(:ILES),"m2/s3", & + ZLES_BUDGET(:,:,:ILES),HLES_AVG) ! !------------------------------------------------------------------------------- ! @@ -661,7 +667,8 @@ ZLES_BUDGET(NLES_K,:,ILES) = ZLES_BUDGET(NLES_K-1,:,ILES) ! ------- ! ! -CALL LES_DIACHRO_MASKS(YGROUP,YSUBTITLE(:ILES),"thetal variance budget"//YSUBTITLE(:ILES),"K2/s",ZLES_BUDGET(:,:,:ILES),HLES_AVG) +CALL LES_DIACHRO_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),"thetal variance budget"//YSUBTITLE(:ILES),"K2/s", & + ZLES_BUDGET(:,:,:ILES),HLES_AVG) ! !------------------------------------------------------------------------------- ! @@ -970,7 +977,8 @@ ZLES_BUDGET(:,:,ILES)=-XLES_RES_ddxa_Thl_SBG_UaW(:,:,1) & ! ------- ! ! -CALL LES_DIACHRO_MASKS(YGROUP,YSUBTITLE(:ILES),"thetal flux budget"//YSUBTITLE(:ILES),"mK/s2",ZLES_BUDGET(:,:,:ILES),HLES_AVG) +CALL LES_DIACHRO_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),"thetal flux budget"//YSUBTITLE(:ILES),"mK/s2", & + ZLES_BUDGET(:,:,:ILES),HLES_AVG) ! ! !------------------------------------------------------------------------------- diff --git a/src/MNH/write_les_rt_budgetn.f90 b/src/MNH/write_les_rt_budgetn.f90 index 14a1d9cb0..886a85f29 100644 --- a/src/MNH/write_les_rt_budgetn.f90 +++ b/src/MNH/write_les_rt_budgetn.f90 @@ -14,10 +14,13 @@ MODULE MODI_WRITE_LES_RT_BUDGET_n ! INTERFACE ! - SUBROUTINE WRITE_LES_RT_BUDGET_n(HLES_AVG) + SUBROUTINE WRITE_LES_RT_BUDGET_n(TPDIAFILE,HLES_AVG) ! -CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages -! ! or normalizations +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write +CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages +! ! or normalizations END SUBROUTINE WRITE_LES_RT_BUDGET_n ! END INTERFACE @@ -25,7 +28,7 @@ END INTERFACE END MODULE MODI_WRITE_LES_RT_BUDGET_n ! ! ###################### - SUBROUTINE WRITE_LES_RT_BUDGET_n(HLES_AVG) + SUBROUTINE WRITE_LES_RT_BUDGET_n(TPDIAFILE,HLES_AVG) ! ###################### ! ! @@ -58,6 +61,7 @@ END MODULE MODI_WRITE_LES_RT_BUDGET_n ! ------------ ! USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_LES_n USE MODD_LES_BUDGET @@ -74,8 +78,9 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages -! ! or normalizations +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write +CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages +! ! or normalizations ! ! !* 0.2 declaration of local variables @@ -345,7 +350,8 @@ ZLES_BUDGET(NLES_K,:,ILES) = ZLES_BUDGET(NLES_K-1,:,ILES) ! ------- ! ! -CALL LES_DIACHRO_MASKS(YGROUP,YSUBTITLE(:ILES),"Rt variance budget"//YSUBTITLE(:ILES),"kg2/kg2/s",ZLES_BUDGET(:,:,:ILES),HLES_AVG) +CALL LES_DIACHRO_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),"Rt variance budget"//YSUBTITLE(:ILES),"kg2/kg2/s", & + ZLES_BUDGET(:,:,:ILES),HLES_AVG) ! ! !------------------------------------------------------------------------------- @@ -651,7 +657,8 @@ ZLES_BUDGET(:,:,ILES)=-XLES_RES_ddxa_Rt_SBG_UaW(:,:,1) & ! ------- ! ! -CALL LES_DIACHRO_MASKS(YGROUP,YSUBTITLE(:ILES),"Rt flux budget"//YSUBTITLE(:ILES),"mkg/kg/s2",ZLES_BUDGET(:,:,:ILES),HLES_AVG) +CALL LES_DIACHRO_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),"Rt flux budget"//YSUBTITLE(:ILES),"mkg/kg/s2", & + ZLES_BUDGET(:,:,:ILES),HLES_AVG) ! ! !------------------------------------------------------------------------------- @@ -897,7 +904,7 @@ ZLES_BUDGET(NLES_K,:,ILES) = ZLES_BUDGET(NLES_K-1,:,ILES) ! ------- ! ! -CALL LES_DIACHRO_MASKS(YGROUP,YSUBTITLE(:ILES),"Thl-Rt covariance budget"//YSUBTITLE(:ILES), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),"Thl-Rt covariance budget"//YSUBTITLE(:ILES), & "Kkg/kg/s",ZLES_BUDGET(:,:,:ILES),HLES_AVG) ! !------------------------------------------------------------------------------- diff --git a/src/MNH/write_les_sv_budgetn.f90 b/src/MNH/write_les_sv_budgetn.f90 index 2ea5623c7..a3270c831 100644 --- a/src/MNH/write_les_sv_budgetn.f90 +++ b/src/MNH/write_les_sv_budgetn.f90 @@ -14,10 +14,13 @@ MODULE MODI_WRITE_LES_SV_BUDGET_n ! INTERFACE ! - SUBROUTINE WRITE_LES_SV_BUDGET_n(HLES_AVG) + SUBROUTINE WRITE_LES_SV_BUDGET_n(TPDIAFILE,HLES_AVG) ! -CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages -! ! or normalizations +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write +CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages +! ! or normalizations END SUBROUTINE WRITE_LES_SV_BUDGET_n ! END INTERFACE @@ -25,7 +28,7 @@ END INTERFACE END MODULE MODI_WRITE_LES_SV_BUDGET_n ! ###################### - SUBROUTINE WRITE_LES_SV_BUDGET_n(HLES_AVG) + SUBROUTINE WRITE_LES_SV_BUDGET_n(TPDIAFILE,HLES_AVG) ! ###################### ! ! @@ -58,6 +61,7 @@ END MODULE MODI_WRITE_LES_SV_BUDGET_n ! ------------ ! USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_LES_n USE MODD_CONF_n @@ -76,9 +80,9 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages -! ! or normalizations -! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write +CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages +! ! or normalizations ! !* 0.2 declaration of local variables ! @@ -389,7 +393,7 @@ DO JSV=1,NSV END DO YTITLE = "Sv variance budget " -CALL LES_DIACHRO_SV_MASKS(YGROUP,YSUBTITLE(:ILES),YTITLE//YSUBTITLE(:ILES),"kg2/kg2/s",ZSV_BUDGET,HLES_AVG) +CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),YTITLE//YSUBTITLE(:ILES),"kg2/kg2/s",ZSV_BUDGET,HLES_AVG) ! DEALLOCATE(ZSV_BUDGET) !------------------------------------------------------------------------------- @@ -759,7 +763,7 @@ DO JSV=1,NSV END DO YTITLE = "Sv flux budget " -CALL LES_DIACHRO_SV_MASKS(YGROUP,YSUBTITLE(:ILES),YTITLE//YSUBTITLE(:ILES),"mkg/kg/s2",ZSV_BUDGET,HLES_AVG) +CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),YTITLE//YSUBTITLE(:ILES),"mkg/kg/s2",ZSV_BUDGET,HLES_AVG) ! DEALLOCATE(ZSV_BUDGET) !------------------------------------------------------------------------------- diff --git a/src/MNH/write_lesn.f90 b/src/MNH/write_lesn.f90 index 0da9df148..1a01c9d12 100644 --- a/src/MNH/write_lesn.f90 +++ b/src/MNH/write_lesn.f90 @@ -10,8 +10,11 @@ MODULE MODI_WRITE_LES_n ! INTERFACE ! - SUBROUTINE WRITE_LES_n(HLES_AVG) + SUBROUTINE WRITE_LES_n(TPDIAFILE,HLES_AVG) ! +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages ! ! or normalizations END SUBROUTINE WRITE_LES_n @@ -21,7 +24,7 @@ END INTERFACE END MODULE MODI_WRITE_LES_n ! ###################### - SUBROUTINE WRITE_LES_n(HLES_AVG) + SUBROUTINE WRITE_LES_n(TPDIAFILE,HLES_AVG) ! ###################### ! ! @@ -60,6 +63,7 @@ END MODULE MODI_WRITE_LES_n ! ------------ ! USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LES USE MODD_LES_n USE MODD_FIELD_n @@ -77,19 +81,19 @@ USE MODE_ll USE MODE_FM ! USE MODE_LES_DIACHRO +USE MODE_LES_SPEC_N USE MODE_MODELN_HANDLER ! USE MODI_WRITE_LES_BUDGET_n USE MODI_WRITE_LES_RT_BUDGET_n USE MODI_WRITE_LES_SV_BUDGET_n ! -USE MODI_LES_SPEC_N -! IMPLICIT NONE ! ! !* 0.1 declarations of arguments ! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE! file to write CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages ! ! or normalizations ! @@ -235,7 +239,6 @@ NLES_CURRENT_JSUP=NLESn_JSUP(IMI) XLES_CURRENT_DOMEGAX=XDXHAT(1) XLES_CURRENT_DOMEGAY=XDYHAT(1) ! -CCURRENT_FMDIAC = CFMDIAC ! ! !* 2. (z,t) profiles (all masks) @@ -280,13 +283,13 @@ IF (HLES_AVG==' ' .OR. HLES_AVG=='A') THEN ZUND_PTS_ll(:,:,:) = NLES_UND_PTS_ll(:,:,:) ZCART_PTS_ll = (NLESn_ISUP(IMI)-NLESn_IINF(IMI)+1) * (NLESn_JSUP(IMI)-NLESn_JINF(IMI)+1) ! - CALL LES_DIACHRO_MASKS("AVG_PTS ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"AVG_PTS ",YSUBTITLE(:), & "number of points used for averaging"//YSUBTITLE(:),"-",ZAVG_PTS_ll,HLES_AVG) - CALL LES_DIACHRO_MASKS("AVG_PTSF",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"AVG_PTSF",YSUBTITLE(:), & "fraction of points used for averaging"//YSUBTITLE(:),"-",ZAVG_PTS_ll/ZCART_PTS_ll,HLES_AVG) - CALL LES_DIACHRO_MASKS("UND_PTS ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"UND_PTS ",YSUBTITLE(:), & "number of points below orography"//YSUBTITLE(:),"-",ZUND_PTS_ll,HLES_AVG) - CALL LES_DIACHRO_MASKS("UND_PTSF",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"UND_PTSF",YSUBTITLE(:), & "fraction of points below orography"//YSUBTITLE(:),"-",ZUND_PTS_ll/ZCART_PTS_ll,HLES_AVG) ! DEALLOCATE(ZAVG_PTS_ll) @@ -297,157 +300,157 @@ END IF !* 2.1 mean quantities ! --------------- ! -CALL LES_DIACHRO_MASKS("MEAN_U ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_U ",YSUBTITLE(:), & "Mean U Profile"//YSUBTITLE(:)," m/s",XLES_MEAN_U,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_V ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_V ",YSUBTITLE(:), & "Mean V Profile"//YSUBTITLE(:)," m/s",XLES_MEAN_V,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_W ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_W ",YSUBTITLE(:), & "Mean W Profile"//YSUBTITLE(:)," m/s",XLES_MEAN_W,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_PRE",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_PRE",YSUBTITLE(:), & "Mean pressure Profile"//YSUBTITLE(:)," Pa",XLES_MEAN_P,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_DP",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_DP",YSUBTITLE(:), & "Mean Dyn production TKE Profile"//YSUBTITLE(:)," m2/s3",XLES_MEAN_DP,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_TP",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_TP",YSUBTITLE(:), & "Mean Thermal production TKE Profile "//YSUBTITLE(:)," m2/s3",XLES_MEAN_TP,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_TR",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_TR",YSUBTITLE(:), & "Mean transport production TKE Profile"//YSUBTITLE(:)," m2/s3",XLES_MEAN_TR,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_DISS",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_DISS",YSUBTITLE(:), & "Mean Dissipation TKE Profile"//YSUBTITLE(:)," m2/s3",XLES_MEAN_DISS,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_LM",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_LM",YSUBTITLE(:), & "Mean mixing length Profile"//YSUBTITLE(:)," m",XLES_MEAN_LM,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_RHO",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RHO",YSUBTITLE(:), & "Mean density Profile"//YSUBTITLE(:)," kg/m3",XLES_MEAN_RHO,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_TH ",YSUBTITLE(:),& +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_TH ",YSUBTITLE(:),& "Mean potential temperature Profile"//YSUBTITLE(:)," K",XLES_MEAN_Th,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEAN_MF ",YSUBTITLE(:),& +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_MF ",YSUBTITLE(:),& "Mass-flux Profile"//YSUBTITLE(:)," m s-1",XLES_MEAN_Mf,HLES_AVG) IF (LUSERC) & -CALL LES_DIACHRO_MASKS("MEAN_THL",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_THL",YSUBTITLE(:), & "Mean liquid potential temperature Profile"//YSUBTITLE(:)," K",XLES_MEAN_Thl,HLES_AVG) IF (LUSERV) & -CALL LES_DIACHRO_MASKS("MEAN_THV",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_THV",YSUBTITLE(:), & "Mean virtual potential temperature Profile"//YSUBTITLE(:)," K",XLES_MEAN_Thv,HLES_AVG) IF (LUSERC) & -CALL LES_DIACHRO_MASKS("MEAN_RT ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RT ",YSUBTITLE(:), & "Mean Rt Profile"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Rt,HLES_AVG) IF (LUSERV) & -CALL LES_DIACHRO_MASKS("MEAN_RV ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RV ",YSUBTITLE(:), & "Mean Rv Profile"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Rv,HLES_AVG) IF (LUSERV) & -CALL LES_DIACHRO_MASKS("MEAN_REHU ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_REHU ",YSUBTITLE(:), & "Mean Rh Profile"//YSUBTITLE(:)," %",XLES_MEAN_Rehu,HLES_AVG) IF (LUSERV) & -CALL LES_DIACHRO_MASKS("MEAN_QS ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_QS ",YSUBTITLE(:), & "Mean Qs Profile"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Qs,HLES_AVG) IF (LUSERC) & -CALL LES_DIACHRO_MASKS("MEAN_KHT ",YSUBTITLE(:),& +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_KHT ",YSUBTITLE(:),& "Eddy-diffusivity (temperature) Profile"//YSUBTITLE(:)," m2 s-1",XLES_MEAN_KHt,HLES_AVG) IF (LUSERC) & -CALL LES_DIACHRO_MASKS("MEAN_KHR ",YSUBTITLE(:),& +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_KHR ",YSUBTITLE(:),& "Eddy-diffusivity (wvapor) Profile"//YSUBTITLE(:)," m2 s-1",XLES_MEAN_KHr,HLES_AVG) IF (LUSERC) & -CALL LES_DIACHRO_MASKS("MEAN_RC ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RC ",YSUBTITLE(:), & "Mean Rc Profile"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Rc,HLES_AVG) IF (LUSERC) & -CALL LES_DIACHRO_MASKS("MEAN_CF ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_CF ",YSUBTITLE(:), & "Mean Cf Profile"//YSUBTITLE(:)," ",XLES_MEAN_Cf,HLES_AVG) IF (LUSERC) & -CALL LES_DIACHRO_MASKS("MEAN_INDCF ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_INDCF ",YSUBTITLE(:), & "Mean Cf>1-6 Profile (0 ou 1)"//YSUBTITLE(:)," ",XLES_MEAN_INDCf,HLES_AVG) IF (LUSERC) & -CALL LES_DIACHRO_MASKS("MEAN_INDCF2 ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_INDCF2 ",YSUBTITLE(:), & "Mean Cf>1-5 Profile (0 ou 1)"//YSUBTITLE(:)," ",XLES_MEAN_INDCf2,HLES_AVG) IF (LUSERR) & -CALL LES_DIACHRO_MASKS("MEAN_RR ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RR ",YSUBTITLE(:), & "Mean Rr Profile"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Rr,HLES_AVG) IF (LUSERI) & -CALL LES_DIACHRO_MASKS("MEAN_RI ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RI ",YSUBTITLE(:), & "Mean Ri Profile"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Ri,HLES_AVG) IF (LUSERS) & -CALL LES_DIACHRO_MASKS("MEAN_RS ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RS ",YSUBTITLE(:), & "Mean Rs Profile"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Rs,HLES_AVG) IF (LUSERG) & -CALL LES_DIACHRO_MASKS("MEAN_RG ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RG ",YSUBTITLE(:), & "Mean Rg Profile"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Rg,HLES_AVG) IF (LUSERH) & -CALL LES_DIACHRO_MASKS("MEAN_RH ",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RH ",YSUBTITLE(:), & "Mean Rh Profile"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Rh,HLES_AVG) IF (NSV>0) & -CALL LES_DIACHRO_SV_MASKS("MEAN_SV ",YSUBTITLE(:), & +CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"MEAN_SV ",YSUBTITLE(:), & "Mean Sv Profiles"//YSUBTITLE(:)," kg/kg",XLES_MEAN_Sv,HLES_AVG) -CALL LES_DIACHRO_MASKS("MEANWIND",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEANWIND",YSUBTITLE(:), & "Profile of Mean Modulus of Wind"//YSUBTITLE(:)," m/s",XLES_MEAN_WIND,HLES_AVG) ! -CALL LES_DIACHRO_MASKS("MEANMSFX",YSUBTITLE(:), & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEANMSFX",YSUBTITLE(:), & "Total updraft mass flux"//YSUBTITLE(:)," kg/m2/s",XLES_RESOLVED_MASSFX ,HLES_AVG) ! IF (LLES_PDF) THEN - CALL LES_DIACHRO_SV_MASKS("PDF_TH ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_TH ",YSUBTITLE(:), & "Pdf potential temperature Profiles"//YSUBTITLE(:)," ",XLES_PDF_TH,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("PDF_W ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_W ",YSUBTITLE(:), & "Pdf vertical velocity Profiles"//YSUBTITLE(:)," ",XLES_PDF_W,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("PDF_THV ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_THV ",YSUBTITLE(:), & "Pdf virtual pot. temp. Profiles"//YSUBTITLE(:)," ",XLES_PDF_THV,HLES_AVG) IF (LUSERV) THEN - CALL LES_DIACHRO_SV_MASKS("PDF_RV ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RV ",YSUBTITLE(:), & "Pdf Rv Profiles"//YSUBTITLE(:)," ",XLES_PDF_RV,HLES_AVG) END IF IF (LUSERC) THEN - CALL LES_DIACHRO_SV_MASKS("PDF_RC ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RC ",YSUBTITLE(:), & "Pdf Rc Profiles"//YSUBTITLE(:)," ",XLES_PDF_RC,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("PDF_RT ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RT ",YSUBTITLE(:), & "Pdf Rt Profiles"//YSUBTITLE(:)," ",XLES_PDF_RT,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("PDF_THL ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_THL ",YSUBTITLE(:), & "Pdf Thl Profiles"//YSUBTITLE(:)," ",XLES_PDF_THL,HLES_AVG) END IF IF (LUSERR) & - CALL LES_DIACHRO_SV_MASKS("PDF_RR ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RR ",YSUBTITLE(:), & "Pdf Rr Profiles"//YSUBTITLE(:)," ",XLES_PDF_RR,HLES_AVG) IF (LUSERI) & - CALL LES_DIACHRO_SV_MASKS("PDF_RI ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RI ",YSUBTITLE(:), & "Pdf Ri Profiles"//YSUBTITLE(:)," ",XLES_PDF_RI,HLES_AVG) IF (LUSERS) & - CALL LES_DIACHRO_SV_MASKS("PDF_RS ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RS ",YSUBTITLE(:), & "Pdf Rs Profiles"//YSUBTITLE(:)," ",XLES_PDF_RS,HLES_AVG) IF (LUSERG) & - CALL LES_DIACHRO_SV_MASKS("PDF_RG ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"PDF_RG ",YSUBTITLE(:), & "Pdf Rg Profiles"//YSUBTITLE(:)," ",XLES_PDF_RG,HLES_AVG) END IF @@ -456,316 +459,316 @@ END IF ! ------------------- ! IF (LLES_RESOLVED) THEN - CALL LES_DIACHRO_MASKS("RES_U2 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_U2 ",YSUBTITLE(:), & "Resolved <u2> variance "//YSUBTITLE(:),"m2/s2",XLES_RESOLVED_U2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_V2 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_V2 ",YSUBTITLE(:), & "Resolved <v2> variance"//YSUBTITLE(:),"m2/s2",XLES_RESOLVED_V2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_W2 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2 ",YSUBTITLE(:), & "Resolved <w2> variance"//YSUBTITLE(:),"m2/s2",XLES_RESOLVED_W2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_UV ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UV ",YSUBTITLE(:), & "Resolved <uv> Flux"//YSUBTITLE(:),"m2/s2",XLES_RESOLVED_UV,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WU ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WU ",YSUBTITLE(:), & "Resolved <wu> Flux"//YSUBTITLE(:),"m2/s2",XLES_RESOLVED_WU,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WV ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WV ",YSUBTITLE(:), & "Resolved <wv> Flux"//YSUBTITLE(:),"m2/s2",XLES_RESOLVED_WV,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_KE ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_KE ",YSUBTITLE(:), & "Resolved TKE Profile"//YSUBTITLE(:),"m2/s2",XLES_RESOLVED_Ke,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_P2 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_P2 ",YSUBTITLE(:), & "Resolved pressure variance"//YSUBTITLE(:),"Pa2",XLES_RESOLVED_P2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_UPZ ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UPZ ",YSUBTITLE(:), & "Resolved <up> horizontal Flux"//YSUBTITLE(:),"Pa/s",XLES_RESOLVED_UP,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_VPZ ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VPZ ",YSUBTITLE(:), & "Resolved <vp> horizontal Flux"//YSUBTITLE(:),"Pa/s",XLES_RESOLVED_VP,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WPZ ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WPZ ",YSUBTITLE(:), & "Resolved <wp> vertical Flux"//YSUBTITLE(:),"Pa/s",XLES_RESOLVED_WP,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO_MASKS("RES_THTV ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THTV ",YSUBTITLE(:), & "Resolved potential temperature - virtual potential temperature covariance"//YSUBTITLE(:), & "K2",XLES_RESOLVED_ThThv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_MASKS("RES_TLTV ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLTV ",YSUBTITLE(:), & "Resolved liquid potential temperature - virtual potential temperature covariance"//YSUBTITLE(:), & "K2",XLES_RESOLVED_ThlThv,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_TH2 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TH2 ",YSUBTITLE(:), & "Resolved potential temperature variance"//YSUBTITLE(:),"K2",XLES_RESOLVED_Th2,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_MASKS("RES_THL2",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THL2",YSUBTITLE(:), & "Resolved liquid potential temperature variance"//YSUBTITLE(:),"K2",XLES_RESOLVED_Thl2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_UTH ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UTH ",YSUBTITLE(:), & "Resolved <uth> horizontal Flux"//YSUBTITLE(:),"mK/s",XLES_RESOLVED_UTh,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_VTH ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VTH ",YSUBTITLE(:), & "Resolved <vth> horizontal Flux"//YSUBTITLE(:),"mK/s",XLES_RESOLVED_VTh,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WTH ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WTH ",YSUBTITLE(:), & "Resolved <wth> vertical Flux"//YSUBTITLE(:),"mK/s",XLES_RESOLVED_WTh,HLES_AVG) IF (LUSERC) THEN - CALL LES_DIACHRO_MASKS("RES_UTHL",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UTHL",YSUBTITLE(:), & "Resolved <uthl> horizontal Flux"//YSUBTITLE(:),"mK/s",XLES_RESOLVED_UThl,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_VTHL",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VTHL",YSUBTITLE(:), & "Resolved <vthl> horizontal Flux"//YSUBTITLE(:),"mK/s",XLES_RESOLVED_VThl,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WTHL",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WTHL",YSUBTITLE(:), & "Resolved <wthl> vertical Flux "//YSUBTITLE(:),"mK/s",XLES_RESOLVED_WThl,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_RT2 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RT2 ",YSUBTITLE(:), & "Resolved total water variance"//YSUBTITLE(:),"kg2/kg2",XLES_RESOLVED_Rt2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WRT ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRT ",YSUBTITLE(:), & "Resolved <wrt> vertical Flux "//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_WRt,HLES_AVG) END IF IF (LUSERV) THEN - CALL LES_DIACHRO_MASKS("RES_UTHV",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UTHV",YSUBTITLE(:), & "Resolved <uthv> horizontal Flux"//YSUBTITLE(:),"mK/s",XLES_RESOLVED_UThv,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_VTHV",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VTHV",YSUBTITLE(:), & "Resolved <vthl> horizontal Flux"//YSUBTITLE(:),"mK/s",XLES_RESOLVED_VThv,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WTHV",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WTHV",YSUBTITLE(:), & "Resolved <wthv> vertical Flux "//YSUBTITLE(:),"mK/s",XLES_RESOLVED_WThv,HLES_AVG) END IF ! IF (LUSERV) THEN - CALL LES_DIACHRO_MASKS("RES_RV2 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RV2 ",YSUBTITLE(:), & "Resolved water vapor variance"//YSUBTITLE(:),"kg2/kg2",XLES_RESOLVED_Rv2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_THRV",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THRV",YSUBTITLE(:), & "Resolved <thrv> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThRv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_MASKS("RES_TLRV",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLRV",YSUBTITLE(:), & "Resolved <thlrv> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThlRv,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_TVRV",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TVRV",YSUBTITLE(:), & "Resolved <thvrv> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThvRv,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_URV ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_URV ", YSUBTITLE(:), & "Resolved <urv> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_URv,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_VRV ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VRV ", YSUBTITLE(:), & "Resolved <vrv> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_VRv,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WRV ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRV ", YSUBTITLE(:), & "Resolved <wrv> vertical flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_WRv,HLES_AVG) END IF IF (LUSERC) THEN - CALL LES_DIACHRO_MASKS("RES_RC2 ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RC2 ", YSUBTITLE(:), & "Resolved cloud water variance"//YSUBTITLE(:),"kg2/kg2",XLES_RESOLVED_Rc2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_THRC", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THRC", YSUBTITLE(:), & "Resolved <thrc> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThRc,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_TLRC", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLRC", YSUBTITLE(:), & "Resolved <thlrc> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThlRc,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_TVRC", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TVRC", YSUBTITLE(:), & "Resolved <thvrc> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThvRc,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_URC ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_URC ", YSUBTITLE(:), & "Resolved <urc> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_URc,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_VRC ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VRC ", YSUBTITLE(:), & "Resolved <vrc> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_VRc,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WRC ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRC ", YSUBTITLE(:), & "Resolved <wrc> vertical flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_WRc,HLES_AVG) END IF IF (LUSERI) THEN - CALL LES_DIACHRO_MASKS("RES_RI2 ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RI2 ", YSUBTITLE(:), & "Resolved cloud ice variance"//YSUBTITLE(:),"kg2/kg2",XLES_RESOLVED_Ri2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_THRI", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_THRI", YSUBTITLE(:), & "Resolved <thri> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThRi,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_TLRI", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLRI", YSUBTITLE(:), & "Resolved <thlri> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThlRi,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_TVRI", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TVRI", YSUBTITLE(:), & "Resolved <thvri> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThvRi,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_URI ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_URI ", YSUBTITLE(:), & "Resolved <uri> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_URi,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_VRI ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VRI ", YSUBTITLE(:), & "Resolved <vri> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_VRi,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WRI ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRI ", YSUBTITLE(:), & "Resolved <wri> vertical flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_WRi,HLES_AVG) END IF IF (LUSERR) THEN - CALL LES_DIACHRO_MASKS("RES_WRR ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRR ", YSUBTITLE(:), & "Resolved <wrr> vertical flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_WRr,HLES_AVG) - CALL LES_DIACHRO_MASKS("INPRR3D ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"INPRR3D ", YSUBTITLE(:), & "Precipitation flux"//YSUBTITLE(:),"m/s",XLES_INPRR3D,HLES_AVG) - CALL LES_DIACHRO_MASKS("MAXINPR3D ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"MAXINPR3D ", YSUBTITLE(:), & "Max Precip flux"//YSUBTITLE(:),"m/s",XLES_MAX_INPRR3D,HLES_AVG) - CALL LES_DIACHRO_MASKS("EVAP3D ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"EVAP3D ", YSUBTITLE(:), & "Evaporation profile"//YSUBTITLE(:),"kg/kg/s",XLES_EVAP3D,HLES_AVG) ENDIF IF (NSV>0) THEN - CALL LES_DIACHRO_SV_MASKS("RES_SV2 ", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_SV2 ", YSUBTITLE(:), & "Resolved scalar variables variances"//YSUBTITLE(:),"kg2/kg2",XLES_RESOLVED_Sv2,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("RES_THSV", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_THSV", YSUBTITLE(:), & "Resolved <ThSv> variance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThSv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SV_MASKS("RES_TLSV", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_TLSV", YSUBTITLE(:), & "Resolved <ThlSv> variance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThlSv,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO_SV_MASKS("RES_TVSV", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_TVSV", YSUBTITLE(:), & "Resolved <ThvSv> variance"//YSUBTITLE(:),"Kkg/kg",XLES_RESOLVED_ThvSv,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("RES_USV ", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_USV ", YSUBTITLE(:), & "Resolved <uSv> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_USv,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("RES_VSV ", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_VSV ", YSUBTITLE(:), & "Resolved <vSv> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_VSv,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("RES_WSV ", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_WSV ", YSUBTITLE(:), & "Resolved <wSv> vertical flux"//YSUBTITLE(:),"mkg/kg/s",XLES_RESOLVED_WSv,HLES_AVG) END IF - CALL LES_DIACHRO_MASKS("RES_U3 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_U3 ",YSUBTITLE(:), & "Resolved <w3>"//YSUBTITLE(:),"m3/s3",XLES_RESOLVED_U3,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_V3 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_V3 ",YSUBTITLE(:), & "Resolved <w3>"//YSUBTITLE(:),"m3/s3",XLES_RESOLVED_V3,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_W3 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W3 ",YSUBTITLE(:), & "Resolved <w3>"//YSUBTITLE(:),"m3/s3",XLES_RESOLVED_W3,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_U4 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_U4 ",YSUBTITLE(:), & "Resolved <w3>"//YSUBTITLE(:),"m4/s4",XLES_RESOLVED_U4,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_V4 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_V4 ",YSUBTITLE(:), & "Resolved <w3>"//YSUBTITLE(:),"m4/s4",XLES_RESOLVED_V4,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_W4 ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W4 ",YSUBTITLE(:), & "Resolved <w3>"//YSUBTITLE(:),"m4/s4",XLES_RESOLVED_W4,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WTL2",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WTL2",YSUBTITLE(:), & "Resolved <wThl2>"//YSUBTITLE(:),"mK2/s",XLES_RESOLVED_WThl2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_W2TL",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2TL",YSUBTITLE(:), & "Resolved <w2Thl>"//YSUBTITLE(:),"m2K/s2",XLES_RESOLVED_W2Thl,HLES_AVG) IF (LUSERV) THEN - CALL LES_DIACHRO_MASKS("RES_WRV2",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRV2",YSUBTITLE(:), & "Resolved <wRv2>"//YSUBTITLE(:),"mkg2/kg2/s",XLES_RESOLVED_WRv2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_W2RV",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2RV",YSUBTITLE(:), & "Resolved <w2Rv>"//YSUBTITLE(:),"m2kg/kg/s2",XLES_RESOLVED_W2Rv,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WRT2",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRT2",YSUBTITLE(:), & "Resolved <wRt2>"//YSUBTITLE(:),"mkg2/kg2/s",XLES_RESOLVED_WRt2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_W2RT",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2RT",YSUBTITLE(:), & "Resolved <w2Rt>"//YSUBTITLE(:),"m2kg/kg/s2",XLES_RESOLVED_W2Rt,HLES_AVG) - CALL LES_DIACHRO_MASKS("RE_WTLRV",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WTLRV",YSUBTITLE(:), & "Resolved <wThlRv>"//YSUBTITLE(:),"mKkg/kg/s",XLES_RESOLVED_WThlRv,HLES_AVG) - CALL LES_DIACHRO_MASKS("RE_WTLRT",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WTLRT",YSUBTITLE(:), & "Resolved <wThlRt>"//YSUBTITLE(:),"mKkg/kg/s",XLES_RESOLVED_WThlRt,HLES_AVG) END IF IF (LUSERC) THEN - CALL LES_DIACHRO_MASKS("RES_WRC2",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRC2",YSUBTITLE(:), & "Resolved <wRc2>"//YSUBTITLE(:),"mkg2/kg2/s",XLES_RESOLVED_WRc2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_W2RC",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2RC",YSUBTITLE(:), & "Resolved <w2Rc>"//YSUBTITLE(:),"m2kg/kg/s2",XLES_RESOLVED_W2Rc,HLES_AVG) - CALL LES_DIACHRO_MASKS("RE_WTLRC",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WTLRC",YSUBTITLE(:), & "Resolved <wThlRc>"//YSUBTITLE(:),"mKkg/kg/s",XLES_RESOLVED_WThlRc,HLES_AVG) - CALL LES_DIACHRO_MASKS("RE_WRVRC",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WRVRC",YSUBTITLE(:), & "Resolved <wRvRc>"//YSUBTITLE(:),"mkg2/kg2/s",XLES_RESOLVED_WRvRc,HLES_AVG) END IF IF (LUSERI) THEN - CALL LES_DIACHRO_MASKS("RES_WRI2",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WRI2",YSUBTITLE(:), & "Resolved <wRi2>"//YSUBTITLE(:),"mkg2/kg2/s",XLES_RESOLVED_WRi2,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_W2RI",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_W2RI",YSUBTITLE(:), & "Resolved <w2Ri>"//YSUBTITLE(:),"m2kg/kg/s2",XLES_RESOLVED_W2Ri,HLES_AVG) - CALL LES_DIACHRO_MASKS("RE_WTLRI",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WTLRI",YSUBTITLE(:), & "Resolved <wThlRi>"//YSUBTITLE(:),"mKkg/kg/s",XLES_RESOLVED_WThlRi,HLES_AVG) - CALL LES_DIACHRO_MASKS("RE_WRVRI",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RE_WRVRI",YSUBTITLE(:), & "Resolved <wRvRi>"//YSUBTITLE(:),"mkg2/kg2/s",XLES_RESOLVED_WRvRi,HLES_AVG) END IF IF (NSV>0) THEN - CALL LES_DIACHRO_SV_MASKS("RES_WSV2",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_WSV2",YSUBTITLE(:), & "Resolved <wSv2>"//YSUBTITLE(:),"mkg2/kg2/s",XLES_RESOLVED_WSv2,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("RES_W2SV",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_W2SV",YSUBTITLE(:), & "Resolved <w2Sv>"//YSUBTITLE(:),"m2kg/kg/s2",XLES_RESOLVED_W2Sv,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("RE_WTLSV",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RE_WTLSV",YSUBTITLE(:), & "Resolved <wThlSv>"//YSUBTITLE(:),"mKkg/kg/s",XLES_RESOLVED_WThlSv,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("RE_WRVSV",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RE_WRVSV",YSUBTITLE(:), & "Resolved <wRvSv>"//YSUBTITLE(:),"mkg2/kg2/s",XLES_RESOLVED_WRvSv,HLES_AVG) END IF - CALL LES_DIACHRO_MASKS("RES_TLPZ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_TLPZ",YSUBTITLE(:), & "Resolved <Thldp/dz>"//YSUBTITLE(:),"KPa/m",XLES_RESOLVED_ThlPz,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO_MASKS("RES_RVPZ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RVPZ",YSUBTITLE(:), & "Resolved <Rvdp/dz>"//YSUBTITLE(:),"kg2/kg2Pa/m",XLES_RESOLVED_RvPz,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_MASKS("RES_RCPZ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RCPZ",YSUBTITLE(:), & "Resolved <Rcdp/dz>"//YSUBTITLE(:),"kg2/kg2Pa/m",XLES_RESOLVED_RcPz,HLES_AVG) IF (LUSERI) & - CALL LES_DIACHRO_MASKS("RES_RIPZ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_RIPZ",YSUBTITLE(:), & "Resolved <Ridp/dz>"//YSUBTITLE(:),"kg2/kg2Pa/m",XLES_RESOLVED_RiPz,HLES_AVG) IF (NSV>0) THEN - CALL LES_DIACHRO_SV_MASKS("RES_SVPZ",YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"RES_SVPZ",YSUBTITLE(:), & "Resolved <Svdp/dz>"//YSUBTITLE(:),"kg2/kg2Pa/m",XLES_RESOLVED_SvPz,HLES_AVG) END IF - CALL LES_DIACHRO_MASKS("RES_UKE ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_UKE ", YSUBTITLE(:), & "Resolved flux of resolved kinetic energy"//YSUBTITLE(:),"m3/s3",XLES_RESOLVED_UKe,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_VKE ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_VKE ", YSUBTITLE(:), & "Resolved flux of resolved kinetic energy"//YSUBTITLE(:),"m3/s3",XLES_RESOLVED_VKe,HLES_AVG) - CALL LES_DIACHRO_MASKS("RES_WKE ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RES_WKE ", YSUBTITLE(:), & "Resolved flux of resolved kinetic energy"//YSUBTITLE(:),"m3/s3",XLES_RESOLVED_WKe,HLES_AVG) END IF @@ -776,173 +779,173 @@ END IF ! IF (LLES_SUBGRID) THEN - CALL LES_DIACHRO_MASKS("SBG_TKE ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_TKE ",YSUBTITLE(:), & "Subgrid TKE"//YSUBTITLE(:),"m2/s2",XLES_SUBGRID_Tke,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_U2 ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_U2 ", YSUBTITLE(:), & "Subgrid <u2> variance"//YSUBTITLE(:),"m2/s2",XLES_SUBGRID_U2,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_V2 ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_V2 ", YSUBTITLE(:), & "Subgrid <v2> variance"//YSUBTITLE(:),"m2/s2",XLES_SUBGRID_V2,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_W2 ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_W2 ", YSUBTITLE(:), & "Subgrid <w2> variance"//YSUBTITLE(:),"m2/s2",XLES_SUBGRID_W2,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_UV ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_UV ", YSUBTITLE(:), & "Subgrid <uv> flux"//YSUBTITLE(:),"m2/s2",XLES_SUBGRID_UV,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_WU ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WU ", YSUBTITLE(:), & "Subgrid <wu> flux"//YSUBTITLE(:),"m2/s2",XLES_SUBGRID_WU,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_WV ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WV ", YSUBTITLE(:), & "Subgrid <wv> flux"//YSUBTITLE(:),"m2/s2",XLES_SUBGRID_WV,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_THL2", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_THL2", YSUBTITLE(:), & "Subgrid liquid potential temperature variance"//YSUBTITLE(:),"K2",XLES_SUBGRID_Thl2,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_UTHL", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_UTHL", YSUBTITLE(:), & "Subgrid hor. flux of liquid potential temperature"//YSUBTITLE(:),"mK/s",XLES_SUBGRID_UThl,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_VTHL", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_VTHL", YSUBTITLE(:), & "Subgrid hor. flux of liquid potential temperature"//YSUBTITLE(:),"mK/s",XLES_SUBGRID_VThl,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_WTHL", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WTHL", YSUBTITLE(:), & "Subgrid vert. flux of liquid potential temperature"//YSUBTITLE(:),"mK/s",XLES_SUBGRID_WThl,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_WP ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WP ",YSUBTITLE(:), & "Subgrid <wp> vertical Flux"//YSUBTITLE(:),"mPa/s",XLES_SUBGRID_WP,HLES_AVG) !! !! - CALL LES_DIACHRO_MASKS("THLUP_MF",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"THLUP_MF",YSUBTITLE(:), & "Subgrid <thl> of updraft"//YSUBTITLE(:),"K",XLES_SUBGRID_THLUP_MF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("RTUP_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RTUP_MF ",YSUBTITLE(:), & "Subgrid <rt> of updraft"//YSUBTITLE(:),"kg/kg",XLES_SUBGRID_RTUP_MF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("RVUP_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RVUP_MF ",YSUBTITLE(:), & "Subgrid <rv> of updraft"//YSUBTITLE(:),"kg/kg",XLES_SUBGRID_RVUP_MF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("RCUP_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RCUP_MF ",YSUBTITLE(:), & "Subgrid <rc> of updraft"//YSUBTITLE(:),"kg/kg",XLES_SUBGRID_RCUP_MF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("RIUP_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"RIUP_MF ",YSUBTITLE(:), & "Subgrid <ri> of updraft"//YSUBTITLE(:),"kg/kg",XLES_SUBGRID_RIUP_MF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("WUP_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"WUP_MF ",YSUBTITLE(:), & "Subgrid <w> of updraft"//YSUBTITLE(:),"m/s",XLES_SUBGRID_WUP_MF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("MAFLX_MF",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"MAFLX_MF",YSUBTITLE(:), & "Subgrid <MF> of updraft"//YSUBTITLE(:),"kg/m2/s",XLES_SUBGRID_MASSFLUX,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("DETR_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"DETR_MF ",YSUBTITLE(:), & "Subgrid <detr> of updraft"//YSUBTITLE(:),"kg/m3/s",XLES_SUBGRID_DETR,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("ENTR_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"ENTR_MF ",YSUBTITLE(:), & "Subgrid <entr> of updraft"//YSUBTITLE(:),"kg/m3/s",XLES_SUBGRID_ENTR,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("FRCUP_MF",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"FRCUP_MF",YSUBTITLE(:), & "Subgrid <FracUp> of updraft"//YSUBTITLE(:),"-",XLES_SUBGRID_FRACUP,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("THVUP_MF",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"THVUP_MF",YSUBTITLE(:), & "Subgrid <thv> of updraft"//YSUBTITLE(:),"K",& XLES_SUBGRID_THVUP_MF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("WTHL_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"WTHL_MF ",YSUBTITLE(:), & "Subgrid <wthl> of mass flux convection scheme"//YSUBTITLE(:),"mk/s",& XLES_SUBGRID_WTHLMF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("WRT_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"WRT_MF ",YSUBTITLE(:), & "Subgrid <wrt> of mass flux convection scheme"//YSUBTITLE(:),"mkg/kg/s",& XLES_SUBGRID_WRTMF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("WTHV_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"WTHV_MF ",YSUBTITLE(:), & "Subgrid <wthv> of mass flux convection scheme"//YSUBTITLE(:),"mK/s",& XLES_SUBGRID_WTHVMF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("WU_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"WU_MF ",YSUBTITLE(:), & "Subgrid <wu> of mass flux convection scheme"//YSUBTITLE(:),"m2/s2",& XLES_SUBGRID_WUMF,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("WV_MF ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"WV_MF ",YSUBTITLE(:), & "Subgrid <wv> of mass flux convection scheme"//YSUBTITLE(:),"m2/s2",& XLES_SUBGRID_WVMF,HLES_AVG) !! - CALL LES_DIACHRO_MASKS("SBG_PHI3",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_PHI3",YSUBTITLE(:), & "Subgrid Phi3 function"//YSUBTITLE(:),"-",XLES_SUBGRID_PHI3,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_LMIX",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_LMIX",YSUBTITLE(:), & "Subgrid Mixing Length"//YSUBTITLE(:),"-",XLES_SUBGRID_LMix,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_LDIS",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_LDIS",YSUBTITLE(:), & "Subgrid Dissipation Length"//YSUBTITLE(:),"-",XLES_SUBGRID_LDiss,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_KM ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_KM ",YSUBTITLE(:), & "Eddy diffusivity for momentum"//YSUBTITLE(:),"m2/s",XLES_SUBGRID_Km,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_KH ",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_KH ",YSUBTITLE(:), & "Eddy diffusivity for heat"//YSUBTITLE(:),"m2/s",XLES_SUBGRID_Kh,HLES_AVG) ! IF (LUSERV) THEN - CALL LES_DIACHRO_MASKS("SBG_WTHV", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WTHV", YSUBTITLE(:), & "Subgrid vert. flux of liquid potential temperature"//YSUBTITLE(:),"mK/s",XLES_SUBGRID_WThv,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_RT2 ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_RT2 ", YSUBTITLE(:), & "Subgrid total water variance"//YSUBTITLE(:),"kg2/kg2",XLES_SUBGRID_Rt2,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_TLRT", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_TLRT", YSUBTITLE(:), & "Subgrid <thlrt> covariance"//YSUBTITLE(:),"Kkg/kg",XLES_SUBGRID_ThlRt,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_URT ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_URT ", YSUBTITLE(:), & "Subgrid total water horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_SUBGRID_URt,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_VRT ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_VRT ", YSUBTITLE(:), & "Subgrid total water horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_SUBGRID_VRt,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_WRT ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WRT ", YSUBTITLE(:), & "Subgrid total water vertical flux"//YSUBTITLE(:),"mkg/kg/s",XLES_SUBGRID_WRt,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_PSI3",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_PSI3",YSUBTITLE(:), & "Subgrid Psi3 function"//YSUBTITLE(:),"-",XLES_SUBGRID_PSI3,HLES_AVG) END IF IF (LUSERC) THEN - CALL LES_DIACHRO_MASKS("SBG_RC2 ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_RC2 ", YSUBTITLE(:), & "Subgrid cloud water variance"//YSUBTITLE(:),"kg2/kg2",XLES_SUBGRID_Rc2,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_URC ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_URC ", YSUBTITLE(:), & "Subgrid cloud water horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_SUBGRID_URc,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_VRC ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_VRC ", YSUBTITLE(:), & "Subgrid cloud water horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_SUBGRID_VRc,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_WRC ", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WRC ", YSUBTITLE(:), & "Subgrid cloud water vertical flux"//YSUBTITLE(:),"mkg/kg/s",XLES_SUBGRID_WRc,HLES_AVG) END IF IF (NSV>0) THEN - CALL LES_DIACHRO_SV_MASKS("SBG_USV ", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"SBG_USV ", YSUBTITLE(:), & "Subgrid <uSv> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_SUBGRID_USv,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("SBG_VSV ", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"SBG_VSV ", YSUBTITLE(:), & "Subgrid <vSv> horizontal flux"//YSUBTITLE(:),"mkg/kg/s",XLES_SUBGRID_VSv,HLES_AVG) - CALL LES_DIACHRO_SV_MASKS("SBG_WSV ", YSUBTITLE(:), & + CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,"SBG_WSV ", YSUBTITLE(:), & "Subgrid <wSv> vertical flux"//YSUBTITLE(:),"mkg/kg/s",XLES_SUBGRID_WSv,HLES_AVG) END IF - CALL LES_DIACHRO_MASKS("SBG_UTKE", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_UTKE", YSUBTITLE(:), & "Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"m3/s3",XLES_SUBGRID_UTke,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_VTKE", YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_VTKE", YSUBTITLE(:), & "Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"m3/s3",XLES_SUBGRID_VTke,HLES_AVG) - CALL LES_DIACHRO_MASKS("SBG_WTKE",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WTKE",YSUBTITLE(:), & "Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"m3/s3",XLES_SUBGRID_WTke,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("SBG_W2TL",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_W2TL",YSUBTITLE(:), & "Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"m2K/s2",XLES_SUBGRID_W2Thl,HLES_AVG) ! - CALL LES_DIACHRO_MASKS("SBG_WTL2",YSUBTITLE(:), & + CALL LES_DIACHRO_MASKS(TPDIAFILE,"SBG_WTL2",YSUBTITLE(:), & "Subgrid flux of subgrid kinetic energy"//YSUBTITLE(:),"mK2/s",XLES_SUBGRID_WThl2,HLES_AVG) ! END IF @@ -951,155 +954,155 @@ END IF ! ------------------ ! IF (LLES_UPDRAFT) THEN - CALL LES_DIACHRO("UP_FRAC ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_FRAC ", & "Updraft fraction","-",XLES_UPDRAFT,HLES_AVG) - CALL LES_DIACHRO("UP_W ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_W ", & "Updraft W mean value","m/s",XLES_UPDRAFT_W,HLES_AVG) - CALL LES_DIACHRO("UP_TH ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_TH ", & "Updraft potential temperature mean value","K",XLES_UPDRAFT_Th,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("UP_THL ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THL ", & "Updraft liquid potential temperature mean value","K",XLES_UPDRAFT_Thl,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO("UP_THV ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THV ", & "Updraft virutal potential temperature mean value","K",XLES_UPDRAFT_Thv,HLES_AVG) - CALL LES_DIACHRO("UP_KE ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_KE ", & "Updraft resolved TKE mean value","m2/s2",XLES_UPDRAFT_Ke,HLES_AVG) - CALL LES_DIACHRO("UP_TKE ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_TKE ", & "Updraft subgrid TKE mean value","m2/s2",XLES_UPDRAFT_Tke,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO("UP_RV ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RV ", & "Updraft water vapor mean value","kg/kg",XLES_UPDRAFT_Rv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("UP_RC ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RC ", & "Updraft cloud water mean value","kg/kg",XLES_UPDRAFT_Rc,HLES_AVG) IF (LUSERR) & - CALL LES_DIACHRO("UP_RR ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RR ", & "Updraft rain mean value","kg/kg",XLES_UPDRAFT_Rr,HLES_AVG) IF (LUSERI) & - CALL LES_DIACHRO("UP_RI ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RI ", & "Updraft ice mean value","kg/kg",XLES_UPDRAFT_Ri,HLES_AVG) IF (LUSERS) & - CALL LES_DIACHRO("UP_RS ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RS ", & "Updraft snow mean value","kg/kg",XLES_UPDRAFT_Rs,HLES_AVG) IF (LUSERG) & - CALL LES_DIACHRO("UP_RG ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RG ", & "Updraft graupel mean value","kg/kg",XLES_UPDRAFT_Rg,HLES_AVG) IF (LUSERH) & - CALL LES_DIACHRO("UP_RH ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RH ", & "Updraft hail mean value","kg/kg",XLES_UPDRAFT_Rh,HLES_AVG) IF (NSV>0) & - CALL LES_DIACHRO_SV("UP_SV ", & + CALL LES_DIACHRO_SV(TPDIAFILE,"UP_SV ", & "Updraft scalar variables mean values","kg/kg",XLES_UPDRAFT_Sv,HLES_AVG) ! - CALL LES_DIACHRO("UP_TH2 ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_TH2 ", & "Updraft resolved Theta variance ","K2",XLES_UPDRAFT_Th2,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("UP_THL2", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THL2", & "Updraft resolved Theta_l variance ","K2",XLES_UPDRAFT_Thl2,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO("UP_THTV", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THTV", & "Updraft resolved Theta Theta_v covariance ","K2",XLES_UPDRAFT_ThThv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("UP_TLTV", & + CALL LES_DIACHRO(TPDIAFILE,"UP_TLTV", & "Updraft resolved Theta_l Theta_v covariance ","K2",XLES_UPDRAFT_ThlThv,HLES_AVG) - CALL LES_DIACHRO("UP_WTH ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_WTH ", & "Updraft resolved WTh flux","mK/s",XLES_UPDRAFT_WTh,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("UP_WTHL ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_WTHL ", & "Updraft resolved WThl flux","mK/s",XLES_UPDRAFT_WThl,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO("UP_WTHV ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_WTHV ", & "Updraft resolved WThv flux","mK/s",XLES_UPDRAFT_WThv,HLES_AVG) ! IF (LUSERV) THEN - CALL LES_DIACHRO("UP_RV2 ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RV2 ", & "Updraft resolved water vapor variance","kg2/kg2",XLES_UPDRAFT_Rv2,HLES_AVG) - CALL LES_DIACHRO("UP_THRV ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THRV ", & "Updraft resolved <thrv> covariance","Kkg/kg",XLES_UPDRAFT_ThRv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("UP_THLRV", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THLRV", & "Updraft resolved <thlrv> covariance","Kkg/kg",XLES_UPDRAFT_ThlRv,HLES_AVG) - CALL LES_DIACHRO("UP_THVRV", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THVRV", & "Updraft resolved <thvrv> covariance","Kkg/kg",XLES_UPDRAFT_ThvRv,HLES_AVG) - CALL LES_DIACHRO("UP_WRV ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_WRV ", & "Updraft resolved <wrv> vertical flux","mkg/kg/s",XLES_UPDRAFT_WRv,HLES_AVG) END IF IF (LUSERC) THEN - CALL LES_DIACHRO("UP_RC2 ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RC2 ", & "Updraft resolved cloud water variance","kg2/kg2",XLES_UPDRAFT_Rc2,HLES_AVG) - CALL LES_DIACHRO("UP_THRC ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THRC ", & "Updraft resolved <thrc> covariance","Kkg/kg",XLES_UPDRAFT_ThRc,HLES_AVG) - CALL LES_DIACHRO("UP_THLRC", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THLRC", & "Updraft resolved <thlrc> covariance","Kkg/kg",XLES_UPDRAFT_ThlRc,HLES_AVG) - CALL LES_DIACHRO("UP_THVRC", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THVRC", & "Updraft resolved <thvrc> covariance","Kkg/kg",XLES_UPDRAFT_ThvRc,HLES_AVG) - CALL LES_DIACHRO("UP_WRC ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_WRC ", & "Updraft resolved <wrc> vertical flux","mkg/kg/s",XLES_UPDRAFT_WRc,HLES_AVG) END IF IF (LUSERI) THEN - CALL LES_DIACHRO("UP_RI2 ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_RI2 ", & "Updraft resolved cloud ice variance","kg2/kg2",XLES_UPDRAFT_Ri2,HLES_AVG) - CALL LES_DIACHRO("UP_THRI ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THRI ", & "Updraft resolved <thri> covariance","Kkg/kg",XLES_UPDRAFT_ThRi,HLES_AVG) - CALL LES_DIACHRO("UP_THLRI", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THLRI", & "Updraft resolved <thlri> covariance","Kkg/kg",XLES_UPDRAFT_ThlRi,HLES_AVG) - CALL LES_DIACHRO("UP_THVRI", & + CALL LES_DIACHRO(TPDIAFILE,"UP_THVRI", & "Updraft resolved <thvri> covariance","Kkg/kg",XLES_UPDRAFT_ThvRi,HLES_AVG) - CALL LES_DIACHRO("UP_WRI ", & + CALL LES_DIACHRO(TPDIAFILE,"UP_WRI ", & "Updraft resolved <wri> vertical flux","mkg/kg/s",XLES_UPDRAFT_WRi,HLES_AVG) END IF IF (NSV>0) THEN - CALL LES_DIACHRO_SV("UP_SV2 ", & + CALL LES_DIACHRO_SV(TPDIAFILE,"UP_SV2 ", & "Updraft resolved scalar variables variances","kg2/kg2",XLES_UPDRAFT_Sv2,HLES_AVG) - CALL LES_DIACHRO_SV("UP_THSV ", & + CALL LES_DIACHRO_SV(TPDIAFILE,"UP_THSV ", & "Updraft resolved <ThSv> variance","Kkg/kg",XLES_UPDRAFT_ThSv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SV("UP_THLSV", & + CALL LES_DIACHRO_SV(TPDIAFILE,"UP_THLSV", & "Updraft resolved <ThlSv> variance","Kkg/kg",XLES_UPDRAFT_ThlSv,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO_SV("UP_THVSV", & + CALL LES_DIACHRO_SV(TPDIAFILE,"UP_THVSV", & "Updraft resolved <ThvSv> variance","Kkg/kg",XLES_UPDRAFT_ThvSv,HLES_AVG) - CALL LES_DIACHRO_SV("UP_WSV ", & + CALL LES_DIACHRO_SV(TPDIAFILE,"UP_WSV ", & "Updraft resolved <wSv> vertical flux","mkg/kg/s",XLES_UPDRAFT_WSv,HLES_AVG) END IF END IF @@ -1109,156 +1112,156 @@ END IF ! -------------------- ! IF (LLES_DOWNDRAFT) THEN - CALL LES_DIACHRO("DW_FRAC ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_FRAC ", & "Downdraft fraction","-",XLES_DOWNDRAFT,HLES_AVG) - CALL LES_DIACHRO("DW_W ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_W ", & "Downdraft W mean value","m/s",XLES_DOWNDRAFT_W,HLES_AVG) - CALL LES_DIACHRO("DW_TH ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_TH ", & "Downdraft potential temperature mean value","K",XLES_DOWNDRAFT_Th,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("DW_THL ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THL ", & "Downdraft liquid potential temperature mean value","K",XLES_DOWNDRAFT_Thl,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO("DW_THV ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THV ", & "Downdraft virtual potential temperature mean value","K",XLES_DOWNDRAFT_Thv,HLES_AVG) - CALL LES_DIACHRO("DW_KE ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_KE ", & "Downdraft resolved TKE mean value","m2/s2",XLES_DOWNDRAFT_Ke,HLES_AVG) - CALL LES_DIACHRO("DW_TKE ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_TKE ", & "Downdraft subgrid TKE mean value","m2/s2",XLES_DOWNDRAFT_Tke,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO("DW_RV ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RV ", & "Downdraft water vapor mean value","kg/kg",XLES_DOWNDRAFT_Rv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("DW_RC ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RC ", & "Downdraft cloud water mean value","kg/kg",XLES_DOWNDRAFT_Rc,HLES_AVG) IF (LUSERR) & - CALL LES_DIACHRO("DW_RR ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RR ", & "Downdraft rain mean value","kg/kg",XLES_DOWNDRAFT_Rr,HLES_AVG) IF (LUSERI) & - CALL LES_DIACHRO("DW_RI ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RI ", & "Downdraft ice mean value","kg/kg",XLES_DOWNDRAFT_Ri,HLES_AVG) IF (LUSERS) & - CALL LES_DIACHRO("DW_RS ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RS ", & "Downdraft snow mean value","kg/kg",XLES_DOWNDRAFT_Rs,HLES_AVG) IF (LUSERG) & - CALL LES_DIACHRO("DW_RG ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RG ", & "Downdraft graupel mean value","kg/kg",XLES_DOWNDRAFT_Rg,HLES_AVG) IF (LUSERH) & - CALL LES_DIACHRO("DW_RH ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RH ", & "Downdraft hail mean value","kg/kg",XLES_DOWNDRAFT_Rh,HLES_AVG) IF (NSV>0) & - CALL LES_DIACHRO_SV("DW_SV ", & + CALL LES_DIACHRO_SV(TPDIAFILE,"DW_SV ", & "Downdraft scalar variables mean values","kg/kg",XLES_DOWNDRAFT_Sv,HLES_AVG) ! - CALL LES_DIACHRO("DW_TH2 ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_TH2 ", & "Downdraft resolved Theta variance ","K2",XLES_DOWNDRAFT_Th2,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("DW_THL2", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THL2", & "Downdraft resolved Theta_l variance ","K2",XLES_DOWNDRAFT_Thl2,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO("DW_THTV ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THTV ", & "Downdraft resolved Theta Theta_v covariance ","K2",XLES_DOWNDRAFT_ThThv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("DW_TLTV ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_TLTV ", & "Downdraft resolved Theta_l Theta_v covariance ","K2",XLES_DOWNDRAFT_ThlThv,HLES_AVG) - CALL LES_DIACHRO("DW_WTH ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_WTH ", & "Downdraft resolved WTh flux","mK/s",XLES_DOWNDRAFT_WTh,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("DW_WTHL ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_WTHL ", & "Downdraft resolved WThl flux","mK/s",XLES_DOWNDRAFT_WThl,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO("DW_WTHV ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_WTHV ", & "Downdraft resolved WThv flux","mK/s",XLES_DOWNDRAFT_WThv,HLES_AVG) ! IF (LUSERV) THEN - CALL LES_DIACHRO("DW_RV2 ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RV2 ", & "Downdraft resolved water vapor variance","kg2/kg2",XLES_DOWNDRAFT_Rv2,HLES_AVG) - CALL LES_DIACHRO("DW_THRV ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THRV ", & "Downdraft resolved <thrv> covariance","Kkg/kg",XLES_DOWNDRAFT_ThRv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO("DW_THLRV", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THLRV", & "Downdraft resolved <thlrv> covariance","Kkg/kg",XLES_DOWNDRAFT_ThlRv,HLES_AVG) - CALL LES_DIACHRO("DW_THVRV", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THVRV", & "Downdraft resolved <thvrv> covariance","Kkg/kg",XLES_DOWNDRAFT_ThvRv,HLES_AVG) - CALL LES_DIACHRO("DW_WRV ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_WRV ", & "Downdraft resolved <wrv> vertical flux","mkg/kg/s",XLES_DOWNDRAFT_WRv,HLES_AVG) END IF IF (LUSERC) THEN - CALL LES_DIACHRO("DW_RC2 ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RC2 ", & "Downdraft resolved cloud water variance","kg2/kg2",XLES_DOWNDRAFT_Rc2,HLES_AVG) - CALL LES_DIACHRO("DW_THRC ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THRC ", & "Downdraft resolved <thrc> covariance","Kkg/kg",XLES_DOWNDRAFT_ThRc,HLES_AVG) - CALL LES_DIACHRO("DW_THLRC", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THLRC", & "Downdraft resolved <thlrc> covariance","Kkg/kg",XLES_DOWNDRAFT_ThlRc,HLES_AVG) - CALL LES_DIACHRO("DW_THVRC", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THVRC", & "Downdraft resolved <thvrc> covariance","Kkg/kg",XLES_DOWNDRAFT_ThvRc,HLES_AVG) - CALL LES_DIACHRO("DW_WRC ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_WRC ", & "Downdraft resolved <wrc> vertical flux","mkg/kg/s",XLES_DOWNDRAFT_WRc,HLES_AVG) END IF IF (LUSERI) THEN - CALL LES_DIACHRO("DW_RI2 ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_RI2 ", & "Downdraft resolved cloud ice variance","kg2/kg2",XLES_DOWNDRAFT_Ri2,HLES_AVG) - CALL LES_DIACHRO("DW_THRI ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THRI ", & "Downdraft resolved <thri> covariance","Kkg/kg",XLES_DOWNDRAFT_ThRi,HLES_AVG) - CALL LES_DIACHRO("DW_THLRI", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THLRI", & "Downdraft resolved <thlri> covariance","Kkg/kg",XLES_DOWNDRAFT_ThlRi,HLES_AVG) - CALL LES_DIACHRO("DW_THVRI", & + CALL LES_DIACHRO(TPDIAFILE,"DW_THVRI", & "Downdraft resolved <thvri> covariance","Kkg/kg",XLES_DOWNDRAFT_ThvRi,HLES_AVG) - CALL LES_DIACHRO("DW_WRI ", & + CALL LES_DIACHRO(TPDIAFILE,"DW_WRI ", & "Downdraft resolved <wri> vertical flux","mkg/kg/s",XLES_DOWNDRAFT_WRi,HLES_AVG) END IF IF (NSV>0) THEN - CALL LES_DIACHRO_SV("DW_SV2 ", & + CALL LES_DIACHRO_SV(TPDIAFILE,"DW_SV2 ", & "Downdraft resolved scalar variables variances","kg2/kg2",XLES_DOWNDRAFT_Sv2,HLES_AVG) - CALL LES_DIACHRO_SV("DW_THSV ", & + CALL LES_DIACHRO_SV(TPDIAFILE,"DW_THSV ", & "Downdraft resolved <ThSv> variance","Kkg/kg",XLES_DOWNDRAFT_ThSv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SV("DW_THLSV", & + CALL LES_DIACHRO_SV(TPDIAFILE,"DW_THLSV", & "Downdraft resolved <ThlSv> variance","Kkg/kg",XLES_DOWNDRAFT_ThlSv,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO_SV("DW_THVSV", & + CALL LES_DIACHRO_SV(TPDIAFILE,"DW_THVSV", & "Downdraft resolved <ThvSv> variance","Kkg/kg",XLES_DOWNDRAFT_ThvSv,HLES_AVG) - CALL LES_DIACHRO_SV("DW_WSV ", & + CALL LES_DIACHRO_SV(TPDIAFILE,"DW_WSV ", & "Downdraft resolved <wSv> vertical flux","mkg/kg/s",XLES_DOWNDRAFT_WSv,HLES_AVG) END IF END IF @@ -1270,123 +1273,123 @@ END IF ! IF (HLES_AVG==' ' .OR. HLES_AVG=='A') THEN - CALL LES_DIACHRO_SURF("Q0 ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"Q0 ", & "Sensible heat flux at the surface","mK/s",XLES_Q0,HLES_AVG) IF (LUSERV) & - CALL LES_DIACHRO_SURF("E0 ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"E0 ", & "Latent heat flux at the surface","kg/kgm/s",XLES_E0,HLES_AVG) !writes sw and lw flux and dthrad at all levels - CALL LES_DIACHRO("SWU ", & + CALL LES_DIACHRO(TPDIAFILE,"SWU ", & "sw_up ","W/m2 ",XLES_SWU,HLES_AVG) - CALL LES_DIACHRO("SWD ", & + CALL LES_DIACHRO(TPDIAFILE,"SWD ", & "sw_down ","W/m2 ",XLES_SWD,HLES_AVG) - CALL LES_DIACHRO("LWU ", & + CALL LES_DIACHRO(TPDIAFILE,"LWU ", & "lw_up ","W/m2 ",XLES_LWU,HLES_AVG) - CALL LES_DIACHRO("LWD ", & + CALL LES_DIACHRO(TPDIAFILE,"LWD ", & "lw_down ","W/m2 ",XLES_LWD,HLES_AVG) - CALL LES_DIACHRO("DTHRADSW ", & + CALL LES_DIACHRO(TPDIAFILE,"DTHRADSW ", & "dthrad_sw ","K/s ",XLES_DTHRADSW,HLES_AVG) - CALL LES_DIACHRO("DTHRADLW ", & + CALL LES_DIACHRO(TPDIAFILE,"DTHRADLW ", & "dthrad_lw ","K/s ",XLES_DTHRADLW,HLES_AVG) !writes mean_effective radius at all levels - CALL LES_DIACHRO("RADEFF ", & + CALL LES_DIACHRO(TPDIAFILE,"RADEFF ", & "mean effective radius ","microm ",XLES_RADEFF,HLES_AVG) IF (NSV>0) & - CALL LES_DIACHRO_SURF_SV("SV0 ", & + CALL LES_DIACHRO_SURF_SV(TPDIAFILE,"SV0 ", & "Scalar variable fluxes at the surface","kg/kgm/s",XLES_SV0,HLES_AVG) - CALL LES_DIACHRO_SURF("U* ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"U* ", & "Friction velocity","m/s",XLES_USTAR,HLES_AVG) - CALL LES_DIACHRO_SURF("W* ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"W* ", & "Convective velocity","m/s",XLES_WSTAR,HLES_AVG) - CALL LES_DIACHRO_SURF("BL_H ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"BL_H ", & "Boundary Layer Height","m",XLES_BL_HEIGHT,HLES_AVG) - CALL LES_DIACHRO_SURF("L_MO ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"L_MO ", & "Monin-Obukhov length","m",XLES_MO_LENGTH,HLES_AVG) - CALL LES_DIACHRO_SURF("INT_TKE ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"INT_TKE ", & "Vertical integrated tke","m2.s-2",XLES_INT_TKE,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SURF("ZCB ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"ZCB ", & "Cloud base Height","m",XLES_ZCB,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SURF("ZCFTOT ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"ZCFTOT ", & "Total Cloud cover"," ",XLES_CFtot,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SURF("ZCF2TOT ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"ZCF2TOT ", & "Total Cloud cove 2r"," ",XLES_CF2tot,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SURF("LWP ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"LWP ", & "Liquid Water path","kg/m²",XLES_LWP,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SURF("LWPVAR ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"LWPVAR ", & "Liquid Water path variance","kg/m4",XLES_LWPVAR,HLES_AVG) IF (LUSERR) & - CALL LES_DIACHRO_SURF("RWP ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"RWP ", & "Rain Water path","kg/m2",XLES_RWP,HLES_AVG) IF (LUSERI) & - CALL LES_DIACHRO_SURF("IWP ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"IWP ", & "Ice Water path","kg/m2",XLES_IWP,HLES_AVG) IF (LUSERS) & - CALL LES_DIACHRO_SURF("SWP ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"SWP ", & "Snow Water path","kg/m2",XLES_SWP,HLES_AVG) IF (LUSERG) & - CALL LES_DIACHRO_SURF("GWP ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"GWP ", & "Graupel Water path","kg/m2",XLES_GWP,HLES_AVG) IF (LUSERH) & - CALL LES_DIACHRO_SURF("HWP ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"HWP ", & "Hail Water path","kg/m2",XLES_HWP,HLES_AVG) IF (LUSERR) & - CALL LES_DIACHRO_SURF("PREC_FRAC ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"PREC_FRAC ", & "Fract of col where rain at surface","",XLES_PRECFR,HLES_AVG) IF (LUSERR) & - CALL LES_DIACHRO_SURF("INST_PREC ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"INST_PREC ", & "Inst precip rate","mm/day",XLES_INPRR,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SURF("INST_SEDIM ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"INST_SEDIM ", & "Inst cloud precip rate","mm/day",XLES_INPRC,HLES_AVG) IF (LUSERC .AND. (LDEPOSC .OR. LDEPOC)) & - CALL LES_DIACHRO_SURF("INST_DEPOS ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"INST_DEPOS ", & "Inst cloud deposi rate","mm/day",XLES_INDEP,HLES_AVG) IF (LUSERR) & - CALL LES_DIACHRO_SURF("RAIN_PREC ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"RAIN_PREC ", & "inst pr. rate over rainy grid cells","mm/day",XLES_RAIN_INPRR,HLES_AVG) IF (LUSERR) & - CALL LES_DIACHRO_SURF("ACCU_PREC ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"ACCU_PREC ", & "Accu precip rate","mm/day",XLES_ACPRR,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SURF("ZMAXCF ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"ZMAXCF ", & "Height of Cloud fraction max","m",XLES_ZMAXCF,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_SURF("ZMAXCF2 ", & + CALL LES_DIACHRO_SURF(TPDIAFILE,"ZMAXCF2 ", & "Height of Cloud fraction2max","m",XLES_ZMAXCF2,HLES_AVG) END IF @@ -1396,9 +1399,9 @@ END IF !* 4. LES budgets ! ----------- ! -CALL WRITE_LES_BUDGET_n(HLES_AVG) -IF (LUSERV) CALL WRITE_LES_RT_BUDGET_n(HLES_AVG) -IF (NSV>0) CALL WRITE_LES_SV_BUDGET_n(HLES_AVG) +CALL WRITE_LES_BUDGET_n(TPDIAFILE,HLES_AVG) +IF (LUSERV) CALL WRITE_LES_RT_BUDGET_n(TPDIAFILE,HLES_AVG) +IF (NSV>0) CALL WRITE_LES_SV_BUDGET_n(TPDIAFILE,HLES_AVG) ! !------------------------------------------------------------------------------- ! @@ -1407,68 +1410,68 @@ IF (NSV>0) CALL WRITE_LES_SV_BUDGET_n(HLES_AVG) ! IF (HLES_AVG==' ' .OR. HLES_AVG=='A') THEN IF (NSPECTRA_K>0) THEN - CALL LES_DIACHRO_2PT("UU ","U*U 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"UU ","U*U 2 points correlations", & "m2/s2",XCORRi_UU, XCORRj_UU,HLES_AVG) - CALL LES_DIACHRO_2PT("VV ","V*V 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"VV ","V*V 2 points correlations", & "m2/s2",XCORRi_VV, XCORRj_VV,HLES_AVG) - CALL LES_DIACHRO_2PT("WW ","W*W 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"WW ","W*W 2 points correlations", & "m2/s2",XCORRi_WW, XCORRj_WW,HLES_AVG) - CALL LES_DIACHRO_2PT("UV ","U*V 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"UV ","U*V 2 points correlations", & "m2/s2",XCORRi_UV, XCORRj_UV,HLES_AVG) - CALL LES_DIACHRO_2PT("WU ","W*U 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"WU ","W*U 2 points correlations", & "m2/s2",XCORRi_WU, XCORRj_WU,HLES_AVG) - CALL LES_DIACHRO_2PT("WV ","W*V 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"WV ","W*V 2 points correlations", & "m2/s2",XCORRi_WV, XCORRj_WV,HLES_AVG) - CALL LES_DIACHRO_2PT("THTH ","Th*Th 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"THTH ","Th*Th 2 points correlations", & "K2 ",XCORRi_ThTh, XCORRj_ThTh,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_2PT("TLTL ","Thl*Thl 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"TLTL ","Thl*Thl 2 points correlations", & "K2 ",XCORRi_ThlThl,XCORRj_ThlThl,HLES_AVG) - CALL LES_DIACHRO_2PT("WTH ","W*Th 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"WTH ","W*Th 2 points correlations", & "mK/s ",XCORRi_WTh, XCORRj_WTh,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_2PT("WTHL ","W*Thl 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"WTHL ","W*Thl 2 points correlations", & "mK/s ",XCORRi_WThl, XCORRj_WThl,HLES_AVG) ! IF (LUSERV) THEN - CALL LES_DIACHRO_2PT("RVRV ","rv*rv 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"RVRV ","rv*rv 2 points correlations", & "kg2/kg2 ",XCORRi_RvRv, XCORRj_RvRv,HLES_AVG) - CALL LES_DIACHRO_2PT("THRV ","th*rv 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"THRV ","th*rv 2 points correlations", & "Kkg/kg ",XCORRi_ThRv, XCORRj_ThRv,HLES_AVG) IF (LUSERC) & - CALL LES_DIACHRO_2PT("TLRV ","thl*rv 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"TLRV ","thl*rv 2 points correlations", & "Kkg/kg ",XCORRi_ThlRv, XCORRj_ThlRv,HLES_AVG) - CALL LES_DIACHRO_2PT("WRV ","W*rv 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"WRV ","W*rv 2 points correlations", & "mkg/s/kg",XCORRi_WRv, XCORRj_WRv,HLES_AVG) END IF IF (LUSERC) THEN - CALL LES_DIACHRO_2PT("RCRC ","rc*rc 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"RCRC ","rc*rc 2 points correlations", & "kg2/kg2 ",XCORRi_RcRc, XCORRj_RcRc,HLES_AVG) - CALL LES_DIACHRO_2PT("THRC ","th*rc 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"THRC ","th*rc 2 points correlations", & "Kkg/kg ",XCORRi_ThRc, XCORRj_ThRc,HLES_AVG) - CALL LES_DIACHRO_2PT("TLRC ","thl*rc 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"TLRC ","thl*rc 2 points correlations", & "Kkg/kg ",XCORRi_ThlRc, XCORRj_ThlRc,HLES_AVG) - CALL LES_DIACHRO_2PT("WRC ","W*rc 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"WRC ","W*rc 2 points correlations", & "mkg/s/kg",XCORRi_WRc, XCORRj_WRc,HLES_AVG) END IF IF (LUSERI) THEN - CALL LES_DIACHRO_2PT("RCRC ","ri*ri 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"RCRC ","ri*ri 2 points correlations", & "kg2/kg2 ",XCORRi_RiRi, XCORRj_RiRi,HLES_AVG) - CALL LES_DIACHRO_2PT("THRC ","th*ri 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"THRC ","th*ri 2 points correlations", & "Kkg/kg ",XCORRi_ThRi, XCORRj_ThRi,HLES_AVG) - CALL LES_DIACHRO_2PT("TLRC ","thl*ri 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"TLRC ","thl*ri 2 points correlations", & "Kkg/kg ",XCORRi_ThlRi, XCORRj_ThlRi,HLES_AVG) - CALL LES_DIACHRO_2PT("WRC ","W*ri 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,"WRC ","W*ri 2 points correlations", & "mkg/s/kg",XCORRi_WRi, XCORRj_WRi,HLES_AVG) END IF DO JSV=1,NSV WRITE (YGROUP,FMT="(A2,I3.3)") "SS",JSV - CALL LES_DIACHRO_2PT(YGROUP,"Sv*Sv 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,YGROUP,"Sv*Sv 2 points correlations", & "kg2/kg2 ",XCORRi_SvSv(:,:,:,JSV), XCORRj_SvSv(:,:,:,JSV),HLES_AVG) END DO DO JSV=1,NSV WRITE (YGROUP,FMT="(A2,I3.3)") "WS",JSV - CALL LES_DIACHRO_2PT(YGROUP,"W*Sv 2 points correlations", & + CALL LES_DIACHRO_2PT(TPDIAFILE,YGROUP,"W*Sv 2 points correlations", & "mkg/s/kg",XCORRi_WSv(:,:,:,JSV), XCORRj_WSv(:,:,:,JSV),HLES_AVG) END DO END IF @@ -1479,7 +1482,7 @@ END IF !* 6. spectra and time-averaged profiles (if first call to WRITE_LES_n) ! ---------------------------------- ! -IF (HLES_AVG==' ') CALL LES_SPEC_n +IF (HLES_AVG==' ') CALL LES_SPEC_n(TPDIAFILE) ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/write_lfifmn_fordiachron.f90 b/src/MNH/write_lfifmn_fordiachron.f90 index 4ca7f4acb..ef608331e 100644 --- a/src/MNH/write_lfifmn_fordiachron.f90 +++ b/src/MNH/write_lfifmn_fordiachron.f90 @@ -8,7 +8,7 @@ ! $Source$ $Revision$ !----------------------------------------------------------------- ! ############################################# - SUBROUTINE WRITE_LFIFMN_FORDIACHRO_n(HFMFILE) + SUBROUTINE WRITE_LFIFMN_FORDIACHRO_n(TPFILE) ! ############################################# ! !!**** *WRITE_LFIFM_FORDIACHRO_n* - routine to write a LFIFM file for model _n @@ -16,7 +16,7 @@ !! PURPOSE !! ------- ! The purpose of this routine is to write an initial LFIFM File -! of name HFMFILE//'.lfi' with the FM routines. +! of name YFMFILE//'.lfi' with the FM routines. ! !!** METHOD !! ------ @@ -101,6 +101,9 @@ USE MODD_LUNIT_n USE MODD_TIME USE MODD_TYPE_DATE USE MODD_NESTING +USE MODD_IO_ll, ONLY: TFILEDATA +! +USE MODE_FIELD, ONLY: TFIELDDATA, TYPEREAL USE MODE_FMWRIT USE MODE_GRIDPROJ USE MODE_ll @@ -110,26 +113,21 @@ IMPLICIT NONE ! !* 0.1 Declarations of arguments ! -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA),INTENT(IN) :: TPFILE ! !* 0.2 Declarations of local variables ! -INTEGER :: IRESP ! IRESP : return-code if a problem appears - ! at the open of the file ! LFI routines -INTEGER :: IGRID ! IGRID : grid indicator -INTEGER :: ILENCH ! ILENCH : length of comment string -! -CHARACTER(LEN=16) :: YRECFM ! Name of the article to be written -CHARACTER(LEN=100) :: YCOMMENT ! Comment string +INTEGER :: IRESP ! return-code! ! -LOGICAL :: GPACK +LOGICAL :: GPACK ! REAL :: ZLATOR, ZLONOR ! geographical coordinates of 1st mass point REAL :: ZXHATM, ZYHATM ! conformal coordinates of 1st mass point -REAL, DIMENSION(:), ALLOCATABLE :: ZXHAT_ll ! Position x in the conformal - ! plane (array on the complete domain) -REAL, DIMENSION(:), ALLOCATABLE :: ZYHAT_ll ! Position y in the conformal - ! plane (array on the complete domain) +REAL, DIMENSION(:), ALLOCATABLE :: ZXHAT_ll ! Position x in the conformal + ! plane (array on the complete domain) +REAL, DIMENSION(:), ALLOCATABLE :: ZYHAT_ll ! Position y in the conformal + ! plane (array on the complete domain) +TYPE(TFIELDDATA) :: TZFIELD ! !------------------------------------------------------------------------------- ! @@ -138,122 +136,33 @@ LPACK=.FALSE. ! !* 1.0 Version : ! -YRECFM='MASDEV' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',NMASDEV,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='BUGFIX' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',NBUGFIX,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='BIBUSER' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',CBIBUSER,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='PROGRAM' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',CPROGRAM,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='L1D' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',L1D,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='L2D' -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',L2D,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='PACK' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',LPACK,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='SURF' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',CSURF,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='STORAGE_TYPE' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',CSTORAGE_TYPE,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'MASDEV', CLUOUT,IRESP,NMASDEV) +CALL IO_WRITE_FIELD(TPFILE,'BUGFIX', CLUOUT,IRESP,NBUGFIX) +CALL IO_WRITE_FIELD(TPFILE,'BIBUSER',CLUOUT,IRESP,CBIBUSER) +CALL IO_WRITE_FIELD(TPFILE,'PROGRAM',CLUOUT,IRESP,CPROGRAM) +! +CALL IO_WRITE_FIELD(TPFILE,'L1D', CLUOUT,IRESP,L1D) +CALL IO_WRITE_FIELD(TPFILE,'L2D', CLUOUT,IRESP,L2D) +CALL IO_WRITE_FIELD(TPFILE,'PACK',CLUOUT,IRESP,LPACK) +CALL IO_WRITE_FIELD(TPFILE,'SURF',CLUOUT,IRESP,CSURF) +! +CALL IO_WRITE_FIELD(TPFILE,'STORAGE_TYPE',CLUOUT,IRESP,CSTORAGE_TYPE) ! !* 1.1 Dimensions : ! -YRECFM='IMAX' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',NIMAX_ll,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='JMAX' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',NJMAX_ll,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='KMAX' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',NKMAX,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='JPHEXT' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',JPHEXT,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'IMAX',CLUOUT,IRESP,NIMAX_ll) +CALL IO_WRITE_FIELD(TPFILE,'JMAX',CLUOUT,IRESP,NJMAX_ll) +CALL IO_WRITE_FIELD(TPFILE,'KMAX',CLUOUT,IRESP,NKMAX) +! +CALL IO_WRITE_FIELD(TPFILE,'JPHEXT',CLUOUT,IRESP,JPHEXT) ! !* 1.2 Grid variables : ! IF (.NOT.LCARTESIAN) THEN ! - YRECFM='RPK' - !CALL ELIM(YRECFM) - YCOMMENT=' ' - IGRID=0 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XRPK,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='LONORI' - !CALL ELIM(YRECFM) - YCOMMENT='DEGREES' - IGRID=0 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XLONORI,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='LATORI' - !CALL ELIM(YRECFM) - YCOMMENT='DEGREES' - IGRID=0 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XLATORI,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'RPK', CLUOUT,IRESP,XRPK) + CALL IO_WRITE_FIELD(TPFILE,'LONORI',CLUOUT,IRESP,XLONORI) + CALL IO_WRITE_FIELD(TPFILE,'LATORI',CLUOUT,IRESP,XLATORI) ! !* diagnostic of 1st mass point ! @@ -265,201 +174,69 @@ IF (.NOT.LCARTESIAN) THEN CALL SM_LATLON(XLATORI,XLONORI,ZXHATM,ZYHATM,ZLATOR,ZLONOR) DEALLOCATE(ZXHAT_ll,ZYHAT_ll) ! - YRECFM='LONOR' - YCOMMENT='DEGREES' - IGRID=0 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',ZLONOR,IGRID,ILENCH,YCOMMENT,IRESP) -! - YRECFM='LATOR' - YCOMMENT='DEGREES' - IGRID=0 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',ZLATOR,IGRID,ILENCH,YCOMMENT,IRESP) + !LONOR and LATOR not in TFIELDLIST because local variables + TZFIELD%CMNHNAME = 'LONOR' + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: LONOR' + TZFIELD%CUNITS = 'degree' + TZFIELD%CDIR = '--' + TZFIELD%CCOMMENT = 'Longitude of 1st mass point' + TZFIELD%NGRID = 0 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 0 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZLONOR) +! + TZFIELD%CMNHNAME = 'LATOR' + TZFIELD%CLONGNAME = 'MesoNH: LATOR' + TZFIELD%CCOMMENT = 'Latitude of 1st mass point' + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZLATOR) ! ! #ifdef MNH_NCWRIT ! IF (LNETCDF) THEN ! LLFIFM = .FALSE. -! YRECFM='LAT' -! YCOMMENT='X_Y_latitude (degree)' -! IGRID=1 -! ILENCH=LEN(YCOMMENT) -! CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLAT,IGRID,ILENCH,YCOMMENT,IRESP) -! -! YRECFM='LON' -! YCOMMENT='X_Y_longitude (degree)' -! IGRID=1 -! ILENCH=LEN(YCOMMENT) -! CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLON,IGRID,ILENCH,YCOMMENT,IRESP) +! CALL IO_WRITE_FIELD(TPFILE,'LAT',CLUOUT,IRESP,XLAT) +! CALL IO_WRITE_FIELD(TPFILE,'LON',CLUOUT,IRESP,XLON) ! LLFIFM = .TRUE. ! END IF ! #endif END IF ! -YRECFM='THINSHELL' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',LTHINSHELL,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='LAT0' -!CALL ELIM(YRECFM) -YCOMMENT='reference latitude for conformal projection (DEGREES)' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XLAT0,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='LON0' -!CALL ELIM(YRECFM) -YCOMMENT='reference longitude for conformal projection (DEGREES)' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XLON0,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='BETA' -!CALL ELIM(YRECFM) -YCOMMENT='rotation angle (DEGREES)' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XBETA,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='XHAT' -!CALL ELIM(YRECFM) -YCOMMENT='Position x in the conformal or cartesian plane (METERS)' -IGRID=2 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XX',XXHAT,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='YHAT' -!CALL ELIM(YRECFM) -YCOMMENT='Position y in the conformal or cartesian plane (METERS)' -IGRID=3 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'YY',XYHAT,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='ZHAT' -!CALL ELIM(YRECFM) -YCOMMENT='height level without orography (METERS)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XZHAT,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='ZS' -!CALL ELIM(YRECFM) -YCOMMENT='orography (METERS)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XZS,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='ZSMT' -!CALL ELIM(YRECFM) -YCOMMENT='smooth orography (METERS)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XZSMT,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='SLEVE' -!CALL ELIM(YRECFM) -YCOMMENT=' ' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',LSLEVE,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'THINSHELL',CLUOUT,IRESP,LTHINSHELL) +CALL IO_WRITE_FIELD(TPFILE,'LAT0',CLUOUT,IRESP,XLAT0) +CALL IO_WRITE_FIELD(TPFILE,'LON0',CLUOUT,IRESP,XLON0) +CALL IO_WRITE_FIELD(TPFILE,'BETA',CLUOUT,IRESP,XBETA) +! +CALL IO_WRITE_FIELD(TPFILE,'XHAT',CLUOUT,IRESP,XXHAT) +CALL IO_WRITE_FIELD(TPFILE,'YHAT',CLUOUT,IRESP,XYHAT) +CALL IO_WRITE_FIELD(TPFILE,'ZHAT',CLUOUT,IRESP,XZHAT) +! +CALL IO_WRITE_FIELD(TPFILE,'ZS', CLUOUT,IRESP,XZS) +CALL IO_WRITE_FIELD(TPFILE,'ZSMT', CLUOUT,IRESP,XZSMT) +CALL IO_WRITE_FIELD(TPFILE,'SLEVE',CLUOUT,IRESP,LSLEVE) ! IF (LSLEVE) THEN - YRECFM='LEN1' - !CALL ELIM(YRECFM) - YCOMMENT='METERS' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XLEN1,IGRID,ILENCH,YCOMMENT,IRESP) - YRECFM='LEN2' - !CALL ELIM(YRECFM) - YCOMMENT='METERS' - IGRID=4 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XLEN2,IGRID,ILENCH,YCOMMENT,IRESP) + CALL IO_WRITE_FIELD(TPFILE,'LEN1',CLUOUT,IRESP,XLEN1) + CALL IO_WRITE_FIELD(TPFILE,'LEN2',CLUOUT,IRESP,XLEN2) END IF ! -YRECFM='DTCUR' -!CALL ELIM(YRECFM) -YCOMMENT='-' -ILENCH=LEN(YCOMMENT) -IGRID=0 -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',TDTCUR,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='DTEXP' -YCOMMENT='-' -ILENCH=LEN(YCOMMENT) -!CALL ELIM(YRECFM) -IGRID=0 -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',TDTEXP,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='DTMOD' -!CALL ELIM(YRECFM) -YCOMMENT='-' -ILENCH=LEN(YCOMMENT) -IGRID=0 -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',TDTMOD,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='DTSEG' -!CALL ELIM(YRECFM) -YCOMMENT='-' -ILENCH=LEN(YCOMMENT) -IGRID=0 -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',TDTSEG,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'DTMOD',CLUOUT,IRESP,TDTMOD) +CALL IO_WRITE_FIELD(TPFILE,'DTCUR',CLUOUT,IRESP,TDTCUR) +CALL IO_WRITE_FIELD(TPFILE,'DTEXP',CLUOUT,IRESP,TDTEXP) +CALL IO_WRITE_FIELD(TPFILE,'DTSEG',CLUOUT,IRESP,TDTSEG) ! !* 1.3 Configuration variables : ! -YRECFM='CARTESIAN' -!CALL ELIM(YRECFM) -YCOMMENT='Logical for cartesian geometry ' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',LCARTESIAN,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='LBOUSS' -YCOMMENT='Logical for Boussinesq' -IGRID=0 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',LBOUSS,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'CARTESIAN',CLUOUT,IRESP,LCARTESIAN) +CALL IO_WRITE_FIELD(TPFILE,'LBOUSS', CLUOUT,IRESP,LBOUSS) ! !* 1.6 Reference state variables : ! -YRECFM='RHOREFZ' -!CALL ELIM(YRECFM) -YCOMMENT='rhodz for reference state without orography (kg/m3)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XRHODREFZ,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='THVREFZ' -!CALL ELIM(YRECFM) -YCOMMENT='thetavz for reference state without orography (K)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XTHVREFZ,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='EXNTOP' -!CALL ELIM(YRECFM) -YCOMMENT='Exner function at model top' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',XEXNTOP,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='RHODREF' -!CALL ELIM(YRECFM) -YCOMMENT='Dry density for reference state with orography (kg/m3)' -IGRID=1 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XRHODREF,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='THVREF' -YCOMMENT='Thetav for reference state with orography (K)' -YCOMMENT=' ' -IGRID=1 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTHVREF,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'RHOREFZ',CLUOUT,IRESP,XRHODREFZ) +CALL IO_WRITE_FIELD(TPFILE,'THVREFZ',CLUOUT,IRESP,XTHVREFZ) +CALL IO_WRITE_FIELD(TPFILE,'EXNTOP', CLUOUT,IRESP,XEXNTOP) +! +CALL IO_WRITE_FIELD(TPFILE,'RHODREF',CLUOUT,IRESP,XRHODREF) +CALL IO_WRITE_FIELD(TPFILE,'THVREF', CLUOUT,IRESP,XTHVREF) ! LPACK=GPACK ! diff --git a/src/MNH/write_profilern.f90 b/src/MNH/write_profilern.f90 index b2b24c93f..ae4c1f669 100644 --- a/src/MNH/write_profilern.f90 +++ b/src/MNH/write_profilern.f90 @@ -14,9 +14,11 @@ MODULE MODI_WRITE_PROFILER_n ! INTERFACE ! - SUBROUTINE WRITE_PROFILER_n(HFMDIAC) + SUBROUTINE WRITE_PROFILER_n(TPDIAFILE) ! -CHARACTER(LEN=*), INTENT(IN) :: HFMDIAC ! diachronic file name +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! diachronic file to write ! END SUBROUTINE WRITE_PROFILER_n ! @@ -25,7 +27,7 @@ END INTERFACE END MODULE MODI_WRITE_PROFILER_n ! ! ########################################## - SUBROUTINE WRITE_PROFILER_n(HFMDIAC) + SUBROUTINE WRITE_PROFILER_n(TPDIAFILE) ! ########################################## ! ! @@ -68,6 +70,7 @@ END MODULE MODI_WRITE_PROFILER_n ! ------------ ! USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LUNIT USE MODD_PARAMETERS ! @@ -98,7 +101,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -CHARACTER(LEN=*), INTENT(IN) :: HFMDIAC ! diachronic file name +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! diachronic file to write ! !------------------------------------------------------------------------------- ! @@ -607,7 +610,7 @@ ALLOCATE (ZW6(1,1,IKU,SIZE(TPROFILER%TIME),1,JPROC)) ZW6 = ZWORK6(:,:,:,:,:,:JPROC) DEALLOCATE(ZWORK6) -CALL WRITE_DIACHRO(HFMDIAC,CLUOUT0,YGROUP,"CART",IGRID(:JPROC), TPROFILER%DATIME,& +CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"CART",IGRID(:JPROC), TPROFILER%DATIME,& ZW6,ZTRAJT,YTITLE(:JPROC),YUNIT(:JPROC),YCOMMENT(:JPROC), & .TRUE.,.TRUE.,.FALSE., & KIL=1,KIH=1,KJL=1,KJH=1,KKL=1,KKH=IKU ) diff --git a/src/MNH/write_seriesn.f90 b/src/MNH/write_seriesn.f90 index c319f191a..8730b9316 100644 --- a/src/MNH/write_seriesn.f90 +++ b/src/MNH/write_seriesn.f90 @@ -11,11 +11,15 @@ MODULE MODI_WRITE_SERIES_n !######################## ! +IMPLICIT NONE +! INTERFACE ! - SUBROUTINE WRITE_SERIES_n(HFILEDIA,HLUOUT ) + SUBROUTINE WRITE_SERIES_n(TPDIAFILE,HLUOUT) +! +USE MODD_IO_ll, ONLY: TFILEDATA ! -CHARACTER (LEN=*), INTENT(IN) :: HFILEDIA ! name of FM-file to write +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name of output listing ! END SUBROUTINE WRITE_SERIES_n @@ -24,7 +28,7 @@ END INTERFACE ! END MODULE MODI_WRITE_SERIES_n ! ################### - SUBROUTINE WRITE_SERIES_n (HFILEDIA,HLUOUT) + SUBROUTINE WRITE_SERIES_n (TPDIAFILE,HLUOUT) ! ####################################################################################### ! @@ -71,6 +75,7 @@ USE MODD_SERIES USE MODD_SERIES_n USE MODD_CONF, ONLY: NVERB USE MODD_PARAMETERS +USE MODD_IO_ll, ONLY: TFILEDATA USE MODI_WRITE_DIACHRO USE MODI_GATHER_ll USE MODE_ll @@ -80,7 +85,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -CHARACTER (LEN=*), INTENT(IN) :: HFILEDIA ! name of FM-file to write +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name of output listing ! !* 0.2 Local variables @@ -249,7 +254,7 @@ ENDIF !* 2.3 Write in diachro file ! GICP=.TRUE. ; GJCP=.TRUE. ; GKCP=.TRUE. -CALL WRITE_DIACHRO(HFILEDIA,HLUOUT,'TSERIES','CART',NSGRIDD1,XSDATIME(:,1:NSNBSTEPT), & +CALL WRITE_DIACHRO(TPDIAFILE,HLUOUT,'TSERIES','CART',NSGRIDD1,XSDATIME(:,1:NSNBSTEPT), & XSSERIES1(1:1,1:1,1:1,1:NSNBSTEPT,:,:), & XSTRAJT(1:NSNBSTEPT,:),CSTITLE1,CSUNIT1,CSCOMMENT1, & GICP,GJCP,GKCP, & @@ -310,7 +315,7 @@ DEALLOCATE(ZVAR3D) !* 3.2 Write in diachro file ! GICP=.TRUE. ; GJCP=.TRUE. ; GKCP=.FALSE. -CALL WRITE_DIACHRO(HFILEDIA,HLUOUT,'ZTSERIES','CART',NSGRIDD2,XSDATIME(:,1:NSNBSTEPT), & +CALL WRITE_DIACHRO(TPDIAFILE,HLUOUT,'ZTSERIES','CART',NSGRIDD2,XSDATIME(:,1:NSNBSTEPT), & XSSERIES2(1:1,1:1,1:IKMAX,1:NSNBSTEPT,:,:), & XSTRAJT(1:NSNBSTEPT,:),CSTITLE2,CSUNIT2,CSCOMMENT2, & GICP,GJCP,GKCP, & @@ -370,7 +375,7 @@ DO JS=1,NBJSLICE YSTITLE3S(JT)=ADJUSTL(ADJUSTR(CSTITLE3(JT))//'Y'//YSL//'-'//YSH) END DO GICP=.FALSE. ; GJCP=.TRUE. ; GKCP=.TRUE. - CALL WRITE_DIACHRO(HFILEDIA,HLUOUT,YGROUP,'CART',NSGRIDD3,XSDATIME(:,1:NSNBSTEPT), & + CALL WRITE_DIACHRO(TPDIAFILE,HLUOUT,YGROUP,'CART',NSGRIDD3,XSDATIME(:,1:NSNBSTEPT), & ZSERIES3_ll(1:IIU_ll,1:1,1:1,1:NSNBSTEPT,1:1,ISB1:ISB2),& XSTRAJT(1:NSNBSTEPT,:),YSTITLE3S,CSUNIT3,CSCOMMENT3, & GICP,GJCP,GKCP, & diff --git a/src/MNH/write_stationn.f90 b/src/MNH/write_stationn.f90 index 0f5094c92..139e1730d 100644 --- a/src/MNH/write_stationn.f90 +++ b/src/MNH/write_stationn.f90 @@ -14,9 +14,11 @@ MODULE MODI_WRITE_STATION_n ! INTERFACE ! - SUBROUTINE WRITE_STATION_n(HFMDIAC) + SUBROUTINE WRITE_STATION_n(TPDIAFILE) ! -CHARACTER(LEN=*), INTENT(IN) :: HFMDIAC ! diachronic file name +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! diachronic file to write ! END SUBROUTINE WRITE_STATION_n ! @@ -25,7 +27,7 @@ END INTERFACE END MODULE MODI_WRITE_STATION_n ! ! ########################################## - SUBROUTINE WRITE_STATION_n(HFMDIAC) + SUBROUTINE WRITE_STATION_n(TPDIAFILE) ! ########################################## ! ! @@ -66,6 +68,7 @@ END MODULE MODI_WRITE_STATION_n ! ------------ ! USE MODD_CST +USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LUNIT USE MODD_PARAMETERS ! @@ -94,7 +97,7 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments ! -CHARACTER(LEN=*), INTENT(IN) :: HFMDIAC ! diachronic file name +TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! diachronic file to write ! !------------------------------------------------------------------------------- ! @@ -610,7 +613,7 @@ ZW6 = ZWORK6(:,:,:,:,:,:JPROC) DEALLOCATE(ZWORK6) ! - CALL WRITE_DIACHRO(HFMDIAC,CLUOUT0,YGROUP,"CART",IGRID, TSTATION%DATIME,& + CALL WRITE_DIACHRO(TPDIAFILE,CLUOUT0,YGROUP,"CART",IGRID, TSTATION%DATIME,& ZW6,ZTRAJT,YTITLE,YUNIT,YCOMMENT,& .TRUE.,.TRUE.,.FALSE., & KIL=1,KIH=1,KJL=1,KJH=1,KKL=1,KKH=1 ) -- GitLab