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
762 //-- se gap < memory leggo hmax da VPR
763 if (gap<=MEMORY){
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}
bool read_0term(float &zeroterm)
Read $FILE_ZERO_TERMICO.
Definition: assets.cpp:278
long int read_profile_gap() const
Read the gap between the time in $LAST_VPR and the current acquisition time.
Definition: assets.cpp:231
int read_vpr_hmax()
Read in $VPR_HMAX the vpr peak's height.
Definition: assets.cpp:305
radarelab::algo::Anaprop< double > anaprop
Oggetto per correzione ANAPRO.
Definition: cum_bac.h:129
radarelab::Volume< double > & volume
Set to Z undetect value the Zpixels classified as non-meteo echoes.
Definition: cum_bac.h:106
char date[20]
Acquisition date.
Definition: cum_bac.h:120
Assets assets
others
Definition: cum_bac.h:88
radarelab::CylindricalVolume cil
Volume resampled as a cylindrical volume.
Definition: cum_bac.h:108
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
Radar volume mapped to cylindrical coordinates.
Definition: cylindrical.h:17

Referenzia elaboradar::CUM_BAC::anaprop, elaboradar::CUM_BAC::assets, elaboradar::CUM_BAC::cil, cum_bac, elaboradar::CUM_BAC::date, gap, hbbb, htbb, merge_metodi(), elaboradar::Assets::read_0term(), elaboradar::Assets::read_profile_gap(), elaboradar::Assets::read_vpr_hmax(), radarelab::CylindricalVolume::slices, t_ground, e elaboradar::CUM_BAC::volume.

Referenziato da elaboradar::CUM_BAC::vpr_class().