Esempio n. 1
0
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='')
Esempio n. 2
0
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')