Elaboradar 0.1
Caricamento in corso...
Ricerca in corso...
Nessun risultato

◆ compute_lkdp()

void classifier::compute_lkdp ( )

Initialize vol_lkdp 10log10 of the moving average slope of phidp along beam path.

METODO DI VULPIANI 2012 ///

Definizione alla linea 221 del file classifier.cpp.

222{
224 unsigned half_win6km=12;
225 double kdp;
226 unsigned tries;
227 double phidp1, phidp2;
228 double undet,nodat;
229
230 for(unsigned el=0;el<vol_phidp.size();el++)
231 {
232 vol_phidp_6km.push_back(vol_phidp[el]);
233 undet=vol_phidp[el].undetect;
234 nodat=vol_phidp[el].nodata;
235
236 for(unsigned az=0;az<vol_phidp[el].beam_count;az++)
237 {
238 vol_phidp_6km[el].set(az,0,0.);
239 for(unsigned rg=0;rg<vol_phidp[el].beam_size;rg++)
240 {
241 if(rg<half_win6km||rg>(vol_phidp[el].beam_size-half_win6km-1)){kdp=0.;}
242 else
243 {
244 phidp1=vol_phidp[el].get(az,rg-half_win6km);
245 phidp2=vol_phidp[el].get(az,rg+half_win6km);
246 if(phidp1==undet||phidp1==nodat||phidp2==undet||phidp2==nodat){kdp=0.;}
247 else
248 {
249 kdp=0.5*(phidp2-phidp1)/6.;
250 tries=0;
251 while(tries<3)
252 {
253 if((kdp<-2.)||(kdp>20.))
254 {
255 if(kdp<-10.) // vulpiani diceva -20, ma considerava ricetrasmettitori simultanei (360°) e L=7km
256 {
257 kdp=0.5*(phidp2-phidp1+180.)/6.;
258 }
259 else
260 {
261 kdp=0.;
262 }
263 tries++;
264 }
265 else {tries=4;}
266 }
267 }
268 }
269 if(rg){vol_phidp_6km[el].set(az,rg,vol_phidp_6km[el].get(az,rg-1)+2.*kdp*vol_phidp[el].cell_size*0.001);}
270 //vol_lkdp_6km[el](az,rg)=kdp>0.001?10.*log10(kdp):-30;
271 //cout<<"fil 6km rg "<<el<<" "<<rg<<" "<<kdp<<" "<<vol_phidp_6km[el].get(az,rg)<<endl;
272 }
273 }
274 } // finita la ricostruzione di phidp secondo Vulpiani 2012
275 moving_average_slope(vol_phidp_6km,vol_lkdp_6km,6000.,false);
276 moving_average_slope(vol_phidp_6km,vol_lkdp_2km,2000.,false);
277
278 vol_phidp_6km.quantity="PHIDP";
279 vol_phidp_6km.units="°";
280 vol_lkdp_2km.quantity="LKDP";
281 vol_lkdp_2km.units="°/km";
282 vol_lkdp_6km.quantity="LKDP";
283 vol_lkdp_6km.units="°/km";
284 vol_lkdp_2km*=1000.;
285 vol_lkdp_6km*=1000.;
286 for(unsigned el=0;el<vol_lkdp_6km.size();el++)
287 {
288 vol_lkdp_2km[el].nodata=-9999;
289 vol_lkdp_2km[el].undetect=-30;
290 vol_lkdp_6km[el].nodata=-9999;
291 vol_lkdp_6km[el].undetect=-30;
292 for(unsigned az=0;az<vol_lkdp_6km[el].beam_count;az++)
293 for(unsigned rg=0;rg<vol_lkdp_6km[el].beam_size;rg++)
294 {
295 vol_lkdp_6km[el](az,rg)=vol_lkdp_6km[el](az,rg)>0.001?10*log10(vol_lkdp_6km[el](az,rg)):vol_lkdp_6km[el].undetect;
296 vol_lkdp_2km[el](az,rg)=vol_lkdp_2km[el](az,rg)>0.001?10*log10(vol_lkdp_2km[el](az,rg)):vol_lkdp_2km[el].undetect;
297 }
298 }
299
300}
Volume< double > vol_lkdp_6km
Definition classifier.h:416
Volume< double > vol_phidp_6km
Definition classifier.h:408
Volume< double > vol_lkdp_2km
Definition classifier.h:412

Referenzia vol_lkdp_2km, vol_lkdp_6km, vol_phidp, e vol_phidp_6km.

Referenziato da compute_derived_volumes().