From 9dd11d28b0a04a761eff0f2e884a953f7e3910d1 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Tue, 31 Jan 2023 15:58:44 +0100 Subject: [PATCH] P.Tulet 31/01/2023: bugfix, add checks and security for chemistry and aerosols --- src/MNH/ch_convect_scavenging.f90 | 8 +++++--- src/MNH/ch_monitorn.f90 | 3 ++- src/MNH/ini_modeln.f90 | 6 +++--- src/MNH/mode_aero_psd.f90 | 12 ++++++++++++ 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/MNH/ch_convect_scavenging.f90 b/src/MNH/ch_convect_scavenging.f90 index a0bfccfd6..2a3f7082a 100644 --- a/src/MNH/ch_convect_scavenging.f90 +++ b/src/MNH/ch_convect_scavenging.f90 @@ -625,15 +625,17 @@ IF (LORILAM) THEN ! ORILAM chemical aerosol scavenging ZSIGAER(:,:,:,2) = XINISIGJ ZRGAER(:,:,:,1) = ZINIRADIUSI ZRGAER(:,:,:,2) = ZINIRADIUSJ + ZNAER(:,:,:,1) = XN0IMIN + ZNAER(:,:,:,2) = XN0IMIN ! Compute RG and SIGMA with old concentration PCH1 CALL PPP2AERO(ZSV(:,:,IKB:IKE,NSV_AERBEG:NSV_AEREND),& ZRHODREF(:,:,IKB:IKE), PSIG3D=ZSIGAER(:,:,IKB:IKE,:),& PRG3D=ZRGAER(:,:,IKB:IKE,:),PN3D=ZNAER(:,:,IKB:IKE,:)) - CALL AERO2PPP(ZSVC(:,:,:,NSV_AERBEG:NSV_AEREND), & - ZRHODREF(:,:,:), ZSIGAER(:,:,:,:),& - ZRGAER(:,:,:,:)) + CALL AERO2PPP(ZSVC(:,:,IKB:IKE,NSV_AERBEG:NSV_AEREND), & + ZRHODREF(:,:,IKB:IKE), ZSIGAER(:,:,IKB:IKE,:),& + ZRGAER(:,:,IKB:IKE,:)) PCH1C(:,:,NSV_AERBEG:NSV_AEREND) = ZSVC(:,1,:,NSV_AERBEG:NSV_AEREND) diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90 index eb8db26c6..1b5f5d07c 100644 --- a/src/MNH/ch_monitorn.f90 +++ b/src/MNH/ch_monitorn.f90 @@ -652,7 +652,6 @@ SELECT CASE (CCH_TDISCRETIZATION) END SELECT ! ! -IF (LEN_TRIM(CSPEC_BU_DIAG)/=0.OR.LEN_TRIM(CSPEC_DIAG)/=0) GSPLIT=.FALSE. ! Modif. for DIAG IF (CPROGRAM=='DIAG ') GSPLIT=.FALSE. ! Modif. for DIAG ! ! @@ -1028,6 +1027,8 @@ DO JL=1,ISVECNMASK END DO END DO END IF +! + ZCHEM(:,:) = MAX(ZCHEM, XMNH_TINY) ! !* 4.2 transfer meteo data into chemical core system ! diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index fa29732f1..5fef62065 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -2809,9 +2809,9 @@ CALL INI_POSPROFILER_n(XTSTEP, XSEGLEN, NRR, NSV, & ! ------------------------ ! IF ( ( CRAD=='ECMW' .OR. CRAD=='ECRA' ) .AND. CAOP=='EXPL' .AND. LORILAM ) THEN - ALLOCATE(POLYTAU(6,10,8,6,13)) - ALLOCATE(POLYSSA(6,10,8,6,13)) - ALLOCATE(POLYG (6,10,8,6,13)) + IF(.NOT.ALLOCATED(POLYTAU)) ALLOCATE(POLYTAU(6,10,8,6,13)) + IF(.NOT.ALLOCATED(POLYSSA)) ALLOCATE(POLYSSA(6,10,8,6,13)) + IF(.NOT.ALLOCATED(POLYG)) ALLOCATE(POLYG (6,10,8,6,13)) CALL INI_AEROSET1 CALL INI_AEROSET2 CALL INI_AEROSET3 diff --git a/src/MNH/mode_aero_psd.f90 b/src/MNH/mode_aero_psd.f90 index 7a18e4515..183447aea 100644 --- a/src/MNH/mode_aero_psd.f90 +++ b/src/MNH/mode_aero_psd.f90 @@ -667,6 +667,12 @@ ELSE END IF ENDIF +! Cf Ackermann (all to black carbon except water) +!Set molecular weightn g/mol +ZRHOI(:) = 1.8e3 +ZRHOI(JP_AER_H2O) = 1.0e3 ! water +ZRHOI(JP_AER_DST) = XDENSITY_DUST ! dusts + ! conversion into mol.cm-3 ZDEN2MOL = 1E-6 * XAVOGADRO / XMD DO JJ=1, SIZE(PSVT, 4) @@ -898,6 +904,12 @@ ELSE END IF ENDIF +! Cf Ackermann (all to black carbon except water) +!Set molecular weightn g/mol +ZRHOI(:) = 1.8e3 +ZRHOI(JP_AER_H2O) = 1.0e3 ! water +ZRHOI(JP_AER_DST) = XDENSITY_DUST ! dusts + ! conversion into mol.cm-3 ZDEN2MOL = 1E-6 * XAVOGADRO / XMD ! -- GitLab