Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
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]
Esempio n. 7
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]
Esempio n. 8
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)
Esempio n. 9
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)
Esempio n. 10
0
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
Esempio n. 11
0
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)
Esempio n. 12
0
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
Esempio n. 13
0
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
Esempio n. 14
0
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)
Esempio n. 15
0
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 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)
Esempio n. 17
0
# ax = fig.add_subplot(111)
# 
# t = np.arange(0.0, 5.0, 0.01)
# s = np.cos(2*np.pi*t)
# 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)
Esempio n. 18
0
    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()
Esempio n. 19
0
import pylab
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])
Esempio n. 20
0
from pyclaw.plotters.data import ClawPlotData
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:
Esempio n. 21
0
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


Esempio n. 22
0
tlimits[21401] = [0,28800]
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]
Esempio n. 23
0
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
Esempio n. 24
0
from pyclaw.plotters.data import ClawPlotData
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:
Esempio n. 25
0
for mx in [3200,6400]:
    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()
Esempio n. 26
0
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)
Esempio n. 27
0
tlimits[21401] = [0,28800]
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 [21413, 21418, 21419, 21414, 21415, 21416, 52402]:
    gd[gn] = pd.getgauge(gn)


figure(3, figsize=[10,8])
clf()

if 0:
    gn = 21418
    shift = 0.
    plot(gd[gn].t, gd[gn].q[:,3] + shift, 'b', linewidth=2)
    text(400, shift+0.05, "%s" % gn)
Esempio n. 28
0
import pylab
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)
Esempio n. 29
0
import re
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))