Skip to content
Snippets Groups Projects
Commit 3e4f37e7 authored by Gaelle TANGUY's avatar Gaelle TANGUY
Browse files

C.Lac 15/11/2016 : Add droplet deposition on trees

parent b5b7d79d
No related branches found
No related tags found
No related merge requests found
...@@ -8,11 +8,21 @@ ...@@ -8,11 +8,21 @@
! !
INTERFACE INTERFACE
SUBROUTINE DRAG_VEG(PUT,PVT,PTKET,PRHODJ,PZZ,PRUS, PRVS, PRTKES) SUBROUTINE DRAG_VEG(PUT,PVT,PTKET,ODEPOTREE, PVDEPOTREE, &
HCLOUD,PPABST,PTHT,PRT,PSVT, &
PRHODJ,PZZ,PRUS, PRVS, PRTKES, &
PTHS,PRRS,PSVS)
! !
REAL, DIMENSION(:,:,:), INTENT(IN) :: PUT, PVT ! variables REAL, DIMENSION(:,:,:), INTENT(IN) :: PUT, PVT ! variables
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKET ! at t REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKET ! at t
LOGICAL, INTENT(IN) :: ODEPOTREE ! Droplet deposition on tree
REAL, INTENT(IN) :: PVDEPOTREE! Velocity deposition on tree
CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of microphysical scheme
REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! at t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT ! at t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT ! at t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! at t
! !
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! dry Density * Jacobian REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! dry Density * Jacobian
REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z)
...@@ -21,6 +31,9 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) ...@@ -21,6 +31,9 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z)
! !
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS ! Sources of Momentum REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS ! Sources of Momentum
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTKES ! Sources of Tke REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTKES ! Sources of Tke
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PTHS
! !
! !
...@@ -31,7 +44,10 @@ END INTERFACE ...@@ -31,7 +44,10 @@ END INTERFACE
END MODULE MODI_DRAG_VEG END MODULE MODI_DRAG_VEG
! !
! ################################################################### ! ###################################################################
SUBROUTINE DRAG_VEG(PUT,PVT,PTKET,PRHODJ,PZZ,PRUS, PRVS, PRTKES) SUBROUTINE DRAG_VEG(PUT,PVT,PTKET,ODEPOTREE, PVDEPOTREE, &
HCLOUD,PPABST,PTHT,PRT,PSVT, &
PRHODJ,PZZ,PRUS, PRVS, PRTKES, &
PTHS,PRRS,PSVS)
! ################################################################### ! ###################################################################
! !
!!**** *DRAG_VEG_n * - !!**** *DRAG_VEG_n * -
...@@ -55,6 +71,7 @@ END MODULE MODI_DRAG_VEG ...@@ -55,6 +71,7 @@ END MODULE MODI_DRAG_VEG
!! Original 07/2009 !! Original 07/2009
!! C.Lac 07/2011 : Add budgets !! C.Lac 07/2011 : Add budgets
!! S. Donier 06/2015 : bug surface aerosols !! S. Donier 06/2015 : bug surface aerosols
!! C.Lac 07/2016 : Add droplet deposition
!!--------------------------------------------------------------- !!---------------------------------------------------------------
! !
! !
...@@ -67,6 +84,8 @@ USE MODD_DYN ...@@ -67,6 +84,8 @@ USE MODD_DYN
USE MODD_DYN_n USE MODD_DYN_n
USE MODD_VEG_n USE MODD_VEG_n
USE MODD_BUDGET USE MODD_BUDGET
USE MODD_PARAM_C2R2
USE MODD_NSV
! !
USE MODI_SHUMAN USE MODI_SHUMAN
...@@ -82,6 +101,13 @@ IMPLICIT NONE ...@@ -82,6 +101,13 @@ IMPLICIT NONE
! !
REAL, DIMENSION(:,:,:), INTENT(IN) :: PUT, PVT ! variables REAL, DIMENSION(:,:,:), INTENT(IN) :: PUT, PVT ! variables
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKET ! at t REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKET ! at t
LOGICAL, INTENT(IN) :: ODEPOTREE ! Droplet deposition on tree
REAL, INTENT(IN) :: PVDEPOTREE! Velocity deposition on tree
CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of microphysical scheme
REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! at t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT ! at t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT ! at t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! at t
! !
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! dry Density * Jacobian REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! dry Density * Jacobian
REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z)
...@@ -90,6 +116,9 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z) ...@@ -90,6 +116,9 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ! Height (z)
! !
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS ! Sources of Momentum REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRUS, PRVS ! Sources of Momentum
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTKES ! Sources of Tke REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTKES ! Sources of Tke
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PSVS
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PTHS
! !
! !
!* 0.2 Declarations of local variables : !* 0.2 Declarations of local variables :
...@@ -106,7 +135,10 @@ REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: & ...@@ -106,7 +135,10 @@ REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: &
REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: & REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: &
ZCDRAG, ZDENSITY ZCDRAG, ZDENSITY
REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: & REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: &
ZVH,ZLAI ! LAI, Hauteur de la vegetation ZVH,ZLAI ! LAI, Vegetation height
REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: ZT,ZEXN,ZLV,ZCPH
LOGICAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) &
:: GDEP
! !
! !
...@@ -154,30 +186,38 @@ ZTKET(:,:,:) = PTKET(:,:,:) ...@@ -154,30 +186,38 @@ ZTKET(:,:,:) = PTKET(:,:,:)
!* 1.1 Drag coefficient by vegetation (Patton et al 2001) !* 1.1 Drag coefficient by vegetation (Patton et al 2001)
! ------------------------------ ! ------------------------------
! !
GDEP(:,:,:) = .FALSE.
DO JJ=2,(IJU-1) DO JJ=2,(IJU-1)
DO JI=2,(IIU-1) DO JI=2,(IIU-1)
IF (ZVH(JI,JJ) /= 0) THEN IF (ZVH(JI,JJ) /= 0) THEN
DO JK=2,(IKU-1) DO JK=2,(IKU-1)
IF ((ZVH(JI,JJ)+PZZ(JI,JJ,2))<PZZ(JI,JJ,JK)) EXIT IF ((ZVH(JI,JJ)+PZZ(JI,JJ,2))<PZZ(JI,JJ,JK)) EXIT
ZCDRAG(JI,JJ,JK) = 0.3 !0.075 IF ((HCLOUD=='C2R2') .OR. (HCLOUD=='KHKO')) THEN
ZDENSITY(JI,JJ,JK) = MAX((4 * (ZLAI(JI,JJ) *& IF ((PRRS(JI,JJ,JK,2) >0.) .AND. (PSVS(JI,JJ,JK,NSV_C2R2BEG+1) >0.)) &
(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *& GDEP(JI,JJ,JK) = .TRUE.
(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *& ELSE IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'REVE') THEN
(ZVH(JI,JJ)-(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)))/& IF (PRRS(JI,JJ,JK,2) >0.) GDEP(JI,JJ,JK) = .TRUE.
ZVH(JI,JJ)**3)-& END IF
(0.30*((ZLAI(JI,JJ) *& ZCDRAG(JI,JJ,JK) = 0.2 !0.075
(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *& ZDENSITY(JI,JJ,JK) = MAX((4 * (ZLAI(JI,JJ) *&
(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *& (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) /& (PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
(ZVH(JI,JJ)**3))-ZLAI(JI,JJ))))/& (ZVH(JI,JJ)-(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)))/&
ZVH(JI,JJ), 0.) ZVH(JI,JJ)**3)-&
(0.30*((ZLAI(JI,JJ) *&
(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) *&
(PZZ(JI,JJ,JK)-PZZ(JI,JJ,2)) /&
(ZVH(JI,JJ)**3))-ZLAI(JI,JJ))))/&
ZVH(JI,JJ), 0.)
END DO END DO
END IF END IF
END DO END DO
END DO END DO
! ! To exclude the first vertical level already dealt in rain_ice or rain_c2r2_khko
GDEP(:,:,2) = .FALSE.
! !
!* 1.2 Drag force by wall surfaces !* 1.2 Drag force by wall surfaces
! --------------------------- ! ---------------------------
...@@ -194,8 +234,27 @@ PRUS(:,:,:)=PRUS(:,:,:)+((ZUS(:,:,:)-ZUT(:,:,:))*PRHODJ(:,:,:)) ...@@ -194,8 +234,27 @@ PRUS(:,:,:)=PRUS(:,:,:)+((ZUS(:,:,:)-ZUT(:,:,:))*PRHODJ(:,:,:))
! !
PRVS(:,:,:)=PRVS(:,:,:)+((ZVS(:,:,:)-ZVT(:,:,:))*PRHODJ(:,:,:)) PRVS(:,:,:)=PRVS(:,:,:)+((ZVS(:,:,:)-ZVT(:,:,:))*PRHODJ(:,:,:))
! !
IF (ODEPOTREE) THEN
ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:)
ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1)
WHERE (GDEP)
PRRS(:,:,:,2) = PRRS(:,:,:,2) - PVDEPOTREE * PRT(:,:,:,2) * PRHODJ(:,:,:)
END WHERE
IF ((HCLOUD=='C2R2') .OR. (HCLOUD=='KHKO')) THEN
WHERE (GDEP)
PSVS(:,:,:,NSV_C2R2BEG+1) = PSVS(:,:,:,NSV_C2R2BEG+1)- PVDEPOTREE * &
PSVT(:,:,:,NSV_C2R2BEG+1) * PRHODJ(:,:,:)
END WHERE
END IF
!
END IF
!
IF (LBUDGET_U) CALL BUDGET (PRUS,1,'DRAG_BU_RU') IF (LBUDGET_U) CALL BUDGET (PRUS,1,'DRAG_BU_RU')
IF (LBUDGET_V) CALL BUDGET (PRVS,2,'DRAG_BU_RV') IF (LBUDGET_V) CALL BUDGET (PRVS,2,'DRAG_BU_RV')
IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'DEPOTR_BU_RRC')
IF (LBUDGET_SV) CALL BUDGET (PSVS(:,:,:,NSV_C2R2BEG+1),14+(NSV_C2R2BEG-1),'DEPOTR_BU_RSV')
! !
! !
!* 3. Computations of TKE tendency due to canopy drag !* 3. Computations of TKE tendency due to canopy drag
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
!! MODIFICATIONS !! MODIFICATIONS
!! ------------- !! -------------
!! Original 30/06/11 !! Original 30/06/11
!! !! 06/16 (C.Lac) Add droplet deposition
!----------------------------------------------------------------------------- !-----------------------------------------------------------------------------
! !
!* 0. DECLARATIONS !* 0. DECLARATIONS
...@@ -29,5 +29,8 @@ ...@@ -29,5 +29,8 @@
IMPLICIT NONE IMPLICIT NONE
LOGICAL :: LDRAGTREE ! flag used to take into account tree drag in LOGICAL :: LDRAGTREE ! flag used to take into account tree drag in
! ! the atmospheric model instead of SURFEX. ! ! the atmospheric model instead of SURFEX.
LOGICAL :: LDEPOTREE ! flag for droplet deposition on trees
!
REAL :: XVDEPOTREE ! Droplet deposition velocity
! !
END MODULE MODD_DRAGTREE END MODULE MODD_DRAGTREE
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
!! ------------- !! -------------
!! Original 30/06/11 !! Original 30/06/11
!! !!
!! 10/2016 : (C.Lac) Add droplet deposition on trees
!! IMPLICIT ARGUMENTS !! IMPLICIT ARGUMENTS
!! ------------------ !! ------------------
USE MODD_DRAGTREE USE MODD_DRAGTREE
...@@ -33,7 +34,7 @@ USE MODD_DRAGTREE ...@@ -33,7 +34,7 @@ USE MODD_DRAGTREE
IMPLICIT NONE IMPLICIT NONE
SAVE SAVE
NAMELIST /NAM_DRAGTREE/ & NAMELIST /NAM_DRAGTREE/ &
LDRAGTREE LDRAGTREE,LDEPOTREE,XVDEPOTREE
! !
END MODULE MODN_DRAGTREE END MODULE MODN_DRAGTREE
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