Elaboradar  0.1

◆ 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){
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 }
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::cil, e radarelab::CylindricalVolume::slices.

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