aostools icon indicating copy to clipboard operation
aostools copied to clipboard

E-P flux scaling

Open thelightonmyway opened this issue 1 year ago • 0 comments

Hi,

I used ComputeEPfluxDivXr to calculate climatology E-P flux in the 1957-2002 DJF, and then I used PlotEPfluxArrows to plot it. Please look at my picture: EPflux1

I found that the arrows in stratosphere is small, and I did a scaling referenced by NOAA. Like this: image

Then my plot changes in stratosphere: EPflux2

It looks better. However, I think the arrows still shows a little small. How could I improve it?

My code could be seen as follows:

f=glob('/mnt/e/wind_global/ERA5/monthly/*1957.nc')
u=xr.open_dataset(f[2]).u
v=xr.open_dataset(f[3]).v
t=xr.open_dataset(f[1]).t
gat=ComputeEPfluxDivXr(u,v,t,time='valid_time',ref='mean')
ep1,ep2=gat[0],gat[1]
lat,p=u.latitude,u.pressure_level

the (a) plot:

fig,ax=plt.subplots()
PlotEPfluxArrows(lat,p,ep1.mean('valid_time'),ep2.mean('valid_time'),fig,ax)
ax.set_xlim(0,90)
ax.set_ylim(1000,10)
ax.set_yscale("symlog")
ax.set_title('(a)',loc='left')
plt.savefig('EPflux1.jpg',format='jpg',dpi=300,bbox_inches='tight')

the (b) plot:

ep1,ep2=ep1*(1000/p)**(1/2),ep2*(1000/p)**(1/2)
fig,ax=plt.subplots()
PlotEPfluxArrows(lat,p,ep1.mean('valid_time'),ep2.mean('valid_time'),fig,ax)
ax.set_xlim(0,90)
ax.set_ylim(1000,10)
ax.set_yscale("symlog")
ax.set_title('(b)',loc='left')
plt.savefig('EPflux2.jpg',format='jpg',dpi=300,bbox_inches='tight')

By the way, could you please tell me what's the distinction between spherical coordinates, which is more normal, and cartesian (linear) coordinates you mentioned in your function? As far as I know, the flux in aostools is called E-vector, which is a little different from E-P flux.

Yang.

thelightonmyway avatar Dec 05 '24 05:12 thelightonmyway