function get_bringi_rainrate,dbz,zdr,kdp,rhv,hid,method,MISSING=missing ;+ ; This version utilizes the HID classification of each pixel to ; determine whether or not to assign a rain rate. ; ; *** On Method: ; *** 0) Missing [no rain] ; *** 1) Default [Z/R] ; *** 2) Light Rain, noisy Zdr ; *** 3) Light rain w/modest Kdp ; *** 4) Moderate rain ; *** 5) Heavy rain ;- COMMON misc,TRUE,FALSE ; ; *** Disdrometer-based Z-R coefficients ; a1 = 0.024285 & b1 = 0.6895 ; Z = 219 Z^1.45 a1 = 0.017 & b1 = 0.7143 ; Z = 300 Z^1.4 [FACE] a1 = 0.036 & b1 = 0.6250 ; Z = 200 R^1.6 [Marshall Palmer] a_dsd = (1.0D/a1)^(1./b1) b_dsd = (1.0D/b1) ; *** Harvey ZR ; a1 = 0.01 & b1 = 0.833 ; Z = 250 R^1.2 ; a_dsd = (1.0D/a1)^(1./b1) ; b_dsd = (1.0D/b1) ; ; *** Default Z-R. If passes min dBZ threshold, then can be overwritten. ; method = missing ; Default if(dbz gt -20) then begin x1 = 0.1D*(dbz - 10D*alog10(a_dsd))/b_dsd rr = 10D^(x1) ; method = 1 method = 5 endif ; ; *** Check to see if DP variables can be used to calculate ; *** the rain rate. We need D0, Nw and mu to calculate the ; *** Polarimetric ZR ; zh = 10.^(0.1*dbz) ; Linear Z [mm^6 m^-3] xi_dr = 10.^(0.1*zdr) ; Linear Units d0 = 0 dm = 0 Nw = 0 mu = 0 beta = 0 logNw = missing ; ; *** Light rain rates with noisy Zdr ; if(zdr ge -0.5 and zdr lt 0.2) then begin d0 = 0.6096*(zh^0.0516)*(xi_dr^3.111) nw = (21*zh)/d0^7.3529 mu = 3.0 dm = d0 * ((4+mu)/(3.67+mu)) ; method = 2 method = 4 goto,calc_rain_rate endif ; ; *** Light rain rates with modest kdp ; if(kdp lt 0.3 and zdr ge 0.2 and zdr lt 0.5) then begin x1 = ((zdr - 0.2)/0.3) * 1.81 * zdr^(0.486) x2 = ((0.5-zdr)/0.3) * 0.6096*zh^(0.0516) * xi_dr^(3.111) d0 = x1 + x2 Nw = (21*zh)/D0^7.3529 mu = 3.0 dm = d0 * ((4+mu)/(3.67+mu)) ; method = 3 method = 3 goto,calc_rain_rate endif ; ; *** Moderate rain rates ; if(kdp lt 0.3 and zdr ge 0.5) then begin d0 = 1.81*zdr^0.486 Nw = (21*zh)/d0^7.3529 mu = 3.0 dm = d0 * ((4+mu)/(3.67+mu)) ; method = 4 method = 2 goto,calc_rain_rate endif ; ; *** Heavy rain rates ; if(dbz ge 35 and kdp ge 0.3 and zdr ge 0.2) then begin beta = 2.08*zh^(-0.365) * kdp^(0.38) * xi_dr^(0.965) a1 = 0.56 & b1 = 0.064 & c1 = 0.024*beta^(-1.42) d0 = a1 * zh^b1 * xi_dr^c1 a2 = 3.29 & b2 = 0.058 & c2 = -0.023 * beta^(-1.389) logNw = a2 * zh^b2 * xi_dr^c2 nw = 10^(logNw) a3 = 203. * beta^(1.89) b3 = 2.23 * beta^(0.0388) c3 = 3.16 * beta^(-0.0463) d3 = 0.374 * beta^(-0.355) x1 = a3 * (d0^b3)/(xi_dr-1) x2 = c3 * (xi_dr^d3) mu = x1 - x2 dm = d0 * ((4+mu)/(3.67+mu)) ; method = 5 method = 1 endif calc_rain_rate: if(method eq 0) then begin print,dbz,kdp,zdr,rhv stop endif ; ; *** Set all pixels with KDP eq missing and RHV eq missing to missing ; rhv_thresh = 0.75 kdp_thresh = -1.0 if(rhv lt rhv_thresh and kdp lt kdp_thresh) then begin rr = missing ret = [missing, missing] return,ret endif ; ; *** Calculate the coefficient a' in Z = a' * R^1.5 using the DSD ; *** parameters. First, calculate f(mu) ; rr = get_polzr_rainrate(dbz,d0,Nw,mu,a_prime,MISSING=missing) ret = [rr, method] ; print,ret return,ret end