Home ] Su ] Discussione ]
 

La funzione cdiff

cdiff(expr,dim)

Esegue un'operazione di differenze centrali sulla expr nella direzione indicata da dim. La differenza è effettuata nello spazio di griglia senza aggiustamenti per le griglie inegualmente distanziate.

Il valore risultante in ciascun punto della griglia è il valore nel punto di griglia  +1 meno il valore nel punto di griglia -1.

L'argomento dim specifica la dimensione su cui la differenza è da calcolare, ed è un singolo carattere: x, y, z, o t.

I valori dei risultati ai confini della griglia sono impostati mancanti.

Esempi

La funzione cdiff può essere usata per replicare il calcolo eseguito dalla funzione hcurl:

    define dv = cdiff(v,x)
    define dx = cdiff(lon,x)*3.1416/180
    define du = cdiff(u*cos(lat*3.1416/180),y)
    define dy = cdiff(lat,y)*3.1416/180
    display (dv/dx-du/dy)/(6.37e6*cos(lat*3.1416/180))

L'esempio precedente presuppone un ambiente con dimensione che varia lungo x-y.

Si noti che le variabili intrinseche lat e lon restituiscono risultati in gradi e quindi devono essere convertiti in radianti nel calcolo. Si noti inoltre che il raggio della Terra è assunto essere di 6.37e6 metri e pertanto i venti U e V sono espressi nell'unità di m/s.

L'avvezione di temperatura può essere calcolata utilizzando la funzione cdiff come segue:

    define dtx = cdiff(t,x)
    define dty = cdiff(t,y)
    define dx = cdiff(lon,x)*3.1416/180
    define dy = cdiff(lat,y)*3.1416/180
    display -1*( (u*dtx)/(cos(lat*3.1416/180)*dx) + v*dty/dy )/6.37e6

dove la variabile t è la temperatura, u è la componente U del vento, e V è la componente V del vento.

 

 

Esempi applicativi

* nomefile: r850ta.gs
'reset'
'set display color white'
'c'
'map europe'
'set t 1'
'rgbset'
'set lev 850'
'set gxout shaded'
'set csmooth on'
'define dtx = cdiff(tmpprs,x)'
'define dty = cdiff(tmpprs,y)'
'define dx = cdiff(lon,x)*3.1416/180'
'define dy = cdiff(lat,y)*3.1416/180'
'display -1*( (ugrdprs*dtx)/(cos(lat*3.1416/180)*dx) + vgrdprs*dty/dy )/6.37e6'
'cbarn'
'set gxout contour'
'set ccolor 4'
'set cint 60'
'd hgtprs'
'set cint 4'
'set ccolor 2'
'd tmpprs-276.16'
'printim 850tadv.gif'
 
* nomefile: r700ta.gs
'reset'
'set display color white'
'c'
'map europe'
'set t 1'
'rgbset'
'set lev 700'
'set gxout shaded'
'set csmooth on'
'define dtx = cdiff(tmpprs,x)'
'define dty = cdiff(tmpprs,y)'
'define dx = cdiff(lon,x)*3.1416/180'
'define dy = cdiff(lat,y)*3.1416/180'
'display -1*( (ugrdprs*dtx)/(cos(lat*3.1416/180)*dx) + vgrdprs*dty/dy )/6.37e6'
'cbarn'
'set gxout contour'
'set ccolor 4'
'set cint 60'
'd hgtprs'
'set cint 4'
'set ccolor 2'
'd tmpprs-276.16'
'printim 700tadv.gif'
 
* nomefile: r1000ta.gs
'reset'
'set display color white'
'c'
'map europe'
'set t 1'
'rgbset'
'set lev 1000'
'set gxout shaded'
'set csmooth on'
'define dtx = cdiff(tmpprs,x)'
'define dty = cdiff(tmpprs,y)'
'define dx = cdiff(lon,x)*3.1416/180'
'define dy = cdiff(lat,y)*3.1416/180'
'display (-1*( (ugrdprs*dtx)/(cos(lat*3.1416/180)*dx) + vgrdprs*dty/dy )/6.37e6)*1000'
'cbar'
'set gxout contour'
'set ccolor 4'
'set cint 60'
'd hgtprs'
'set cint 4'
'set ccolor 2'
'd tmpprs-276.16'
'printim 1000tadv.gif'
 

Questa pagina è stata realizzata da Vittorio Villasmunta

Ultimo aggiornamento: 14/05/16