From f745bd046ca5b70737639843ab9021d15606eb8b Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Wed, 8 Mar 2023 13:26:22 +0100 Subject: [PATCH] Pierre T. 08/03/2023: bugfix LIMA with aerosols --- src/MNH/aer2lima.f90 | 12 ++++++----- src/MNH/prep_real_case.f90 | 42 ++++++++++++++++++++++++++++++-------- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/src/MNH/aer2lima.f90 b/src/MNH/aer2lima.f90 index eaf03fa5b..92798be19 100644 --- a/src/MNH/aer2lima.f90 +++ b/src/MNH/aer2lima.f90 @@ -106,14 +106,16 @@ REAL, DIMENSION(NSV) :: ZMI INTEGER :: JSV, JJ, JI, II, IJ, IK, JK REAL :: ZCCNRADIUS, ZRATMASSH2O -ZCCNRADIUS = 0.04 ! to suppress the aitken mode (µm) +ZCCNRADIUS = 0.03 ! to suppress the aitken mode (µm) IF ((CPROGRAM=="REAL ").OR.(CPROGRAM=="IDEAL ")) CMINERAL = "EQSAM" -IF (CMINERAL /= 'NONE') THEN - ZRATMASSH2O = 0.05 + +IF (CMINERAL == 'EQSAM') THEN + ZRATMASSH2O = 0.02 ELSE - ZRATMASSH2O = 0. + ZRATMASSH2O = 0. END IF +! ZMI(:) = 250. ZMI(JP_AER_SO4) = 98. ZMI(JP_AER_NO3) = 63. @@ -121,7 +123,7 @@ ZMI(JP_AER_NH3) = 17. ZMI(JP_AER_H2O) = 18. ZCCN_SUM(:,:,:,:) = 0. ZIFN_SUM(:,:,:,:) = 0. - +! ! Anthopogenic part (orilam scheme) ! IF (LORILAM) THEN diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90 index 159d20680..7af314fe4 100644 --- a/src/MNH/prep_real_case.f90 +++ b/src/MNH/prep_real_case.f90 @@ -575,10 +575,8 @@ XANGCONV0, XANGCONV1000, XANGCONV2000, & NAMELIST/NAM_AERO_CONF/ LORILAM, LINITPM, LDUST, XINIRADIUSI, XINIRADIUSJ,& XINISIGI, XINISIGJ, XN0IMIN, XN0JMIN, CRGUNIT, CRGUNITD,& LSALT, CRGUNITS, NMODE_DST, XINISIG, XINIRADIUS, XN0MIN,& -!UPG*PT XINISIG_SLT, XINIRADIUS_SLT, XN0MIN_SLT, NMODE_SLT, & LDSTCAMS, LSLTCAMS,CACTCCN,CCLOUD, NMOD_IFN, NMOD_CCN, LAERINIT -!UPG*PT NAMELIST/NAM_CH_CONF/ LUSECHAQ,LUSECHIC,LUSECHEM ! @@ -588,14 +586,16 @@ NAMELIST/NAM_IBM_LSF/ LIBM_LSF, CIBM_TYPE, NIBM_SMOOTH, XIBM_SMOOTH INTEGER :: II, IJ, IGRID, ILENGTH CHARACTER (LEN=100) :: HCOMMENT TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL() ! list of fields to exchange -!UPG*PT +! REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZLBXRHO, ZLBYRHO REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZLBXZZ, ZLBYZZ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZLBXPABST, ZLBYPABST +REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZLBXRM, ZLBYRM +REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZLBXTHM, ZLBYTHM +REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZLBXSVM, ZLBYSVM +! INTEGER :: ILBX,ILBY,IIB,IJB,IIE,IJE LOGICAL :: GAERINIT -!UPG*PT - !------------------------------------------------------------------------------- ! CALL MPPDB_INIT() @@ -789,10 +789,10 @@ ELSE IF (YATMFILETYPE=='GRIBEX') THEN ELSE CALL READ_ALL_DATA_GRIB_CASE('ATM0',TZPRE_REAL1FILE,YATMFILE,TPGDFILE,ZHORI,NVERB,LDUMMY_REAL) END IF -LAERINIT = GAERINIT ! YDAD_NAME=' ' END IF +LAERINIT = GAERINIT ! IF (NIMAX==1 .AND. NJMAX==1) THEN L1D=.TRUE. @@ -1136,8 +1136,14 @@ IF (CCLOUD == 'LIMA' .AND. ((LORILAM).OR.(LDUST).OR.(LSALT))) THEN ALLOCATE(ZLBYRHO(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3))) ALLOCATE(ZLBXPABST(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3))) ALLOCATE(ZLBYPABST(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3))) + ALLOCATE(ZLBXTHM(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3))) + ALLOCATE(ZLBYTHM(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3))) ALLOCATE(ZLBXZZ(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3))) ALLOCATE(ZLBYZZ(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3))) + ALLOCATE(ZLBXRM(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3))) + ALLOCATE(ZLBYRM(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3))) + ALLOCATE(ZLBXSVM(SIZE(XLBXSVM,1), SIZE(XLBXSVM,2), SIZE(XLBXSVM,3), SIZE(XLBXSVM,4))) + ALLOCATE(ZLBYSVM(SIZE(XLBYSVM,1), SIZE(XLBYSVM,2), SIZE(XLBYSVM,3), SIZE(XLBXSVM,4))) ILBX=SIZE(XLBXSVM,1)/2-JPHEXT ILBY=SIZE(XLBYSVM,2)/2-JPHEXT @@ -1152,21 +1158,39 @@ IF (CCLOUD == 'LIMA' .AND. ((LORILAM).OR.(LDUST).OR.(LSALT))) THEN ZLBXPABST(ILBX+2:2*ILBX+2,:,:) = XPABST(IIE+1-ILBX:IIE+1,:,:) ZLBYPABST(:,1:ILBY+1,:) = XPABST(:,IJB-1:IJB-1+ILBY,:) ZLBYPABST(:,ILBY+2:2*ILBY+2,:) = XPABST(:,IJE+1-ILBY:IJE+1,:) + ZLBXTHM(1:ILBX+1,:,:) = XTHT(IIB-1:IIB-1+ILBX,:,:) + ZLBXTHM(ILBX+2:2*ILBX+2,:,:) = XTHT(IIE+1-ILBX:IIE+1,:,:) + ZLBYTHM(:,1:ILBY+1,:) = XTHT(:,IJB-1:IJB-1+ILBY,:) + ZLBYTHM(:,ILBY+2:2*ILBY+2,:) = XTHT(:,IJE+1-ILBY:IJE+1,:) ZLBXZZ(1:ILBX+1,:,:) = XZZ(IIB-1:IIB-1+ILBX,:,:) ZLBXZZ(ILBX+2:2*ILBX+2,:,:) = XZZ(IIE+1-ILBX:IIE+1,:,:) ZLBYZZ(:,1:ILBY+1,:) = XZZ(:,IJB-1:IJB-1+ILBY,:) ZLBYZZ(:,ILBY+2:2*ILBY+2,:) = XZZ(:,IJE+1-ILBY:IJE+1,:) + ZLBXSVM(1:ILBX+1,:,:,:) = XSVT(IIB-1:IIB-1+ILBX,:,:,:) + ZLBXSVM(ILBX+2:2*ILBX+2,:,:,:) = XSVT(IIE+1-ILBX:IIE+1,:,:,:) + ZLBYSVM(:,1:ILBY+1,:,:) = XSVT(:,IJB-1:IJB-1+ILBY,:,:) + ZLBYSVM(:,ILBY+2:2*ILBY+2,:,:) = XSVT(:,IJE+1-ILBY:IJE+1,:,:) + ZLBXRM(1:ILBX+1,:,:) = XRT(IIB-1:IIB-1+ILBX,:,:,1) + ZLBXRM(ILBX+2:2*ILBX+2,:,:) = XRT(IIE+1-ILBX:IIE+1,:,:,1) + ZLBYRM(:,1:ILBY+1,:) = XRT(:,IJB-1:IJB-1+ILBY,:,1) + ZLBYRM(:,ILBY+2:2*ILBY+2,:) = XRT(:,IJE+1-ILBY:IJE+1,:,1) - CALL AER2LIMA(XLBXSVM, ZLBXRHO, XLBXRM(:,:,:,1), ZLBXPABST, XLBXTHM, ZLBXZZ) - CALL AER2LIMA(XLBYSVM, ZLBYRHO, XLBYRM(:,:,:,1), ZLBYPABST, XLBYTHM, ZLBYZZ) + + CALL AER2LIMA(ZLBXSVM, ZLBXRHO, ZLBXRM(:,:,:), ZLBXPABST, ZLBXTHM, ZLBXZZ) + CALL AER2LIMA(ZLBYSVM, ZLBYRHO, ZLBYRM(:,:,:), ZLBYPABST, ZLBYTHM, ZLBYZZ) DEALLOCATE(ZLBXRHO) DEALLOCATE(ZLBYRHO) DEALLOCATE(ZLBXPABST) DEALLOCATE(ZLBYPABST) + DEALLOCATE(ZLBXTHM) + DEALLOCATE(ZLBYTHM) DEALLOCATE(ZLBXZZ) DEALLOCATE(ZLBYZZ) - + DEALLOCATE(ZLBXRM) + DEALLOCATE(ZLBYRM) + DEALLOCATE(ZLBXSVM) + DEALLOCATE(ZLBYSVM) END IF ! IF (ALLOCATED(XSV_MX)) DEALLOCATE(XSV_MX) -- GitLab