Elaboradar 0.1
|
◆ trovo_hvprmax()
trova il massimo del profilo funzione che trova la quota del massimo valore del profilo trovo hvprmax a partire da 400 m sotto lo zero dell'adiabatica secca come massimo di almeno 5 dBZ più alto in quota
Definizione alla linea 1100 del file cum_bac.cpp. 1101{
1102 int i,imax,istart,foundlivmax;
1103 float h0start,peak,soglia;
1104
1105
1107 {
1108 LOG_DEBUG("trovo hvprmax a partire da 400 m sotto lo zero dell'adiabatica secca");
1109 h0start=t_ground/9.8*1000 ;
1110 istart=h0start/TCK_VPR -2;
1113 }
1114 else {
1115 LOG_DEBUG("trovo hvprmax a partire da livmin");
1116 istart=livmin/TCK_VPR+1;
1117 }
1118
1119
1120 /* trovo hvprmax e il suo livello a partire dal livello istart */
1121
1122 //--inizializzazione
1123 foundlivmax=0;
1124 peak=NODATAVPR;
1125 *hmax=INODATA;
1126 // Enrico vprmax=NODATAVPR;
1127 imax=INODATA;
1128 soglia = DBZ::DBZtoR(THR_VPR,200,1.6); // CAMBIATO, ERRORE, PRIMA ERA RtoDBZ!!!!VERIFICARE CHE IL NUMERO PARAMETRI FUNZIONE SIA CORRETTO
1129
1130 //--se vpr al livello corrente e 4 layer sopra> soglia, calcolo picco
1131 LOG_DEBUG(" istart %d low %6.2f up %6.2f soglia %6.2f peak %6.2f imax %d", istart, vpr.val[istart] , vpr.val[istart+4], soglia, peak, imax);
1134 LOG_DEBUG("peak1 = %f",peak);
1135 }
1136 //----se picco > MINIMO il punto è ok
1137 if(peak> MIN_PEAK_VPR){
1138 imax=istart;
1139 // Enrico vprmax=vpr.val[imax];
1140 LOG_DEBUG("il primo punto soddisfa le condizioni di picco");
1141 }
1142 for (i=istart+1;i<NMAXLAYER-4;i++) //la ricerca è un po' diversa dall'originale.. trovo il picco + alto con valore rispetto a 4 sopra > soglia
1143 {
1146 if (vpr.val[i]>vpr.val[i-1] && peak> MIN_PEAK_VPR ) // se vpr(i) maggiore del massimo e picco sufficientemente alto
1147 {
1148 imax=i;
1149 // Enrico vprmax=vpr.val[imax];
1150 }
1151 LOG_DEBUG(" low %6.2f up %6.2f soglia %6.2f peak %6.2f imax %d", vpr.val[i] , vpr.val[i+4], soglia, peak, imax);
1152 }
1153
1154 if ( imax > INODATA ){
1155 foundlivmax=1;
1157 *hmax=imax*TCK_VPR+TCK_VPR/2;
1158 LOG_DEBUG("trovato ilaymax %i %i",*hmax,imax);
1159 LOG_DEBUG(" picco in dbR %f",peak);
1160 }
1161
1162 LOG_DEBUG("exit status trovo_hvprmax %i",foundlivmax);
1163 return (foundlivmax);
1164}
|