Elaboradar 0.1
|
◆ classifica_rain()
funzione che classifica la precipitazione se stratiforme o convettiva esegue anche il ricampionamento cilindrico al suo interno Definizione alla linea 748 del file cum_bac.cpp. 749{
750 LOG_CATEGORY("radar.class");
751 int hmax=-9999;
752
753 /* ;---------------------------------- */
754 /* ; FASE 0 : */
755 /* ;---------------------------------- */
756 // DEFINISCO QUOTE DELLA BASE E DEL TOP DELLA BRIGHT BAND USANDO IL DATO quota del picco DEL PRECEDENTE RUN O, SE NON PRESENTE LA QUOTA DELLO ZERO DA MODELLO
757
758 // Lettura quota massimo da VPR calcolo base e top bright band
760 // calcolo il gap
762 //-- se gap < memory leggo hmax da VPR
764 hmax = cum_bac.assets.read_vpr_hmax();
765 //---suppongo una semiampiezza massima della bright band di 600 m e definisco htopbb e hbasebb come hmassimo +600 m (che da clima ci sta) e hmassimo -600 m
766 }
767
768 if (hmax >= 0)
769 {
770 hbbb=(hmax-600.)/1000.;
771 htbb=(hmax+600.)/1000.;
772 } else {
773 //-- se gap > memory o se non ho trovato il file
774 // Lettura 0 termico da modello, e calcolo base e top bright band
775 LOG_INFO("leggo 0termico per class da file %s",getenv("FILE_ZERO_TERMICO"));
776 // leggo informazioni di temperatura da modello*/
777 float zeroterm;//zerotermico
779 {
780 //-- considerato che lo shift medio tra il picco e lo zero è tra 200 e 300 m, che il modello può avere un errore, definisco cautelativamente htbb come quota zero + 400 m e hbbb come quota zero -700 m .
781 htbb=zeroterm/1000. + 0.4; // se non ho trovato il vpr allora uso un range più ristretto, potrebbe essere caso convettivo
782 hbbb=zeroterm/1000. - 1.0;
783 } else {
784 LOG_ERROR("non ho trovato il file dello zero termico");
785 LOG_INFO("attenzione, non ho trovat zero termico ne da vpr ne da radiosondaggio");
787 hbbb=0.;
788 }
789 }
790
791 // se hbasebb è <0 metto 0
793
795
797
798 // ricampionamento del volume in coordinate cilindriche
799 LOG_DEBUG ("Matrice cilindrica Naz %3d Nrange %4d Nheight %4d", cil.slices.size(), cil.x_size, cil.z_size);
800 //-------------------------------------------------------------------------------------------------------------------------
801 // faccio la classificazione col metodo Vertical Integrated Reflectivity
803 viz.classifico_VIZ();
804
805 //classificazione con STEINER
806 // if (hmax > 2000.) {// per evitare contaminazioni della bright band, si puo' tunare
807 // if (hbbb > 500.) {// per evitare contaminazioni della bright band, si puo' tunare
808
810 steiner.calcolo_background();
811 steiner.classifico_STEINER();
812 // }
813 merge_metodi(steiner, viz);
814 return ;
815}
long int gap distanza temporale dall'ultimo file vpr [numero acquisizioni intercorse dall'ultimo vpr ?... Definition cum_bac.h:232 void merge_metodi(const radarelab::algo::CalcoloSteiner &steiner, const radarelab::algo::CalcoloVIZ &viz) fa il merge dei metodi Definition cum_bac.cpp:817 std::vector< Matrix2D< double > * > slices Vertical rectangular x,z semi-slices of the cylinder, with one side resting on the cylinder axis. Definition cylindrical.h:26 Referenzia cum_bac, gap, hbbb, htbb, merge_metodi(), radarelab::CylindricalVolume::slices, e t_ground. |