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

◆ 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

Referenzia elaboradar::CUM_BAC::assets, cum_bac, elaboradar::CUM_BAC::dbz, elaboradar::Assets::find_vpr0(), gap, livmin, vpr, e elaboradar::Assets::write_vpr0().

Referenziato da esegui_tutto().