From 03652a5ee64689a92e23fd7679da9aa97b6ecaac Mon Sep 17 00:00:00 2001
From: Gaelle Tanguy <gaelle.tanguy@meteo.fr>
Date: Thu, 10 Apr 2014 14:33:43 +0000
Subject: [PATCH] O.CAUMONT 10/04/2014 :correction of a scientific pb for ZDR

---
 src/MNH/radar_rain_ice.f90 | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/MNH/radar_rain_ice.f90 b/src/MNH/radar_rain_ice.f90
index 85ad37f14..bb73b0f18 100644
--- a/src/MNH/radar_rain_ice.f90
+++ b/src/MNH/radar_rain_ice.f90
@@ -83,6 +83,7 @@ END MODULE MODI_RADAR_RAIN_ICE
 !!                  19/05/04 (JP Pinty) add ZDR and KDP for raindops at 10.71 cm
 !! J.-P. Chaboureau 17/06/10 bug correction in reflectivity calculation of icy hydrometeors
 !! J.-P. Chaboureau 03/02/12 set undef values for radar reflectivities
+!!       O. Caumont 09/04/14 correction of ZDR calculation
 !!
 !-------------------------------------------------------------------------------
 !
@@ -150,9 +151,10 @@ LOGICAL  :: GFLAG   ! Logical flag for printing the constatnts on the output
                     ! listing
 !
 REAL     ::   ZR0, ZR1, ZR2 ! r(D) parameters
-REAL     ::   ZREXP, ZSCALE ! parameters to compute Zhh from Zvv
-REAL     ::   Z1, Z2        ! expansion coefficients
-!  
+!REAL     ::   ZREXP, ZSCALE ! parameters to compute Zhh from Zvv
+REAL     ::   Z1, Z2, Z3    ! expansion coefficients
+! 
+INTEGER  :: II, IJ, IK 
 !-------------------------------------------------------------------------------
 !
 !
@@ -199,10 +201,13 @@ IF (SIZE(PRT,4) >= 3) THEN
   ZR1 = -0.144E2
   ZR2 = -1.03E4
 !
-  ZREXP  = 7.0/3.0
-  ZSCALE = ZR0**ZREXP
-  Z1     = ZREXP*(ZR1/ZR0)
-  Z2     = ZREXP*(ZR2/ZR0)+ZREXP*(ZREXP-1.0)*0.5*(ZR1/ZR0)**2
+!  ZREXP  = 7.0/3.0
+!  ZSCALE = ZR0**ZREXP
+!  Z1     = ZREXP*(ZR1/ZR0)
+!  Z2     = ZREXP*(ZR2/ZR0)+ZREXP*(ZREXP-1.0)*0.5*(ZR1/ZR0)**2
+  Z1=.97
+  Z2=.64
+  Z3=7.8
 !
   ZLBDA(:,:,:) = 0.0
   IF( SIZE(PRT,4) == 3 ) THEN
@@ -218,11 +223,13 @@ IF (SIZE(PRT,4) >= 3) THEN
     ZLBDA(:,:,:) = XLBR*( PRHODREF(:,:,:)*PRT(:,:,:,3) )**XLBEXR
     PRARE(:,:,:) = 1.E18*XCCR*(ZLBDA(:,:,:)**(ZCXR-6.0))*MOMG(XALPHAR,XNUR,6.0)
     PVDOP(:,:,:) = 1.E18*XCCR*XCR*(ZLBDA(:,:,:)**(ZCXR-6.0-XDR))              &
-  						  *MOMG(XALPHAR,XNUR,6.0+XDR)
-    PRZDR(:,:,:) = ZSCALE*(1.0                                                 &
-      +Z1*(MOMG(XALPHAR,XNUR,7.0)/MOMG(XALPHAR,XNUR,6.0))*(1.0/ZLBDA(:,:,:))   &
-      +Z2*(MOMG(XALPHAR,XNUR,8.0)/MOMG(XALPHAR,XNUR,6.0))*(1.0/ZLBDA(:,:,:)**2))
-    PRZDR(:,:,:) = -10.0*LOG10( PRZDR(:,:,:) ) ! now in dBZ
+    *MOMG(XALPHAR,XNUR,6.0+XDR)
+!    PRZDR(:,:,:) = ZSCALE*(1.0                                                 &
+!      +Z1*(MOMG(XALPHAR,XNUR,7.0)/MOMG(XALPHAR,XNUR,6.0))*(1.0/ZLBDA(:,:,:))   &
+!      +Z2*(MOMG(XALPHAR,XNUR,8.0)/MOMG(XALPHAR,XNUR,6.0))*(1.0/ZLBDA(:,:,:)**2))
+    PRZDR(:,:,:) = Z1+Z2*(PRHODREF(:,:,:)*PRT(:,:,:,3))**(-XLBEXR)+Z3*(PRHODREF(:,:,:)*PRT(:,:,:,3))**(-2.*XLBEXR)
+!    PRZDR(:,:,:) = -10.0*LOG10( PRZDR(:,:,:) ) ! now in dBZ
+    PRZDR(:,:,:) = 10.0*LOG10( PRZDR(:,:,:) ) ! now in dBZ
     PRKDP(:,:,:) = 6.7E3*( PRHODREF(:,:,:)*PRT(:,:,:,3) )*                     &
     (-ZR1*(MOMG(XALPHAR,XNUR,4.0)/MOMG(XALPHAR,XNUR,3.0))*(1.0/ZLBDA(:,:,:))   &
      -ZR2*(MOMG(XALPHAR,XNUR,5.0)/MOMG(XALPHAR,XNUR,3.0))*(1.0/ZLBDA(:,:,:)**2))
-- 
GitLab