예제 #1
0
def plotu(dirname):

    import pickle
    from pylab import *
    import math
    from uplotfunc import upf
    ion()
    
    from readjet2h import readjet2h
    vardict=readjet2h(dirname)
    locals().update(vardict)

    predir='/data/ilebras/twolayer-jets-climate/'

    [psi,q,qfull,u,v,h,hbp,x,y]=pickle.load(open(predir+'pickles/quickfields/'+dirname+'_qfield.p', 'r' ))

    [L,beta_dim,f0_dim,h1]=pickle.load(open('/data/ilebras/twolayer-jets-climate/pickles/dimize.p','r'))

    U=beta_dim*L**2/beta1
    
    # xmid=x[:-1]+diff(x)/2
    # ymid=y[:-1]+diff(y)/2

    [xmmat,ymmat]=meshgrid(x,y)

    # um1p=u['m1'][:-1,:]+diff(u['m1'],axis=0)/2
    # vm1p=v['m1'][:,:-1]+diff(v['m1'],axis=1)/2

    # ui1p=u['i1'][:-1,:]+diff(u['i1'],axis=0)/2
    # vi1p=v['i1'][:,:-1]+diff(v['i1'],axis=1)/2

    # um2p=u['m2'][:-1,:]+diff(u['m2'],axis=0)/2
    # vm2p=v['m2'][:,:-1]+diff(v['m2'],axis=1)/2

    # ui2p=u['i2'][:-1,:]+diff(u['i2'],axis=0)/2
    # vi2p=v['i2'][:,:-1]+diff(v['i2'],axis=1)/2

    umag={}
    uang={}

    umag['m1']=np.sqrt(u['m1']**2+v['m1']**2)*U
    uang['m1']=zeros((n,m))
    for i in range(n-1):
        for j in range(m-1):    
            uang['m1'][i,j]=math.atan2(v['m1'][i,j],u['m1'][i,j])

    umag['i1']=np.sqrt(u['i1']**2+v['i1']**2)*U
    uang['i1']=zeros((n,m))
    for i in range(n-1):
        for j in range(m-1):    
            uang['i1'][i,j]=math.atan2(v['i1'][i,j],u['i1'][i,j])

    umag['m2']=np.sqrt(u['m2']**2+v['m2']**2)*U
    uang['m2']=zeros((n,m))
    for i in range(n-1):
        for j in range(m-1):    
            uang['m2'][i,j]=math.atan2(v['m2'][i,j],u['m2'][i,j])

    umag['i2']=np.sqrt(u['i2']**2+v['i2']**2)*U
    uang['i2']=zeros((n,m))
    for i in range(n-1):
        for j in range(m-1):    
            uang['i2'][i,j]=math.atan2(v['i2'][i,j],u['i2'][i,j])

    upf(umag,uang,'uall',dirname,xmmat,ymmat,30,90,mspo,0)
    upf(umag,uang,'unorth',dirname,xmmat,ymmat,6,90,mspo,400)
예제 #2
0
def loadmeans(dirname):

      import numpy as np
      import fortranfile
      from pylab import *
      import pickle
      import os
      from operators import *
      from uplotfunc import upf
      import math

      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)
      y=arange(ymin,ymax,(ymax-ymin)/m)

      dx=(xmax-xmin)/(n-1)
      dy=(ymax-ymin)/(m-1)

      dx2=dx**2

      tdx=1.0/(2.0*dx)
      tdy= 1.0/(2.0*dy)
      t4dx=1.0/(8.0*dx)
      t4dy=1.0/(8.0*dy)
      t4dx2=1.0/(4.0*dx2)
      t4dxdy=1.0/(4.0*dx*dy)
      t4dy2=1.0/(4.0*dy**2)
      twdx2=1.0/(12.0*dx2)

      betay_vec=beta1*y/L
      betay=tile(betay_vec,(n,1))

      predir='/data/ilebras/twolayer-jets-climate/'
      rundir=predir+'testing/'+dirname+'/'

#--------move on to load psi--------------
      psi={}

      pload=fortranfile.FortranFile(rundir+'pm1.dat')
      pvec=pload.readReals()

      pm1=pvec.reshape(n,m,order='F')
      psi['m1']=pm1

      pload=fortranfile.FortranFile(rundir+'pm2.dat')
      pvec=pload.readReals()

      pm2=pvec.reshape(n,m,order='F')
      psi['m2']=pm2

# #--------and then calculate q (zeta)--------------
      q={}

      q['m1']=gradxx(psi['m1'],t4dx2,n,m)+gradyy(psi['m1'],t4dy2,n,m)

      q['m2']=gradxx(psi['m2'],t4dx2,n,m)+gradyy(psi['m2'],t4dy2,n,m)

#--------if there is bottom topography, plot it-----
      try:
            pload=fortranfile.FortranFile(rundir+'hbt.dat')
            pvec=pload.readReals()

            hb=pvec.reshape(n,m,order='F')
      
      except:
            hb=zeros((n,m))
            hbp=hb

#--------and then plot qfull= q +fr(psi-psi, depending) + betay + hb--------
      qfull={}

      qfull['m1']=q['m1']*L/U+betay+fr1*(psi['m2']-psi['m1'])+f0_nd

      qfull['m2']=q['m2']*L/U+betay+fr2*(psi['m1']-psi['m2'])+hb+f0_nd

#--------calculate a few more things leading up to transport--------
      u={}
      v={}

      u['m1']=-grady(psi['m1'],t4dy,n,m)
      u['m2']=-grady(psi['m2'],t4dy,n,m)


      v['m1']=gradx(psi['m1'],t4dx,n,m)
      v['m2']=gradx(psi['m2'],t4dx,n,m)


      umag={}
      uang={}
      
      umag['m1']=np.sqrt(u['m1']**2+v['m1']**2)
      uang['m1']=zeros((n,m))
      for i in range(n-1):
        for j in range(m-1):    
            uang['m1'][i,j]=math.atan2(v['m1'][i,j],u['m1'][i,j])


      umag['m2']=np.sqrt(u['m2']**2+v['m2']**2)
      uang['m2']=zeros((n,m))
      for i in range(n-1):
        for j in range(m-1):    
            uang['m2'][i,j]=math.atan2(v['m2'][i,j],u['m2'][i,j])

      umag['i1']=umag['m1']
      umag['i2']=umag['m2']

      uang['i1']=uang['m1']
      uang['i2']=uang['m2']

      #xmid=x[:-1]+diff(x)/2
      #ymid=y[:-1]+diff(y)/2

      [xmmat,ymmat]=meshgrid(x,y)

      if not os.path.exists(predir+'pickles/quickfields/'+dirname[:6]):
            os.mkdir(predir+'pickles/quickfields/'+dirname[:6])

      pickle.dump([psi,q,qfull,u,v,x,y], open(predir+'pickles/quickfields/'+dirname+'_qfield_tm.p', 'w' ) )

      upf(umag,uang,'umeantest',dirname,xmmat,ymmat,6,90,mspo,400)