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

◆ classifica_rain()

void elaboradar::CalcoloVPR::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
759 LOG_INFO("data= %s",cum_bac.date);
760 // calcolo il gap
761 gap = cum_bac.assets.read_profile_gap();
762 //-- se gap < memory leggo hmax da VPR
763 if (gap<=MEMORY){
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
778 if (cum_bac.assets.read_0term(zeroterm))
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");
786 htbb=0.; // discutibile così faccio tutto con VIZ
787 hbbb=0.;
788 }
789 }
790
791 // se hbasebb è <0 metto 0
792 if (hbbb<0.) hbbb=0.;
793
794 LOG_INFO("calcolati livelli sopra e sotto bright band hbbb=%f htbb=%f",hbbb,htbb);
795
796 const CylindricalVolume& cil = cum_bac.cil;
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
802 algo::CalcoloVIZ viz(cil, htbb, hbbb, t_ground);
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
809 algo::CalcoloSteiner steiner(cum_bac.volume, cum_bac.anaprop.elev_fin, cil.x_size);
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
double hbbb
altezza bottom brightband
Definition cum_bac.h:245
CUM_BAC & cum_bac
oggeto CUM_BAC di riferimento
Definition cum_bac.h:230
float t_ground
2m temperature
Definition cum_bac.h:233
double htbb
altezza top brightband
Definition cum_bac.h:244
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.