22DBZ::DBZ(
const Volume<double>& volume)
25 time_t Time = volume.load_info->acq_date;
26 struct tm* tempo = gmtime(&Time);
27 init(tempo->tm_mon+1, volume[0].cell_size);
30DBZ::DBZ(
int month,
double base_cell_size)
35void DBZ::init(
int month,
double base_cell_size)
39 if (month > 4 && month < 10)
53 double Zhh,att_rate,R;
61 if (10*log10(Zhh) > THRES_ATT )
63 Zhh=pow(10., (log10(Zhh)+ 0.1*att_tot));
64 R=pow((Zhh/aMP),(1.0/bMP));
65 att_rate=0.0018*pow(R,1.05);
74 double Zhh,att_rate,R;
82 if (DBZvalue > THRES_ATT )
85 Zhh=
DBZtoZ(DBZvalue+ att_tot);
86 R=pow((Zhh/aMP),(1.0/bMP));
87 att_rate=0.0018*pow(R,1.05);
95double DBZ::RtoDBZ(
double rain)
const
97 return RtoDBZ(rain, aMP, bMP);
100double DBZ::DBZtoR(
double dbz)
const
102 return DBZtoR(dbz, aMP, bMP);
105double DBZ::DBZ_snow(
double dbz)
const
107 return RtoDBZ(DBZtoR(dbz, aMP_SNOW, bMP_SNOW), aMP_class, bMP_class);
110double DBZ::DBZ_conv(
double dbz)
const
112 return RtoDBZ(DBZtoR(dbz, aMP_conv, bMP_conv), aMP_class, bMP_class);
115double DBZ::RtoDBZ_class(
double R)
const
117 return RtoDBZ(R, aMP_class, bMP_class);
120double DBZ::DBZ_to_mp_func(
double sample)
const
122 return DBZtoR(sample, aMP, bMP);
127 const double gain = 80. / 255.;
128 const double offset = -20.;
129 static bool precomputed =
false;
130 static double Z[256];
134 for (
unsigned i=0; i < 256; ++i)
135 Z[i] = pow(10., (i * gain + offset) * 0.1);
double attenuation(unsigned char DBZbyte, double PIA)
funzione che calcola l'attenuazione totale
static double BYTEtoZ(unsigned char byte)
funzione che converte byte in Z
static constexpr double DBZtoZ(double DBZ)
funzione che converte dBZ in Z
static constexpr double BYTEtoDB(unsigned char DBZbyte, double gain=80./255., double offset=-20.)
funzione che converte Z unsigned char in DBZ
double base_cell_size
cella size dimension
Definisce le principali strutture che contengono i dati.