Core C/C++ code for LROSE.
This project is maintained by NCAR
/**********************************************************************
* TDRP params for PrecipRateParams
**********************************************************************/
//======================================================================
//
// The PrecipRate module estimates precip rate from dual polarization
// data.
//
// See NCAR_QPE.pdf.
//
//======================================================================
//======================================================================
//
// COMPUTING PRECIP RATE.
//
//======================================================================
///////////// RATE_snr_threshold //////////////////////
//
// Minimum SNR for valid PRECIP.
//
// If the SNR at a gate is below this, the PRECIP is censored.
//
//
// Type: double
//
RATE_snr_threshold = 3;
///////////// RATE_apply_median_filter_to_DBZ /////////
//
// Option to filter DBZ with median filter.
//
// The filter is computed in rang..
//
//
// Type: boolean
//
RATE_apply_median_filter_to_DBZ = TRUE;
///////////// RATE_DBZ_median_filter_len //////////////
//
// Length of median filter for DBZ - gates.
//
// See 'RATE_apply_median_filter_to_DBZ'.
//
//
// Type: int
//
RATE_DBZ_median_filter_len = 5;
///////////// RATE_apply_median_filter_to_ZDR /////////
//
// Option to filter ZDR with median filter.
//
// The filter is computed in range.
//
//
// Type: boolean
//
RATE_apply_median_filter_to_ZDR = TRUE;
///////////// RATE_ZDR_median_filter_len //////////////
//
// Length of median filter for ZDR - gates.
//
// See 'PID_RATE_apply_median_filter_to_ZDR'.
//
//
// Type: int
//
RATE_ZDR_median_filter_len = 5;
///////////// RATE_min_valid_rate /////////////////////
//
// Minimum valid precip rate (mm/hr).
//
// If any computed rate is less than this value, it is set to 0.
//
//
// Type: double
//
RATE_min_valid_rate = 0.1;
///////////// RATE_max_valid_rate /////////////////////
//
// Maximum valid precip rate (mm/hr).
//
// If any computed rate exceeds this value, it is set to this max.
//
//
// Type: double
//
RATE_max_valid_rate = 250;
///////////// RATE_max_valid_dbz //////////////////////
//
// Maximum valid dbz for computing precip rate.
//
// If any dbz exceeds this value, it is set to this max before use. This
// helps mitigate large DBZ values in hail.
//
//
// Type: double
//
RATE_max_valid_dbz = 53;
///////////// RATE_brightband_dbz_correction //////////
//
// Correction to be applied in brightband before computing precip rate.
//
// This should be negative.
//
// Maximum val: 0
//
// Type: double
//
RATE_brightband_dbz_correction = -10;
//======================================================================
//
// PRECIP COEFFICIENTS.
//
// Coefficients for the precip equations.
//
//======================================================================
//======================================================================
//
// RATE_ZH.
//
// RATE_ZH = zh_aa * (ZH ** zh_bb).
//
//======================================================================
///////////// RATE_zh_aa //////////////////////////////
//
// Coefficient for RATE_ZH.
//
//
// Type: double
//
RATE_zh_aa = 0.017;
///////////// RATE_zh_bb //////////////////////////////
//
// Exponent for RATE_ZH.
//
//
// Type: double
//
RATE_zh_bb = 0.714;
//======================================================================
//
// RATE_SNOW_ZH.
//
// RATE_SNOW_ZH = zh_aa_snow * (ZH ** zh_bb_snow).
//
//======================================================================
///////////// RATE_zh_aa_snow /////////////////////////
//
// Coefficient for RATE_ZH in SNOW.
//
//
// Type: double
//
RATE_zh_aa_snow = 0.0365;
///////////// RATE_zh_bb_snow /////////////////////////
//
// Exponent for RATE_ZH in SNOW.
//
//
// Type: double
//
RATE_zh_bb_snow = 0.625;
//======================================================================
//
// RATE_Z_ZDR.
//
// RATE_Z_ZDR = zzdr_aa * (ZH ** zzdr_bb) * (ZDR ** zzdr_cc).
//
//======================================================================
///////////// RATE_zzdr_aa ////////////////////////////
//
// Coefficient for RATE_ZZDR.
//
//
// Type: double
//
RATE_zzdr_aa = 0.00684;
///////////// RATE_zzdr_bb ////////////////////////////
//
// ZH exponent for RATE_ZZDR.
//
//
// Type: double
//
RATE_zzdr_bb = 1;
///////////// RATE_zzdr_cc ////////////////////////////
//
// ZDR exponent for RATE_ZZDR.
//
//
// Type: double
//
RATE_zzdr_cc = -4.86;
//======================================================================
//
// RATE_KDP.
//
// RATE_KDP = sign(KDP) * kdp_aa * (|KDP| ** kdp_bb).
//
//======================================================================
///////////// RATE_kdp_aa /////////////////////////////
//
// Coefficient for RATE_KDP.
//
//
// Type: double
//
RATE_kdp_aa = 40.6;
///////////// RATE_kdp_bb /////////////////////////////
//
// Exponent for RATE_KDP.
//
//
// Type: double
//
RATE_kdp_bb = 0.866;
//======================================================================
//
// RATE_KDP_ZDR.
//
// RATE_KDP_ZDR = sign(KDP) * kdpzdr_aa * (|KDP| ** kdpzdr_bb) * (ZDR **
// kdpzdr_cc).
//
//======================================================================
///////////// RATE_kdpzdr_aa //////////////////////////
//
// Coefficient for RATE_KDP_ZDR.
//
//
// Type: double
//
RATE_kdpzdr_aa = 136;
///////////// RATE_kdpzdr_bb //////////////////////////
//
// KDP exponent for RATE_KDP_ZDR.
//
//
// Type: double
//
RATE_kdpzdr_bb = 0.968;
///////////// RATE_kdpzdr_cc //////////////////////////
//
// ZDR exponent for RATE_KDP_ZDR.
//
//
// Type: double
//
RATE_kdpzdr_cc = -2.86;
//======================================================================
//
// PRECIP RATE BASED ON PID.
//
// The PID-based rate is a wieghted-average of the rates for the various
// precip types.
// The weights are derived from the interest values for each PID
// particle type.
// RATE_LIGHT_RAIN = RATE_ZH
// RATE_MOD_RAIN = RATE_Z_ZDR
// RATE_SNOW = RATE_ZH_SNOW
// RATE_MIXED = RATE_ZH_MIXED
//
// if (kdp > threshold && RATE_KDP is valid)
// RATE_HVY_RAIN = RATE_KDP
// RATE_HAIL = RATE_KDP
// else
// RATE_HVY_RAIN = RATE_ZZDR
// RATE_HAIL = RATE_ZZDR
//
// RATE = 0
// RATE += RATE_LIGHT_RAIN * WT_LIGHT_RAIN
// RATE += RATE_MOD_RAIN * WT_MOD_RAIN
// RATE += RATE_HVY_RAIN * WT_HVY_RAIN
// RATE += RATE_SNOW * WT_SNOW
// RATE += RATE_MIXED * WT_MIXED
// RATE += RATE_HAIL * WT_HAIL.
//
//======================================================================
///////////// RATE_pid_rate_kdp_threshold /////////////
//
// Units are deg/km.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_pid_rate_kdp_threshold = 0.3;
//======================================================================
//
// RATE_HYBRID.
//
// The HYBRID rate is based on the PID and the BRINGI algorithm. See
// 'Using dual-polarized radar and dual-frequency profiler for DSD
// characterization: a case study from Darwin, Australia', Hybrid et al,
// JTech, Vol 26, 2009, 2107 - 2122.
//
// if hail or heavy rain
// if KDP > threhsold and rateKDP is valid
// use RATE_KDP
// else
// use RATE_KDP
// else if snow/ice
// use RATE_ZH_SNOW
// else if mixed precip
// use RATE_ZH_MIXED
// else if rain or SLD
// if dBZ > theshold and KDP > threhsold
// if rateKDP is valid
// use RATE_KDP
// else
// use RATE_ZZDR
// else
// if ZDR >= threshold
// use RATE_Z
// else
// use RATE_ZZDR.
//
//======================================================================
///////////// RATE_hybrid_dbz_threshold ///////////////
//
// Units are dBZ.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_hybrid_dbz_threshold = 40;
///////////// RATE_hybrid_kdp_threshold ///////////////
//
// Units are deg/km.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_hybrid_kdp_threshold = 0.3;
///////////// RATE_hybrid_zdr_threshold ///////////////
//
// Units are dB.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_hybrid_zdr_threshold = 0.5;
//======================================================================
//
// RATE_HIDRO.
//
// The HIDRO rate is based on the CSU-HIDRO algorithm. See 'A New
// Dual-Polarization Radar Rainfall Algorithm: Application to Colorado
// Precipition Events', Cifelli et al, JTech, Vol 28, 2011, 352 - 364.
// NOTE - this algorithm is generally only applied to liquid and
// mixed-phase precip, so you need to run PID for this to work as
// intended.
// For ice:
// RATE_HIDRO = MISSING
// For hail or mixed:
// if KDP >= threshold and rateKdp is valid
// RATE_HIDRO = RATE_KDP
// else
// RATE_HIDRO = RATE_ZR
// For rain or sld:
// if KDP >= threshold and DBZ >= threhold
// if ZDR >= threshold and rateKdpZdr is valid
// RATE_HIDRO = RATE_KDPZDR
// else if rateKdp is valid
// RATE_HIDRO = RATE_KDP
// else
// RATE_HIDRO = RATE_ZZDR
// else
// if ZDR >= threshold
// RATE_HIDRO = RATE_Z
// else
// RATE_HIDRO = RATE_ZZDR.
//
//======================================================================
///////////// RATE_hidro_dbz_threshold ////////////////
//
// Units are dBZ.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_hidro_dbz_threshold = 38;
///////////// RATE_hidro_kdp_threshold ////////////////
//
// Units are deg/km.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_hidro_kdp_threshold = 0.3;
///////////// RATE_hidro_zdr_threshold ////////////////
//
// Units are dB.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_hidro_zdr_threshold = 0.5;
//======================================================================
//
// RATE_BRINGI.
//
// The BRINGI rate is based on the BRINGI algorithm. See 'Using
// dual-polarized radar and dual-frequency profiler for DSD
// characterization: a case study from Darwin, Australia', Bringi et al,
// JTech, Vol 26, 2009, 2107 - 2122.
// if HAIL or RAIN/HAIL mixture and rateKdp is valid
// RATE_BRINGI = RATE_KDP
// else if dBZ > theshold and KDP > threhsold and rateKdp is valid
// RATE_BRINGI = RATE_KDP
// else
// if ZDR >= threshold
// RATE_BRINGI = RATE_ZZDR
// else
// RATE_BRINGI = RATE_Z.
//
//======================================================================
///////////// RATE_bringi_dbz_threshold ///////////////
//
// Units are dBZ.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_bringi_dbz_threshold = 40;
///////////// RATE_bringi_kdp_threshold ///////////////
//
// Units are deg/km.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_bringi_kdp_threshold = 0.15;
///////////// RATE_bringi_zdr_threshold ///////////////
//
// Units are dB.
//
// See notes above for details on use.
//
//
// Type: double
//
RATE_bringi_zdr_threshold = 0.1;