def pfunc2d(field,ftit,x,y,dirname,fsizemat,sponge,symm,optit1='Upper Layer',optit2='Lower Layer',optyt1='Time Averaged ',optyt2='Instantaneous ',optit3='',optit4='',suptit=''): from pfunc2d import pfunc2d_4in pfunc2d_4in(field['m1'],field['m2'],field['i1'],field['i2'],ftit,x,y,dirname,fsizemat,sponge,symm,optit1='Upper Layer',optit2='Lower Layer',optyt1=optyt1,optyt2=optyt2,optit3='',optit4='',suptit='')
def pvbudplot(dirname): import numpy as np import fortranfile from pylab import * import pickle import os ioff() rcParams['image.cmap'] = 'RdBu' from readjet2h import readjet2h vardict=readjet2h(dirname) locals().update(vardict) [L,beta_dim,f0_dim,h1]=pickle.load(open('/data/ilebras/twolayer-jets-climate/pickles/dimize.p','r')) U=beta_dim*L**2/beta1 gprime=f0_dim**2*L**2/h1/fr1 h2=f0_dim**2*L**2/gprime/fr2 f0_nd=f0_dim*L/U #define x and y (m) x=arange(xmin,xmax,(xmax-xmin)/n)*L y=arange(ymin,ymax,(ymax-ymin)/m)*L # dx=(xmax-xmin)/real(n-1) # dy=(ymax-ymin)/real(m-1) # dx2=dx**2 # t4dx=1.0/(8.0*dx) # t4dy=1.0/(8.0*dy) # betay_vec=beta1*y/L # betay=tile(betay_vec,(n,1)) predir='/data/ilebras/twolayer-jets-climate/' rundir=predir+'testing/'+dirname+'/' #load fields [mf1,betav1,mthi1,mpvf1,ef1,ethi1,epvf1,visc1,sponge1,resid1,mf2,betav2,mthi2,mpvf2,ef2,ethi2,epvf2,visc2,sponge2,topo,bdrag,resid2,hb,hby]=pickle.load(open( predir+'pickles/pvbud/'+dirname+'_pvbud' , 'r')) # --------plot them----------- fsizemat=(20,6) fsizemat2=(20,9) figure() subplot(211) contourf(x,y,hb.T) colorbar() subplot(212) contourf(x,y,hby.T) colorbar() # figure() # plot(y/1e3,topo[mspo/2:-mspo,:].T,'r') # figure() # plot(y/1e3,topo[:mspo/2,:].T,'k') # plot(y/1e3,topo[-mspo:,:].T,'k') # plot(y/1e3,topo[mspo/2:-mspo,:].T,'r') # figure(figsize=fsizemat) # subplot(221) # plot(y/1e3,mean(topo[:mspo/2,:].T,axis=1),'g') # plot(y/1e3,mean(topo[-mspo:,:].T,axis=1),'r') # plot(y/1e3,topo[mspo/2:-mspo,:].T,'b') # plot(y/1e3,mean(topo[mspo/2:-mspo,:].T,axis=1),'k',linewidth=3) # ylim([-0.002,0.002]) # title('topographic term') # subplot(222) # plot(y/1e3,mean(epvf2[:mspo/2,:].T,axis=1),'g',label='mean west sponge') # plot(y/1e3,mean(epvf2[-mspo:,:].T,axis=1),'r',label='mean east sponge') # plot(y/1e3,epvf2[mspo/2:-mspo,:].T,'b') # plot(y/1e3,epvf2[mspo/2,:].T,'b',label='all interior') # plot(y/1e3,mean(epvf2[mspo/2:-mspo,:].T,axis=1),'k',linewidth=3,label='mean interior') # ylim([-0.002,0.002]) # legend(loc=(1.05,-0.5)) # title('eddy pv flux divergence') # subplot(223) # plot(y/1e3,mean(visc2[:mspo/2,:].T,axis=1),'g') # plot(y/1e3,mean(visc2[-mspo:,:].T,axis=1),'r') # plot(y/1e3,visc2[mspo/2:-mspo,:].T,'b') # plot(y/1e3,mean(visc2[mspo/2:-mspo,:].T,axis=1),'k',linewidth=3) # title('viscosity') # xlabel('y distance (km)') # ylim([-0.002,0.002]) # subplot(224) # plot(y/1e3,mean(resid2[:mspo/2,:].T,axis=1),'g') # plot(y/1e3,mean(resid2[-mspo:,:].T,axis=1),'r') # plot(y/1e3,resid2[mspo/2:-mspo,:].T,'b') # plot(y/1e3,mean(resid2[mspo/2:-mspo,:].T,axis=1),'k',linewidth=3) # title('residual') # xlabel('y distance (km)') # suptitle('Layer 2 ') # ylim([-0.002,0.002]) # savefig(predir+'plots/'+dirname+dirname[6:]+'_toposlice.png',bbox_inches='tight') #import matplotlib.cm as cm from pfunc2d import pfunc2d_4in,pfunc2d_6in ############# LAYER 1 ############################## # # ##### mean fluxes # pfunc2d_4in(mf1,betav1,mthi1,mpvf1,'pvf1_m',x,y,dirname,fsizemat,mspo,1,optit1='Mean relative vorticity flux divergence',optit2='Mean planetary vorticity flux divergence',optit3='Mean thickness flux divergence',optit4='Total mean PV flux divergence',optyt1='position (km)',optyt2='position (km)',suptit='Layer 1') # # # ##### eddy fluxes # pfunc2d_4in(ef1,zeros((n,m)),ethi1,epvf1,'pvf1_e',x,y,dirname,fsizemat,mspo,1,optit1='Eddy relative vorticity flux divergence',optit2='No eddy planetary vorticity flux divergence',optit3='Eddy thickness flux divergence',optit4='Total eddy PV flux divergence',optyt1='position (km)',optyt2='position (km)',suptit='Layer 1') # # ##### all fluxes # pfunc2d_6in(mpvf1,epvf1,mpvf1+epvf1,visc1,sponge1,resid1,'pvf1_tot',x,y,dirname,fsizemat2,mspo,1,optit1='Mean PV flux',optit2='Eddy PV flux',optit3='Mean plus eddy',optit4='Viscosity',optit5='Sponge drag',optit6='Residual',suptit='Layer 1') # # ############# LAYER 2 ############################## # # ##### mean fluxes # pfunc2d_6in(mf2,betav2,mthi2,topo,bdrag,mpvf2,'pvf2_m',x,y,dirname,fsizemat,mspo,1,optit1='Mean relative vorticity flux divergence',optit2='Mean planetary vorticity flux divergence',optit3='Mean thickness flux divergence',optit6='Total mean PV flux divergence',optit4='Topographic term',optit5='Bottom Drag',optyt1='position (km)',optyt2='position (km)',suptit='Layer 2') # ##### eddy fluxes # pfunc2d_4in(ef2,zeros((n,m)),ethi2,epvf2,'pvf2_e',x,y,dirname,fsizemat,mspo,1,optit1='Eddy relative vorticity flux divergence',optit2='No eddy planetary vorticity flux divergence',optit3='Eddy thickness flux divergence',optit4='Total eddy PV flux divergence',optyt1='position (km)',optyt2='position (km)',suptit='Layer 2') # ##### all fluxes # pfunc2d_6in(mpvf2,epvf2,visc2,sponge2,bdrag,resid2,'pvf2_tot',x,y,dirname,fsizemat2,mspo,1,optit1='Mean PV flux divergence',optit2='Eddy PV flux divergence',optit3='Viscosity',optit4='Sponge drag',optit5='Bottom Drag',optit6='Residual',suptit='Layer 2') # ###################################################################################### # ###################################################################################### # ###################################################################################### # ############################### PLOTTING SPONGE AND INTERIOR ######################### # ###################################################################################### # ###################################################################################### # ###################################################################################### # #######################SEPARATELY!! ################################################## # ###################################################################################### # ###################################################################################### # ###################################################################################### # ###################################################################################### ###FIRST PLOT ALL WITH SPONGE DICTATING THE COLORBAR spo=1 ############# LAYER 1 ############################## # ##### mean fluxes pfunc2d_4in(mf1,betav1,mthi1,mpvf1,'pvf1_m_spo',x,y,dirname,fsizemat,spo,1,optit1='Mean relative vorticity flux divergence',optit2='Mean planetary vorticity flux divergence',optit3='Mean thickness flux divergence',optit4='Total mean PV flux divergence',optyt1='position (km)',optyt2='position (km)',suptit='Layer 1') # # ##### eddy fluxes pfunc2d_4in(ef1,zeros((n,m)),ethi1,epvf1,'pvf1_e_spo',x,y,dirname,fsizemat,spo,1,optit1='Eddy relative vorticity flux divergence',optit2='No eddy planetary vorticity flux divergence',optit3='Eddy thickness flux divergence',optit4='Total eddy PV flux divergence',optyt1='position (km)',optyt2='position (km)',suptit='Layer 1') # ##### all fluxes pfunc2d_6in(mpvf1,epvf1,mpvf1+epvf1,visc1,sponge1,resid1,'pvf1_tot_spo',x,y,dirname,fsizemat2,spo,1,optit1='Mean PV flux divergence',optit2='Eddy PV flux divergence',optit3='Mean plus eddy',optit4='Viscosity',optit5='Sponge drag',optit6='Residual',suptit='Layer 1') # ############# LAYER 2 ############################## # ##### mean fluxes pfunc2d_6in(mf2,betav2,mthi2,topo,bdrag,mpvf2,'pvf2_m_spo',x,y,dirname,fsizemat,spo,1,optit1='Mean relative vorticity flux divergence',optit2='Mean planetary vorticity flux divergence',optit3='Mean thickness flux divergence',optit6='Total mean PV flux divergence',optit4='Topographic term',optit5='Bottom Drag',optyt1='position (km)',optyt2='position (km)',suptit='Layer 2') ##### eddy fluxes pfunc2d_4in(ef2,zeros((n,m)),ethi2,epvf2,'pvf2_e_spo',x,y,dirname,fsizemat,spo,1,optit1='Eddy relative vorticity flux divergence',optit2='No eddy planetary vorticity flux divergence',optit3='Eddy thickness flux divergence',optit4='Total eddy PV flux divergence',optyt1='position (km)',optyt2='position (km)',suptit='Layer 2') ##### all fluxes pfunc2d_6in(mpvf2,epvf2,visc2,sponge2,bdrag,resid2,'pvf2_tot_spo',x,y,dirname,fsizemat2,spo,1,optit1='Mean PV flux divergence',optit2='Eddy PV flux divergence',optit3='Viscosity',optit4='Sponge drag',optit5='Bottom Drag',optit6='Residual',suptit='Layer 2') ############################## ### NOW PLOT ONLY THE INTERIOR ############################## ############# LAYER 1 ############################## # ##### mean fluxes pfunc2d_4in(mf1[mspo/2:-mspo,mspo:],betav1[mspo/2:-mspo,mspo:],mthi1[mspo/2:-mspo,mspo:],mpvf1[mspo/2:-mspo,mspo:],'pvf1_m_nospo',x[mspo/2:-mspo],y[mspo:],dirname,fsizemat,spo,1,optit1='Mean relative vorticity flux divergence',optit2='Mean planetary vorticity flux divergence',optit3='Mean thickness flux divergence',optit4='Total mean PV flux divergence',optyt1='position (km)',optyt2='position (km)',suptit='Layer 1') # # ##### eddy fluxes pfunc2d_4in(ef1[mspo/2:-mspo,mspo:],zeros((n,m))[mspo/2:-mspo,mspo:],ethi1[mspo/2:-mspo,mspo:],epvf1[mspo/2:-mspo,mspo:],'pvf1_e_nospo',x[mspo/2:-mspo],y[mspo:],dirname,fsizemat,spo,1,optit1='Eddy relative vorticity flux divergence',optit2='No eddy planetary vorticity flux divergence',optit3='Eddy thickness flux divergence',optit4='Total eddy PV flux divergence',optyt1='position (km)',optyt2='position (km)',suptit='Layer 1') # ##### all fluxes pfunc2d_6in(mpvf1[mspo/2:-mspo,mspo:],epvf1[mspo/2:-mspo,mspo:],mpvf1[mspo/2:-mspo,mspo:]+epvf1[mspo/2:-mspo,mspo:],visc1[mspo/2:-mspo,mspo:],sponge1[mspo/2:-mspo,mspo:],resid1[mspo/2:-mspo,mspo:],'pvf1_tot_nospo',x[mspo/2:-mspo],y[mspo:],dirname,fsizemat2,spo,1,optit1='Mean PV flux divergence',optit2='Eddy PV flux divergence',optit3='Mean plus eddy',optit4='Viscosity',optit5='Sponge drag',optit6='Residual',suptit='Layer 1') # ############# LAYER 2 ############################## # ##### mean fluxes pfunc2d_6in(mf2[mspo/2:-mspo,mspo:],betav2[mspo/2:-mspo,mspo:],mthi2[mspo/2:-mspo,mspo:],topo[mspo/2:-mspo,mspo:],bdrag[mspo/2:-mspo,mspo:],mpvf2[mspo/2:-mspo,mspo:],'pvf2_m_nospo',x[mspo/2:-mspo],y[mspo:],dirname,fsizemat,spo,1,optit1='Mean relative vorticity flux divergence',optit2='Mean planetary vorticity flux divergence',optit3='Mean thickness flux divergence',optit6='Total mean PV flux divergence',optit4='Topographic term',optit5='Bottom Drag',optyt1='position (km)',optyt2='position (km)',suptit='Layer 2') ##### eddy fluxes pfunc2d_4in(ef2[mspo/2:-mspo,mspo:],zeros((n,m))[mspo/2:-mspo,mspo:],ethi2[mspo/2:-mspo,mspo:],epvf2[mspo/2:-mspo,mspo:],'pvf2_e_nospo',x[mspo/2:-mspo],y[mspo:],dirname,fsizemat,spo,1,optit1='Eddy relative vorticity flux divergence',optit2='No eddy planetary vorticity flux divergence',optit3='Eddy thickness flux divergence',optit4='Total eddy PV flux divergence',optyt1='position (km)',optyt2='position (km)',suptit='Layer 2') ##### all fluxes pfunc2d_6in(mpvf2[mspo/2:-mspo,mspo:],epvf2[mspo/2:-mspo,mspo:],visc2[mspo/2:-mspo,mspo:],sponge2[mspo/2:-mspo,mspo:],bdrag[mspo/2:-mspo,mspo:],resid2[mspo/2:-mspo,mspo:],'pvf2_tot_nospo',x[mspo/2:-mspo],y[mspo:],dirname,fsizemat2,spo,1,optit1='Mean PV flux divergence',optit2='Eddy PV flux divergence',optit3='Viscosity',optit4='Sponge drag',optit5='Bottom Drag',optit6='Residual',suptit='Layer 2')