def pvbudload(dirname): import numpy as np import fortranfile from pylab import * import pickle import os #ion() from makefields import getrspo,getinitPsi,gethb from operators import delsq,gradx,grady 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------- from loadfuncs import load1 #mean pv fluxes in layer 1 mf1=load1('mf1.dat',rundir,n,m) vm1=load1('vm1.dat',rundir,n,m) um1=load1('um1.dat',rundir,n,m) mfi=load1('mfi.dat',rundir,n,m) #mean pv fluxes in layer 2 mf2=load1('mf2.dat',rundir,n,m) vm2=load1('vm2.dat',rundir,n,m) um2=load1('um2.dat',rundir,n,m) betav1=beta1*vm1 mthi1=fr1*mfi mpvf1=mf1+betav1+mthi1 # topographic term hb=gethb(cm,cz,ymax,movedw,hw,hbmax,a2,n,m) hby=grady(hb,t4dy,n,m) topo=vm2*hby # bottom drag mz2=load1('z2m.dat',rundir,n,m) bdrag=mz2/rdecayw betav2=beta2*vm2 mthi2=-fr2*mfi mpvf2=mf2+betav2+mthi2+topo+bdrag #eddy pv fluxes in layer 1 ef1=load1('ef1.dat',rundir,n,m) efi=load1('efi.dat',rundir,n,m) #eddy pv fluxes in layer 2 ef2=load1('ef2.dat',rundir,n,m) ef2[abs(ef2)>10**13]=0.0 ef2[isnan(ef2)]=0.0 ethi1=fr1*efi epvf1=ef1+ethi1 ethi2=-fr2*efi epvf2=ef2+ethi2 #viscosity and sponge drag mz1=load1('z1m.dat',rundir,n,m) visc1=-akap*delsq(mz1,dx2,n,m) visc2=-akap*delsq(mz2,dx2,n,m) #sponge drag rspo=getrspo(nspo,mspo,rdecay,rdecayo,n,m,dt) [p1init,p2init]=getinitPsi(m,n,y/L,gs1,g1,dw1,d1,as2,a2,movegs,movedw,nspo,mspo) z1init=delsq(p1init,dx2,n,m) z2init=delsq(p2init,dx2,n,m) p1xinit=gradx(p1init,t4dx,n,m) p1yinit=grady(p1init,t4dy,n,m) p2xinit=gradx(p2init,t4dx,n,m) p2yinit=grady(p2init,t4dy,n,m) rspox=gradx(rspo,t4dx,n,m) rspoy=grady(rspo,t4dy,n,m) sponge1_del=rspo*(mz1-z1init) sponge1_cross=rspox*(vm1-p1xinit)-rspoy*(um1+p1yinit) sponge1=sponge1_del+sponge1_cross sponge2_del=rspo*(mz2-z2init) sponge2_cross=rspox*(vm2-p2xinit)-rspoy*(um2+p2yinit) sponge2=sponge2_del+sponge2_cross resid1=mpvf1+epvf1+visc1+sponge1 resid2=mpvf2+epvf2+visc2+sponge2 #return p1init,p2init,z1init,z2init,p1xinit,p1yinit,p2xinit,p2yinit,hb,hby pickle.dump([mf1,betav1,mthi1,mpvf1,ef1,ethi1,epvf1,visc1,sponge1,resid1,mf2,betav2,mthi2,mpvf2,ef2,ethi2,epvf2,visc2,sponge2,topo,bdrag,resid2,hb,hby], open( predir+'pickles/pvbud/'+dirname+'_pvbud' , 'w'))
def pvfluxload(dirname): import numpy as np import fortranfile from pylab import * import pickle import os # ion() # %matplotlib inline from makefields import getrspo,getinitPsi,gethb from operators import delsq,gradx,grady 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------- from loadfuncs import load1 #mean pv fluxes um1=load1('um1.dat',rundir,n,m) um2=load1('um2.dat',rundir,n,m) vm1=load1('vm1.dat',rundir,n,m) vm2=load1('vm2.dat',rundir,n,m) zm1=load1('z1m.dat',rundir,n,m) zm2=load1('z2m.dat',rundir,n,m) qm1=load1('qm1.dat',rundir,n,m) qm2=load1('qm2.dat',rundir,n,m) pm1=load1('pm1.dat',rundir,n,m) pm2=load1('pm2.dat',rundir,n,m) hb=gethb(cm,cz,ymax,movedw,hw,hbmax,a2,n,m) # qm1=zm1+betay+fr1*(pm2-pm1)#+f0_nd qm2_check=zm2+betay+fr2*(pm1-pm2)+hb#+f0_nd # figure() # plot(qm2.T); # plot(qm2_check.T); # figure() # subplot(211) # plot(um2.T) # subplot(212) # plot(vm2.T) uqm1=um1*qm1 uqm2=um2*qm2 vqm1=vm1*qm1 vqm2=vm2*qm2 # #calculate divergence # duqm1x=gradx(uqm1,t4dx,n,m) # duqm2x=gradx(uqm2,t4dx,n,m) # dvqm1y=grady(vqm1,t4dx,n,m) # dvqm2y=grady(vqm2,t4dx,n,m) # divuq1m=duqm1x+dvqm1y # divuq2m=duqm2x+dvqm2y #eddy pv fluxes uz1=-(load1('uz1.dat',rundir,n,m)+2*um1*zm1) uz2=-(load1('uz2.dat',rundir,n,m)+2*um2*zm2) vz1=load1('vz1.dat',rundir,n,m) vz2=load1('vz2.dat',rundir,n,m) #need to correct for a missing minus sign in stats2_pvbud.F u1p1=-(load1('u1p1.da',rundir,n,m)+2*um1*pm1) u1p2=-(load1('u1p2.da',rundir,n,m)+2*um1*pm2) u2p1=-(load1('u2p1.da',rundir,n,m)+2*um2*pm1) u2p2=-(load1('u2p2.da',rundir,n,m)+2*um2*pm2) v1p1=load1('v1p1.da',rundir,n,m) v1p2=load1('v1p2.da',rundir,n,m) v2p1=load1('v2p1.da',rundir,n,m) v2p2=load1('v2p2.da',rundir,n,m) uthi1=fr1*(u1p2-u1p1) uthi2=fr2*(u2p1-u2p2) vthi1=fr1*(v1p2-v1p1) vthi2=fr2*(v2p1-v2p2) uqb1=uz1+uthi1 uqb2=uz2+uthi2 vqb1=vz1+vthi1 vqb2=vz2+vthi2 dqy1=grady(qm1,t4dx,n,m) dqy2=grady(qm2,t4dx,n,m) uz={} uz['1']=uz1 uz['2']=uz2 vz={} vz['1']=vz1 vz['2']=vz2 ub={} ub['1']=uqb1 ub['2']=uqb2 vb={} vb['1']=vqb1 vb['2']=vqb2 up={} up['11']=u1p1 up['12']=u1p2 up['21']=u2p1 up['22']=u2p2 vp={} vp['11']=v1p1 vp['12']=v1p2 vp['21']=v2p1 vp['22']=v2p2 uqm={} uqm['1']=uqm1 uqm['2']=uqm2 vqm={} vqm['1']=vqm1 vqm['2']=vqm2 pickle.dump([uz,vz,ub,vb,up,vp,uqm,vqm,dqy1,dqy2],open(predir+'pickles/pvfluxmv/'+dirname+'_pvflmv.p', 'w'))