Elaboradar  0.1

◆ combina_profili()

int elaboradar::CalcoloVPR::combina_profili ( const radarelab::algo::InstantaneousVPR &  inst_vpr)

funzione che combina il profilo verticale corrente con quello precedente tramite il metodo di Germann

oltre a lanciare il calcolo del profilo istantaneo provvede alla combinazione del profilo calcolato con il precedente calcolato entro un limite massimo di distanza temporale pari a 10 quarti d'ora. restituisce un codice integer pari a 0 se ok 1 se fallisce

Restituisce
0 se combinazione ok 1 se fallisce

Definizione alla linea 847 del file cum_bac.cpp.

848 {
849  LOG_CATEGORY("radar.vpr");
850 
851  LOG_DEBUG (" modalita %d", MOD_VPR);
852  VPR vpr0;
853  bool combinante; // combinante: variabile che contiene presenza vpr alternativo
854  if (MOD_VPR == 0)
855  {
856  /* MOD_VPR=0: VPR combinato */
857  combinante = cum_bac.assets.find_vpr0(cum_bac.dbz, vpr0, gap);
858 
859  for (unsigned i=0; i<vpr0.size(); i++)
860  LOG_DEBUG (" Profilo vecchio - livello %2d valore %6.2f",i,vpr0.val[i]);
861  //----a fine calcolo sul sito in esame stampo il valore del gap
862  LOG_INFO("gap %li",gap);
863  } else {
864  /* MOD_VPR=1: VPR istantaneo */
865  combinante = false;
866  }
867 
868  if (combinante)
869  {
870  if (inst_vpr.success)
871  {
872  vpr = combine_profiles(vpr0, inst_vpr.vpr, inst_vpr.cv, inst_vpr.ct);
873  } else {
874  // se il calcolo dell'istantaneo non è andato bene , ricopio l'altro vpr e la sua area
875  vpr = vpr0;
876  }
877  } else {
878  if (inst_vpr.success)
879  {
880  // se il calcolo dell'istantaneo è andato bene ricopio il profilo
881  vpr = inst_vpr.vpr;
882  } else {
883  //-----se è andata male la ricerca dell'altro e anche il calcolo dell'istantaneo esco
884  return 1;
885  }
886  }
887 
888  //------------- trovo livello minimo -------
889  Livmin livmin(vpr);
890  LOG_INFO(" livmin %i", livmin.livmin);
891 
892  if (livmin.idx >= vpr.size() - 1 || !livmin.found)
893  return (1);
894 
895  this->livmin = livmin.livmin;
896 
897 
898  //-----scrivo il profilo e la sua area-----
900  for (unsigned i=0; i<vpr.size(); i++) LOG_DEBUG (" Profilo nuovo - livello %2d valore %6.2f",i,vpr.val[i]);
901 
902  return(0);
903 }
void write_vpr0(const radarelab::algo::VPR &vpr)
Write in $VPR0_FILE the vpr calculated.
Definition: assets.cpp:437
bool find_vpr0(const radarelab::algo::DBZ &dbz, radarelab::algo::VPR &vpr0, long int &gap)
Read the gap and the vpr0, and if vpr0 is not found, look it up among the archived VPRs.
Definition: assets.cpp:391
Assets assets
others
Definition: cum_bac.h:88
radarelab::algo::DBZ dbz
????
Definition: cum_bac.h:110
long int gap
distanza temporale dall'ultimo file vpr [numero acquisizioni intercorse dall'ultimo vpr ?...
Definition: cum_bac.h:232
int livmin
quota livello minimo calcolato
Definition: cum_bac.h:243
radarelab::algo::VPR vpr
Informa se il pixel è convettivo.
Definition: cum_bac.h:236
CUM_BAC & cum_bac
oggeto CUM_BAC di riferimento
Definition: cum_bac.h:230

Referenziato da esegui_tutto().