def compute_exact_solution(outdir='./_output', frame=0): #------------------------------------ from scipy.integrate import fixed_quad, quad from pyclaw.plotters.data import ClawPlotData plotdata = ClawPlotData() plotdata.outdir = outdir #Read in the solution dat = plotdata.getframe(frame) ap = ac.AcousticsProblem('setprob.data', 'sharpclaw.data') t = dat.t print t grid = dat.grids[0] xc = dat.center[0] dx = dat.d xe = dat.edge[0] print "Computing exact solution for mx = ", dat.n qq = zeros([2, size(xc)]) for ii in range(size(xc)): qq[0, ii], dummy = fixed_quad(ap.pvec, xe[ii], xe[ii + 1], args=(t, )) qq[1, ii], dummy = fixed_quad(ap.uvec, xe[ii], xe[ii + 1], args=(t, )) #qq[0,ii],dummy= quad(ap.pvec,xe[ii],xe[ii+1],args=(t,),epsabs=1.e-11,epsrel=1.e-11) #qq[1,ii],dummy= quad(ap.uvec,xe[ii],xe[ii+1],args=(t,),epsabs=1.e-11,epsrel=1.e-11) qq /= dx return qq
def compute_exact_solution(outdir='./_output',frame=0): #------------------------------------ from scipy.integrate import fixed_quad, quad from pyclaw.plotters.data import ClawPlotData plotdata = ClawPlotData() plotdata.outdir=outdir #Read in the solution dat = plotdata.getframe(frame) ap=ac.AcousticsProblem('setprob.data','sharpclaw.data') t = dat.t print t grid = dat.grids[0] xc = dat.center[0] dx=dat.d xe = dat.edge[0] print "Computing exact solution for mx = ",dat.n qq=zeros([2,size(xc)]) for ii in range(size(xc)): qq[0,ii],dummy = fixed_quad(ap.pvec,xe[ii],xe[ii+1],args=(t,)) qq[1,ii],dummy = fixed_quad(ap.uvec,xe[ii],xe[ii+1],args=(t,)) #qq[0,ii],dummy= quad(ap.pvec,xe[ii],xe[ii+1],args=(t,),epsabs=1.e-11,epsrel=1.e-11) #qq[1,ii],dummy= quad(ap.uvec,xe[ii],xe[ii+1],args=(t,),epsabs=1.e-11,epsrel=1.e-11) qq/=dx return qq
def plotframe(frameno, level=1): plotdata = ClawPlotData() plotdata.outdir = "_output" print "Plotting solution from ", plotdata.outdir plotdata = setplot(plotdata) try: frame = plotdata.getframe(frameno) except: print "Unable to get frame" return mlab.figure(1, bgcolor=(1, 1, 1), size=(700, 600)) mlab.clf() for grid in frame.grids: if grid.level <= level: y = grid.c_center[1] x = grid.c_center[0] q = grid.q eta = q[:, :, 3] h = q[:, :, 0] #return x,y,eta #eta = where(q[:,:,0] > 1.,eta,nan) #import pdb; pdb.set_trace() topo = eta - h cutoff = 0.5 #cutoff2 = -500. shift = 0. scale = 10. topo1 = scale * where(topo < cutoff, topo - shift, cutoff - shift) #topo1 = scale*where(topo>cutoff2, topo1, nan) eta1 = scale * where(eta < cutoff, eta - shift, cutoff - shift) water1 = where(h >= 1.e-3, eta1, nan) mlab.mesh(x, y, topo1, colormap='Greens', vmin=-1.0, vmax=0.8) mlab.mesh(x, y, water1, colormap='Blues', vmin=-0.8, vmax=0.8) #mlab.surf(x,y,topo1,colormap='Greens',warp_scale=10,vmin=-0.8,vmax=0.5) #mlab.surf(x,y,water1,colormap='Blues',warp_scale=10,vmin=-0.8,vmax=0.5) V = (150.95115856920216,\ 80.12676623482308,\ 13.359093592227218,\ array([ 2.744 , 1.70099999, -0.04745156])) V = (-108.612973405259,\ 62.96905073871072,\ 13.359093592227456,\ array([ 2.744 , 1.70099999, -0.04745156])) mlab.view(*V) t = frame.t mlab.title('Time = %5.2f' % t, color=(0, 0, 0), height=0.1, size=0.5)
def plotframe(frameno,level=1): plotdata = ClawPlotData() plotdata.outdir = "_output" print "Plotting solution from ",plotdata.outdir plotdata = setplot(plotdata) try: frame = plotdata.getframe(frameno) except: print "Unable to get frame" return mlab.figure(1,bgcolor=(1,1,1),size=(700,600)) mlab.clf() for grid in frame.grids: if grid.level <= level: y = grid.c_center[1] x = grid.c_center[0] q = grid.q eta = q[:,:,3] h = q[:,:,0] #return x,y,eta #eta = where(q[:,:,0] > 1.,eta,nan) #import pdb; pdb.set_trace() topo = eta - h cutoff = 0.5 #cutoff2 = -500. shift = 0. scale = 10. topo1 = scale*where(topo<cutoff, topo-shift, cutoff-shift) #topo1 = scale*where(topo>cutoff2, topo1, nan) eta1 = scale*where(eta<cutoff, eta-shift, cutoff-shift) water1 = where(h>=1.e-3, eta1, nan) mlab.mesh(x,y,topo1,colormap='Greens',vmin=-1.0, vmax=0.8) mlab.mesh(x,y,water1,colormap='Blues',vmin=-0.8, vmax=0.8) #mlab.surf(x,y,topo1,colormap='Greens',warp_scale=10,vmin=-0.8,vmax=0.5) #mlab.surf(x,y,water1,colormap='Blues',warp_scale=10,vmin=-0.8,vmax=0.5) V = (150.95115856920216,\ 80.12676623482308,\ 13.359093592227218,\ array([ 2.744 , 1.70099999, -0.04745156])) V = (-108.612973405259,\ 62.96905073871072,\ 13.359093592227456,\ array([ 2.744 , 1.70099999, -0.04745156])) mlab.view(*V) t = frame.t mlab.title('Time = %5.2f' % t,color=(0,0,0),height=0.1,size=0.5)
def plotframe(frameno,level=1, water_opacity=1.): plotdata = ClawPlotData() plotdata.outdir = outdir print "Plotting solution from ",plotdata.outdir plotdata = setplot(plotdata) try: frame = plotdata.getframe(frameno) except: print "Unable to get frame" return mlab.figure(1,bgcolor=(1,1,1),size=(700,600)) mlab.clf() for grid in frame.grids: if grid.level == level: y = grid.c_center[1] x = grid.c_center[0] q = grid.q eta = q[:,:,3] h = q[:,:,0] topo = eta - h cutoff = 0.5 #cutoff2 = -500. shift = 0. scale = 1. topo1 = scale*where(topo<cutoff, topo-shift, cutoff-shift) #topo1 = scale*where(topo>cutoff2, topo1, nan) eta1 = scale*where(eta<cutoff, eta-shift, cutoff-shift) water1 = where(h>=1.e-3, eta1, nan) scale = 12. #mlab.mesh(x,y,topo1,colormap='Greens',vmin=-1.0, vmax=0.8) #mlab.mesh(x,y,water1,colormap='Blues',vmin=-0.8, vmax=0.8) mlab.surf(x,y,topo1,colormap='YlGn',warp_scale=scale,\ vmin=-0.3,vmax=0.3) mlab.surf(x,y,water1,colormap='Blues',warp_scale=scale,\ vmin=-0.2,vmax=0.3, opacity=water_opacity) # set the view: (Do V = view() to figure out the current view) V = (29.157490879985176,\ 67.560491214404507,\ 79.798910042690324,\ array([ 0. , 1. , -0.07500005])) mlab.view(*V) t = frame.t mlab.title('Time = %5.2f' % t,color=(0,0,0),height=0.1,size=0.5)
def timereverse(frame=2, nframes=60): from pyclaw.plotters.data import ClawPlotData plotdata = ClawPlotData() plotdata.outdir = './_output' #"Exact" solution dat0 = plotdata.getframe(frame) u0 = dat0.q[:, 0] #Time-reversed solution dat1 = plotdata.getframe(nframes - frame) u1 = dat1.q[:, 0] xc = dat0.c_center return u0, u1, xc[0]
def timereverse(frame=2,nframes=60): from pyclaw.plotters.data import ClawPlotData plotdata = ClawPlotData() plotdata.outdir='./_output' #"Exact" solution dat0 = plotdata.getframe(frame) u0 = dat0.q[:,0] #Time-reversed solution dat1 = plotdata.getframe(nframes-frame) u1 = dat1.q[:,0] xc = dat0.c_center return u0,u1,xc[0]
def plotclaw(outdir='.', plotdir='_plots', setplot = 'setplot.py'): """ Create html and/or latex versions of plots. INPUT: setplot is a module containing a function setplot that will be called to set various plotting parameters. """ from pyclaw.plotters.data import ClawPlotData from pyclaw.plotters import plotpages plotdata = ClawPlotData() plotdata.outdir = outdir plotdata.plotdir = plotdir plotdata.setplot = setplot plotpages.plotclaw_driver(plotdata, verbose=False)
def plotclaw(outdir=".", plotdir="_plots", setplot="setplot.py"): """ Create html and/or latex versions of plots. INPUT: setplot is a module containing a function setplot that will be called to set various plotting parameters. """ from pyclaw.plotters.data import ClawPlotData from pyclaw.plotters import plotpages plotdata = ClawPlotData() plotdata.outdir = outdir plotdata.plotdir = plotdir plotdata.setplot = setplot plotpages.plotclaw_driver(plotdata, verbose=False)
def plotframe(frameno,level=1, water_opacity=1.): plotdata = ClawPlotData() plotdata.outdir = outdir print "Plotting solution from ",plotdata.outdir plotdata = setplot(plotdata) try: frame = plotdata.getframe(frameno) except: print "Unable to get frame" return mlab.figure(1,bgcolor=(1,1,1),size=(700,600)) mlab.clf() for grid in frame.grids: if grid.level == level: y = grid.c_center[1] x = grid.c_center[0] q = grid.q eta = q[:,:,3] h = q[:,:,0] topo = eta - h cutoff = 100. #cutoff2 = -500. shift = 0. scale = 1. topo1 = scale*where(topo<cutoff, topo-shift, cutoff-shift) #topo1 = scale*where(topo>cutoff2, topo1, nan) eta1 = scale*where(eta<cutoff, eta-shift, cutoff-shift) water1 = where(h>=1.e-3, eta1, nan) scale = 10. #mlab.mesh(x,y,topo1,colormap='Greens',vmin=-1.0, vmax=0.8) #mlab.mesh(x,y,water1,colormap='Blues',vmin=-0.8, vmax=0.8) if 0: mlab.surf(x,y,topo1,colormap='YlGn',warp_scale=scale,\ vmin=-0.3,vmax=0.3) mlab.surf(x,y,water1,colormap='Blues',warp_scale=scale,\ vmin=-0.2,vmax=0.3, opacity=water_opacity) # set the view: (Do V = view() to figure out the current view) #mlab.view(*V) t = frame.t
def plotframe(frameno): plotdata = ClawPlotData() plotdata.outdir = "_output" plotdata = setplot(plotdata) frame = plotdata.getframe(frameno) x = frame.grids[0].c_center[0] y = frame.grids[0].c_center[1] q = frame.grids[0].q eta = q[:,:,3] eta = where(q[:,:,0] > 1.,eta,nan) #import pdb; pdb.set_trace() mlab.figure(3,bgcolor=(1,1,1)) mlab.clf() #plot_solid_sphere() plot_lat_long_lines() #x = 360 - x X,Y,Z = plot_eta(x,y,eta)
def entropy(nend,nstart=8,outdir='./_output',sigfun='exp'): aux = np.loadtxt('_output/fort.aux') rho = aux[:,0] K = aux[:,1] plotdata = ClawPlotData() plotdata.outdir='./_output' ents=np.zeros([nend-nstart+1,1]) for i in range(nstart,nend+1): dat = plotdata.getframe(i) u = dat.q[:,1] mom=rho*u**2/2. # Change the next line according to the functional form of sigma: # For exponential relation sigma(eps) = e^(K*eps) - 1: # MUST OUTPUT SIGMA! sigma = dat.q[:,0] sigint = (sigma-np.log(sigma+1.))/K # For sigma(eps) = K*eps + 0.5*eps**2: # MUST OUTPUT EPS! #eps = dat.q[:,0] #sigint = K*eps/2. + eps**3/6. ent = (mom+sigint) #pl.clf() #pl.plot(nrg) #pl.axis([0,1800,0,0.015]) #pl.draw() #time.sleep(2.1) ents[i-nstart]=np.sum(mom+sigint)*dat.grid.d[0] print ents[i-nstart] ents=ents/ents[0] pl.clf() pl.plot(ents) pl.draw() return ents
def entropy(nend, nstart=8, outdir='./_output', sigfun='exp'): aux = np.loadtxt('_output/fort.aux') rho = aux[:, 0] K = aux[:, 1] plotdata = ClawPlotData() plotdata.outdir = './_output' ents = np.zeros([nend - nstart + 1, 1]) for i in range(nstart, nend + 1): dat = plotdata.getframe(i) u = dat.q[:, 1] mom = rho * u**2 / 2. # Change the next line according to the functional form of sigma: # For exponential relation sigma(eps) = e^(K*eps) - 1: # MUST OUTPUT SIGMA! sigma = dat.q[:, 0] sigint = (sigma - np.log(sigma + 1.)) / K # For sigma(eps) = K*eps + 0.5*eps**2: # MUST OUTPUT EPS! #eps = dat.q[:,0] #sigint = K*eps/2. + eps**3/6. ent = (mom + sigint) #pl.clf() #pl.plot(nrg) #pl.axis([0,1800,0,0.015]) #pl.draw() #time.sleep(2.1) ents[i - nstart] = np.sum(mom + sigint) * dat.grid.d[0] print ents[i - nstart] ents = ents / ents[0] pl.clf() pl.plot(ents) pl.draw() return ents
def plot_gauge(d, my_list, gaugeno): figure(360) clf() plotdata = ClawPlotData() d, gt, gv = read_lab_data(d) for my in my_list: outdir = "_output_%s_my%s" % (d, my) plotdata.outdir = outdir gs = plotdata.getgauge(gaugeno) plot(gs.t, gs.q[:, 3], linewidth=1) legend_list = [] for my in my_list: legend_list.append("my = %s" % my) if gv[gaugeno] is not None: plot(gt, gv[gaugeno], 'k', linewidth=2) legend_list.append("Lab data") #axis([0,5,-.01,.02]) legend(legend_list, loc='lower right') title("Gauge %s for d = %5.3f" % (gaugeno, d), fontsize=20)
def plot_gauge(d,my_list,gaugeno): figure(360) clf() plotdata = ClawPlotData() d, gt, gv = read_lab_data(d) for my in my_list: outdir = "_output_%s_my%s" %(d,my) plotdata.outdir = outdir gs = plotdata.getgauge(gaugeno) plot(gs.t, gs.q[:,3], linewidth=1) legend_list = [] for my in my_list: legend_list.append("my = %s" % my) if gv[gaugeno] is not None: plot(gt, gv[gaugeno],'k', linewidth=2) legend_list.append("Lab data") #axis([0,5,-.01,.02]) legend(legend_list, loc='lower right') title("Gauge %s for d = %5.3f" % (gaugeno,d), fontsize=20)
rundata=setrun.setrun('sharpclaw') rundata.probdata.ic=9 rundata.probdata.x0=-4.0 rundata.probdata.a=4.0 # 1 for narrow pulse, 4 for wide pulse rundata.clawdata.mx=mx rundata.clawdata.nout=1 rundata.clawdata.tfinal=8 rundata.write() runclaw(xclawcmd='xsclaw',outdir=outdir) #Get the material parameters aux = np.loadtxt(outdir+'/fort.aux') rho = aux[:,0]; K = aux[:,1] plotdata = ClawPlotData() plotdata.outdir=outdir #Read in the solution dat = plotdata.getframe(frame) eps = dat.q[:,0] p = -eps*K u = dat.q[:,1] exact = compute_exact_solution(outdir,frame) error = sum(abs(exact[1,:]-u))*dat.d[0] err.append(error) # xc=dat.center[0] # pl.clf() # pl.plot(xc,exact[1,:],'-k',xc,u,'or') # pl.draw() print error
# line, = ax.plot(t, s, lw=2) # # ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5), # arrowprops=dict(facecolor='black', shrink=0.05), # ) # # ax.set_ylim(-2,2) # plt.show() from pyclaw.plotters.data import ClawPlotData plotdata = ClawPlotData() plt.figure(1) plotdata.outdir = '_output' plt.hold(True) plt.grid(True) gs = plotdata.getgauge(9) plt.plot(gs.t,gs.q[:,3],'b',linewidth=2) plt.annotate('Gauge 1',(100e3,2.0),(120e3,2.25),arrowprops={'width':1,'color':'k'}) gs = plotdata.getgauge(11) plt.plot(gs.t,gs.q[:,3],'b--',linewidth=2) plt.annotate('Gauge 2',(100e3,-2.0),(120e3,-2.25),arrowprops={'width':1,'color':'k'}) # gs = plotdata.getgauge(18) # plt.plot(gs.t,gs.q[:,3],'b-.',linewidth=2) # plt.annotate('Gauge 3',(50e3,-0.15),(15e3,-1.5),arrowprops={'width':1,'color':'k','shrink':0.1}) plt.plot([0,40*3600],[0,0],'k')
rundata.probdata.ic = 9 rundata.probdata.x0 = -4.0 rundata.probdata.a = 4.0 # 1 for narrow pulse, 4 for wide pulse rundata.clawdata.mx = mx rundata.clawdata.nout = 1 rundata.clawdata.tfinal = 8 rundata.write() runclaw(xclawcmd='xsclaw', outdir=outdir) #Get the material parameters aux = np.loadtxt(outdir + '/fort.aux') rho = aux[:, 0] K = aux[:, 1] plotdata = ClawPlotData() plotdata.outdir = outdir #Read in the solution dat = plotdata.getframe(frame) eps = dat.q[:, 0] p = -eps * K u = dat.q[:, 1] exact = compute_exact_solution(outdir, frame) error = sum(abs(exact[1, :] - u)) * dat.d[0] err.append(error) # xc=dat.center[0] # pl.clf() # pl.plot(xc,exact[1,:],'-k',xc,u,'or') # pl.draw() print error
from pyclaw.plotters.data import ClawPlotData from matplotlib import image dartpng = image.imread("dart32412_comp-2.png") pylab.figure(400) pylab.clf() pylab.imshow(dartpng) pylab.hold(True) # origin of plot in pixels on image: t0 = 195.0 y0 = 221.0 tscale = 120.0 yscale = -446.66666666666669 plotdata = ClawPlotData() plotdata.outdir = "_output" gaugedata = plotdata.getgauge(32412) t = gaugedata.t eta = gaugedata.q[:, 3] t = t0 + tscale * (t / 3600.0) y = y0 + yscale * eta pylab.plot(t, y, "b") pylab.plot([160, 225], [550, 550], "b") pylab.text(240, 560, "GeoClaw (added to NOAA original)", fontsize=8) pylab.text(100, 600, "NOAA Original from http://nctr.pmel.noaa.gov/chile20100227/dart32412_comp-2.pdf", fontsize=8) pylab.xlim([50, 1300]) pylab.ylim([640, 0]) pylab.axis("off")
from tohoku import tidegauge g_obs=tidegauge.read_tide_gauge('1615680__2011-03-11_to_2011-03-13.csv') tsec = g_obs[1] thour = tsec / 3600. eta = g_obs[3] figure(3) clf() plot(thour,eta,'k',linewidth=1) plot(thour,eta,'k.',linewidth=1,label='Observed') # computed results: plotdata = ClawPlotData() plotdata.outdir = '_output_americano' print "Looking for GeoClaw results in ",plotdata.outdir g5680 = plotdata.getgauge(5680) # shift by 10 minutes: thour = (g5680.t + 600.) / 3600. plot(thour, g5680.q[:,3],'r',linewidth=2,label='GeoClaw') xlim(7.5,13) ylim(-3,3) legend(loc='lower right') xticks(range(8,14),fontsize=15) yticks(fontsize=15) title('Surface elevation at Gauge 1615680',fontsize=15) if 0: fname = "TG5680.png"
dtopodir = '/Users/rjl/git/tohoku2011a/sources/' gaugenos = [21401, 21413, 21418, 21419] models = """GCMT Hayes UCSB3 Ammon Caltech Fujii Saito Gusman GusmanAU pmelWei""".split() models = ["GCMT"] for model in models: print "Model: ",model rundata = setrun.setrun() rundata.geodata.dtopofiles = [[1,4,4,dtopodir+'%s.txydz' % model]] rundata.write() # create *.data files outdir = '_output_%s' % model runclaw.runclaw('xgeoclaw',outdir) pd = ClawPlotData() pd = setplot.setplot(pd) pd.outdir = outdir for gaugeno in gaugenos: g = pd.getgauge(gaugeno) d = np.vstack([g.t,g.q[:,3]]).T fname = '../simulation_results/%s_%s.txt' % (model,gaugeno) np.savetxt(fname, d) print "Created ",fname
tlimits[21413] = [0,28800] tlimits[21414] = [8000,28800] tlimits[21415] = [7200,28800] tlimits[21416] = [0,14400] tlimits[21418] = [0,28800] tlimits[21419] = [0,28800] tlimits[52402] = [0,36000] tlimits[51407] = [2100,40000] tlimits[52403] = [8000,40000] tlimits[52405] = [0,32400] tlimits[52406] = [16000,40000] tlimits[52425] = [25200,40000] #----------------------------------------------------- pd = ClawPlotData() pd.outdir = '_output' gd = {} for gn in [51425, 21413, 52402, 52403, 52405, 52406]: gd[gn] = pd.getgauge(gn) figure(3, figsize=[10,8]) clf() gn = 21413 shift = 0. plot(gd[gn].t, gd[gn].q[:,3] + shift, 'b', linewidth=2) text(400, shift+0.05, "%s" % gn) dart = dartdata[gn] mask = (dart[:,0] > gd[gn].t.min()) & (dart[:,0] < gd[gn].t.max())
import setplot import numpy as np dtopodir = '/Users/rjl/git/tohoku2011a/sources/' gaugenos = [21401, 21413, 21418, 21419] models = """GCMT Hayes UCSB3 Ammon Caltech Fujii Saito Gusman GusmanAU pmelWei""".split() models = ["GCMT"] for model in models: print "Model: ", model rundata = setrun.setrun() rundata.geodata.dtopofiles = [[1, 4, 4, dtopodir + '%s.txydz' % model]] rundata.write() # create *.data files outdir = '_output_%s' % model runclaw.runclaw('xgeoclaw', outdir) pd = ClawPlotData() pd = setplot.setplot(pd) pd.outdir = outdir for gaugeno in gaugenos: g = pd.getgauge(gaugeno) d = np.vstack([g.t, g.q[:, 3]]).T fname = '../simulation_results/%s_%s.txt' % (model, gaugeno) np.savetxt(fname, d) print "Created ", fname
from tohoku import tidegauge g_obs = tidegauge.read_tide_gauge('1615680__2011-03-11_to_2011-03-13.csv') tsec = g_obs[1] thour = tsec / 3600. eta = g_obs[3] figure(3) clf() plot(thour, eta, 'k', linewidth=1) plot(thour, eta, 'k.', linewidth=1, label='Observed') # computed results: plotdata = ClawPlotData() plotdata.outdir = '_output_americano' print "Looking for GeoClaw results in ", plotdata.outdir g5680 = plotdata.getgauge(5680) # shift by 10 minutes: thour = (g5680.t + 600.) / 3600. plot(thour, g5680.q[:, 3], 'r', linewidth=2, label='GeoClaw') xlim(7.5, 13) ylim(-3, 3) legend(loc='lower right') xticks(range(8, 14), fontsize=15) yticks(fontsize=15) title('Surface elevation at Gauge 1615680', fontsize=15) if 0: fname = "TG5680.png"
def make_figs(gaugeno,rundir,outdir,veldir): rootdir = os.getcwd() os.chdir(rundir) # measurement values: mdir = os.path.abspath('../../Hawaii_velocity_measurements/%s') % veldir print "Looking for observations in ",mdir if 0: # Use raw data: t_m,u_m,v_m = V.get_gauge(mdir) else: # Use detided values: fname = mdir + '/detided.txt' t_m,u_m,v_m = loadtxt(os.path.join(mdir,fname), unpack=True) print "Read detided u,v from ",fname # computed results: plotdata = ClawPlotData() plotdata.outdir = outdir print "Looking for GeoClaw results in ",outdir t,speed,u,v,eta = PGV.plot_gauge(gaugeno,plotdata) t = t/3600. # convert to hours i_ts = find((t_m >= t.min()) & (t_m <= t.min() + 5.)) figure(101) clf() #plot(u_m,v_m,'k') plot(u,v,'r',linewidth=3,label='GeoClaw') plot(u_m[i_ts],v_m[i_ts],'ko',label='Observed') smax = max(abs(u).max(),abs(v).max(),abs(u_m).max(),abs(v_m).max()) * 1.05 plot([-smax,smax],[0,0],'k') plot([0,0],[-smax,smax],'k') axis('scaled') axis([-smax,smax,-smax,smax]) #legend(['Observed','GeoClaw']) legend(loc=('lower right')) title('Velocities at gauge %s' % gaugeno) xlabel('u in cm/sec') ylabel('v in cm/sec') fname = "figure%sa.png" % gaugeno savefig(fname) print "Created ",fname figure(102,figsize=(8,10)) clf() subplot(2,1,1) plot(t_m,u_m,'ko-',linewidth=2) #plot(t_m[i_ts],u_m[i_ts],'bo-',linewidth=2) plot(t,u,'r',linewidth=3) #legend(['Observed','GeoClaw'],'upper left') title('u velocities at gauge %s' % gaugeno) xlim(t.min(),t.max()) ylim(-smax,smax) ylabel('Velocities in cm/sec') #ylim(-80,40) subplot(2,1,2) plot(t_m,v_m,'ko-',linewidth=2,label="Observed") #plot(t_m[i_ts],v_m[i_ts],'bo-',linewidth=2) plot(t,v,'r',linewidth=3,label="GeoClaw") #legend(loc=('lower left')) title('v velocities at gauge %s' % gaugeno) xlim(t.min(),t.max()) ylim(-smax,smax) ylabel('Velocities in cm/sec') xlabel('Hours post-quake') #import pdb; pdb.set_trace() fname = "figure%sb.png" % gaugeno savefig(fname) print "Created ",fname os.chdir(rootdir)
def make_figs(gaugeno, rundir, outdir, veldir): rootdir = os.getcwd() os.chdir(rundir) # measurement values: mdir = os.path.abspath('../../Hawaii_velocity_measurements/%s') % veldir print "Looking for observations in ", mdir if 0: # Use raw data: t_m, u_m, v_m = V.get_gauge(mdir) else: # Use detided values: fname = mdir + '/detided.txt' t_m, u_m, v_m = loadtxt(os.path.join(mdir, fname), unpack=True) print "Read detided u,v from ", fname # computed results: plotdata = ClawPlotData() plotdata.outdir = outdir print "Looking for GeoClaw results in ", outdir t, speed, u, v, eta = PGV.plot_gauge(gaugeno, plotdata) t = t / 3600. # convert to hours i_ts = find((t_m >= t.min()) & (t_m <= t.min() + 5.)) figure(101) clf() #plot(u_m,v_m,'k') plot(u, v, 'r', linewidth=3, label='GeoClaw') plot(u_m[i_ts], v_m[i_ts], 'ko', label='Observed') smax = max(abs(u).max(), abs(v).max(), abs(u_m).max(), abs(v_m).max()) * 1.05 plot([-smax, smax], [0, 0], 'k') plot([0, 0], [-smax, smax], 'k') axis('scaled') axis([-smax, smax, -smax, smax]) #legend(['Observed','GeoClaw']) legend(loc=('lower right')) title('Velocities at gauge %s' % gaugeno) xlabel('u in cm/sec') ylabel('v in cm/sec') fname = "figure%sa.png" % gaugeno savefig(fname) print "Created ", fname figure(102, figsize=(8, 10)) clf() subplot(2, 1, 1) plot(t_m, u_m, 'ko-', linewidth=2) #plot(t_m[i_ts],u_m[i_ts],'bo-',linewidth=2) plot(t, u, 'r', linewidth=3) #legend(['Observed','GeoClaw'],'upper left') title('u velocities at gauge %s' % gaugeno) xlim(t.min(), t.max()) ylim(-smax, smax) ylabel('Velocities in cm/sec') #ylim(-80,40) subplot(2, 1, 2) plot(t_m, v_m, 'ko-', linewidth=2, label="Observed") #plot(t_m[i_ts],v_m[i_ts],'bo-',linewidth=2) plot(t, v, 'r', linewidth=3, label="GeoClaw") #legend(loc=('lower left')) title('v velocities at gauge %s' % gaugeno) xlim(t.min(), t.max()) ylim(-smax, smax) ylabel('Velocities in cm/sec') xlabel('Hours post-quake') #import pdb; pdb.set_trace() fname = "figure%sb.png" % gaugeno savefig(fname) print "Created ", fname os.chdir(rootdir)
from pyclaw.plotters.data import ClawPlotData from matplotlib import image dartpng = image.imread('dart32412_comp-2.png') pylab.figure(400) pylab.clf() pylab.imshow(dartpng) pylab.hold(True) # origin of plot in pixels on image: t0 = 195. y0 = 221. tscale = 120.0 yscale = -446.66666666666669 plotdata = ClawPlotData() plotdata.outdir = "_output" gaugedata = plotdata.getgauge(32412) t = gaugedata.t eta = gaugedata.q[:, 3] t = t0 + tscale * (t / 3600.) y = y0 + yscale * eta pylab.plot(t, y, 'b') pylab.plot([160, 225], [550, 550], 'b') pylab.text(240, 560, 'GeoClaw (added to NOAA original)', fontsize=8) pylab.text( 100, 600, 'NOAA Original from http://nctr.pmel.noaa.gov/chile20100227/dart32412_comp-2.pdf', fontsize=8)
import numpy as np import pylab from pyclaw.plotters.data import ClawPlotData from pyclaw.data import Data if len(sys.argv) > 1: out_dir = sys.argv[1] else: out_dir = "_output" # Plot settings claw_data = Data(os.path.join(out_dir,'claw.data')) prob_data = Data(os.path.join(out_dir,'problem.data')) pd = ClawPlotData() pd.outdir = out_dir # Load the bathymetry b = np.loadtxt(os.path.join(pd.outdir,'fort.aux'), converters={0:(lambda x:float(re.compile("[Dd]").sub("e",x)))}) def read_data(): for num_frames in xrange(1000): fname = os.path.join(out_dir,'fort.q%s' % str(num_frames).zfill(4)) if not os.path.exists(fname): break # num_frames = 301 mx = claw_data.mx eta = np.ndarray((mx,num_frames,2)) t = np.ndarray((num_frames))