* Convergenza di umidità
* Scritto da Michael Maxwell e adattato da Vittorio Villasmunta
* rev 20250811
* Resetta l'ambiente GrADS alle impostazioni di default
'reset'
* Pulisce lo schermo da eventuali grafici o testo precedenti
'c'
* Disattiva la visualizzazione della griglia di coordinate
'set grid off'
* Imposta un set di colori personalizzato per la scala cromatica
'rgbset2'
* Inizializza il contatore per il ciclo dei time step
index=1
* Inizializza il contatore per il numero di mappe rimanenti da processare
imax=9
* Inizia un ciclo che si ripeterà per i 9 time step disponibili
while(index<=9)
* Pulisce lo schermo ad ogni nuova iterazione del ciclo
'c'
* Imposta il time step corrente da analizzare
'set t 'index
* Richiede le informazioni temporali per il time step corrente
'query time'
* Estrae la stringa completa di data e ora dal risultato del comando 'query time'
curtime=subwrd(result,3)
* Estrae l'ora (prime due cifre)
ora_v=substr(curtime,1,2)
* Estrae il giorno (cifre in posizione 4 e 5)
giorno_v=substr(curtime,4,2)
* Estrae il mese (tre lettere dalla posizione 6)
mese_v=substr(curtime,6,3)
* Estrae l'anno (quattro cifre dalla posizione 9)
anno_v=substr(curtime,9,4)
* Stampa a console lo stato di avanzamento del processo
say 't='index' ('ora_v') (ne restano 'imax')'
* Imposta il colore di base del display su bianco
'set display color white'
* Imposta il colore (1), lo stile (1) e lo spessore (15) per le linee della mappa
'set map 1 1 15'
* Disattiva la visualizzazione delle etichette delle coordinate (lat/lon)
'set grads off'
* Reimposta lo stile della mappa per evitare che le impostazioni precedenti interferiscano
'set map 1 1 10'
* Disegna i confini politici e le coste
'map world'
* Utilizza il dataset ad alta risoluzione per i confini della mappa
'set mpdset hires'
* Imposta l'intervallo di longitudine per l'area di interesse (Italia)
'set lon 6 20'
* Imposta l'intervallo di latitudine per l'area di interesse (Italia)
'set lat 36 48'
* Esempio di un'area di zoom alternativa (attualmente non utilizzata)
*'set lat 38.5 42'
*'set lon 15 19'
* tmp2m = temperatura a 2 metri in gradi Kelvin
* tc = Temp in gradi centigradi
* Calcola la temperatura in gradi Celsius (tc) partendo da quella in Kelvin (tmp2m)
'tc = (tmp2m-273.16)'
* rh2m = Umidità relativa in %
* td = Temperatura del punto di rugiada in gradi centigradi
* Calcola la temperatura di rugiada (td) usando una formula approssimata
'td = tc-((14.55+0.114*tc)*(1-0.01*rh2m) + pow((2.5+0.007*tc)*(1-0.01*rh2m),3) + (15.9+0.117*tc)*pow((1-0.01*rh2m),14))'
* Calcola la pressione di vapore di saturazione (vapr)
'vapr = 6.112*exp((17.67*td)/(td+243.5))'
* e = Pressione di vapore
* Calcola la pressione di vapore effettiva (e)
'e = vapr*1.001+(lev-100)/900*0.0034'
* mixr = Rapporto di mescolanza
* Calcola il rapporto di mescolanza (mixr) in g/kg
'mixr = 0.62197*(e/(lev-e))*1000'
* ugrd10m = componente u del vento a 10 metri di altezza dal suolo in m/s
* vgrd10m = componente v del vento a 10 metri di altezza dal suolo in m/s
* mconv = convergenza/divergenza di umidità. La convergenza è positiva mentre la divergenza è negativa.
* Calcola la convergenza di umidità (rhconv) e la moltiplica per 1e4 per una migliore visualizzazione
'rhconv = (-1)*hdivg(ugrd10m*mixr,vgrd10m*mixr)*1e4'
* Imposta il tipo di output grafico a colori sfumati (shaded plot)
'set gxout shaded'
* Attiva il livellamento dei colori per una visualizzazione più morbida
'set csmooth on'
* Disegna il campo della convergenza di umidità
'd rhconv'
* Disegna la legenda dei colori (color bar)
'cbarn'
* Imposta il tipo di output grafico a linee di contorno (contour plot)
'set gxout contour'
* Imposta il colore delle linee di contorno (1 = bianco, in questo caso)
'set ccolor 1'
* Disegna le linee di contorno del campo rhconv sopra la mappa a colori
'd rhconv'
* Imposta il tipo di output grafico a linee di flusso (streamlines)
'set gxout stream'
* Imposta la densità delle linee di flusso (valori più bassi = più dense)
'set t 10'
* Imposta il colore delle linee di flusso (1 = bianco)
'set ccolor 1'
* Disegna le linee di flusso del vento usando le componenti u e v
'd ugrd10m;vgrd10m'
* Disegna il titolo principale della mappa
'draw title Convergenza di umidita nei bassi strati\Valid: 'giorno_v''mese_v''anno_v' at 'ora_v'Z '
* Disegna una stringa di testo per i crediti del modello e dell'elaborazione
'draw string 1.2 0.3 Dati GFS High Resolution - Elaborazione: V.Villasmunta'
* Salva l'immagine finale in formato PNG con risoluzione 1600x1200
'printim rhconv_'index'.png x1600 y1200'
* Incrementa il contatore per passare al time step successivo
index=index+1
* Decrementa il contatore delle mappe rimanenti
imax=imax-1
* Chiude il ciclo while
endwhile