Skip to content
Snippets Groups Projects
Commit 75936a7d authored by Gaelle Tanguy's avatar Gaelle Tanguy Committed by WAUTELET Philippe
Browse files

Benoit VIE 10/04/2014 : correction on the sedimentation

parent bb85eefe
No related branches found
No related tags found
No related merge requests found
...@@ -174,6 +174,7 @@ END MODULE MODI_RAIN_KHKO ...@@ -174,6 +174,7 @@ END MODULE MODI_RAIN_KHKO
!! evaporation for reproducibility !! evaporation for reproducibility
!! O.Thouron 03/13 Add prognostic supersaturation + !! O.Thouron 03/13 Add prognostic supersaturation +
!! corrections in the sedimentation !! corrections in the sedimentation
!! B.Vié 04/14 Corrections in the sedimentation
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
!* 0. DECLARATIONS !* 0. DECLARATIONS
...@@ -299,6 +300,9 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) & ...@@ -299,6 +300,9 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) &
:: ZMVRR,ZVRR,ZVCR :: ZMVRR,ZVRR,ZVCR
REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) & REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) &
:: ZMVRC !Cloud water mean volumic radius :: ZMVRC !Cloud water mean volumic radius
REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) &
:: ZPRCT, ZPCCT, ZPRRT, ZPCRT
! For splitted sedimentation
REAL, DIMENSION(:), ALLOCATABLE :: ZRVT ! Water vapor m.r. at t REAL, DIMENSION(:), ALLOCATABLE :: ZRVT ! Water vapor m.r. at t
REAL, DIMENSION(:), ALLOCATABLE :: ZRCT ! Cloud water m.r. at t REAL, DIMENSION(:), ALLOCATABLE :: ZRCT ! Cloud water m.r. at t
REAL, DIMENSION(:), ALLOCATABLE :: ZRRT ! Rain water m.r. at t REAL, DIMENSION(:), ALLOCATABLE :: ZRRT ! Rain water m.r. at t
...@@ -511,11 +515,15 @@ DO JN = 1 , KSPLITR ...@@ -511,11 +515,15 @@ DO JN = 1 , KSPLITR
! !
IF( JN==1 ) THEN IF( JN==1 ) THEN
IF( OSEDC ) THEN IF( OSEDC ) THEN
PCCS(:,:,:) = PCCS(:,:,:) * PTSTEP ZPCCT(:,:,:) = PCCT(:,:,:)
PRCS(:,:,:) = PRCS(:,:,:) * PTSTEP ZPRCT(:,:,:) = PRCT(:,:,:)
PCCS(:,:,:) = PCCS(:,:,:) * PTSTEP - PCCT(:,:,:)
PRCS(:,:,:) = PRCS(:,:,:) * PTSTEP - PRCT(:,:,:)
END IF END IF
PCRS(:,:,:) = PCRS(:,:,:) * PTSTEP ZPCRT(:,:,:) = PCRT(:,:,:)
PRRS(:,:,:) = PRRS(:,:,:) * PTSTEP ZPRRT(:,:,:) = PRRT(:,:,:)
PCRS(:,:,:) = PCRS(:,:,:) * PTSTEP - PCRT(:,:,:)
PRRS(:,:,:) = PRRS(:,:,:) * PTSTEP - PRRT(:,:,:)
DO JK = IKB , IKE DO JK = IKB , IKE
ZW(:,:,JK) = ZTSPLITR/(PZZ(:,:,JK+1) -PZZ(:,:,JK)) ZW(:,:,JK) = ZTSPLITR/(PZZ(:,:,JK+1) -PZZ(:,:,JK))
END DO END DO
...@@ -542,23 +550,23 @@ DO JN = 1 , KSPLITR ...@@ -542,23 +550,23 @@ DO JN = 1 , KSPLITR
ZZW3(:) = 0.0 ZZW3(:) = 0.0
! !
IF( OSEDC.AND.MAXVAL(PRCS(:,:,:))>0.0 ) THEN IF( OSEDC.AND.MAXVAL(PRCS(:,:,:))>0.0 ) THEN
ALLOCATE(ZRCS(ISEDIM)) ALLOCATE(ZRCT(ISEDIM))
ALLOCATE(ZCCS(ISEDIM)) ALLOCATE(ZCCT(ISEDIM))
ALLOCATE(ZLBDC(ISEDIM)) ALLOCATE(ZLBDC(ISEDIM))
DO JL = 1,ISEDIM DO JL = 1,ISEDIM
ZRCS(JL) = PRCS(I1(JL),I2(JL),I3(JL)) ZRCT(JL) = ZPRCT(I1(JL),I2(JL),I3(JL))
ZCCS(JL) = PCCS(I1(JL),I2(JL),I3(JL)) ZCCT(JL) = ZPCCT(I1(JL),I2(JL),I3(JL))
ZLBDC(JL) = ZWLBDC(I1(JL),I2(JL),I3(JL)) ZLBDC(JL) = ZWLBDC(I1(JL),I2(JL),I3(JL))
END DO END DO
WHERE( ZRCS(:)>XRTMIN(2) ) WHERE( ZRCT(:)>XRTMIN(2) )
ZZW3(:) = ZRHODREF(:)**(-XCEXVT) * ZLBDC(:)**(-XDC) ZZW3(:) = ZRHODREF(:)**(-XCEXVT) * ZLBDC(:)**(-XDC)
ZZW1(:) = XFSEDRC * ZRCS(:) * ZZW3(:) * ZRHODREF(:) ZZW1(:) = XFSEDRC * ZRCT(:) * ZZW3(:) * ZRHODREF(:)
ZZW2(:) = XFSEDCC * ZCCS(:) * ZZW3(:) ZZW2(:) = XFSEDCC * ZCCT(:) * ZZW3(:)
END WHERE END WHERE
ZWSEDR(:,:,:) = UNPACK( ZZW1(:),MASK=GSEDIM(:,:,:),FIELD=0.0 ) ZWSEDR(:,:,:) = UNPACK( ZZW1(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
ZWSEDC(:,:,:) = UNPACK( ZZW2(:),MASK=GSEDIM(:,:,:),FIELD=0.0 ) ZWSEDC(:,:,:) = UNPACK( ZZW2(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
DEALLOCATE(ZRCS) DEALLOCATE(ZRCT)
DEALLOCATE(ZCCS) DEALLOCATE(ZCCT)
DEALLOCATE(ZLBDC) DEALLOCATE(ZLBDC)
END IF END IF
! !
...@@ -566,16 +574,16 @@ DO JN = 1 , KSPLITR ...@@ -566,16 +574,16 @@ DO JN = 1 , KSPLITR
! !
IF( OSEDC ) THEN IF( OSEDC ) THEN
DO JK = IKB , IKE DO JK = IKB , IKE
PRCS(:,:,JK) = PRCS(:,:,JK) + ZW(:,:,JK)* & ZPRCT(:,:,JK) = ZPRCT(:,:,JK) + ZW(:,:,JK)* &
(ZWSEDR(:,:,JK+1)-ZWSEDR(:,:,JK))/PRHODREF(:,:,JK) (ZWSEDR(:,:,JK+1)-ZWSEDR(:,:,JK))/PRHODREF(:,:,JK)
PCCS(:,:,JK) = PCCS(:,:,JK) + ZW(:,:,JK)* & ZPCCT(:,:,JK) = ZPCCT(:,:,JK) + ZW(:,:,JK)* &
(ZWSEDC(:,:,JK+1)-ZWSEDC(:,:,JK)) (ZWSEDC(:,:,JK+1)-ZWSEDC(:,:,JK))
END DO END DO
! !
IF( JN.EQ.1 ) THEN IF( JN.EQ.1 ) THEN
PINPRC(:,:) = ZWSEDR(:,:,IKB)/XRHOLW ! in m/s PINPRC(:,:) = ZWSEDR(:,:,IKB)/XRHOLW ! in m/s
END IF END IF
END IF END IF
! !
!* 2.22 for drizzle !* 2.22 for drizzle
! !
...@@ -586,25 +594,25 @@ DO JN = 1 , KSPLITR ...@@ -586,25 +594,25 @@ DO JN = 1 , KSPLITR
ZZW2(:) = 0.0 ZZW2(:) = 0.0
! !
IF( MAXVAL(PRRS(:,:,:))>0.0 ) THEN IF( MAXVAL(PRRS(:,:,:))>0.0 ) THEN
ALLOCATE(ZRRS(ISEDIM)) ALLOCATE(ZRRT(ISEDIM))
ALLOCATE(ZCRS(ISEDIM)) ALLOCATE(ZCRT(ISEDIM))
ALLOCATE(ZZVRR(ISEDIM)) ALLOCATE(ZZVRR(ISEDIM))
ALLOCATE(ZZVCR(ISEDIM)) ALLOCATE(ZZVCR(ISEDIM))
DO JL = 1,ISEDIM DO JL = 1,ISEDIM
ZRRS(JL) = PRRS(I1(JL),I2(JL),I3(JL)) ZRRT(JL) = ZPRRT(I1(JL),I2(JL),I3(JL))
ZCRS(JL) = PCRS(I1(JL),I2(JL),I3(JL)) ZCRT(JL) = ZPCRT(I1(JL),I2(JL),I3(JL))
ZZVRR(JL) = ZVRR(I1(JL),I2(JL),I3(JL)) ZZVRR(JL) = ZVRR(I1(JL),I2(JL),I3(JL))
ZZVCR(JL) = ZVCR(I1(JL),I2(JL),I3(JL)) ZZVCR(JL) = ZVCR(I1(JL),I2(JL),I3(JL))
END DO END DO
WHERE (ZRRS(:)>XRTMIN(3) ) WHERE (ZRRT(:)>XRTMIN(3) )
ZZW1(:) = ZZVRR(:) * ZRRS(:) * ZRHODREF(:) ZZW1(:) = ZZVRR(:) * ZRRT(:) * ZRHODREF(:)
ZZW2(:) = ZZVCR(:) * ZCRS(:) ZZW2(:) = ZZVCR(:) * ZCRT(:)
END WHERE END WHERE
ZWSEDR(:,:,:) = UNPACK( ZZW1(:),MASK=GSEDIM(:,:,:),FIELD=0.0 ) ZWSEDR(:,:,:) = UNPACK( ZZW1(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
ZWSEDC(:,:,:) = UNPACK( ZZW2(:),MASK=GSEDIM(:,:,:),FIELD=0.0 ) ZWSEDC(:,:,:) = UNPACK( ZZW2(:),MASK=GSEDIM(:,:,:),FIELD=0.0 )
! !
DEALLOCATE(ZRRS) DEALLOCATE(ZRRT)
DEALLOCATE(ZCRS) DEALLOCATE(ZCRT)
DEALLOCATE(ZZVRR) DEALLOCATE(ZZVRR)
DEALLOCATE(ZZVCR) DEALLOCATE(ZZVCR)
! !
...@@ -620,9 +628,9 @@ DO JN = 1 , KSPLITR ...@@ -620,9 +628,9 @@ DO JN = 1 , KSPLITR
!* 2.3 update the rain tendency !* 2.3 update the rain tendency
! !
DO JK = IKB , IKE DO JK = IKB , IKE
PRRS(:,:,JK) = PRRS(:,:,JK) + ZW(:,:,JK)* & ZPRRT(:,:,JK) = ZPRRT(:,:,JK) + ZW(:,:,JK)* &
(ZWSEDR(:,:,JK+1)-ZWSEDR(:,:,JK))/PRHODREF(:,:,JK) (ZWSEDR(:,:,JK+1)-ZWSEDR(:,:,JK))/PRHODREF(:,:,JK)
PCRS(:,:,JK) = PCRS(:,:,JK) + ZW(:,:,JK)* & ZPCRT(:,:,JK) = ZPCRT(:,:,JK) + ZW(:,:,JK)* &
(ZWSEDC(:,:,JK+1)-ZWSEDC(:,:,JK)) (ZWSEDC(:,:,JK+1)-ZWSEDC(:,:,JK))
END DO END DO
! !
...@@ -635,11 +643,11 @@ DO JN = 1 , KSPLITR ...@@ -635,11 +643,11 @@ DO JN = 1 , KSPLITR
! !
IF( JN==KSPLITR ) THEN IF( JN==KSPLITR ) THEN
IF( OSEDC ) THEN IF( OSEDC ) THEN
PRCS(:,:,:) = PRCS(:,:,:) / PTSTEP PRCS(:,:,:) = ( PRCS(:,:,:) + ZPRCT(:,:,:) ) / PTSTEP
PCCS(:,:,:) = PCCS(:,:,:) / PTSTEP PCCS(:,:,:) = ( PCCS(:,:,:) + ZPCCT(:,:,:) ) / PTSTEP
END IF END IF
PRRS(:,:,:) = PRRS(:,:,:) / PTSTEP PRRS(:,:,:) = ( PRRS(:,:,:) + ZPRRT(:,:,:) ) / PTSTEP
PCRS(:,:,:) = PCRS(:,:,:) / PTSTEP PCRS(:,:,:) = ( PCRS(:,:,:) + ZPCRT(:,:,:) ) / PTSTEP
END IF END IF
END DO END DO
! !
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment