From d6f4bee351030c9e5283b2b3e8a12582219ea1aa Mon Sep 17 00:00:00 2001 From: Gaelle Tanguy <gaelle.tanguy@meteo.fr> Date: Thu, 12 Dec 2013 16:17:51 +0000 Subject: [PATCH] Christine 12/12/13 : WENO --- src/MNH/version.f90 | 2 +- src/MNH/write_budget.f90 | 70 +-- src/MNH/write_desfmn.f90 | 25 +- src/MNH/write_hgrid.f90 | 2 +- src/MNH/write_hgridn.f90 | 2 +- src/MNH/write_lfifm1_for_diag.f90 | 286 +++++----- src/MNH/write_lfifm1_for_diag_supp.f90 | 80 +-- src/MNH/write_lfin.f90 | 730 +++++++++---------------- src/MNH/write_phys_param.f90 | 4 +- 9 files changed, 487 insertions(+), 714 deletions(-) diff --git a/src/MNH/version.f90 b/src/MNH/version.f90 index 6ddac0f74..8d2c60c6f 100644 --- a/src/MNH/version.f90 +++ b/src/MNH/version.f90 @@ -38,7 +38,7 @@ USE MODD_CONF, ONLY : NMASDEV,NBUGFIX,CBIBUSER ! IMPLICIT NONE ! -NMASDEV=50 +NMASDEV=51 NBUGFIX=0 CBIBUSER='' ! diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90 index f7cd41a2d..5d1ff5213 100644 --- a/src/MNH/write_budget.f90 +++ b/src/MNH/write_budget.f90 @@ -12,8 +12,7 @@ INTERFACE ! SUBROUTINE WRITE_BUDGET(HFILEDIA,HLUOUT,TPDTCUR, & - TPDTMOD,PTSTEP, & - PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV,KSV ) + TPDTMOD,PTSTEP, KSV ) ! USE MODD_TYPE_DATE ! @@ -22,12 +21,6 @@ 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 REAL, INTENT(IN) :: PTSTEP ! time step -REAL, INTENT(IN) :: PTSTEP_UVW ! Effective time step for - ! momentum advection -REAL, INTENT(IN) :: PTSTEP_MET ! Effective time step for - ! meteorological variables advection -REAL, INTENT(IN) :: PTSTEP_SV ! Effective time step for - ! scalar variables advection INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables ! END SUBROUTINE WRITE_BUDGET @@ -40,8 +33,7 @@ END MODULE MODI_WRITE_BUDGET ! ! ################################################################## SUBROUTINE WRITE_BUDGET(HFILEDIA,HLUOUT,TPDTCUR, & - TPDTMOD,PTSTEP, & - PTSTEP_UVW,PTSTEP_MET,PTSTEP_SV,KSV ) + TPDTMOD,PTSTEP, KSV ) ! ################################################################## ! !!**** *WRITE_BUDGET* - routine to write a LFIFM file for the budget. @@ -158,12 +150,6 @@ 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 REAL, INTENT(IN) :: PTSTEP ! time step -REAL, INTENT(IN) :: PTSTEP_UVW ! Effective time step for - ! momentum advection -REAL, INTENT(IN) :: PTSTEP_MET ! Effective time step for - ! meteorological variables advection -REAL, INTENT(IN) :: PTSTEP_SV ! Effective time step for - ! scalar variables advection INTEGER, INTENT(IN) :: KSV ! Number of Scalar Variables ! !* 0.2 Declarations of local variables : @@ -268,7 +254,7 @@ SELECT CASE (CBUTYPE) IP=1 ! unit conversion for RU budgets ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_UVW * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -341,7 +327,7 @@ SELECT CASE (CBUTYPE) ! IP=2 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_UVW * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -413,7 +399,7 @@ SELECT CASE (CBUTYPE) ! IP=3 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_UVW * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -520,7 +506,7 @@ SELECT CASE (CBUTYPE) ! RTH budgets storage IP=4 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -566,7 +552,7 @@ SELECT CASE (CBUTYPE) ! RTKE budgets storage IP=5 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -612,7 +598,7 @@ SELECT CASE (CBUTYPE) ! RRV budgets storage IP=6 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -658,7 +644,7 @@ SELECT CASE (CBUTYPE) ! RRV budgets storage IP=7 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -703,7 +689,7 @@ SELECT CASE (CBUTYPE) IF (LBU_RRR) THEN IP=8 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -748,7 +734,7 @@ SELECT CASE (CBUTYPE) IF (LBU_RRI) THEN IP=9 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -793,7 +779,7 @@ SELECT CASE (CBUTYPE) IF (LBU_RRS) THEN IP=10 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -838,7 +824,7 @@ SELECT CASE (CBUTYPE) IF (LBU_RRG) THEN IP=11 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -883,7 +869,7 @@ SELECT CASE (CBUTYPE) IF (LBU_RRH) THEN IP=12 ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -929,7 +915,7 @@ SELECT CASE (CBUTYPE) DO JSV = 1,KSV IP=12+JSV ALLOCATE(ZCONVERT(NBUPROCNBR(IP))) - ZCONVERT(1:2) = PTSTEP_SV * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(IP)) = 2. ! @@ -1071,7 +1057,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(1))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(1))) - ZCONVERT(1:2) = PTSTEP_UVW * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(1)) = 2. DO JPROC=1,NBUPROCNBR(1) @@ -1128,7 +1114,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(2))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(2))) - ZCONVERT(1:2) = PTSTEP_UVW * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(2)) = 2. DO JPROC=1,NBUPROCNBR(2) @@ -1184,7 +1170,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(3))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(3))) - ZCONVERT(1:2) = PTSTEP_UVW * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(3)) = 2. DO JPROC=1,NBUPROCNBR(3) @@ -1242,7 +1228,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(4))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(4))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(4)) = 2. DO JPROC=1,NBUPROCNBR(4) @@ -1273,7 +1259,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(5))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(5))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(5)) = 2. DO JPROC=1,NBUPROCNBR(5) @@ -1304,7 +1290,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(6))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(6))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(6)) = 2. DO JPROC=1,NBUPROCNBR(6) @@ -1335,7 +1321,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(7))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(7))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(7)) = 2. DO JPROC=1,NBUPROCNBR(7) @@ -1366,7 +1352,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(8))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(8))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(8)) = 2. DO JPROC=1,NBUPROCNBR(8) @@ -1397,7 +1383,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(9))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(9))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(9)) = 2. DO JPROC=1,NBUPROCNBR(9) @@ -1428,7 +1414,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(10))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(10))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(10)) = 2. DO JPROC=1,NBUPROCNBR(10) @@ -1459,7 +1445,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(11))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(11))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(11)) = 2. DO JPROC=1,NBUPROCNBR(11) @@ -1490,7 +1476,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(12))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(12))) - ZCONVERT(1:2) = PTSTEP_MET * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(12)) = 2. DO JPROC=1,NBUPROCNBR(12) @@ -1522,7 +1508,7 @@ SELECT CASE (CBUTYPE) ALLOCATE(IWORKGRID(NBUPROCNBR(12+JSV))) ! ALLOCATE(ZCONVERT(NBUPROCNBR(12+JSV))) - ZCONVERT(1:2) = PTSTEP_SV * REAL(NBUSTEP) + ZCONVERT(1:2) = PTSTEP * REAL(NBUSTEP) ZCONVERT(3) = 2. * PTSTEP * REAL(NBUSTEP) ZCONVERT(4:NBUPROCNBR(12+JSV)) = 2. DO JPROC=1,NBUPROCNBR(12+JSV) diff --git a/src/MNH/write_desfmn.f90 b/src/MNH/write_desfmn.f90 index 71f6077e9..c16b10541 100644 --- a/src/MNH/write_desfmn.f90 +++ b/src/MNH/write_desfmn.f90 @@ -219,6 +219,7 @@ CALL INIT_NAM_LUNITn WRITE(UNIT=ILUSEG,NML=NAM_LUNITn) IF (CPROGRAM/='MESONH') THEN LUSECI=.FALSE. + NSV_USER = 0 ENDIF CALL INIT_NAM_CONFn WRITE(UNIT=ILUSEG,NML=NAM_CONFn) @@ -274,6 +275,15 @@ WRITE(UNIT=ILUSEG,NML=NAM_DYNn) ! CALL INIT_NAM_ADVn WRITE(UNIT=ILUSEG,NML=NAM_ADVn) +IF (CPROGRAM/='MESONH') THEN + CTURB = 'NONE' + CRAD = 'NONE' + CCLOUD = 'NONE' + CDCONV = 'NONE' + CSCONV = 'NONE' + CELEC = 'NONE' + CACTCCN = 'NONE' +END IF CALL INIT_NAM_PARAMn WRITE(UNIT=ILUSEG,NML=NAM_PARAMn) ! @@ -296,6 +306,17 @@ WRITE(UNIT=ILUSEG,NML=NAM_NUDGINGn) CALL INIT_NAM_TURBn IF(CTURB /= 'NONE') WRITE(UNIT=ILUSEG,NML=NAM_TURBn) ! +IF (CPROGRAM/='MESONH') THEN + LUSECHEM = .FALSE. + LORILAM = .FALSE. + LDEPOS_AER = .FALSE. + LDUST = .FALSE. + LDEPOS_DST = .FALSE. + LSALT = .FALSE. + LDEPOS_SLT = .FALSE. + LPASPOL = .FALSE. + LCONDSAMP = .FALSE. +END IF CALL INIT_NAM_CH_MNHCn IF(LUSECHEM .OR. LCH_CONV_LINOX .OR. LCH_CONV_SCAV) & WRITE(UNIT=ILUSEG,NML=NAM_CH_MNHCn) @@ -314,8 +335,10 @@ IF(LSERIES) WRITE(UNIT=ILUSEG,NML=NAM_SERIESn) IF(L2D_ADV_FRC .OR. L2D_REL_FRC) WRITE(UNIT=ILUSEG,NML=NAM_2D_FRC) ! IF (LUV_FLX .OR. LTH_FLX) WRITE(UNIT=ILUSEG,NML=NAM_LATZ_EDFLX) - ! +IF (CPROGRAM/='MESONH') THEN + LLG = .FALSE. +END IF WRITE(UNIT=ILUSEG,NML=NAM_CONF) WRITE(UNIT=ILUSEG,NML=NAM_DYN) WRITE(UNIT=ILUSEG,NML=NAM_NESTING) diff --git a/src/MNH/write_hgrid.f90 b/src/MNH/write_hgrid.f90 index 54ed3f3bf..49789a1fc 100644 --- a/src/MNH/write_hgrid.f90 +++ b/src/MNH/write_hgrid.f90 @@ -143,7 +143,7 @@ CALL FMWRIT(HOUTFILE,'XHAT',CLUOUT0,'XX',XPGDXHAT,2,LEN(YCOMMENT),YCOMMENT,IRESP YCOMMENT='METERS' CALL FMWRIT(HOUTFILE,'YHAT',CLUOUT0,'YY',XPGDYHAT,3,LEN(YCOMMENT),YCOMMENT,IRESP) ! -IF (CSTORAGE_TYPE=='MT' .OR. CSTORAGE_TYPE=='TT') THEN +IF (CSTORAGE_TYPE=='TT') THEN YCOMMENT=' ' CALL FMWRIT(HOUTFILE,'THINSHELL',CLUOUT0,'--',LTHINSHELL,0,LEN(YCOMMENT),YCOMMENT,IRESP) YCOMMENT=' ' diff --git a/src/MNH/write_hgridn.f90 b/src/MNH/write_hgridn.f90 index 0018ab70b..61fcee0ba 100644 --- a/src/MNH/write_hgridn.f90 +++ b/src/MNH/write_hgridn.f90 @@ -137,7 +137,7 @@ CALL FMWRIT(HOUTFILE,'XHAT',CLUOUT,'XX',XXHAT,2,LEN(YCOMMENT),YCOMMENT,IRESP) YCOMMENT='METERS' CALL FMWRIT(HOUTFILE,'YHAT',CLUOUT,'YY',XYHAT,3,LEN(YCOMMENT),YCOMMENT,IRESP) ! -IF (CSTORAGE_TYPE=='MT' .OR. CSTORAGE_TYPE=='TT') THEN +IF (CSTORAGE_TYPE=='TT') THEN YCOMMENT=' ' CALL FMWRIT(HOUTFILE,'THINSHELL',CLUOUT,'--',LTHINSHELL,0,LEN(YCOMMENT),YCOMMENT,IRESP) YCOMMENT=' ' diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index 9bc485cdb..2021402ce 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -270,9 +270,9 @@ REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZPHI,ZTHETAE,ZTHETAV INTEGER, DIMENSION(:,:), ALLOCATABLE :: IWORK1 integer :: ICURR,INBOUT ! -REAL,DIMENSION(SIZE(XSVM,1),SIZE(XSVM,2),SIZE(XSVM,3),NSP+NCARB+NSOA,JPMODE):: ZPTOTA -REAL,DIMENSION(SIZE(XSVM,1),SIZE(XSVM,2),SIZE(XSVM,3),NMODE_DST*2):: ZSDSTDEP -REAL,DIMENSION(SIZE(XSVM,1),SIZE(XSVM,2),SIZE(XSVM,3),NMODE_SLT*2):: ZSSLTDEP +REAL,DIMENSION(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),NSP+NCARB+NSOA,JPMODE):: ZPTOTA +REAL,DIMENSION(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),NMODE_DST*2):: ZSDSTDEP +REAL,DIMENSION(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),NMODE_SLT*2):: ZSSLTDEP REAL,DIMENSION(:,:,:,:), ALLOCATABLE :: ZSIG_DST, ZRG_DST, ZN0_DST REAL,DIMENSION(:,:,:,:), ALLOCATABLE :: ZSIG_SLT, ZRG_SLT, ZN0_SLT REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZRHOT, ZTMP ! work array @@ -610,36 +610,36 @@ CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTHVREF,IGRID,ILENCH,YCOMMENT,IRESP) ! !* 1.5 Variables necessary for plots ! -! PABSM,THM,POVOM for cross sections at constant pressure +! PABST,THT,POVOM for cross sections at constant pressure ! level or constant theta level or constant PV level ! IF (INDEX(CISO,'PR') /= 0) THEN - YRECFM='PABSM' + YRECFM='PABST' YCOMMENT='X_Y_Z_ABSolute Pressure (Pa)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XPABSM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XPABST,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! IF (INDEX(CISO,'TK') /= 0) THEN - YRECFM='THM' + YRECFM='THT' YCOMMENT='X_Y_Z_potential temperature (K)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTHM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTHT,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ZCORIOZ(:,:,:)=SPREAD( XCORIOZ(:,:),DIM=3,NCOPIES=IKU ) -ZVOX(:,:,:)=GY_W_VW(1,IKU,1,XWM,XDYY,XDZZ,XDZY)-GZ_V_VW(1,IKU,1,XVM,XDZZ) +ZVOX(:,:,:)=GY_W_VW(1,IKU,1,XWT,XDYY,XDZZ,XDZY)-GZ_V_VW(1,IKU,1,XVT,XDZZ) ZVOX(:,:,2)=ZVOX(:,:,3) -ZVOY(:,:,:)=GZ_U_UW(1,IKU,1,XUM,XDZZ)-GX_W_UW(1,IKU,1,XWM,XDXX,XDZZ,XDZX) +ZVOY(:,:,:)=GZ_U_UW(1,IKU,1,XUT,XDZZ)-GX_W_UW(1,IKU,1,XWT,XDXX,XDZZ,XDZX) ZVOY(:,:,2)=ZVOY(:,:,3) -ZVOZ(:,:,:)=GX_V_UV(1,IKU,1,XVM,XDXX,XDZZ,XDZX)-GY_U_UV(1,IKU,1,XUM,XDYY,XDZZ,XDZY) +ZVOZ(:,:,:)=GX_V_UV(1,IKU,1,XVT,XDXX,XDZZ,XDZX)-GY_U_UV(1,IKU,1,XUT,XDYY,XDZZ,XDZY) ZVOZ(:,:,2)=ZVOZ(:,:,3) ZVOZ(:,:,1)=ZVOZ(:,:,3) -ZWORK31(:,:,:)=GX_M_M(1,IKU,1,XTHM,XDXX,XDZZ,XDZX) -ZWORK32(:,:,:)=GY_M_M(1,IKU,1,XTHM,XDYY,XDZZ,XDZY) -ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,XTHM,XDZZ) +ZWORK31(:,:,:)=GX_M_M(1,IKU,1,XTHT,XDXX,XDZZ,XDZX) +ZWORK32(:,:,:)=GY_M_M(1,IKU,1,XTHT,XDYY,XDZZ,XDZY) +ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,XTHT,XDZZ) ZPOVO(:,:,:)= ZWORK31(:,:,:)*MZF(1,IKU,1,MYF(ZVOX(:,:,:))) & + ZWORK32(:,:,:)*MZF(1,IKU,1,MXF(ZVOY(:,:,:))) & + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:)) @@ -656,38 +656,38 @@ END IF ! ! IF (LVAR_RS) THEN - YRECFM='UM' + YRECFM='UT' YCOMMENT='X_Y_Z_U component of wind (m/s)' IGRID=2 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XUM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XUT,IGRID,ILENCH,YCOMMENT,IRESP) ! - YRECFM='VM' + YRECFM='VT' YCOMMENT='X_Y_Z_V component of wind (m/s)' IGRID=3 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XVM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XVT,IGRID,ILENCH,YCOMMENT,IRESP) ! IF (LWIND_ZM) THEN YCOMMENT='X_Y_Z_Zonal and Meridian components of horizontal wind (M/S)' - CALL UV_TO_ZONAL_AND_MERID(XUM,XVM,23, & + CALL UV_TO_ZONAL_AND_MERID(XUT,XVT,23, & HFMFILE=HFMFILE,HRECU='UM_ZM',HRECV='VM_ZM',HCOMMENT=YCOMMENT) END IF ! - YRECFM='WM' + YRECFM='WT' YCOMMENT='X_Y_Z_vertical wind (m/s)' IGRID=4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XWM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XWT,IGRID,ILENCH,YCOMMENT,IRESP) ! ! write mixing ratio for water vapor required to plot radio-soundings ! IF (LUSERV) THEN - YRECFM='RVM' + YRECFM='RVT' YCOMMENT='X_Y_Z_Vapor mixing Ratio (KG/KG)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XRM(:,:,:,1),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XRT(:,:,:,1),IGRID,ILENCH, & YCOMMENT,IRESP) END IF END IF @@ -711,22 +711,22 @@ CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLON,IGRID,ILENCH,YCOMMENT,IRESP) ! !* 1.6 Other pronostic variables ! -ZTEMP(:,:,:)=XTHM(:,:,:)*(XPABSM(:,:,:)/ XP00) **(XRD/XCPD) +ZTEMP(:,:,:)=XTHT(:,:,:)*(XPABST(:,:,:)/ XP00) **(XRD/XCPD) ! IF (LVAR_TURB) THEN IF (CTURB /= 'NONE') THEN - YRECFM='TKEM' + YRECFM='TKET' YCOMMENT='X_Y_Z_Turbulent Kinetic Energy (M**2/S**2)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTKEM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XTKET,IGRID,ILENCH,YCOMMENT,IRESP) ! IF( NRR > 1 ) THEN - YRECFM='SRCM' + YRECFM='SRCT' YCOMMENT='X_Y_Z_normalized 2nd_order moment s_r_c/2Sigma_s2 (KG/KG**2)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSRCM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSRCT,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM='SIGS' YCOMMENT='X_Y_Z_Sigma_s from turbulence scheme (KG/KG**2)' @@ -905,12 +905,12 @@ IF (LVAR_PR ) THEN DO JK = IKB,IKE !* Calcul de qtot IF (CCLOUD(1:3) == 'ICE' ) THEN - ZWORK23(IIB:IIE,IJB:IJE) = XRM(IIB:IIE,IJB:IJE,JK,1) + & - XRM(IIB:IIE,IJB:IJE,JK,2) + XRM(IIB:IIE,IJB:IJE,JK,3) + & - XRM(IIB:IIE,IJB:IJE,JK,4) + XRM(IIB:IIE,IJB:IJE,JK,5) + & - XRM(IIB:IIE,IJB:IJE,JK,6) + ZWORK23(IIB:IIE,IJB:IJE) = XRT(IIB:IIE,IJB:IJE,JK,1) + & + XRT(IIB:IIE,IJB:IJE,JK,2) + XRT(IIB:IIE,IJB:IJE,JK,3) + & + XRT(IIB:IIE,IJB:IJE,JK,4) + XRT(IIB:IIE,IJB:IJE,JK,5) + & + XRT(IIB:IIE,IJB:IJE,JK,6) ELSE - ZWORK23(IIB:IIE,IJB:IJE) = XRM(IIB:IIE,IJB:IJE,JK,1) + ZWORK23(IIB:IIE,IJB:IJE) = XRT(IIB:IIE,IJB:IJE,JK,1) ENDIF !* Calcul de l'eau precipitable ZWORK21(IIB:IIE,IJB:IJE)=XRHODREF(IIB:IIE,IJB:IJE,JK)* & @@ -931,14 +931,14 @@ ENDIF ! !* Flux d'humidité et d'hydrométéores IF (LHU_FLX) THEN - ZWORK35(:,:,:) = XRHODREF(:,:,:) * XRM(:,:,:,1) - ZWORK31(:,:,:) = MXM(ZWORK35(:,:,:)) * XUM(:,:,:) - ZWORK32(:,:,:) = MYM(ZWORK35(:,:,:)) * XVM(:,:,:) + ZWORK35(:,:,:) = XRHODREF(:,:,:) * XRT(:,:,:,1) + ZWORK31(:,:,:) = MXM(ZWORK35(:,:,:)) * XUT(:,:,:) + ZWORK32(:,:,:) = MYM(ZWORK35(:,:,:)) * XVT(:,:,:) IF (CCLOUD(1:3) == 'ICE' ) THEN - ZWORK36(:,:,:) = ZWORK35(:,:,:) + XRHODREF(:,:,:) * (XRM(:,:,:,2) + & - XRM(:,:,:,3) + XRM(:,:,:,4) + XRM(:,:,:,5) + XRM(:,:,:,6)) - ZWORK33(:,:,:) = MXM(ZWORK36(:,:,:)) * XUM(:,:,:) - ZWORK34(:,:,:) = MYM(ZWORK36(:,:,:)) * XVM(:,:,:) + ZWORK36(:,:,:) = ZWORK35(:,:,:) + XRHODREF(:,:,:) * (XRT(:,:,:,2) + & + XRT(:,:,:,3) + XRT(:,:,:,4) + XRT(:,:,:,5) + XRT(:,:,:,6)) + ZWORK33(:,:,:) = MXM(ZWORK36(:,:,:)) * XUT(:,:,:) + ZWORK34(:,:,:) = MYM(ZWORK36(:,:,:)) * XVT(:,:,:) ENDIF ZWORK35(:,:,:) = GX_U_M(1,IKU,1,ZWORK31,XDXX,XDZZ,XDZX) + GY_V_M(1,IKU,1,ZWORK32,XDYY,XDZZ,XDZY) ZWORK36(:,:,:) = GX_U_M(1,IKU,1,ZWORK33,XDXX,XDZZ,XDZX) + GY_V_M(1,IKU,1,ZWORK34,XDYY,XDZZ,XDZY) @@ -1086,7 +1086,7 @@ IF (LVAR_MRW) THEN YRECFM= 'MRV' YCOMMENT='X_Y_Z_MRV (G/KG)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XRM(:,:,:,IRR)*1.E3 + ZWORK31(:,:,:)=XRT(:,:,:,IRR)*1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) @@ -1096,13 +1096,13 @@ IF (LVAR_MRW) THEN YRECFM= 'MRC' YCOMMENT='X_Y_Z_MRC (G/KG)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XRM(:,:,:,IRR)*1.E3 + ZWORK31(:,:,:)=XRT(:,:,:,IRR)*1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) YRECFM= 'VRC' YCOMMENT='X_Y_Z_VRC (vol/vol)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XRM(:,:,:,IRR)*XRHODREF(:,:,:)/1.E3 + ZWORK31(:,:,:)=XRT(:,:,:,IRR)*XRHODREF(:,:,:)/1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END IF @@ -1111,13 +1111,13 @@ IF (LVAR_MRW) THEN YRECFM= 'MRR' YCOMMENT='X_Y_Z_MRR (G/KG)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XRM(:,:,:,IRR)*1.E3 + ZWORK31(:,:,:)=XRT(:,:,:,IRR)*1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) YRECFM= 'VRR' YCOMMENT='X_Y_Z_VRR (vol/vol)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XRM(:,:,:,IRR)*XRHODREF(:,:,:)/1.E3 + ZWORK31(:,:,:)=XRT(:,:,:,IRR)*XRHODREF(:,:,:)/1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END IF @@ -1126,7 +1126,7 @@ IF (LVAR_MRW) THEN YRECFM= 'MRI' YCOMMENT='X_Y_Z_MRI (G/KG)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XRM(:,:,:,IRR)*1.E3 + ZWORK31(:,:,:)=XRT(:,:,:,IRR)*1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) IF (LUSECI) THEN @@ -1142,7 +1142,7 @@ IF (LVAR_MRW) THEN YRECFM= 'MRS' YCOMMENT='X_Y_Z_MRS (G/KG)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XRM(:,:,:,IRR)*1.E3 + ZWORK31(:,:,:)=XRT(:,:,:,IRR)*1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END IF @@ -1151,7 +1151,7 @@ IF (LVAR_MRW) THEN YRECFM= 'MRG' YCOMMENT='X_Y_Z_RG (G/KG)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XRM(:,:,:,IRR)*1.E3 + ZWORK31(:,:,:)=XRT(:,:,:,IRR)*1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END IF @@ -1160,7 +1160,7 @@ IF (LVAR_MRW) THEN YRECFM= 'MRH' YCOMMENT='X_Y_Z_RH (G/KG)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XRM(:,:,:,IRR)*1.E3 + ZWORK31(:,:,:)=XRT(:,:,:,IRR)*1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END IF @@ -1177,7 +1177,7 @@ IF (LVAR_MRSV) THEN WRITE(YRECFM,'(A4,I3.3)')'MRSV',JSV WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','MRSV',JSV,' (G/KG)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XSVM(:,:,:,JSV)*1.E3 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV)*1.E3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END DO @@ -1185,13 +1185,13 @@ END IF ! microphysical C2R2 scheme scalar variables IF(LVAR_MRW) THEN DO JSV = NSV_C2R2BEG,NSV_C2R2END - YRECFM=TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))//'M' + YRECFM=TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))//'T' IF (JSV < NSV_C2R2END) THEN WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','MRSV',JSV,' (/CM3)' - ZWORK31(:,:,:)=XSVM(:,:,:,JSV)*1.E-6 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV)*1.E-6 ELSE WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','MRSV',JSV,' (/L)' - ZWORK31(:,:,:)=XSVM(:,:,:,JSV)*1.E-3 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV)*1.E-3 ENDIF ILENCH=LEN(YCOMMENT) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & @@ -1199,10 +1199,10 @@ IF(LVAR_MRW) THEN END DO ! microphysical C3R5 scheme additional scalar variables DO JSV = NSV_C1R3BEG,NSV_C1R3END - YRECFM=TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (/L)' + YRECFM=TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (/L)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XSVM(:,:,:,JSV)*1.E-3 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV)*1.E-3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END DO @@ -1211,10 +1211,10 @@ END IF ! chemical scalar variables in gas phase PPBV IF (LCHEMDIAG) THEN DO JSV = NSV_CHGSBEG,NSV_CHGSEND - YRECFM=TRIM(UPCASE(CNAMES(JSV-NSV_CHGSBEG+1)))//'M' + YRECFM=TRIM(UPCASE(CNAMES(JSV-NSV_CHGSBEG+1)))//'T' WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','CHIM',JSV,' (ppbv)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XSVM(:,:,:,JSV)*1.E9 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV)*1.E9 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END DO @@ -1225,8 +1225,8 @@ IF (LCHAQDIAG) THEN !aqueous concentration in M YRECFM=TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'M' WRITE(YCOMMENT,'(A6,A4,I3.3,A4)')'X_Y_Z_','CHAQ',JSV,' (M)' ILENCH=LEN(YCOMMENT) - WHERE(((XRM(:,:,:,2)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ) - ZWORK31(:,:,:)=(XSVM(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRM(:,:,:,2)) + WHERE(((XRT(:,:,:,2)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ) + ZWORK31(:,:,:)=(XSVT(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRT(:,:,:,2)) ENDWHERE CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) @@ -1236,19 +1236,19 @@ IF (LCHAQDIAG) THEN !aqueous concentration in M YRECFM=TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'M' WRITE(YCOMMENT,'(A6,A4,I3.3,A4)')'X_Y_Z_','CHAQ',JSV,' (M)' ILENCH=LEN(YCOMMENT) - WHERE(((XRM(:,:,:,3)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ) - ZWORK31(:,:,:)=(XSVM(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRM(:,:,:,3)) + WHERE(((XRT(:,:,:,3)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ) + ZWORK31(:,:,:)=(XSVT(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRT(:,:,:,3)) ENDWHERE CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END DO ! ZWORK31(:,:,:)=0. ! DO JSV = NSV_CHICBEG,NSV_CHICEND ! ice phase -! YRECFM=TRIM(CICNAMES(JSV-NSV_CHICBEG+1))//'M' +! YRECFM=TRIM(CICNAMES(JSV-NSV_CHICBEG+1))//'T' ! WRITE(YCOMMENT,'(A6,A4,I3.3,A4)')'X_Y_Z_','CHIC',JSV,' (M)' ! ILENCH=LEN(YCOMMENT) -! WHERE(((XRM(:,:,:,3)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ) -! ZWORK31(:,:,:)=(XSVM(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRM(:,:,:,3)) +! WHERE(((XRT(:,:,:,3)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ) +! ZWORK31(:,:,:)=(XSVT(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRT(:,:,:,3)) ! ENDWHERE ! CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & ! YCOMMENT,IRESP) @@ -1286,7 +1286,7 @@ IF (LCONDSAMP) THEN WRITE(YRECFM,'(A3,I3.3)')'CST',JSV WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','CST',JSV,' () ' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) ! END DO @@ -1296,10 +1296,10 @@ END IF ! Lagrangian variables IF (LTRAJ) THEN DO JSV = NSV_LGBEG,NSV_LGEND - YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'M' + YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T' WRITE(YCOMMENT,'(A6,A20,I3.3,A7)')'X_Y_Z_','Lagrangian variable ',JSV,' (M)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) END DO ! X coordinate @@ -1337,21 +1337,21 @@ IF (.NOT.(LUSECHEM .OR. LCHEMDIAG) .AND. LCH_CONV_LINOX) THEN YRECFM='LINOXM' WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','LNOX',JSV,' (ppbv)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XSVM(:,:,:,JSV)*1.E9 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV)*1.E9 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END DO END IF IF (LELECDIAG .AND. CELEC .NE. "NONE") THEN DO JSV = NSV_ELECBEG,NSV_ELECEND - YRECFM=TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'M' + YRECFM=TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'T' IF (JSV .GT. NSV_ELECBEG .AND. JSV .LT. NSV_ELECEND) THEN - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (C/m3)' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (C/m3)' ELSE - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (nb ions/m3)' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (nb ions/m3)' END IF ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XSVM(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END DO @@ -1359,22 +1359,22 @@ END IF ! Sea Salt variables IF (LSALT) THEN IF(.NOT.ALLOCATED(ZSIG_SLT)) & - ALLOCATE(ZSIG_SLT(SIZE(XSVM,1), SIZE(XSVM,2), SIZE(XSVM,3), NMODE_SLT)) + ALLOCATE(ZSIG_SLT(SIZE(XSVT,1), SIZE(XSVT,2), SIZE(XSVT,3), NMODE_SLT)) IF(.NOT.ALLOCATED(ZRG_SLT)) & - ALLOCATE(ZRG_SLT(SIZE(XSVM,1), SIZE(XSVM,2), SIZE(XSVM,3), NMODE_SLT)) + ALLOCATE(ZRG_SLT(SIZE(XSVT,1), SIZE(XSVT,2), SIZE(XSVT,3), NMODE_SLT)) IF(.NOT.ALLOCATED(ZN0_SLT)) & - ALLOCATE(ZN0_SLT(SIZE(XSVM,1), SIZE(XSVM,2), SIZE(XSVM,3), NMODE_SLT)) + ALLOCATE(ZN0_SLT(SIZE(XSVT,1), SIZE(XSVT,2), SIZE(XSVT,3), NMODE_SLT)) ! DO JSV = NSV_SLTBEG,NSV_SLTEND - YRECFM=TRIM(UPCASE(CSALTNAMES(JSV-NSV_SLTBEG+1)))//'M' + YRECFM=TRIM(UPCASE(CSALTNAMES(JSV-NSV_SLTBEG+1)))//'T' WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','SALT',JSV,' (ppbv)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XSVM(:,:,:,JSV)*1.E9 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV)*1.E9 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END DO ! - CALL PPP2SALT(XSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND),XRHODREF,& + CALL PPP2SALT(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND),XRHODREF,& PSIG3D=ZSIG_SLT, PRG3D=ZRG_SLT, PN3D=ZN0_SLT) DO JJ=1,NMODE_SLT WRITE(YRECFM,'(A6,I1)')'SLTRGA',JJ @@ -1435,9 +1435,9 @@ IF (LSALT) THEN END IF IF (LSALT.AND.LDEPOS_SLT(IMI)) THEN ! - ZSSLTDEP=XSVM(:,:,:,NSV_SLTDEPBEG:NSV_SLTDEPEND) + ZSSLTDEP=XSVT(:,:,:,NSV_SLTDEPBEG:NSV_SLTDEPEND) DO JSV = 1,NSV_SLTDEP - YRECFM=TRIM(UPCASE(CDESLTNAMES(JSV)))//'M' + YRECFM=TRIM(UPCASE(CDESLTNAMES(JSV)))//'T' WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','SALTDEP',JSV,' (ppbv)' ILENCH=LEN(YCOMMENT) ZWORK31(:,:,:)=ZSSLTDEP(:,:,:,JSV)*1.E9 @@ -1529,22 +1529,22 @@ IF (LSALT.AND.LDEPOS_SLT(IMI)) THEN ! Dust variables IF (LDUST) THEN IF(.NOT.ALLOCATED(ZSIG_DST)) & - ALLOCATE(ZSIG_DST(SIZE(XSVM,1), SIZE(XSVM,2), SIZE(XSVM,3), NMODE_DST)) + ALLOCATE(ZSIG_DST(SIZE(XSVT,1), SIZE(XSVT,2), SIZE(XSVT,3), NMODE_DST)) IF(.NOT.ALLOCATED(ZRG_DST)) & - ALLOCATE(ZRG_DST(SIZE(XSVM,1), SIZE(XSVM,2), SIZE(XSVM,3), NMODE_DST)) + ALLOCATE(ZRG_DST(SIZE(XSVT,1), SIZE(XSVT,2), SIZE(XSVT,3), NMODE_DST)) IF(.NOT.ALLOCATED(ZN0_DST)) & - ALLOCATE(ZN0_DST(SIZE(XSVM,1), SIZE(XSVM,2), SIZE(XSVM,3), NMODE_DST)) + ALLOCATE(ZN0_DST(SIZE(XSVT,1), SIZE(XSVT,2), SIZE(XSVT,3), NMODE_DST)) ! DO JSV = NSV_DSTBEG,NSV_DSTEND - YRECFM=TRIM(UPCASE(CDUSTNAMES(JSV-NSV_DSTBEG+1)))//'M' + YRECFM=TRIM(UPCASE(CDUSTNAMES(JSV-NSV_DSTBEG+1)))//'T' WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','DUST',JSV,' (ppbv)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XSVM(:,:,:,JSV)*1.E9 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV)*1.E9 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END DO ! - CALL PPP2DUST(XSVM(:,:,:,NSV_DSTBEG:NSV_DSTEND),XRHODREF,& + CALL PPP2DUST(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND),XRHODREF,& PSIG3D=ZSIG_DST, PRG3D=ZRG_DST, PN3D=ZN0_DST) DO JJ=1,NMODE_DST WRITE(YRECFM,'(A6,I1)')'DSTRGA',JJ @@ -1605,9 +1605,9 @@ IF (LDUST) THEN END IF IF (LDUST.AND.LDEPOS_DST(IMI)) THEN ! - ZSDSTDEP=XSVM(:,:,:,NSV_DSTDEPBEG:NSV_DSTDEPEND) + ZSDSTDEP=XSVT(:,:,:,NSV_DSTDEPBEG:NSV_DSTDEPEND) DO JSV = 1,NSV_DSTDEP - YRECFM=TRIM(UPCASE(CDEDSTNAMES(JSV)))//'M' + YRECFM=TRIM(UPCASE(CDEDSTNAMES(JSV)))//'T' WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','DUSTDEP',JSV,' (ppbv)' ILENCH=LEN(YCOMMENT) ZWORK31(:,:,:)=ZSDSTDEP(:,:,:,JSV)*1.E9 @@ -1699,22 +1699,22 @@ IF (LDUST.AND.LDEPOS_DST(IMI)) THEN ! Aerosol IF ((LCHEMDIAG).AND.(LORILAM).AND.(LUSECHEM)) THEN DO JSV = NSV_AERBEG,NSV_AEREND - YRECFM=TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'M' + YRECFM=TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'T' WRITE(YCOMMENT,'(A6,A4,I3.3,A7)')'X_Y_Z_','AERO',JSV,' (ppbv)' ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XSVM(:,:,:,JSV)*1.E9 + ZWORK31(:,:,:)=XSVT(:,:,:,JSV)*1.E9 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH, & YCOMMENT,IRESP) END DO ! IF (.NOT.(ASSOCIATED(XN3D))) & - ALLOCATE(XN3D(SIZE(XSVM,1),SIZE(XSVM,2),SIZE(XSVM,3),JPMODE)) + ALLOCATE(XN3D(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPMODE)) IF (.NOT.(ASSOCIATED(XRG3D))) & - ALLOCATE(XRG3D(SIZE(XSVM,1),SIZE(XSVM,2),SIZE(XSVM,3),JPMODE)) + ALLOCATE(XRG3D(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPMODE)) IF (.NOT.(ASSOCIATED(XSIG3D))) & - ALLOCATE(XSIG3D(SIZE(XSVM,1),SIZE(XSVM,2),SIZE(XSVM,3),JPMODE)) + ALLOCATE(XSIG3D(SIZE(XSVT,1),SIZE(XSVT,2),SIZE(XSVT,3),JPMODE)) ! - CALL PPP2AERO(XSVM(:,:,:,NSV_AERBEG:NSV_AEREND), XRHODREF, & + CALL PPP2AERO(XSVT(:,:,:,NSV_AERBEG:NSV_AEREND), XRHODREF, & PSIG3D=XSIG3D, PRG3D=XRG3D, PN3D=XN3D, PCTOTA=ZPTOTA) DO JJ=1,JPMODE WRITE(YRECFM,'(A3,I1)')'RGA',JJ @@ -2003,7 +2003,7 @@ IF (LTPZH .OR. LCOREF) THEN YCOMMENT='X_Y_Z_PRESsure (hPa)' IGRID=1 ILENCH=LEN(YCOMMENT) - ZWORK31(:,:,:)=XPABSM(:,:,:)*1E-2 + ZWORK31(:,:,:)=XPABST(:,:,:)*1E-2 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) ! !* Geopotential in meters @@ -2017,15 +2017,15 @@ IF (LTPZH .OR. LCOREF) THEN IF (LUSERV) THEN ZWORK31(:,:,:)=SM_FOES(ZTEMP(:,:,:)) ZWORK33(:,:,:)=ZWORK31(:,:,:) - ZWORK31(:,:,:)=(XMV/XMD)*ZWORK31(:,:,:)/(XPABSM(:,:,:)-ZWORK31(:,:,:)) - ZWORK32(:,:,:)=100.*XRM(:,:,:,1)/ZWORK31(:,:,:) + ZWORK31(:,:,:)=(XMV/XMD)*ZWORK31(:,:,:)/(XPABST(:,:,:)-ZWORK31(:,:,:)) + ZWORK32(:,:,:)=100.*XRT(:,:,:,1)/ZWORK31(:,:,:) IF (CCLOUD(1:3) =='ICE' .OR. CCLOUD =='C3R5') THEN WHERE ( ZTEMP(:,:,:)< XTT) ZWORK31(:,:,:) = EXP( XALPI - XBETAI/ZTEMP(:,:,:) & - XGAMI*ALOG(ZTEMP(:,:,:)) ) !saturation over ice ZWORK33(:,:,:)=ZWORK31(:,:,:) - ZWORK31(:,:,:)=(XMV/XMD)*ZWORK31(:,:,:)/(XPABSM(:,:,:)-ZWORK31(:,:,:)) - ZWORK32(:,:,:)=100.*XRM(:,:,:,1)/ZWORK31(:,:,:) + ZWORK31(:,:,:)=(XMV/XMD)*ZWORK31(:,:,:)/(XPABST(:,:,:)-ZWORK31(:,:,:)) + ZWORK32(:,:,:)=100.*XRT(:,:,:,1)/ZWORK31(:,:,:) END WHERE END IF YRECFM='REHU' @@ -2042,7 +2042,7 @@ IF (LTPZH .OR. LCOREF) THEN CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK33,IGRID,ILENCH,YCOMMENT,IRESP) ! IF (LCOREF) THEN - ZWORK33(:,:,:)=(77.6*( XPABSM(:,:,:)*1E-2 & + ZWORK33(:,:,:)=(77.6*( XPABST(:,:,:)*1E-2 & +ZWORK33(:,:,:)*4810/ZTEMP(:,:,:)) & -6*ZWORK33(:,:,:) )/ZTEMP(:,:,:) YRECFM='COREF' @@ -2074,15 +2074,15 @@ IF ( LMOIST_V .OR. LMSLP .OR. LBLTOP ) THEN IF(NRR > 0) THEN ! compute the ratio : 1 + total water mass / dry air mass ZRV_OV_RD = XRV / XRD - ZTHETAV(:,:,:) = 1. + XRM(:,:,:,1) + ZTHETAV(:,:,:) = 1. + XRT(:,:,:,1) DO JLOOP = 2,1+NRRL+NRRI - ZTHETAV(:,:,:) = ZTHETAV(:,:,:) + XRM(:,:,:,JLOOP) + ZTHETAV(:,:,:) = ZTHETAV(:,:,:) + XRT(:,:,:,JLOOP) END DO ! compute the virtual potential temperature when water is present in any form - ZTHETAV(:,:,:) = XTHM(:,:,:) * (1.+XRM(:,:,:,1)*ZRV_OV_RD) / ZTHETAV(:,:,:) + ZTHETAV(:,:,:) = XTHT(:,:,:) * (1.+XRT(:,:,:,1)*ZRV_OV_RD) / ZTHETAV(:,:,:) ELSE ! compute the virtual potential temperature when water is absent - ZTHETAV(:,:,:) = XTHM(:,:,:) + ZTHETAV(:,:,:) = XTHT(:,:,:) END IF ! IF (LMOIST_V .AND. NRR > 0) THEN @@ -2103,12 +2103,12 @@ END IF IF (( LMOIST_E .OR. LBV_FR ) .AND. (NRR>0)) THEN ALLOCATE(ZTHETAE(IIU,IJU,IKU)) ! - ZWORK31(:,:,:) = MAX(XRM(:,:,:,1),1.E-10) + ZWORK31(:,:,:) = MAX(XRT(:,:,:,1),1.E-10) ZTHETAE(:,:,:)= ( 2840./ & - (3.5*ALOG(XTHM(:,:,:)*( XPABSM(:,:,:)/XP00 )**(XRD/XCPD) ) & - - ALOG( XPABSM(:,:,:)*0.01*ZWORK31(:,:,:) / ( 0.622+ZWORK31(:,:,:) ) ) & + (3.5*ALOG(XTHT(:,:,:)*( XPABST(:,:,:)/XP00 )**(XRD/XCPD) ) & + - ALOG( XPABST(:,:,:)*0.01*ZWORK31(:,:,:) / ( 0.622+ZWORK31(:,:,:) ) ) & -4.805 ) ) + 55. - ZTHETAE(:,:,:)= XTHM(:,:,:) * EXP( (3376. / ZTHETAE(:,:,:) - 2.54) & + ZTHETAE(:,:,:)= XTHT(:,:,:) * EXP( (3376. / ZTHETAE(:,:,:) - 2.54) & *ZWORK31(:,:,:) *(1. +0.81 *ZWORK31(:,:,:)) ) ! IF (LMOIST_E) THEN @@ -2177,7 +2177,7 @@ IF ( LMEAN_POVO ) THEN ZX0D = XMEAN_POVO(2) END IF DO JK=IKB,IKE - WHERE((XPABSM(:,:,JK)>XMEAN_POVO(1)).AND.(XPABSM(:,:,JK)<XMEAN_POVO(2))) + WHERE((XPABST(:,:,JK)>XMEAN_POVO(1)).AND.(XPABST(:,:,JK)<XMEAN_POVO(2))) ZWORK21(:,:)=ZWORK21(:,:)+ZPOVO(:,:,JK) IWORK1(:,:)=IWORK1(:,:)+1 END WHERE @@ -2209,7 +2209,7 @@ IF (LMOIST_V .AND. (NRR>0) ) THEN IWORK1(:,:)=0 ZWORK21(:,:)=0. DO JK=IKB,IKE - WHERE((XPABSM(:,:,JK)>XMEAN_POVO(1)).AND.(XPABSM(:,:,JK)<XMEAN_POVO(2))) + WHERE((XPABST(:,:,JK)>XMEAN_POVO(1)).AND.(XPABST(:,:,JK)<XMEAN_POVO(2))) ZWORK21(:,:)=ZWORK21(:,:)+ZWORK34(:,:,JK) IWORK1(:,:)=IWORK1(:,:)+1 END WHERE @@ -2243,7 +2243,7 @@ IF (LMOIST_E .AND. (NRR>0) ) THEN IWORK1(:,:)=0 ZWORK21(:,:)=0. DO JK=IKB,IKE - WHERE((XPABSM(:,:,JK)>XMEAN_POVO(1)).AND.(XPABSM(:,:,JK)<XMEAN_POVO(2))) + WHERE((XPABST(:,:,JK)>XMEAN_POVO(1)).AND.(XPABST(:,:,JK)<XMEAN_POVO(2))) ZWORK21(:,:)=ZWORK21(:,:)+ZWORK34(:,:,JK) IWORK1(:,:)=IWORK1(:,:)+1 END WHERE @@ -2265,7 +2265,7 @@ END IF ! IF (LDIV) THEN ! - ZWORK31=GX_U_M(1,IKU,1,XUM,XDXX,XDZZ,XDZX) + GY_V_M(1,IKU,1,XVM,XDYY,XDZZ,XDZY) + ZWORK31=GX_U_M(1,IKU,1,XUT,XDXX,XDZZ,XDZX) + GY_V_M(1,IKU,1,XVT,XDYY,XDZZ,XDZY) YRECFM='HDIV' YCOMMENT='X_Y_Z_Horizontal DIVergence (/S)' YCOMMENT='(1/s)' @@ -2277,8 +2277,8 @@ IF (LDIV) THEN YRECFM= 'HMDIV' YCOMMENT='X_Y_Z_Horizontal Moisture DIVergence HMDIV (KG/M3/S)' ILENCH=LEN(YCOMMENT) - ZWORK31=MXM(XRHODREF*XRM(:,:,:,1))*XUM - ZWORK32=MYM(XRHODREF*XRM(:,:,:,1))*XVM + ZWORK31=MXM(XRHODREF*XRT(:,:,:,1))*XUT + ZWORK32=MYM(XRHODREF*XRT(:,:,:,1))*XVT ZWORK33=GX_U_M(1,IKU,1,ZWORK31,XDXX,XDZZ,XDZX) + GY_V_M(1,IKU,1,ZWORK32,XDYY,XDZZ,XDZY) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK33,IGRID,ILENCH, & YCOMMENT,IRESP) @@ -2293,7 +2293,7 @@ ENDIF IF (LGEO .OR. LAGEO) THEN ALLOCATE(ZPHI(IIU,IJU,IKU)) IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN - ZPHI(:,:,:)=(XPABSM(:,:,:)/XP00)**(XRD/XCPD)-XEXNREF(:,:,:) + ZPHI(:,:,:)=(XPABST(:,:,:)/XP00)**(XRD/XCPD)-XEXNREF(:,:,:) ! ZPHI(1,1,:)=2*ZPHI(1,2,:)-ZPHI(1,3,:) ZPHI(1,IJU,:)=2*ZPHI(1,IJU-1,:)-ZPHI(1,IJU-2,:) @@ -2308,7 +2308,7 @@ IF (LGEO .OR. LAGEO) THEN ZWORK32(:,:,:)=MYM(GX_M_M(1,IKU,1,ZPHI,XDXX,XDZZ,XDZX)*XCPD*XTHVREF/ZCORIOZ) ! ELSE IF(CEQNSYS=='LHE') THEN - ZPHI(:,:,:)= ((XPABSM(:,:,:)/XP00)**(XRD/XCPD)-XEXNREF(:,:,:)) & + ZPHI(:,:,:)= ((XPABST(:,:,:)/XP00)**(XRD/XCPD)-XEXNREF(:,:,:)) & * XCPD * XTHVREF(:,:,:) ! ZPHI(1,1,:)=2*ZPHI(1,2,:)-ZPHI(1,3,:) @@ -2350,18 +2350,18 @@ IF (LGEO .OR. LAGEO) THEN YCOMMENT='(M/S)' IGRID=4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XWM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XWT,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! IF (LAGEO) THEN - ZWORK31(:,:,:)=XUM(:,:,:)-ZWORK31(:,:,:) + ZWORK31(:,:,:)=XUT(:,:,:)-ZWORK31(:,:,:) YRECFM='UM89' YCOMMENT='X_Y_Z_U component of AGEOstrophic wind (m/s)' IGRID=2 ILENCH=LEN(YCOMMENT) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) ! - ZWORK32(:,:,:)=XVM(:,:,:)-ZWORK32(:,:,:) + ZWORK32(:,:,:)=XVT(:,:,:)-ZWORK32(:,:,:) YRECFM='VM89' YCOMMENT='X_Y_Z_V component of AGEOstrophic wind (m/s)' IGRID=3 @@ -2379,7 +2379,7 @@ IF (LGEO .OR. LAGEO) THEN YCOMMENT='X_Y_Z_vertical wind (m/s)' IGRID=4 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XWM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XWT,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! END IF @@ -2391,7 +2391,7 @@ END IF IF (LMSLP) THEN ZGAMREF=-6.5E-3 ! Exner function at the first mass point - ZWORK21(:,:) = (XPABSM(:,:,IKB) /XP00)**(XRD/XCPD) + ZWORK21(:,:) = (XPABST(:,:,IKB) /XP00)**(XRD/XCPD) ! virtual temperature at the first mass point ZWORK21(:,:) = ZWORK21(:,:) * ZTHETAV(:,:,IKB) ! virtual temperature at ground level @@ -2401,7 +2401,7 @@ IF (LMSLP) THEN ! average underground virtual temperature ZWORK22(:,:) = 0.5*(ZWORK21(:,:)+ZWORK22(:,:)) ! surface pressure - ZWORK21(:,:) = ( XPABSM(:,:,IKB) + XPABSM(:,:,IKB-1) )*.5 + ZWORK21(:,:) = ( XPABST(:,:,IKB) + XPABST(:,:,IKB-1) )*.5 ! sea level pressure (hPa) ZWORK22(:,:) = 1.E-2*ZWORK21(:,:)*EXP(XG*XZS(:,:)/(XRD*ZWORK22(:,:))) ! @@ -2418,9 +2418,9 @@ END IF IF (LTHW) THEN ! ZWORK21(:,:) = 0. - IF(SIZE(XRM,4)>=1)THEN + IF(SIZE(XRT,4)>=1)THEN DO JK = IKB,IKE - ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRM(:,:,JK,1) * & + ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRT(:,:,JK,1) * & (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! vapor water in mm unit @@ -2432,9 +2432,9 @@ IF (LTHW) THEN END IF ! ZWORK21(:,:) = 0. - IF(SIZE(XRM,4)>=2)THEN + IF(SIZE(XRT,4)>=2)THEN DO JK = IKB,IKE - ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRM(:,:,JK,2) * & + ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRT(:,:,JK,2) * & (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! cloud water in mm unit @@ -2446,9 +2446,9 @@ IF (LTHW) THEN END IF ! ZWORK21(:,:) = 0. - IF(SIZE(XRM,4)>=3)THEN + IF(SIZE(XRT,4)>=3)THEN DO JK = IKB,IKE - ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRM(:,:,JK,3) * & + ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRT(:,:,JK,3) * & (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! rain water in mm unit @@ -2460,9 +2460,9 @@ IF (LTHW) THEN END IF ! ZWORK21(:,:) = 0. - IF(SIZE(XRM,4)>=4)THEN + IF(SIZE(XRT,4)>=4)THEN DO JK = IKB,IKE - ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRM(:,:,JK,4) * & + ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRT(:,:,JK,4) * & (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! ice thickness in mm unit @@ -2474,9 +2474,9 @@ IF (LTHW) THEN END IF ! ZWORK21(:,:) = 0. - IF(SIZE(XRM,4)>=5)THEN + IF(SIZE(XRT,4)>=5)THEN DO JK = IKB,IKE - ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRM(:,:,JK,5) * & + ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRT(:,:,JK,5) * & (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! snow thickness in mm unit @@ -2488,9 +2488,9 @@ IF (LTHW) THEN END IF ! ZWORK21(:,:) = 0. - IF(SIZE(XRM,4)>=6)THEN + IF(SIZE(XRT,4)>=6)THEN DO JK = IKB,IKE - ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRM(:,:,JK,6) * & + ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRT(:,:,JK,6) * & (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! graupel thickness in mm unit @@ -2502,9 +2502,9 @@ IF (LTHW) THEN END IF ! ZWORK21(:,:) = 0. - IF(SIZE(XRM,4)>=7)THEN + IF(SIZE(XRT,4)>=7)THEN DO JK = IKB,IKE - ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRM(:,:,JK,7) * & + ZWORK21(:,:) = ZWORK21(:,:)+XRHODREF(:,:,JK)*XRT(:,:,JK,7) * & (XZZ(:,:,JK+1)-XZZ(:,:,JK))/XRHOLW END DO ZWORK21(:,:) = ZWORK21(:,:)*1000. ! hail thickness in mm unit @@ -2621,11 +2621,11 @@ END IF !* CAPEMAX, CINMAX (corresponding to CAPEMAX), CAPE, CIN, DCAPE, VKE in J/kg ! IF (NCAPE >=0 .AND. LUSERV) THEN - ZWORK31(:,:,:) = XRM(:,:,:,1) * 1000. ! vapour mixing ratio in g/kg + ZWORK31(:,:,:) = XRT(:,:,:,1) * 1000. ! vapour mixing ratio in g/kg ZWORK32(:,:,:)=0.0 ZWORK33(:,:,:)=0.0 ZWORK34(:,:,:)=0.0 - CALL CALCSOUND( XPABSM(:,:,IKB:IKE)* 0.01 ,ZTEMP(:,:,IKB:IKE)- XTT, & + CALL CALCSOUND( XPABST(:,:,IKB:IKE)* 0.01 ,ZTEMP(:,:,IKB:IKE)- XTT, & ZWORK31(:,:,IKB:IKE), & ZWORK32(:,:,IKB:IKE),ZWORK33(:,:,IKB:IKE), & ZWORK34(:,:,IKB:IKE),ZWORK21,ZWORK22 ) @@ -2663,7 +2663,7 @@ IF (NCAPE >=0 .AND. LUSERV) THEN END IF ! IF (NCAPE >=2) THEN - ZWORK31(:,:,1:IKU-1)= 0.5*(XWM(:,:,1:IKU-1)+XWM(:,:,2:IKU)) + ZWORK31(:,:,1:IKU-1)= 0.5*(XWT(:,:,1:IKU-1)+XWT(:,:,2:IKU)) ZWORK31(:,:,IKU) = 0. ZWORK31=0.5*ZWORK31**2 ! @@ -2680,7 +2680,7 @@ ENDIF !* B-V frequency to assess thermal tropopause ! IF (LBV_FR) THEN - ZWORK32(:,:,:)=DZM(1,IKU,1,XTHM(:,:,:))/ MZM(1,IKU,1,XTHM(:,:,:)) + ZWORK32(:,:,:)=DZM(1,IKU,1,XTHT(:,:,:))/ MZM(1,IKU,1,XTHT(:,:,:)) DO JK=1,IKU DO JJ=1,IJU DO JI=1,IIU @@ -2732,7 +2732,7 @@ IF ( NGPS>=0 ) THEN ZWORK21(:,:) = ZTEMP(:,:,IKB) - ZGAMREF*((XZZ(:,:,IKB)+XZZ(:,:,IKB+1))/2.-XZS(:,:)) ! YFGRI=ADJUSTL(ADJUSTR(HFMFILE)//'GPS') - CALL GPS_ZENITH (YFGRI,XRM(:,:,:,1),ZTEMP,XPABSM,ZWORK21,ZWORK22,ZWORK23,ZWORK24) + CALL GPS_ZENITH (YFGRI,XRT(:,:,:,1),ZTEMP,XPABST,ZWORK21,ZWORK22,ZWORK23,ZWORK24) ! YRECFM ='ZTD' YCOMMENT ='X_Y_Z_Zenithal Total Delay (m)' @@ -2865,7 +2865,7 @@ IF(LRADAR .AND. LUSERR) THEN ALLOCATE(ZWORK42(NBRAD,IIELV,NBAZIM,NBSTEPMAX+1,INBOUT)) END IF ! - CALL RADAR_SIMULATOR(XUM,XVM,XWM,XRT,XCIT,XRHODREF,ZTEMP,XPABSM,ZWORK42,ZWORK43) + CALL RADAR_SIMULATOR(XUT,XVT,XWT,XRT,XCIT,XRHODREF,ZTEMP,XPABST,ZWORK42,ZWORK43) ALLOCATE(YRAD(INBOUT)) YRAD(1:9)=(/"ZHH","ZDR","KDP","CSR","ZER","ZEI","ZES","ZEG","VRU"/) ICURR=10 diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90 index e08f87940..d0c723c29 100644 --- a/src/MNH/write_lfifm1_for_diag_supp.f90 +++ b/src/MNH/write_lfifm1_for_diag_supp.f90 @@ -1,3 +1,4 @@ +!----------------------------------------------------------------- !--------------- special set of characters for RCS information !----------------------------------------------------------------- ! $Source$ $Revision$ $Date$ @@ -96,9 +97,9 @@ USE MODD_TIME_n USE MODD_TURB_n USE MODD_REF_n, ONLY: XRHODREF USE MODD_DIAG_FLAG -USE MODD_NSV, ONLY : NSV,NSV_USER,NSV_C2R2BEG,NSV_C2R2END, & - NSV_C1R3BEG, NSV_C1R3END,NSV_ELECBEG,NSV_ELECEND, & - NSV_CHEMBEG, NSV_CHEMEND,NSV_LGBEG, NSV_LGEND +USE MODD_NSV, ONLY : NSV,NSV_USER,NSV_C2R2BEG,NSV_C2R2END, & + NSV_C1R3BEG, NSV_C1R3END,NSV_ELECBEG,NSV_ELECEND, & + NSV_CHEMBEG, NSV_CHEMEND,NSV_LGBEG, NSV_LGEND USE MODD_CH_M9_n, ONLY: CNAMES USE MODD_RAIN_C2R2_DESCR, ONLY: C2R2NAMES USE MODD_ICE_C1R3_DESCR, ONLY: C1R3NAMES @@ -174,7 +175,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZIRBT, ZWVBT REAL :: ZUNDEF ! undefined value in SURFEX ! ! variables needed for 10m wind -INTEGER :: ILEVEL +INTEGER :: ILEVEL ! INTEGER :: IPRES, ITH CHARACTER(LEN=4) :: YCAR4 @@ -202,7 +203,7 @@ IKE=IKU-JPVEXT ALLOCATE(ZWORK21(IIU,IJU)) ALLOCATE(ZWORK31(IIU,IJU,IKU)) ALLOCATE(ZTEMP(IIU,IJU,IKU)) -ZTEMP(:,:,:)=XTHM(:,:,:)*(XPABSM(:,:,:)/ XP00) **(XRD/XCPD) +ZTEMP(:,:,:)=XTHT(:,:,:)*(XPABST(:,:,:)/ XP00) **(XRD/XCPD) ! #ifdef MNH_NCWRIT IF (LNETCDF.AND..NOT.LCARTESIAN) THEN @@ -705,12 +706,12 @@ IF (CSURF=='EXTE') THEN ( XZHAT(ILEVEL+1) + XZHAT(ILEVEL+2)) /2. >10.) !Interpolation between ILEVEL and ILEVEL+1 - XCURRENT_ZON10M(IIB:IIE,IJB:IJE)=XUM(IIB:IIE,IJB:IJE,ILEVEL) + & - (XUM(IIB:IIE,IJB:IJE,ILEVEL+1)-XUM(IIB:IIE,IJB:IJE,ILEVEL)) * & + XCURRENT_ZON10M(IIB:IIE,IJB:IJE)=XUT(IIB:IIE,IJB:IJE,ILEVEL) + & + (XUT(IIB:IIE,IJB:IJE,ILEVEL+1)-XUT(IIB:IIE,IJB:IJE,ILEVEL)) * & ( 10.- (XZHAT(ILEVEL)+XZHAT(ILEVEL+1))/2. ) / & ( (XZHAT(ILEVEL+2)-XZHAT(ILEVEL)) /2.) - XCURRENT_MER10M(IIB:IIE,IJB:IJE)=XVM(IIB:IIE,IJB:IJE,ILEVEL) + & - (XVM(IIB:IIE,IJB:IJE,ILEVEL+1)-XVM(IIB:IIE,IJB:IJE,ILEVEL)) * & + XCURRENT_MER10M(IIB:IIE,IJB:IJE)=XVT(IIB:IIE,IJB:IJE,ILEVEL) + & + (XVT(IIB:IIE,IJB:IJE,ILEVEL+1)-XVT(IIB:IIE,IJB:IJE,ILEVEL)) * & (10.- (XZHAT(ILEVEL)+XZHAT(ILEVEL+1))/2. ) / & ( (XZHAT(ILEVEL+2)-XZHAT(ILEVEL)) /2.) END WHERE @@ -722,15 +723,14 @@ IF (CSURF=='EXTE') THEN IGRID=0 ! in this case (argument IGRID=0), input winds are ZONal and MERidien ! and, output ones are in MesoNH grid - IF (.NOT. LCARTESIAN) THEN - CALL UV_TO_ZONAL_AND_MERID(XCURRENT_ZON10M,XCURRENT_MER10M,IGRID, & + IF (.NOT. LCARTESIAN) & + CALL UV_TO_ZONAL_AND_MERID(XCURRENT_ZON10M,XCURRENT_MER10M,IGRID, & HFMFILE=HFMFILE,HRECU='UM10',HRECV='VM10',HCOMMENT=YCOMMENT) - END IF ! - IF (SIZE(XTKEM)>0) THEN + IF (SIZE(XTKET)>0) THEN ZWORK21(:,:)= 0. ZWORK21(:,:) = SQRT(XCURRENT_ZON10M(:,:)**2+XCURRENT_MER10M(:,:)**2) - ZWORK21(:,:) =ZWORK21(:,:) + 4. * SQRT(XTKEM(:,:,IKB)) + ZWORK21(:,:) =ZWORK21(:,:) + 4. * SQRT(XTKET(:,:,IKB)) YRECFM ='FF10MAX' YCOMMENT ='X_Y_FF10MAX (m/s)' IGRID =1 @@ -805,11 +805,11 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) ! ********************* ! Potential Temperature ! ********************* - CALL PINTER(XTHM, XPABSM, XZZ, ZTEMP, ZWRES, ZPRES, & + CALL PINTER(XTHT, XPABST, XZZ, ZTEMP, ZWRES, ZPRES, & IIU, IJU, IKU, IKB, IPRES, 'LOG', 'RHU.') DO JK=1,IPRES ZWORK21(:,:) = ZWRES(:,:,JK) - YRECFM='THM'//TRIM(YPRES(JK))//'HPA' + YRECFM='THT'//TRIM(YPRES(JK))//'HPA' YCOMMENT='X_Y_potential temperature '//TRIM(YPRES(JK))//'hPa (K)' IGRID=1 ILENCH=LEN(YCOMMENT) @@ -818,24 +818,24 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) ! ********************* ! Wind ! ********************* - ZWORK31(:,:,:) = MXF(XUM(:,:,:)) - CALL PINTER(ZWORK31, XPABSM, XZZ, ZTEMP, ZWRES, ZPRES, & + ZWORK31(:,:,:) = MXF(XUT(:,:,:)) + CALL PINTER(ZWORK31, XPABST, XZZ, ZTEMP, ZWRES, ZPRES, & IIU, IJU, IKU, IKB, IPRES, 'LOG', 'RHU.') DO JK=1,IPRES ZWORK21(:,:) = ZWRES(:,:,JK) - YRECFM='UM'//TRIM(YPRES(JK))//'HPA' + YRECFM='UT'//TRIM(YPRES(JK))//'HPA' YCOMMENT='X_Y_U component of wind '//TRIM(YPRES(JK))//'hPa (m/s)' IGRID=1 ILENCH=LEN(YCOMMENT) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! - ZWORK31(:,:,:) = MYF(XVM(:,:,:)) - CALL PINTER(ZWORK31, XPABSM, XZZ, ZTEMP, ZWRES, ZPRES, & + ZWORK31(:,:,:) = MYF(XVT(:,:,:)) + CALL PINTER(ZWORK31, XPABST, XZZ, ZTEMP, ZWRES, ZPRES, & IIU, IJU, IKU, IKB, IPRES, 'LOG', 'RHU.') DO JK=1,IPRES ZWORK21(:,:) = ZWRES(:,:,JK) - YRECFM='VM'//TRIM(YPRES(JK))//'HPA' + YRECFM='VT'//TRIM(YPRES(JK))//'HPA' YCOMMENT='X_Y_V component of wind '//TRIM(YPRES(JK))//'hPa (m/s)' IGRID=1 ILENCH=LEN(YCOMMENT) @@ -844,7 +844,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) ! ********************* ! Water Vapour Mixing Ratio ! ********************* - CALL PINTER(XRM(:,:,:,1), XPABSM, XZZ, ZTEMP, ZWRES, ZPRES, & + CALL PINTER(XRT(:,:,:,1), XPABST, XZZ, ZTEMP, ZWRES, ZPRES, & IIU, IJU, IKU, IKB, IPRES, 'LOG', 'RHU.') DO JK=1,IPRES ZWORK21(:,:) = 1.E+3*ZWRES(:,:,JK) @@ -858,7 +858,7 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) ! Geopotential in meters ! ********************* ZWORK31(:,:,:) = MZF(1,IKU,1,XZZ(:,:,:)) - CALL PINTER(ZWORK31, XPABSM, XZZ, ZTEMP, ZWRES, ZPRES, & + CALL PINTER(ZWORK31, XPABST, XZZ, ZTEMP, ZWRES, ZPRES, & IIU, IJU, IKU, IKB, IPRES, 'LOG', 'RHU.') DO JK=1,IPRES ZWORK21(:,:) = ZWRES(:,:,JK) @@ -907,10 +907,10 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) ! ********************* ! Pressure ! ********************* - CALL ZINTER(XPABSM, XTHM, ZWTH, ZTH, IIU, IJU, IKU, IKB, ITH, XUNDEF) + CALL ZINTER(XPABST, XTHT, ZWTH, ZTH, IIU, IJU, IKU, IKB, ITH, XUNDEF) DO JK=1,ITH ZWORK21(:,:) = ZWTH(:,:,JK) - YRECFM='PABSM'//TRIM(YTH(JK))//'K' + YRECFM='PABST'//TRIM(YTH(JK))//'K' YCOMMENT='X_Y_pressure '//TRIM(YTH(JK))//'K (Pa)' IGRID=1 ILENCH=LEN(YCOMMENT) @@ -920,26 +920,26 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) ! Potential Vorticity ! ********************* ZCORIOZ(:,:,:)=SPREAD( XCORIOZ(:,:),DIM=3,NCOPIES=IKU ) - ZVOX(:,:,:)=GY_W_VW(1,IKU,1,XWM,XDYY,XDZZ,XDZY)-GZ_V_VW(1,IKU,1,XVM,XDZZ) + ZVOX(:,:,:)=GY_W_VW(1,IKU,1,XWT,XDYY,XDZZ,XDZY)-GZ_V_VW(1,IKU,1,XVT,XDZZ) ZVOX(:,:,2)=ZVOX(:,:,3) - ZVOY(:,:,:)=GZ_U_UW(1,IKU,1,XUM,XDZZ)-GX_W_UW(1,IKU,1,XWM,XDXX,XDZZ,XDZX) + ZVOY(:,:,:)=GZ_U_UW(1,IKU,1,XUT,XDZZ)-GX_W_UW(1,IKU,1,XWT,XDXX,XDZZ,XDZX) ZVOY(:,:,2)=ZVOY(:,:,3) - ZVOZ(:,:,:)=GX_V_UV(1,IKU,1,XVM,XDXX,XDZZ,XDZX)-GY_U_UV(1,IKU,1,XUM,XDYY,XDZZ,XDZY) + ZVOZ(:,:,:)=GX_V_UV(1,IKU,1,XVT,XDXX,XDZZ,XDZX)-GY_U_UV(1,IKU,1,XUT,XDYY,XDZZ,XDZY) ZVOZ(:,:,2)=ZVOZ(:,:,3) ZVOZ(:,:,1)=ZVOZ(:,:,3) - ZWORK31(:,:,:)=GX_M_M(1,IKU,1,XTHM,XDXX,XDZZ,XDZX) - ZWORK32(:,:,:)=GY_M_M(1,IKU,1,XTHM,XDYY,XDZZ,XDZY) - ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,XTHM,XDZZ) + ZWORK31(:,:,:)=GX_M_M(1,IKU,1,XTHT,XDXX,XDZZ,XDZX) + ZWORK32(:,:,:)=GY_M_M(1,IKU,1,XTHT,XDYY,XDZZ,XDZY) + ZWORK33(:,:,:)=GZ_M_M(1,IKU,1,XTHT,XDZZ) ZPOVO(:,:,:)= ZWORK31(:,:,:)*MZF(1,IKU,1,MYF(ZVOX(:,:,:))) & + ZWORK32(:,:,:)*MZF(1,IKU,1,MXF(ZVOY(:,:,:))) & + ZWORK33(:,:,:)*(MYF(MXF(ZVOZ(:,:,:))) + ZCORIOZ(:,:,:)) ZPOVO(:,:,:)= ZPOVO(:,:,:)*1E6/XRHODREF(:,:,:) ZPOVO(:,:,1) =-1.E+11 ZPOVO(:,:,IKU)=-1.E+11 - CALL ZINTER(ZPOVO, XTHM, ZWTH, ZTH, IIU, IJU, IKU, IKB, ITH, XUNDEF) + CALL ZINTER(ZPOVO, XTHT, ZWTH, ZTH, IIU, IJU, IKU, IKB, ITH, XUNDEF) DO JK=1,ITH ZWORK21(:,:) = ZWTH(:,:,JK) - YRECFM='POVOM'//TRIM(YTH(JK))//'K' + YRECFM='POVOT'//TRIM(YTH(JK))//'K' YCOMMENT='X_Y_POtential VOrticity '//TRIM(YTH(JK))//'K (PVU)' IGRID=1 ILENCH=LEN(YCOMMENT) @@ -948,22 +948,22 @@ ALLOCATE(ZWORK34(IIU,IJU,IKU)) ! ********************* ! Wind ! ********************* - ZWORK31(:,:,:) = MXF(XUM(:,:,:)) - CALL ZINTER(ZWORK31, XTHM, ZWTH, ZTH, IIU, IJU, IKU, IKB, ITH, XUNDEF) + ZWORK31(:,:,:) = MXF(XUT(:,:,:)) + CALL ZINTER(ZWORK31, XTHT, ZWTH, ZTH, IIU, IJU, IKU, IKB, ITH, XUNDEF) DO JK=1,ITH ZWORK21(:,:) = ZWTH(:,:,JK) - YRECFM='UM'//TRIM(YTH(JK))//'K' + YRECFM='UT'//TRIM(YTH(JK))//'K' YCOMMENT='X_Y_U component of wind '//TRIM(YTH(JK))//'K (m/s)' IGRID=1 ILENCH=LEN(YCOMMENT) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) END DO ! - ZWORK31(:,:,:) = MYF(XVM(:,:,:)) - CALL ZINTER(ZWORK31, XTHM, ZWTH, ZTH, IIU, IJU, IKU, IKB, ITH, XUNDEF) + ZWORK31(:,:,:) = MYF(XVT(:,:,:)) + CALL ZINTER(ZWORK31, XTHT, ZWTH, ZTH, IIU, IJU, IKU, IKB, ITH, XUNDEF) DO JK=1,ITH ZWORK21(:,:) = ZWTH(:,:,JK) - YRECFM='VM'//TRIM(YTH(JK))//'K' + YRECFM='VT'//TRIM(YTH(JK))//'K' YCOMMENT='X_Y_V component of wind '//TRIM(YTH(JK))//'K (m/s)' IGRID=1 ILENCH=LEN(YCOMMENT) diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 3b4112ae0..7a7f65e3f 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -4,7 +4,6 @@ ! $Source$ $Revision$ ! masdev4_7 BUG1 2007/06/20 16:58:20 !----------------------------------------------------------------- - ! ######################### MODULE MODI_WRITE_LFIFM_n ! ######################### @@ -173,7 +172,7 @@ USE MODD_LUNIT_n USE MODD_TURB_n USE MODD_RADIATIONS_n, ONLY : XDTHRAD, NCLEARCOL_TM1, XFLALWD, & XZENITH, XDIR_ALB, XSCA_ALB, XEMIS, XTSRAD, & - XDIRSRFSWD, XSCAFLASWD, XDIRFLASWD, XAZIM, XAER + XDIRSRFSWD, XSCAFLASWD, XDIRFLASWD, XAZIM USE MODD_REF_n, ONLY : XRHODREF USE MODD_FRC USE MODD_PRECIP_n @@ -289,8 +288,8 @@ IMI = GET_CURRENT_MODEL_INDEX() ! CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP) ! -ALLOCATE(ZWORK2D(SIZE(XTHM,1),SIZE(XTHM,2))) -ALLOCATE(ZWORK3D(SIZE(XTHM,1),SIZE(XTHM,2),SIZE(XTHM,3))) +ALLOCATE(ZWORK2D(SIZE(XTHT,1),SIZE(XTHT,2))) +ALLOCATE(ZWORK3D(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3))) ! ! !* 0.2 ARRAYS BOUNDS INITIALIZATION @@ -597,31 +596,31 @@ CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LCPL_AROME,IGRID,ILENCH,YCOMMENT,IRESP) ! YDIR='XY' ! -!* 1.4.1 Time t-dt: +!* 1.4.1 Time t: ! -YRECFM='UM' +YRECFM='UT' YCOMMENT='X_Y_Z_U component of wind (m/s)' IGRID=2 ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUM,IGRID,ILENCH,YCOMMENT,IRESP) +CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUT,IGRID,ILENCH,YCOMMENT,IRESP) ! -YRECFM='VM' +YRECFM='VT' YCOMMENT='X_Y_Z_V component of wind (m/s)' IGRID=3 ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVM,IGRID,ILENCH,YCOMMENT,IRESP) +CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVT,IGRID,ILENCH,YCOMMENT,IRESP) ! -YRECFM='WM' +YRECFM='WT' YCOMMENT='X_Y_Z_vertical wind (m/s)' IGRID=4 ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWM,IGRID,ILENCH,YCOMMENT,IRESP) +CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWT,IGRID,ILENCH,YCOMMENT,IRESP) ! -YRECFM='THM' +YRECFM='THT' YCOMMENT='X_Y_Z_potential temperature (K)' IGRID=1 ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTHM,IGRID,ILENCH,YCOMMENT,IRESP) +CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTHT,IGRID,ILENCH,YCOMMENT,IRESP) ! IF (MEAN_COUNT /= 0) THEN ! @@ -720,83 +719,90 @@ END IF ! ! IF (CTURB /= 'NONE') THEN - YRECFM='TKEM' + YRECFM='TKET' YCOMMENT='X_Y_Z_Turbulent Kinetic Energy (M**2/S**2)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTKEM,IGRID,ILENCH,YCOMMENT,IRESP) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTKET,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! ! ! -YRECFM='PABSM' +YRECFM='PABST' YCOMMENT='X_Y_Z_ABSolute Pressure (Pa)' IGRID=1 ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPABSM,IGRID,ILENCH,YCOMMENT,IRESP) +CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPABST,IGRID,ILENCH,YCOMMENT,IRESP) ! IF (NRR >=1) THEN IRR=0 IGRID=1 ! individually in file IF (LUSERV) THEN IRR = IRR+1 - YRECFM= 'RVM' + YRECFM= 'RVT' YCOMMENT='X_Y_Z_Vapor mixing Ratio (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRM(:,:,:,IRR),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & YCOMMENT,IRESP) END IF IF (LUSERC) THEN IRR = IRR+1 - YRECFM= 'RCM' + YRECFM= 'RCT' YCOMMENT='X_Y_Z_Cloud mixing Ratio (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRM(:,:,:,IRR),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RC min-max ',MIN_ll(XRM(:,:,:,IRR),INFO_ll),MAX_ll(XRM(:,:,:,IRR),INFO_ll) + WRITE (ILUOUT,*) IRR,' RC min-max ',MIN_ll(XRT(:,:,:,IRR),INFO_ll),MAX_ll(XRT(:,:,:,IRR),INFO_ll) END IF IF (LUSERR) THEN IRR = IRR+1 - YRECFM= 'RRM' + YRECFM= 'RRT' YCOMMENT='X_Y_Z_Rain mixing Ratio (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRM(:,:,:,IRR),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RR min-max ',MIN_ll(XRM(:,:,:,IRR),INFO_ll),MAX_ll(XRM(:,:,:,IRR),INFO_ll) + WRITE (ILUOUT,*) IRR,' RR min-max ',MIN_ll(XRT(:,:,:,IRR),INFO_ll),MAX_ll(XRT(:,:,:,IRR),INFO_ll) END IF IF (LUSERI) THEN IRR = IRR+1 - YRECFM= 'RIM' + YRECFM= 'RIT' YCOMMENT='X_Y_Z_Ice mixing Ratio (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRM(:,:,:,IRR),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RI min-max ',MIN_ll(XRM(:,:,:,IRR),INFO_ll),MAX_ll(XRM(:,:,:,IRR),INFO_ll) + WRITE (ILUOUT,*) IRR,' RI min-max ',MIN_ll(XRT(:,:,:,IRR),INFO_ll),MAX_ll(XRT(:,:,:,IRR),INFO_ll) + IF ( CPROGRAM == 'MESONH' .AND. CCLOUD(1:3) == 'ICE') THEN + YRECFM= 'CIT' + YCOMMENT='X_Y_Z_Cloud Ice concentration (/M3)' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XCIT(:,:,:), IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF END IF IF (LUSERS) THEN IRR = IRR+1 - YRECFM= 'RSM' + YRECFM= 'RST' YCOMMENT='X_Y_Z_Snow mixing Ratio (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRM(:,:,:,IRR),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RS min-max ',MIN_ll(XRM(:,:,:,IRR),INFO_ll),MAX_ll(XRM(:,:,:,IRR),INFO_ll) + WRITE (ILUOUT,*) IRR,' RS min-max ',MINVAL(XRT(:,:,:,IRR)),MAXVAL(XRT(:,:,:,IRR)) END IF IF (LUSERG) THEN IRR = IRR+1 - YRECFM= 'RGM' + YRECFM= 'RGT' YCOMMENT='X_Y_Z_Graupel mixing Ratio (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRM(:,:,:,IRR),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & YCOMMENT,IRESP) - WRITE (ILUOUT,*) IRR,' RG min-max ',MIN_ll(XRM(:,:,:,IRR),INFO_ll),MAX_ll(XRM(:,:,:,IRR),INFO_ll) + WRITE (ILUOUT,*) IRR,' RG min-max ',MINVAL(XRT(:,:,:,IRR)),MAXVAL(XRT(:,:,:,IRR)) END IF IF (LUSERH) THEN IRR = IRR+1 - YRECFM= 'RHM' + YRECFM= 'RHT' YCOMMENT='X_Y_Z_Hail mixing Ratio (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRM(:,:,:,IRR),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & YCOMMENT,IRESP) END IF END IF @@ -806,42 +812,42 @@ IF (NSV >=1) THEN IGRID=1 ! individually in the file ! User scalar variables DO JSV = 1,NSV_USER - WRITE(YRECFM,'(A3,I3.3)')'SVM',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (KG/KG)' + WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) JSA=JSA+1 END DO ! microphysical C2R2 scheme scalar variables DO JSV = NSV_C2R2BEG,NSV_C2R2END - YRECFM=TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (/M3)' + YRECFM=TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (/M3)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) JSA=JSA+1 END DO ! microphysical C3R5 scheme additional scalar variables DO JSV = NSV_C1R3BEG,NSV_C1R3END - YRECFM=TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (/M3)' + YRECFM=TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (/M3)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) JSA=JSA+1 END DO ! electrical scalar variables DO JSV = NSV_ELECBEG,NSV_ELECEND - YRECFM=TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'M' + YRECFM=TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'T' IF (JSV .GT. NSV_ELECBEG .AND. JSV .LT. NSV_ELECEND) THEN - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (C/m3)' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (C/m3)' ELSE - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (nb ions/m3)' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (nb ions/m3)' END IF ILENCH=LEN(YCOMMENT) ZWORK3D(:,:,:) = 0. - ZWORK3D(:,:,:) = XSVM(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3 + ZWORK3D(:,:,:) = XSVT(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3 CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & YCOMMENT,IRESP) JSA=JSA+1 @@ -907,31 +913,32 @@ IF (NSV >=1) THEN END IF ! lagrangian variables DO JSV = NSV_LGBEG,NSV_LGEND - YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (M)' + YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (M)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) JSA=JSA+1 END DO ! Passive scalar variables IF (LPASPOL) THEN DO JSV = NSV_PPBEG,NSV_PPEND - WRITE(YRECFM,'(A3,I3.3)')'SVM',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - JSA=JSA+1 - END DO - END IF + WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + JSA=JSA+1 + END DO + END IF +! ! Conditional sampling variables IF (LCONDSAMP) THEN DO JSV = NSV_CSBEG,NSV_CSEND - WRITE(YRECFM,'(A3,I3.3)')'SVM',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (KG/KG)' + WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) JSA=JSA+1 END DO @@ -953,29 +960,41 @@ IF (NSV >=1) THEN ! chemical scalar variables IF (LUSECHEM) THEN DO JSV = NSV_CHEMBEG,NSV_CHEMEND - YRECFM=TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1)))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM=TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1)))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) - YCHNAMES(JSV-JSA)=YRECFM(1:LEN_TRIM(YRECFM)-1) ! without M + YCHNAMES(JSV-JSA)=YRECFM(1:LEN_TRIM(YRECFM)-1) ! without T END DO IF (LUSECHIC) THEN DO JSV = NSV_CHICBEG,NSV_CHICEND - YRECFM=TRIM(UPCASE(CICNAMES(JSV-NSV_CHICBEG+1)))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM=TRIM(UPCASE(CICNAMES(JSV-NSV_CHICBEG+1)))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) YCHNAMES(JSV-JSA)=YRECFM(1:LEN_TRIM(YRECFM)-1) ! without M END DO ENDIF + IF (LUSECHAQ.AND.LCH_PH) THEN ! pH values in cloud + YRECFM = 'PHC' + YCOMMENT='X_Y_Z_PHC' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPHC,IGRID,ILENCH,YCOMMENT,IRESP) + IF (NRR>=3) THEN + YRECFM = 'PHR' + YCOMMENT='X_Y_Z_PHR' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPHR,IGRID,ILENCH,YCOMMENT,IRESP) + ENDIF + ENDIF ELSE IF (LCH_CONV_LINOX) THEN DO JSV = NSV_LNOXBEG,NSV_LNOXEND - YRECFM='LINOXM' - WRITE(YCOMMENT,'(A6,A3,I3.3,A)') 'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM='LINOXT' + WRITE(YCOMMENT,'(A6,A3,I3.3,A)') 'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) YCHNAMES(JSV-JSA)=YRECFM(1:LEN_TRIM(YRECFM)-1) END DO @@ -983,14 +1002,14 @@ IF (NSV >=1) THEN ! aerosol scalar variables IF (LORILAM) THEN IF ((CPROGRAM == 'REAL ').AND.(NSV_AER > 1).AND.(IMI==1).AND.(LAERINIT)) & - CALL CH_AER_REALLFI_n(XSVM(:,:,:,NSV_AERBEG:NSV_AEREND),XSVM(:,:,:,NSV_CHEMBEG-1+JP_CH_CO), XRHODREF) + CALL CH_AER_REALLFI_n(XSVT(:,:,:,NSV_AERBEG:NSV_AEREND),XSVT(:,:,:,NSV_CHEMBEG-1+JP_CH_CO), XRHODREF) IF ((CPROGRAM == 'IDEAL ').AND.(NSV_AER > 1).AND.(IMI==1)) & - CALL CH_AER_REALLFI_n(XSVM(:,:,:,NSV_AERBEG:NSV_AEREND),XSVM(:,:,:,NSV_CHEMBEG-1+JP_CH_CO), XRHODREF) + CALL CH_AER_REALLFI_n(XSVT(:,:,:,NSV_AERBEG:NSV_AEREND),XSVT(:,:,:,NSV_CHEMBEG-1+JP_CH_CO), XRHODREF) DO JSV = NSV_AERBEG,NSV_AEREND - YRECFM=TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM=TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) IF (JSV==NSV_AERBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERBEG ',JSV IF (JSV==NSV_AEREND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AEREND ',JSV @@ -998,10 +1017,10 @@ IF (NSV >=1) THEN END DO IF (LDEPOS_AER(IMI)) THEN DO JSV = NSV_AERDEPBEG,NSV_AERDEPEND - YRECFM=TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM=TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) IF (JSV==NSV_AERDEPBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERDEPBEG ',JSV IF (JSV==NSV_AERDEPEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERDEPEND ',JSV @@ -1012,11 +1031,11 @@ IF (NSV >=1) THEN ! dust scalar variables IF (LDUST) THEN IF ((CPROGRAM == 'REAL ').AND.(NSV_DST > 1).AND.(IMI==1).AND.(LDSTINIT)) & - CALL DUSTLFI_n(XSVM(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF) + CALL DUSTLFI_n(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF) IF ((CPROGRAM == 'IDEAL ').AND.(NSV_DST > 1).AND.(IMI==1)) & - CALL DUSTLFI_n(XSVM(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF) + CALL DUSTLFI_n(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF) !At this point, we have the tracer array in order of importance, i.e. - !if mode 2 is most important it will occupy place 1-3 of XSVM + !if mode 2 is most important it will occupy place 1-3 of XSVT IF ((CPROGRAM == 'REAL ').AND.((LDSTINIT).OR.(LDSTPRES)).OR.& (CPROGRAM == 'IDEAL ') ) THEN ! In this case CDUSTNAMES is not allocated. We will use YPDUST_INI, @@ -1040,10 +1059,10 @@ IF (IMOMENTS == 1) THEN JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + 1 & !Number of moments in this mode + (NSV_DSTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH,& + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,& YCOMMENT,IRESP) YDSTNAMES((JMODE-1)*IMOMENTS+1)=YRECFM(1:LEN_TRIM(YRECFM)-1) @@ -1055,10 +1074,10 @@ ELSE JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + JMOM & !Number of moments in this mode + (NSV_DSTBEG -1) - YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'M' !The refererence which will be written to file - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' !The refererence which will be written to file + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) YDSTNAMES((JMODE-1)*IMOMENTS+JMOM)=YRECFM(1:LEN_TRIM(YRECFM)-1) END DO ! Loop on moment @@ -1071,12 +1090,12 @@ END IF ! Valeur IMOMENTS DEALLOCATE(YDSTNAMES) ELSE ! We are in the subprogram MESONH, CDUSTNAMES are allocated and are - !in the same order as the variables in XSVM (i.e. following JPDUSTORDER) + !in the same order as the variables in XSVT (i.e. following JPDUSTORDER) DO JSV = NSV_DSTBEG,NSV_DSTEND - YRECFM=TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM=TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) IF (JSV==NSV_DSTBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTBEG ',JSV IF (JSV==NSV_DSTEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTEND ',JSV @@ -1085,10 +1104,10 @@ END IF ! Valeur IMOMENTS END IF IF (LDEPOS_DST(IMI)) THEN DO JSV = NSV_DSTDEPBEG,NSV_DSTDEPEND - YRECFM=TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM=TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) IF (JSV==NSV_DSTDEPBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTDEPBEG ',JSV IF (JSV==NSV_DSTDEPEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTDEPEND ',JSV @@ -1099,11 +1118,11 @@ END IF ! Valeur IMOMENTS ! sea salt scalar variables IF (LSALT) THEN IF ((CPROGRAM == 'REAL ').AND.(NSV_SLT > 1).AND.(IMI==1).AND.(LSLTINIT)) & - CALL SALTLFI_n(XSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF) + CALL SALTLFI_n(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF) IF ((CPROGRAM == 'IDEAL ').AND.(NSV_SLT > 1).AND.(IMI==1)) & - CALL SALTLFI_n(XSVM(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF) + CALL SALTLFI_n(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF) !At this point, we have the tracer array in order of importance, i.e. - !if mode 2 is most important it will occupy place 1-3 of XSVM + !if mode 2 is most important it will occupy place 1-3 of XSVT IF (((CPROGRAM == 'REAL ').AND.(LSLTINIT)).OR.& (CPROGRAM == 'IDEAL ') ) THEN ! In this case CSALTNAMES is not allocated. We will use YPSALT_INI, @@ -1123,14 +1142,14 @@ END IF ! Valeur IMOMENTS DO JMOM = 1, IMOMENTS !Index from which names are picked ISV_NAME_IDX = (JPSALTORDER(JMODE)-1)*IMOMENTS + JMOM - !Index which counts in the XSVM + !Index which counts in the XSVT JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted + JMOM & !Number of moments in this mode + (NSV_SLTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'M' !The refererence which will be written to file - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T' !The refererence which will be written to file + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) YSLTNAMES((JMODE-1)*IMOMENTS+JMOM)=YRECFM(1:LEN_TRIM(YRECFM)-1) END DO ! Loop on moments @@ -1142,12 +1161,12 @@ END IF ! Valeur IMOMENTS DEALLOCATE(YSLTNAMES) ELSE ! We are in the subprogram MESONH, CSALTNAMES are allocated and are - !in the same order as the variables in XSVM (i.e. following JPSALTORDER) + !in the same order as the variables in XSVT (i.e. following JPSALTORDER) DO JSV = NSV_SLTBEG,NSV_SLTEND - YRECFM=TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM=TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) IF (JSV==NSV_SLTBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTBEG ',JSV IF (JSV==NSV_SLTEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTEND ',JSV @@ -1156,10 +1175,10 @@ END IF ! Valeur IMOMENTS END IF IF (LDEPOS_SLT(IMI)) THEN DO JSV = NSV_SLTDEPBEG,NSV_SLTDEPEND - YRECFM=TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))//'M' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVM',JSV,' (ppp)' + YRECFM=TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVM(:,:,:,JSV),IGRID,ILENCH, & + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & YCOMMENT,IRESP) IF (JSV==NSV_SLTDEPBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTDEPBEG ',JSV IF (JSV==NSV_SLTDEPEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTDEPEND ',JSV @@ -1194,6 +1213,14 @@ END IF ! Valeur IMOMENTS DEALLOCATE(YCHNAMES,ICH_NAMES) END IF ! + ! lagrangian variables + DO JSV = NSV_LGBEG,NSV_LGEND + YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T' + WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (M)' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & + YCOMMENT,IRESP) + END DO END IF ! ! @@ -1232,368 +1259,6 @@ END IF CALL WRITE_LB_n(HFMFILE) ! ! -IF (CSTORAGE_TYPE/='TT') THEN -! -!* 1.4.2 Time t: -! -YRECFM='UT' -YCOMMENT='X_Y_Z_U component of wind (m/s)' -IGRID=2 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUT,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='VT' -YCOMMENT='X_Y_Z_V component of wind (m/s)' -IGRID=3 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVT,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='WT' -YCOMMENT='X_Y_Z_vertical wind (m/s)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWT,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='THT' -YCOMMENT='X_Y_Z_potential temperature (K)' -IGRID=1 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTHT,IGRID,ILENCH,YCOMMENT,IRESP) -! -IF(CTURB/='NONE') THEN - YRECFM='TKET' - YCOMMENT='X_Y_Z_Turbulent Kinetic Energy (M**2/S**2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTKET,IGRID,ILENCH,YCOMMENT,IRESP) -END IF -! -! -YRECFM='PABST' -YCOMMENT='X_Y_Z_ABSolute Pressure (Pa)' -IGRID=1 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPABST,IGRID,ILENCH,YCOMMENT,IRESP) -! -IF (NRR >=1) THEN -IRR=0 - IGRID=1 ! individually in file - IF (LUSERV) THEN - IRR = IRR+1 - YRECFM= 'RVT' - YCOMMENT='X_Y_Z_Vapor mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERC) THEN - IRR = IRR+1 - YRECFM= 'RCT' - YCOMMENT='X_Y_Z_Cloud mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERR) THEN - IRR = IRR+1 - YRECFM= 'RRT' - YCOMMENT='X_Y_Z_Rain mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERI) THEN - IRR = IRR+1 - YRECFM= 'RIT' - YCOMMENT='X_Y_Z_Ice mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - IF ( CPROGRAM == 'MESONH' .AND. CCLOUD(1:3) == 'ICE') THEN - YRECFM= 'CIT' - YCOMMENT='X_Y_Z_Cloud Ice concentration (/M3)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XCIT(:,:,:), IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - END IF - IF (LUSERS) THEN - IRR = IRR+1 - YRECFM= 'RST' - YCOMMENT='X_Y_Z_Snow mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERG) THEN - IRR = IRR+1 - YRECFM= 'RGT' - YCOMMENT='X_Y_Z_Graupel mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF - IF (LUSERH) THEN - IRR = IRR+1 - YRECFM= 'RHT' - YCOMMENT='X_Y_Z_Hail mixing Ratio (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, & - YCOMMENT,IRESP) - END IF -END IF -! -IF (NSV >=1) THEN - IGRID=1 ! individually in the file - ! User scalar variables - DO JSV = 1,NSV_USER - WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - ! microphysical C2R2 scheme scalar variables - DO JSV = NSV_C2R2BEG,NSV_C2R2END - YRECFM=TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - ! microphysical C3R5 scheme additional scalar variables - DO JSV = NSV_C1R3BEG,NSV_C1R3END - YRECFM=TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (/M3)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - ! electrical scalar variables - DO JSV = NSV_ELECBEG,NSV_ELECEND - YRECFM=TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (C/m3)' - ILENCH=LEN(YCOMMENT) - ZWORK3D(:,:,:) = 0. - ZWORK3D(:,:,:) = XSVT(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3 - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - - ! Passive scalar variables - IF (LPASPOL) THEN - DO JSV = NSV_PPBEG,NSV_PPEND - WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - END IF - ! Conditional sampling variables - IF (LCONDSAMP) THEN - DO JSV = NSV_CSBEG,NSV_CSEND - WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - END IF - ! chemical scalar variables - IF (LUSECHEM) THEN - DO JSV = NSV_CHEMBEG,NSV_CHEMEND - YRECFM=TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1)))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A)') 'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - IF (LUSECHIC) THEN - DO JSV = NSV_CHICBEG,NSV_CHICEND - YRECFM=TRIM(UPCASE(CICNAMES(JSV-NSV_CHICBEG+1)))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - ENDIF - IF (LUSECHAQ.AND.LCH_PH) THEN ! pH values in cloud - YRECFM = 'PHC' - YCOMMENT='X_Y_Z_PHC' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPHC,IGRID,ILENCH,YCOMMENT,IRESP) - IF (NRR>=3) THEN - YRECFM = 'PHR' - YCOMMENT='X_Y_Z_PHR' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPHR,IGRID,ILENCH,YCOMMENT,IRESP) - ENDIF - ENDIF - ! linox scalar variables - ELSE IF (LCH_CONV_LINOX) THEN - DO JSV = NSV_LNOXBEG,NSV_LNOXEND - YRECFM='LINOXT' - WRITE(YCOMMENT,'(A6,A3,I3.3,A)') 'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - ENDIF - ! aerosol scalar variables - IF (LORILAM) THEN - IF ((CPROGRAM == 'REAL ').AND.(NSV_AER > 1).AND.(IMI==1)) & - CALL CH_AER_REALLFI_n(XSVT(:,:,:,NSV_AERBEG:NSV_AEREND),XSVT(:,:,:,NSV_CHEMBEG-1+JP_CH_CO), XRHODREF) - IF ((CPROGRAM == 'IDEAL ').AND.(NSV_AER > 1).AND.(IMI==1)) & - CALL CH_AER_REALLFI_n(XSVT(:,:,:,NSV_AERBEG:NSV_AEREND),XSVT(:,:,:,NSV_CHEMBEG-1+JP_CH_CO), XRHODREF) - DO JSV = NSV_AERBEG,NSV_AEREND - YRECFM=TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO - IF (LDEPOS_AER(IMI)) THEN - DO JSV = NSV_AERDEPBEG,NSV_AERDEPEND - YRECFM=TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO ! Loop on aq dust scalar variables - ENDIF - END IF - ! dust scalar variables - IF (LDUST) THEN - IF ((CPROGRAM == 'REAL ').AND.(NSV_DST > 1).AND.(IMI==1).AND.(LDSTINIT)) & - CALL DUSTLFI_n(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF) - IF ((CPROGRAM == 'IDEAL ').AND.(NSV_DST > 1).AND.(IMI==1)) & - CALL DUSTLFI_n(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF) - !At this point, we have the tracer array in order of importance, i.e. - !if mode 2 is most important it will occupy place 1-3 of XSVM - IF ((CPROGRAM == 'REAL ').OR.(CPROGRAM == 'IDEAL ')) THEN - ! In this case CDUSTNAMES is not allocated. We will use YPDUST_INI, - !but remember that this variable does not follow JPDUSTORDER - IMOMENTS = INT(NSV_DSTEND - NSV_DSTBEG+1)/NMODE_DST - !Should equal 3 at this point - IF (IMOMENTS > 3) THEN - WRITE(ILUOUT,*) 'Error in write_lfin: number of moments must be 3' - WRITE(ILUOUT,*) NSV_DSTBEG, NSV_DSTEND,NMODE_DST,IMOMENTS - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP - END IF - DO JMODE=1, NMODE_DST - DO JMOM = 1, IMOMENTS - !Index from which names are picked - ISV_NAME_IDX = (JPDUSTORDER(JMODE)-1)*IMOMENTS + JMOM - !Index which counts in the XSVT - JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted - + JMOM & !Number of moments in this mode - + (NSV_DSTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T' !The refererence which will be written to file - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO ! Loop on moments - END DO ! Loop on modes - ! - ELSE - ! We are in the subprogram MESONH, CDUSTNAMES are allocated and are - !in the same order as the variables in XSVM (i.e. following JPDUSTORDER) - DO JSV = NSV_DSTBEG,NSV_DSTEND - YRECFM=TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO ! Loop on dust scalar variables - END IF - ! Loop on aq dust scalar variables - IF (LDEPOS_DST(IMI)) THEN - DO JSV = NSV_DSTDEPBEG,NSV_DSTDEPEND - YRECFM=TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO ! Loop on aq dust scalar variables - ENDIF - ENDIF - ! - ! sea salt scalar variables - IF (LSALT) THEN - IF ((CPROGRAM == 'REAL ').AND.(NSV_SLT > 1).AND.(IMI==1)) & - CALL SALTLFI_n(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF) - IF ((CPROGRAM == 'IDEAL ').AND.(NSV_SLT > 1).AND.(IMI==1)) & - CALL SALTLFI_n(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF) - !At this point, we have the tracer array in order of importance, i.e. - !if mode 2 is most important it will occupy place 1-3 of XSVM - IF ((CPROGRAM == 'REAL ').OR.(CPROGRAM == 'IDEAL ')) THEN - ! In this case CSALTNAMES is not allocated. We will use YPSALT_INI, - !but remember that this variable does not follow JPSALTORDER - IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG+1)/NMODE_SLT - !Should equal 3 at this point - IF (IMOMENTS .NE. 3) THEN - WRITE(ILUOUT,*) 'Error in write_lfin: number of moments must be 3' - WRITE(ILUOUT,*) NSV_SLTBEG, NSV_SLTEND,NMODE_SLT,IMOMENTS - !callabortstop - CALL CLOSE_ll(CLUOUT,IOSTAT=IRESP) - CALL ABORT - STOP - END IF - DO JMODE=1, NMODE_SLT - DO JMOM = 1, IMOMENTS - !Index from which names are picked - ISV_NAME_IDX = (JPSALTORDER(JMODE)-1)*IMOMENTS + JMOM - !Index which counts in the XSVT - JSV = (JMODE-1)*IMOMENTS & !Number of moments previously counted - + JMOM & !Number of moments in this mode - + (NSV_SLTBEG -1) !Previous list of tracers - YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T' !The refererence which will be written to file - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO ! Loop on moments - END DO ! Loop on modes - ! - ELSE - ! We are in the subprogram MESONH, CSALTNAMES are allocated and are - !in the same order as the variables in XSVM (i.e. following JPSALTORDER) - DO JSV = NSV_SLTBEG,NSV_SLTEND - YRECFM=TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO ! Loop on sea salt scalar variables - END IF - IF (LDEPOS_SLT(IMI)) THEN - DO JSV = NSV_SLTDEPBEG,NSV_SLTDEPEND - YRECFM=TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO ! Loop on aq dust scalar variables - ENDIF - ENDIF - ! - ! lagrangian variables - DO JSV = NSV_LGBEG,NSV_LGEND - YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T' - WRITE(YCOMMENT,'(A6,A3,I3.3,A)') 'X_Y_Z_','SVT',JSV,' (M)' - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, & - YCOMMENT,IRESP) - END DO -END IF -! -END IF ! test on CSTORAGE_TYPE -! YRECFM='DRYMASST' YDIR='--' YCOMMENT='Total Dry Mass (KG)' @@ -1627,20 +1292,13 @@ IF( CTURB /= 'NONE' .AND. (CPROGRAM == 'MESONH' .OR. CPROGRAM == 'DIAG')) THEN CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWTHVMF,IGRID,ILENCH,YCOMMENT,IRESP) END IF ! +! IF( NRR > 1 .AND. CTURB /= 'NONE' ) THEN - YRECFM='SRCM' + YRECFM='SRCT' YCOMMENT='X_Y_Z_normalized 2nd_order moment s_r_c/2Sigma_s2 (KG/KG**2)' IGRID=1 ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSRCM,IGRID,ILENCH,YCOMMENT,IRESP) -! - IF (CSTORAGE_TYPE/='TT') THEN - YRECFM='SRCT' - YCOMMENT='X_Y_Z_normalized 2nd_order moment s_r_c/2Sigma_s2 (KG/KG**2)' - IGRID=1 - ILENCH=LEN(YCOMMENT) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSRCT,IGRID,ILENCH,YCOMMENT,IRESP) - END IF + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSRCT,IGRID,ILENCH,YCOMMENT,IRESP) ! YRECFM='SIGS' YCOMMENT='X_Y_Z_Sigma_s from turbulence scheme (KG/KG**2)' @@ -1672,7 +1330,113 @@ IGRID=4 ILENCH=LEN(YCOMMENT) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XEXNTOP,IGRID,ILENCH,YCOMMENT,IRESP) ! +!* 1.6 Tendencies +! +IF (CPROGRAM == 'MESONH') THEN + YRECFM='US_PRES' + YCOMMENT='X_Y_Z_US_PRES' + IGRID=2 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRUS_PRES,IGRID,ILENCH,YCOMMENT,IRESP) +! + YRECFM='VS_PRES' + YCOMMENT='X_Y_Z_VS_PRES' + IGRID=3 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRVS_PRES,IGRID,ILENCH,YCOMMENT,IRESP) ! + YRECFM='WS_PRES' + YCOMMENT='X_Y_Z_WS_PRES' + IGRID=4 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRWS_PRES,IGRID,ILENCH,YCOMMENT,IRESP) +! + YRECFM='THS_CLD' + YCOMMENT='X_Y_Z_THS_CLD' + IGRID=1 + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRTHS_CLD,IGRID,ILENCH,YCOMMENT,IRESP) +! + IF (NRR >=1) THEN + IRR=0 + IGRID=1 + IF (LUSERV) THEN + IRR = IRR+1 + YRECFM= 'RVS_CLD' + YCOMMENT='X_Y_Z_RVS_CLD' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF + IF (LUSERC) THEN + IRR = IRR+1 + YRECFM= 'RCS_CLD' + YCOMMENT='X_Y_Z_RCS_CLD' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF + IF (LUSERR) THEN + IRR = IRR+1 + YRECFM= 'RRS_CLD' + YCOMMENT='X_Y_Z_RCS_CLD' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF + IF (LUSERI) THEN + IRR = IRR+1 + YRECFM= 'RIS_CLD' + YCOMMENT='X_Y_Z_RIS_CLD' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF + IF (LUSERS) THEN + IRR = IRR+1 + YRECFM= 'RSS_CLD' + YCOMMENT='X_Y_Z_RSS_CLD' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF + IF (LUSERG) THEN + IRR = IRR+1 + YRECFM= 'RGS_CLD' + YCOMMENT='X_Y_Z_RGS_CLD' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF + IF (LUSERH) THEN + IRR = IRR+1 + YRECFM= 'RHS_CLD' + YCOMMENT='X_Y_Z_RHS_CLD' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF + END IF +END IF +! +IF (NSV >=1) THEN + DO JSV = NSV_C2R2BEG,NSV_C2R2END + IF (JSV == NSV_C2R2BEG ) THEN + YRECFM='RSVS_CLD1' + YCOMMENT='X_Y_Z_RHS_CLD' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF + IF (JSV == NSV_C2R2END ) THEN + YRECFM='RSVS_CLD2' + YCOMMENT='X_Y_Z_RHS_CLD' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH, & + YCOMMENT,IRESP) + END IF + END DO +END IF ! !* 1.8 Diagnostic variables related to the radiations ! diff --git a/src/MNH/write_phys_param.f90 b/src/MNH/write_phys_param.f90 index 17bec850b..8809fca44 100644 --- a/src/MNH/write_phys_param.f90 +++ b/src/MNH/write_phys_param.f90 @@ -801,8 +801,8 @@ IF ( LTURB_FLX ) THEN END IF END IF !!!! turb_ver_sv_flux -IF (SIZE(XSVM,4)>0) THEN - DO JSV=1, SIZE(XSVM,4) +IF (SIZE(XSVT,4)>0) THEN + DO JSV=1, SIZE(XSVT,4) IF (LTURB_FLX ) THEN ! stores the JSVth vertical flux WRITE(YRECFM,'("WSV_FLX_",I3.3)') JSV -- GitLab