def setplot(plotdata): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure with both components plotfigure = plotdata.new_plotfigure(name='h and hu', figno=0) plotfigure.kwargs = {'figsize': (6, 8)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,1)' plotaxes.xlimits = 'auto' plotaxes.ylimits = [0., 4.5] plotaxes.title = 'depth h' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 0 plotitem.plotstyle = '-' plotitem.color = 'b' plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,2)' plotaxes.xlimits = 'auto' plotaxes.ylimits = [-2., 6.] plotaxes.title = 'momentum hu' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 1 plotitem.plotstyle = '-' plotitem.color = 'b' plotitem.show = True # show on plot? # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data print("**** Python plotting tools not yet implemented in 3d") print("**** No plots will be generated.") # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = False # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = [] # list of frames to print plotdata.print_fignos = [] # list of figures to print plotdata.html = False # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.html_movie = 'JSAnimation' # new style, or "4.x" for old style plotdata.latex = False # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='Pressure and Velocity', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = [-.5,1.3] plotaxes.title = 'q' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = '-o' plotitem.color = 'b' # Plot true solution for comparison: def plot_qtrue(current_data): from pylab import plot, legend x = current_data.x t = current_data.t q = qtrue(x,t) plot(x,q,'r',label='true solution') legend() plotaxes.afteraxes = plot_qtrue # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data print("**** Python plotting tools not yet implemented in 3d") print("**** No frame plots will be generated.") print("**** Gauges can still be plotted.") #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q' # Plot q as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = False # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = [] # list of frames to print plotdata.print_fignos = [] # list of figures to print plotdata.html = False # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.html_movie = 'JSAnimation' # new style, or "4.x" for old style plotdata.latex = False # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='Pressure and Velocity', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = [-.5, 1.3] plotaxes.title = 'q' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = '-o' plotitem.color = 'b' # Plot true solution for comparison: def plot_qtrue(current_data): from pylab import plot, legend x = current_data.x t = current_data.t q = qtrue(x, t) plot(x, q, 'r', label='true solution') legend() plotaxes.afteraxes = plot_qtrue # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data print("**** Python plotting tools not yet implemented in 3d") print("**** No frame plots will be generated.") #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q' # Plot q as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = False # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = [] # list of frames to print plotdata.print_fignos = [] # list of figures to print plotdata.html = False # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.html_movie = 'JSAnimation' # new style, or "4.x" for old style plotdata.latex = False # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure for pcolor plot plotfigure = plotdata.new_plotfigure(name='pcolor', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1] plotaxes.ylimits = [0, 1] plotaxes.title = 'Solution' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 0 plotitem.pcolor_cmap = colormaps.yellow_red_blue plotitem.pcolor_cmin = 0.1 plotitem.pcolor_cmax = 1. plotitem.add_colorbar = True plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] # Figure for contour plot plotfigure = plotdata.new_plotfigure(name='contour', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1] plotaxes.ylimits = [0, 1] plotaxes.title = 'Solution' plotaxes.scaled = True plotaxes.afteraxes = addgauges # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = 0 plotitem.contour_nlevels = 20 plotitem.contour_min = 0.01 plotitem.contour_max = 0.99 plotitem.amr_contour_show = [0, 0, 1, 1] plotitem.amr_contour_colors = ['g', 'g', 'r', 'b'] # color on each level plotitem.amr_patch_bgcolor = ['#ffeeee', '#eeeeff', '#eeffee', '#ddffff'] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 # Figure for grid cells plotfigure = plotdata.new_plotfigure(name='cells', figno=2) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1] plotaxes.ylimits = [0, 1] plotaxes.title = 'Grid patches' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_patch') plotitem.amr_patch_bgcolor = ['#ffeeee', '#eeeeff', '#eeffee', '#ddffff'] plotitem.amr_celledges_show = [1, 0, 0] plotitem.amr_patchedges_show = [1] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q' # Plot q as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' #----------------------------------------- # Plots of timing (CPU and wall time): def make_timing_plots(plotdata): from clawpack.visclaw import plot_timing_stats import os, sys try: timing_plotdir = plotdata.plotdir + '/_timing_figures' os.system('mkdir -p %s' % timing_plotdir) # adjust units for plots based on problem: units = { 'comptime': 'seconds', 'simtime': 'dimensionless', 'cell': 'millions' } plot_timing_stats.make_plots(outdir=plotdata.outdir, make_pngs=True, plotdir=timing_plotdir, units=units) except: print('*** Error making timing plots') otherfigure = plotdata.new_otherfigure(name='timing plots', fname='_timing_figures/timing.html') otherfigure.makefig = make_timing_plots # Parameters used only when creating html and/or latex hardcopy # e.g., via visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.html_movie = 'JSAnimation' # new style, or "4.x" for old style plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data def set_drytol(current_data): # The drytol parameter is used in masking land and water and # affects what color map is used for cells with small water depth h. # The cell will be plotted as dry if h < drytol. # The best value to use often depends on the application and can # be set here (measured in meters): current_data.user["drytol"] = 1.e-3 plotdata.beforeframe = set_drytol #----------------------------------------- # Figure for pcolor plot #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='pcolor', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.surface plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.1 plotitem.pcolor_cmax = 0.1 plotitem.add_colorbar = True plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 1 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 1 plotaxes.xlimits = [-2,2] plotaxes.ylimits = [-2,2] # Add contour lines of bathymetry: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = linspace(-.1, 0.5, 20) plotitem.amr_contour_colors = ['k'] # color on each level plotitem.kwargs = {'linestyles':'solid'} plotitem.amr_contour_show = [1] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True #----------------------------------------- # Figure for cross section #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='cross-section', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-2,2] plotaxes.ylimits = [-0.15,0.3] plotaxes.title = 'Cross section at y=0' def plot_topo_xsec(current_data): from pylab import plot, cos,sin,where,legend,nan t = current_data.t x = linspace(-2,2,201) y = 0. B = h0*(x**2 + y**2)/a**2 - h0 eta1 = sigma*h0/a**2 * (2.*x*cos(omega*t) + 2.*y*sin(omega*t) -sigma) etatrue = where(eta1>B, eta1, nan) plot(x, etatrue, 'r', label="true solution", linewidth=2) plot(x, B, 'g', label="bathymetry") ## plot([0],[-1],'kx',label="Level 1") # shouldn't show up in plots, ## plot([0],[-1],'bo',label="Level 2") # but will produced desired legend plot([0],[-1],'bo',label="Computed") ## need to fix plotstyle legend() plotaxes.afteraxes = plot_topo_xsec plotitem = plotaxes.new_plotitem(plot_type='1d_from_2d_data') def xsec(current_data): # Return x value and surface eta at this point, along y=0 from pylab import find,ravel x = current_data.x y = current_data.y dy = current_data.dy q = current_data.q ij = find((y <= dy/2.) & (y > -dy/2.)) x_slice = ravel(x)[ij] eta_slice = ravel(q[3,:,:])[ij] return x_slice, eta_slice plotitem.map_2d_to_1d = xsec plotitem.plotstyle = 'kx' ## need to be able to set amr_plotstyle plotitem.kwargs = {'markersize':3} plotitem.amr_show = [1] # plot on all levels #----------------------------------------- # Figure for grids alone #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='grids', figno=2) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-2,2] plotaxes.ylimits = [-2,2] plotaxes.title = 'grids' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_patch') plotitem.amr_patch_bgcolor = ['#ffeeee', '#eeeeff', '#eeffee'] plotitem.amr_celledges_show = [1,1,0] plotitem.amr_patchedges_show = [1] #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = [] # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata): #-------------------------- if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ # ------------------------------------------------------------------------- # Plot figures # ------------------------------------------------------------------------- plotdata.clearfigures() # clear any old figures,axes,items data # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='Height', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-100, 500] plotaxes.ylimits = [0.975, 1.15] plotaxes.title = 'Height' # Set up for item on these axes: # plotaxes.afteraxes = plot_exact_1 plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = '-o' plotitem.color = 'b' # plotitem.show = True # show on plot? # # Plot linear solution # plotitem = plotaxes.new_plotitem(name='line2',plot_type='1d_plot') # plotitem.outdir = '../../../ex_linear_swe/linear_swe/_output' # plotitem.plot_var = 0 # plotitem.plotstyle = '-' # plotitem.color = 'r' # plotitem.show = True # show on plot? plotfigure = plotdata.new_plotfigure(name='Velocity', figno=2) plotaxes = plotfigure.new_plotaxes() # plotaxes.axescmd = 'subplot(2,1,2)' plotaxes.xlimits = 'auto' plotaxes.ylimits = [-1, 3] plotaxes.title = 'Solution q(2)' #plotaxes.afteraxes = plot_exact_2 # Set up for item on these axes: # q = current_data.q # h = q[0] # u = q[1]/q[0] plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 1 plotitem.plotstyle = '-o' plotitem.color = 'b' # plotitem.show = True # show on plot? # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = [1] # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = False # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from clawpack.visclaw import colormaps, geoplot plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'ascii' # Format of output # plotdata.format = 'netcdf' def set_drytol(current_data): # The drytol parameter is used in masking land and water and # affects what color map is used for cells with small water depth h. # The cell will be plotted as dry if h < drytol. # The best value to use often depends on the application and can # be set here (measured in meters): current_data.user['drytol'] = 1.e-2 plotdata.beforeframe = set_drytol # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) #----------------------------------------- # Figure for pcolor plot #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='pcolor', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = colormaps.make_colormap({ 1.0: 'r', 0.5: 'w', 0.0: 'b' }) plotitem.pcolor_cmin = -0.3 plotitem.pcolor_cmax = 0.3 plotitem.add_colorbar = True # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 2.0 plotitem.add_colorbar = False plotaxes.xlimits = [-1, 1] plotaxes.ylimits = [-1, 1] #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = [4, 5, 104, 105] # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from clawpack.visclaw import colormaps plotdata.clearfigures() # clear any old figures,axes,items data # Figure for pressure # ------------------- plotfigure = plotdata.new_plotfigure(name='Pressure', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Pressure' plotaxes.scaled = True # so aspect ratio is 1 # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 0 plotitem.pcolor_cmap = colormaps.blue_yellow_red plotitem.pcolor_cmin = -2.0 plotitem.pcolor_cmax = 2.0 plotitem.add_colorbar = True # Figure for scatter plot # ----------------------- plotfigure = plotdata.new_plotfigure(name='scatter', figno=3) plotfigure.show = (qref_dir is not None) # don't plot if 1d solution is missing # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1.5] plotaxes.ylimits = [-2., 4.] plotaxes.title = 'Scatter plot' # Set up for item on these axes: scatter of 2d data plotitem = plotaxes.new_plotitem(plot_type='1d_from_2d_data') def p_vs_r(current_data): # Return radius of each grid cell and p value in the cell from pylab import sqrt x = current_data.x y = current_data.y r = sqrt(x**2 + y**2) q = current_data.q p = q[0, :, :] return r, p plotitem.map_2d_to_1d = p_vs_r plotitem.plot_var = 0 plotitem.plotstyle = 'o' plotitem.color = 'b' plotitem.show = (qref_dir is not None) # show on plot? # Set up for item on these axes: 1d reference solution plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.outdir = qref_dir plotitem.plot_var = 0 plotitem.plotstyle = '-' plotitem.color = 'r' plotitem.kwargs = {'linewidth': 2} plotitem.show = True # show on plot? def make_legend(current_data): import matplotlib.pyplot as plt plt.legend(('2d data', '1d reference solution')) plotaxes.afteraxes = make_legend # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.html_movie = 'JSAnimation' # new style, or "4.x" for old style plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' # 'ascii', 'binary', 'netcdf' def draw_interface_add_legend(current_data): from pylab import plot plot([0., 0.], [-1000., 1000.], 'k--') try: from clawpack.visclaw import legend_tools labels = ['Level 1','Level 2', 'Level 3'] legend_tools.add_legend(labels, colors=['g','b','r'], markers=['^','s','o'], linestyles=['','',''], loc='upper left') except: pass # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='Adjoint and Velocity', figno=1) plotfigure.kwargs = {'figsize': (8,8)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,1)' # top figure plotaxes.xlimits = 'auto' plotaxes.ylimits = [-.5,1.1] plotaxes.title = 'Adjoint' plotaxes.afteraxes = draw_interface_add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.amr_color = ['g','b','r'] plotitem.amr_plotstyle = ['^-','s-','o-'] plotitem.amr_data_show = [1,1,1] plotitem.amr_kwargs = [{'markersize':5},{'markersize':4},{'markersize':3}] # Figure for q[1] # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,2)' # bottom figure plotaxes.xlimits = 'auto' plotaxes.ylimits = [-.5,1.1] plotaxes.title = 'Velocity' plotaxes.afteraxes = draw_interface_add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 1 plotitem.amr_color = ['g','b','r'] plotitem.amr_plotstyle = ['^-','s-','o-'] plotitem.amr_data_show = [1,1,1] plotitem.amr_kwargs = [{'markersize':5},{'markersize':4},{'markersize':3}] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True plotfigure.kwargs = {'figsize': (10,10)} plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(211)' plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Pressure' plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(212)' plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Velocity' plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 1 plotitem.plotstyle = 'b-' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # plotdata.format = 'forestclaw' # 'ascii' or 'binary' to match setrun.py # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True def fixup(current_data): import pylab addgauges(current_data) t = current_data.t t = t / 3600. # hours pylab.title('Surface at %4.2f hours' % t, fontsize=20) pylab.xticks(fontsize=15) pylab.yticks(fontsize=15) plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.2 plotitem.pcolor_cmax = 0.2 plotitem.add_colorbar = True plotitem.amr_celledges_show = [0, 0, 0, 0, 0] plotitem.patchedges_show = 1 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0, 0, 0] plotitem.patchedges_show = 1 plotaxes.xlimits = [-120, -60] plotaxes.ylimits = [-60, 0] # add contour lines of bathy if desired: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.show = False plotitem.plot_var = geoplot.topo plotitem.contour_levels = linspace(-3000, -3000, 1) plotitem.amr_contour_colors = ['y'] # color on each level plotitem.kwargs = {'linestyles': 'solid', 'linewidths': 2} plotitem.amr_contour_show = [0, 0, 0, 0, 0] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.show = False def gaugetopo(current_data): q = current_data.q h = q[0, :] eta = q[3, :] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = 'g-' def add_zeroline(current_data): from pylab import plot, legend, xticks, floor, axis, xlabel t = current_data.t gaugeno = current_data.gaugeno if gaugeno == 32412: try: plot(TG32412[:, 0], TG32412[:, 1], 'r', label='Obs') legend(['GeoClaw', 'Obs'], loc='lower right') except: pass axis((0, t.max(), -0.3, 0.3)) plot(t, 0 * t, 'k') n = int(floor(t.max() / 3600.) + 2) xticks([3600 * i for i in range(n)], ['%i' % i for i in range(n)]) xlabel('time (hours)') plotaxes.afteraxes = add_zeroline #----------------------------------------- # Plots of timing (CPU and wall time): def make_timing_plots(plotdata): from clawpack.visclaw import plot_timing_stats import os, sys try: timing_plotdir = plotdata.plotdir + '/_timing_figures' os.system('mkdir -p %s' % timing_plotdir) # adjust units for plots based on problem: units = { 'comptime': 'seconds', 'simtime': 'hours', 'cell': 'millions' } plot_timing_stats.make_plots(outdir=plotdata.outdir, make_pngs=True, plotdir=timing_plotdir, units=units) except: print('*** Error making timing plots') otherfigure = plotdata.new_otherfigure(name='timing plots', fname='_timing_figures/timing.html') otherfigure.makefig = make_timing_plots #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = False # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = False # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='q[0]', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1.5] plotaxes.ylimits = [-2., 4.] plotaxes.title = 'q[0]' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 0 plotitem.plotstyle = '-' plotitem.color = 'b' plotitem.show = True # show on plot? # Figure for q[1] plotfigure = plotdata.new_plotfigure(name='q[1]', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q[1]' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 1 plotitem.plotstyle = '-' plotitem.color = 'b' plotitem.show = True # show on plot? # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata): r"""Setplot function for surge plotting""" if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' fig_num_counter = surgeplot.figure_counter() # Load data from output clawdata = clawutil.ClawInputData(2) clawdata.read(os.path.join(plotdata.outdir,'claw.data')) amrdata = amrclaw.AmrclawInputData(clawdata) amrdata.read(os.path.join(plotdata.outdir,'amr.data')) physics = geodata.GeoClawData() physics.read(os.path.join(plotdata.outdir,'geoclaw.data')) surge_data = geodata.SurgeData() surge_data.read(os.path.join(plotdata.outdir,'surge.data')) friction_data = geodata.FrictionData() friction_data.read(os.path.join(plotdata.outdir,'friction.data')) # Load storm track track = surgeplot.track_data(os.path.join(plotdata.outdir,'fort.track')) # Calculate landfall time, off by a day, maybe leap year issue? landfall_dt = datetime.datetime(2008, 8, 1, 12) - datetime.datetime(2008,1,1,0) landfall = landfall_dt.days * 24.0 * 60**2 + landfall_dt.seconds # Set afteraxes function surge_afteraxes = lambda cd: surgeplot.surge_afteraxes(cd, track, landfall, plot_direction=False) # Limits for plots full_xlimits = [clawdata.lower[0], clawdata.upper[0]] full_ylimits = [clawdata.lower[1], clawdata.upper[1]] # Color limits surface_range = 1.0 speed_range = 2.0 xlimits = full_xlimits ylimits = full_ylimits eta = physics.sea_level if not isinstance(eta,list): eta = [eta] surface_limits = [eta[0]-surface_range,eta[0]+surface_range] speed_limits = [0.0,speed_range] wind_limits = [0,55] pressure_limits = [966,1013] ref_lines = [] # ========================================================================== # Generic helper functions # ========================================================================== def pcolor_afteraxes(current_data): surge_afteraxes(current_data) # surgeplot.gauge_locations(current_data) def contour_afteraxes(current_data): surge_afteraxes(current_data) def bathy_ref_lines(current_data): pass # plt.hold(True) # y = [amrdata.ylower,amrdata.yupper] # for ref_line in ref_lines: # plt.plot([ref_line,ref_line],y,'y--') # plt.hold(False) # ========================================================================== # ========================================================================== # Plot specifications # ========================================================================== # ========================================================================== # ======================================================================== # Surface Elevations - Entire Domain # ======================================================================== plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.afteraxes = pcolor_afteraxes surgeplot.add_surface_elevation(plotaxes, bounds=surface_limits) surgeplot.add_land(plotaxes,topo_min=-10.0,topo_max=5.0) # ======================================================================== # Water Speed - Entire Domain # ======================================================================== plotfigure = plotdata.new_plotfigure(name='speed', figno=1) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.afteraxes = pcolor_afteraxes # Speed surgeplot.add_speed(plotaxes,bounds=speed_limits) # Land surgeplot.add_land(plotaxes) # ======================================================================== # Hurricane forcing - Entire Domain # ======================================================================== # Pressure field plotfigure = plotdata.new_plotfigure(name='Pressure', figno=2) plotfigure.show = surge_data.pressure_forcing plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = full_xlimits plotaxes.ylimits = full_ylimits plotaxes.title = "Pressure Field" plotaxes.afteraxes = surge_afteraxes plotaxes.scaled = True surgeplot.add_pressure(plotaxes,bounds=pressure_limits) # add_pressure(plotaxes) surgeplot.add_land(plotaxes) # Wind field plotfigure = plotdata.new_plotfigure(name='Wind Speed',figno=4) plotfigure.show = surge_data.wind_forcing plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = full_xlimits plotaxes.ylimits = full_ylimits plotaxes.title = "Wind Field" plotaxes.afteraxes = surge_afteraxes plotaxes.scaled = True surgeplot.add_wind(plotaxes,bounds=wind_limits,plot_type='imshow') # add_wind(plotaxes,bounds=wind_limits,plot_type='contour') # add_wind(plotaxes,bounds=wind_limits,plot_type='quiver') surgeplot.add_land(plotaxes) # Wind field components plotfigure = plotdata.new_plotfigure(name='Wind Components',figno=5) plotfigure.show = surge_data.wind_forcing and False plotfigure.kwargs = {'figsize':(16,6)} plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = "subplot(121)" plotaxes.xlimits = full_xlimits plotaxes.ylimits = full_ylimits plotaxes.title = "X-Component of Wind Field" plotaxes.afteraxes = surge_afteraxes plotaxes.scaled = True plotitem = plotaxes.new_plotitem(plot_type='2d_imshow') plotitem.plot_var = surgeplot.wind_x plotitem.imshow_cmap = colormaps.make_colormap({1.0:'r',0.5:'w',0.0:'b'}) plotitem.imshow_cmin = -wind_limits[1] plotitem.imshow_cmax = wind_limits[1] plotitem.add_colorbar = True plotitem.amr_celledges_show = [0,0,0] plotitem.amr_patchedges_show = [1,1,1] plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = "subplot(122)" plotaxes.xlimits = full_xlimits plotaxes.ylimits = full_ylimits plotaxes.title = "Y-Component of Wind Field" plotaxes.afteraxes = surge_afteraxes plotaxes.scaled = True plotitem = plotaxes.new_plotitem(plot_type='2d_imshow') plotitem.plot_var = surgeplot.wind_y plotitem.imshow_cmap = colormaps.make_colormap({1.0:'r',0.5:'w',0.0:'b'}) plotitem.imshow_cmin = -wind_limits[1] plotitem.imshow_cmax = wind_limits[1] plotitem.add_colorbar = True plotitem.amr_celledges_show = [0,0,0] plotitem.amr_patchedges_show = [1,1,1] # ======================================================================== # Figures for gauges # ======================================================================== plotfigure = plotdata.new_plotfigure(name='Surface & topo', figno=300, \ type='each_gauge') plotfigure.show = True plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() # plotaxes.xlimits = [0.0,amrdata.tfinal] # plotaxes.ylimits = [0,150.0] plotaxes.ylimits = surface_limits plotaxes.title = 'Surface' plotaxes.afteraxes = surgeplot.gauge_afteraxes # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'r-' # ================= # Plot bathymetry # ================= plotfigure = plotdata.new_plotfigure(name='Bathymetry', figno=301) plotfigure.show = True plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = full_xlimits plotaxes.ylimits = full_ylimits plotaxes.title = "Bathymetry" plotaxes.afteraxes = surge_afteraxes plotaxes.scaled = True plotitem = plotaxes.new_plotitem(plot_type="2d_pcolor") plotitem.plot_var = geoplot.topo # plotitem.pcolor_cmap = geoplot.seafloor_colormap plotitem.pcolor_cmin = -3000.0 plotitem.pcolor_cmax = 300.0 plotitem.add_colorbar = True surgeplot.add_land(plotaxes) #----------------------------------------- # Figures for gauges #----------------------------------------- # plotfigure = plotdata.new_plotfigure(name='Surface & topo', figno=300, \ # type='each_gauge') # plotfigure.clf_each_gauge = True # # # Set up for axes in this figure: # plotaxes = plotfigure.new_plotaxes() # plotaxes.xlimits = 'auto' # plotaxes.ylimits = 'auto' # plotaxes.title = 'Surface' # # # Plot surface as blue curve: # plotitem = plotaxes.new_plotitem(plot_type='1d_plot') # plotitem.plot_var = 3 # plotitem.plotstyle = 'b-' # # # Plot topo as green curve: # plotitem = plotaxes.new_plotitem(plot_type='1d_plot') # plotitem.show = False # # def gaugetopo(current_data): # q = current_data.q # h = q[0,:] # eta = q[3,:] # topo = eta - h # return topo # # plotitem.plot_var = gaugetopo # plotitem.plotstyle = 'g-' # # def add_zeroline(current_data): # from pylab import plot, legend, xticks, floor # t = current_data.t # #legend(('surface','topography'),loc='lower left') # plot(t, 0*t, 'k') # n = int(floor(t.max()/3600.) + 2) # xticks([3600*i for i in range(n)]) # # plotaxes.afteraxes = add_zeroline #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print # plotdata.print_framenos = [45,46,47,48] plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from clawpack.visclaw import colormaps plotdata.clearfigures() # clear any old figures,axes,items data # Figure for pcolor plot plotfigure = plotdata.new_plotfigure(name='q[0]', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q[0]' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 0 plotitem.pcolor_cmap = colormaps.red_yellow_blue plotitem.pcolor_cmin = -1. plotitem.pcolor_cmax = 1. plotitem.add_colorbar = True plotitem.celledges_show = 0 plotitem.patchedges_show = 1 plotitem.MappedGrid = True plotitem.mapc2p = mapc2p plotitem.show = True # show on plot? # Figure for contour plot plotfigure = plotdata.new_plotfigure(name='contour', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q[0]' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = 0 plotitem.contour_levels = np.linspace(-0.9, 0.9, 10) plotitem.contour_colors = 'k' plotitem.patchedges_show = 1 plotitem.MappedGrid = True plotitem.mapc2p = mapc2p plotitem.show = True # show on plot? # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure with both components plotfigure = plotdata.new_plotfigure(name='h and hu', figno=0) plotfigure.kwargs = {'figsize':(6,8)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,1)' plotaxes.xlimits = 'auto' plotaxes.ylimits = [0., 4.5] plotaxes.title = 'depth h' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 0 plotitem.plotstyle = '-' plotitem.color = 'b' plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,2)' plotaxes.xlimits = 'auto' plotaxes.ylimits = [-2., 6.] plotaxes.title = 'momentum hu' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 1 plotitem.plotstyle = '-' plotitem.color = 'b' plotitem.show = True # show on plot? # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from clawpack.visclaw.data import ClawPlotData from numpy import linspace if plotdata is None: plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) def fixup(current_data): import pylab #addgauges(current_data) t = current_data.t t = t / 3600. # hours pylab.title('Surface at %4.2f hours' % t, fontsize=20) pylab.xticks(fontsize=15) pylab.yticks(fontsize=15) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.2 plotitem.pcolor_cmax = 0.2 plotitem.add_colorbar = True plotitem.amr_celledges_show = [1, 1, 0] plotitem.patchedges_show = 1 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [1, 1, 0] plotitem.patchedges_show = 1 plotaxes.xlimits = [-120, -60] plotaxes.ylimits = [-60, 0] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' def add_zeroline(current_data): from pylab import plot, legend, xticks, floor, axis, xlabel t = current_data.t gaugeno = current_data.gaugeno plot(t, 0 * t, 'k') n = int(floor(t.max() / 3600.) + 2) xticks([3600 * i for i in range(n)], ['%i' % i for i in range(n)]) xlabel('time (hours)') plotaxes.afteraxes = add_zeroline #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): # -------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from clawpack.visclaw import colormaps, geoplot plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = "ascii" # Format of output # plotdata.format = 'netcdf' def set_drytol(current_data): # The drytol parameter is used in masking land and water and # affects what color map is used for cells with small water depth h. # The cell will be plotted as dry if h < drytol. # The best value to use often depends on the application and can # be set here (measured in meters): current_data.user["drytol"] = 1.0e-2 plotdata.beforeframe = set_drytol # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, gaugenos="all", format_string="ko", add_labels=True) # ----------------------------------------- # Figure for pcolor plot # ----------------------------------------- plotfigure = plotdata.new_plotfigure(name="pcolor", figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes("pcolor") plotaxes.title = "Surface" plotaxes.scaled = True # Water plotitem = plotaxes.new_plotitem(plot_type="2d_pcolor") # plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.9 plotitem.pcolor_cmax = 0.9 plotitem.add_colorbar = True plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] # Land plotitem = plotaxes.new_plotitem(plot_type="2d_pcolor") plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [1, 1, 0] plotaxes.xlimits = [-100, 100] plotaxes.ylimits = [-100, 100] # ----------------------------------------- # Figure for zoom # ----------------------------------------- plotfigure = plotdata.new_plotfigure(name="Zoom", figno=10) # plotfigure.show = False plotfigure.kwargs = {"figsize": [12, 7]} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes("diag zoom") plotaxes.axescmd = "axes([0.0,0.1,0.6,0.6])" plotaxes.title = "On diagonal" plotaxes.scaled = True plotaxes.xlimits = [55, 66] plotaxes.ylimits = [55, 66] plotaxes.afteraxes = addgauges # Water plotitem = plotaxes.new_plotitem(plot_type="2d_pcolor") # plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.9 plotitem.pcolor_cmax = 0.9 plotitem.add_colorbar = True plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] # Land plotitem = plotaxes.new_plotitem(plot_type="2d_pcolor") plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [1, 1, 0] # Add contour lines of bathymetry: plotitem = plotaxes.new_plotitem(plot_type="2d_contour") plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = arange(-10.0, 0.0, 1.0) plotitem.amr_contour_colors = ["k"] # color on each level plotitem.kwargs = {"linestyles": "solid"} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # Add contour lines of topography: plotitem = plotaxes.new_plotitem(plot_type="2d_contour") plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = arange(0.0, 11.0, 1.0) plotitem.amr_contour_colors = ["g"] # color on each level plotitem.kwargs = {"linestyles": "solid"} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # Add dashed contour line for shoreline plotitem = plotaxes.new_plotitem(plot_type="2d_contour") plotitem.plot_var = geoplot.topo plotitem.contour_levels = [0.0] plotitem.amr_contour_colors = ["k"] # color on each level plotitem.kwargs = {"linestyles": "dashed"} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # ----------------------------------------- # Figure for zoom near axis # ----------------------------------------- # plotfigure = plotdata.new_plotfigure(name='Zoom2', figno=11) # now included in same figure as zoom on diagonal # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes("x zoom") plotaxes.show = True plotaxes.axescmd = "axes([0.5,0.1,0.6,0.6])" plotaxes.title = "On x-axis" plotaxes.scaled = True plotaxes.xlimits = [82, 93] plotaxes.ylimits = [-5, 6] plotaxes.afteraxes = addgauges # Water plotitem = plotaxes.new_plotitem(plot_type="2d_pcolor") # plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.9 plotitem.pcolor_cmax = 0.9 plotitem.add_colorbar = True plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] # Land plotitem = plotaxes.new_plotitem(plot_type="2d_pcolor") plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [1, 1, 0] # Add contour lines of bathymetry: plotitem = plotaxes.new_plotitem(plot_type="2d_contour") plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = arange(-10.0, 0.0, 1.0) plotitem.amr_contour_colors = ["k"] # color on each level plotitem.kwargs = {"linestyles": "solid"} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # Add contour lines of topography: plotitem = plotaxes.new_plotitem(plot_type="2d_contour") plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = arange(0.0, 11.0, 1.0) plotitem.amr_contour_colors = ["g"] # color on each level plotitem.kwargs = {"linestyles": "solid"} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # Add dashed contour line for shoreline plotitem = plotaxes.new_plotitem(plot_type="2d_contour") plotitem.plot_var = geoplot.topo plotitem.contour_levels = [0.0] plotitem.amr_contour_colors = ["k"] # color on each level plotitem.kwargs = {"linestyles": "dashed"} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # ----------------------------------------- # Figures for gauges # ----------------------------------------- plotfigure = plotdata.new_plotfigure(name="Surface & topo", figno=300, type="each_gauge") plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = "auto" plotaxes.ylimits = [-2.0, 2.0] plotaxes.title = "Surface" # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type="1d_plot") plotitem.plot_var = 3 plotitem.plotstyle = "b-" # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type="1d_plot") def gaugetopo(current_data): q = current_data.q h = q[0, :] eta = q[3, :] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = "g-" def add_zeroline(current_data): from pylab import plot, legend t = current_data.t legend(("surface", "topography"), loc="lower left") plot(t, 0 * t, "k") plotaxes.afteraxes = add_zeroline # ----------------------------------------- # Figure for patches alone # ----------------------------------------- plotfigure = plotdata.new_plotfigure(name="patches", figno=2) plotfigure.show = False # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1] plotaxes.ylimits = [0, 1] plotaxes.title = "patches" plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type="2d_patch") plotitem.amr_patch_bgcolor = ["#ffeeee", "#eeeeff", "#eeffee"] plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] # ----------------------------------------- # Scatter plot of surface for radially symmetric # ----------------------------------------- plotfigure = plotdata.new_plotfigure(name="Scatter", figno=200) plotfigure.show = False # Note: will not look very good unless more of domain is refined # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0.0, 100.0] plotaxes.ylimits = [-1.5, 2.0] plotaxes.title = "Scatter plot of surface" # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type="1d_from_2d_data") plotitem.plot_var = geoplot.surface def q_vs_radius(current_data): from numpy import sqrt x = current_data.x y = current_data.y r = sqrt(x ** 2 + y ** 2) q = current_data.var return r, q plotitem.map_2d_to_1d = q_vs_radius plotitem.plotstyle = "o" plotitem.amr_color = ["b", "r", "g"] plotaxes.afteraxes = "import pylab; pylab.legend(['Level 1','Level 2'])" # ----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = "png" # file format plotdata.print_framenos = "all" # list of frames to print plotdata.print_gaugenos = [4, 5, 104, 105] # list of gauges to print plotdata.print_fignos = "all" # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = "../README.html" # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure for density - pcolor plotfigure = plotdata.new_plotfigure(name='Density', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0,1] plotaxes.ylimits = [0,1] plotaxes.title = 'Density' plotaxes.scaled = True plotaxes.afteraxes = addgauges # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 0 #plotitem.pcolor_cmap = colormaps.yellow_red_blue plotitem.pcolor_cmin = 0. plotitem.pcolor_cmax = 2. plotitem.add_colorbar = True plotitem.amr_patchedges_show = [0] plotitem.amr_celledges_show = [0] # Figure for density - Schlieren plotfigure = plotdata.new_plotfigure(name='Schlieren', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0,1] plotaxes.ylimits = [0,1] plotaxes.title = 'Density' plotaxes.scaled = True # so aspect ratio is 1 # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_schlieren') plotitem.schlieren_cmin = 0.0 plotitem.schlieren_cmax = 1.0 plotitem.plot_var = 0 plotitem.add_colorbar = False # Figure for grid cells plotfigure = plotdata.new_plotfigure(name='cells', figno=2) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0,1] plotaxes.ylimits = [0,1] plotaxes.title = 'Grid patches' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_patch') plotitem.amr_patch_bgcolor = ['#ffeeee', '#eeeeff', '#eeffee'] plotitem.amr_celledges_show = [1,0] plotitem.amr_patchedges_show = [1] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0,1] plotaxes.ylimits = [0,1] plotaxes.title = 'Density' # Plot q as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.html_movie = 'JSAnimation' # new style, or "4.x" for old style plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data gamma = 1.4 def pressure(current_data): q = current_data.q rho = q[0,:] u = q[1,:]/rho p = (gamma-1)*(q[2,:] - 0.5*rho*u**2) return p level_labels = ['Level 1','Level 2', 'Level 3', 'Level 4'] level_colors = ['k','g','b','r'] level_styles = '-' level_markers = '' def add_legend(current_data): try: from clawpack.visclaw import legend_tools legend_tools.add_legend(labels=level_labels, colors=level_colors, markers=level_markers, linestyles=level_styles, loc='upper right') except: print('legend_tools error') pass # Density and pressure plots # -------------------------- plotfigure = plotdata.new_plotfigure(name='Density and Pressure', figno=1) plotfigure.kwargs = {'figsize':(10,5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(1,2,1)' # left figure plotaxes.xlimits = [0,1] plotaxes.ylimits = [0,7] plotaxes.title = 'Density' #plotaxes.afteraxes = add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_pwconst') plotitem.plot_var = 0 plotitem.amr_color = level_colors plotitem.amr_plotstyle = level_styles plotitem.amr_data_show = [1] # all levels # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(1,2,2)' # right plotaxes.xlimits = [0,1] plotaxes.ylimits = [-10,1100] plotaxes.title = 'Pressure' plotaxes.afteraxes = add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_pwconst') plotitem.plot_var = pressure plotitem.amr_color = level_colors plotitem.amr_plotstyle = level_styles plotitem.amr_data_show = [1] # all levels # Density and pressure plots, zoomed at final time # ------------------------------------------------- plotfigure = plotdata.new_plotfigure(name='zoom view', figno=2) plotfigure.kwargs = {'figsize':(10,5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(1,2,1)' # left figure plotaxes.xlimits = [0.5,0.9] plotaxes.ylimits = [0,7] plotaxes.title = 'Density' #plotaxes.afteraxes = add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_pwconst') plotitem.plot_var = 0 plotitem.amr_color = level_colors plotitem.amr_plotstyle = level_styles plotitem.amr_data_show = [1] # all levels # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(1,2,2)' # right plotaxes.xlimits = [0.5,0.9] plotaxes.ylimits = [-10,450] plotaxes.title = 'Pressure' plotaxes.afteraxes = add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_pwconst') plotitem.plot_var = pressure plotitem.amr_color = level_colors plotitem.amr_plotstyle = level_styles plotitem.amr_data_show = [1] # all levels #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = [-1,30] plotaxes.title = 'Density' plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure for pressure and velocity: plotfigure = plotdata.new_plotfigure(name='Pressure and Velocity', figno=1) # Pressure: # --------- # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,1)' # top figure plotaxes.xlimits = 'auto' plotaxes.ylimits = [-.5,1.] plotaxes.title = 'Pressure' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = '-' plotitem.color = 'b' # Velocity: # --------- # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,2)' # bottom figure plotaxes.xlimits = 'auto' plotaxes.ylimits = [-1.,1.] plotaxes.title = 'Velocity' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 1 plotitem.plotstyle = '-' plotitem.color = 'b' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ import os import numpy as np import matplotlib.pyplot as plt from clawpack.visclaw import geoplot, gaugetools, colormaps import clawpack.clawutil.data as clawutil import clawpack.amrclaw.data as amrclaw import clawpack.geoclaw.data import clawpack.geoclaw.multilayer.plot as ml_plot if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from numpy import linspace plotdata.clearfigures() # clear any old figures,axes,items data plotdata.save_frames = False # Load data from output clawdata = clawutil.ClawInputData(2) clawdata.read(os.path.join(plotdata.outdir,'claw.data')) amrdata = amrclaw.AmrclawInputData(clawdata) amrdata.read(os.path.join(plotdata.outdir,'amr.data')) geodata = clawpack.geoclaw.data.GeoClawData() geodata.read(os.path.join(plotdata.outdir,'geoclaw.data')) multilayer_data = clawpack.geoclaw.data.MultilayerData() multilayer_data.read(os.path.join(plotdata.outdir,'multilayer.data')) # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) # ======================================================================== # Generic helper functions # ======================================================================== def pcolor_afteraxes(current_data): # bathy_ref_lines(current_data) gauge_locations(current_data) def contour_afteraxes(current_data): # gauge_locations(current_data) # m_to_km_labels() plt.hold(True) pos = -80.0 * (23e3 / 180) + 500e3 - 5e3 plt.plot([pos,pos],[-300e3,300e3],'b',[pos-5e3,pos-5e3],[-300e3,300e3],'y') plt.hold(False) wind_contours(current_data) bathy_ref_lines(current_data) def profile_afteraxes(current_data): pass def gauge_locations(current_data,gaugenos='all'): plt.hold(True) gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos=gaugenos, format_string='kx', add_labels=True) plt.hold(False) # ======================================================================== # Axis limits # xlimits = [amrdata.xlower,amrdata.xupper] xlimits = [-100.0, 100.0] # ylimits = [amrdata.ylower,amrdata.yupper] ylimits = [-100.0, 100.0] eta = [multilayer_data.eta[0],multilayer_data.eta[1]] top_surface_limits = [eta[0]-10,eta[0]+10] internal_surface_limits = [eta[1]-5,eta[1]+5] depth_limits = [0.0, 0.4] top_speed_limits = [0.0,0.1] internal_speed_limits = [0.0,0.03] # ======================================================================== # Surface Elevations # ======================================================================== plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) plotfigure.show = True plotfigure.kwargs = {'figsize':(14,4)} # Top surface plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Top Surface' plotaxes.axescmd = 'subplot(1,2,1)' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits ml_plot.add_inundation(plotaxes, 1, bounds=depth_limits) ml_plot.add_surface_elevation(plotaxes,1,bounds=top_surface_limits) ml_plot.add_land(plotaxes, 1) # Bottom surface plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Internal Surface' plotaxes.axescmd = 'subplot(1,2,2)' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits ml_plot.add_inundation(plotaxes, 2, bounds=depth_limits) ml_plot.add_surface_elevation(plotaxes,2,bounds=internal_surface_limits) ml_plot.add_colorbar = True ml_plot.add_land(plotaxes, 2) # ======================================================================== # Figure for cross section # ======================================================================== plotfigure = plotdata.new_plotfigure(name='cross-section', figno=4) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.title = 'Cross section at y=0' ml_plot.add_cross_section(plotaxes, 1) ml_plot.add_cross_section(plotaxes, 2) ml_plot.add_land_cross_section(plotaxes) # ======================================================================== # Water Speed # ======================================================================== plotfigure = plotdata.new_plotfigure(name='speed', figno=1) plotfigure.show = False plotfigure.kwargs = {'figsize':(14,4)} # Top layer speed plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents - Top Layer' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(1,2,1)' ml_plot.add_speed(plotaxes,1,bounds=top_speed_limits) ml_plot.add_land(plotaxes, 1) # Bottom layer speed plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents - Bottom Layer' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(1,2,2)' ml_plot.add_speed(plotaxes,2,bounds=internal_speed_limits) ml_plot.add_land(plotaxes, 2) # Individual components plotfigure = plotdata.new_plotfigure(name='speed_components',figno=401) plotfigure.show = False plotfigure.kwargs = {'figsize':(14,14)} # Top layer plotaxes = plotfigure.new_plotaxes() plotaxes.title = "X-Velocity - Top Layer" plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(2,2,1)' ml_plot.add_x_velocity(plotaxes,1) ml_plot.add_land(plotaxes, 1) plotaxes = plotfigure.new_plotaxes() plotaxes.title = "Y-Velocity - Top Layer" plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(2,2,2)' ml_plot.add_y_velocity(plotaxes,1) ml_plot.add_land(plotaxes, 1) # Bottom layer plotaxes = plotfigure.new_plotaxes() plotaxes.title = "X-Velocity - Bottom Layer" plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(2,2,3)' ml_plot.add_x_velocity(plotaxes,2) ml_plot.add_land(plotaxes, 2) plotaxes = plotfigure.new_plotaxes() plotaxes.title = "Y-Velocity - Bottom Layer" plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(2,2,4)' ml_plot.add_y_velocity(plotaxes,2) ml_plot.add_land(plotaxes, 2) #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.show = False def gaugetopo(current_data): q = current_data.q h = q[0,:] eta = q[3,:] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = 'g-' def add_zeroline(current_data): from pylab import plot, legend, xticks, floor, axis, xlabel t = current_data.t gaugeno = current_data.gaugeno if gaugeno == 32412: try: plot(TG32412[:,0], TG32412[:,1], 'r') legend(['GeoClaw','Obs'],loc='lower right') except: pass axis((0,t.max(),-0.3,0.3)) plot(t, 0*t, 'k') n = int(floor(t.max()/3600.) + 2) xticks([3600*i for i in range(n)], ['%i' % i for i in range(n)]) xlabel('time (hours)') #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='Solution', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0,1] plotaxes.ylimits = [-.6,1.2] plotaxes.title = 'q' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.amr_color = ['g','b','r'] plotitem.amr_plotstyle = ['^-','s-','o-'] plotitem.amr_data_show = [1,1,1] plotitem.amr_kwargs = [{'markersize':8},{'markersize':6},{'markersize':5}] # Plot true solution for comparison: def plot_qtrue(current_data): from pylab import plot, legend x = linspace(0,1,1000) t = current_data.t q = qtrue(x,t) plot(x,q,'k',label='true solution') def plot_qtrue_with_legend(current_data): from pylab import plot, legend x = linspace(0,1,1000) t = current_data.t q = qtrue(x,t) plot(x,q,'k',label='true solution') try: from clawpack.visclaw import legend_tools labels = ['Level 1','Level 2', 'Level 3','True solution'] legend_tools.add_legend(labels, colors=['g','b','r','k'], markers=['^','s','o',''], linestyles=['','','','-'], loc='lower right') except: legend(loc='lower right') plotaxes.afteraxes = plot_qtrue_with_legend # ------------------------------------------ # Figure with each level plotted separately: plotfigure = plotdata.new_plotfigure(name='By AMR Level', figno=2) plotfigure.kwargs = {'figsize':(8,10)} for level in range(1,4): # Set up plot for this level: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(3,1,%i)' % level plotaxes.xlimits = [0,1] plotaxes.ylimits = [-.5,1.3] plotaxes.title = 'Level %s' % level plotaxes.afteraxes = plot_qtrue plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.amr_color = ['g','b','r'] plotitem.amr_plotstyle = ['^-','s-','o-'] plotitem.amr_data_show = [0,0,0] plotitem.amr_data_show[level-1] = 1 # show only one level #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Solution' plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'ascii' # 'ascii', 'binary', 'netcdf' # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) # To add title with time format hours:minutes:seconds... def title_hours(current_data): from pylab import title, mod t = current_data.t hours = int(t / 3600.) tmin = mod(t, 3600.) min = int(tmin / 60.) tsec = mod(tmin, 60.) sec = int(mod(tmin, 60.)) timestr = '%s:%s:%s' % (hours, str(min).zfill(2), str(sec).zfill(2)) title('%s after earthquake' % timestr) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) plotfigure.kwargs = {'figsize': (12, 6)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.axescmd = 'subplot(121)' plotaxes.title = 'Surface' plotaxes.scaled = True def fixup(current_data): addgauges(current_data) title_hours(current_data) plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.2 plotitem.pcolor_cmax = 0.2 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 1 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 plotaxes.xlimits = [-120, -60] plotaxes.ylimits = [-60, 0] # add contour lines of bathy if desired: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.show = False plotitem.plot_var = geoplot.topo plotitem.contour_levels = linspace(-3000, -3000, 1) plotitem.amr_contour_colors = ['y'] # color on each level plotitem.kwargs = {'linestyles': 'solid', 'linewidths': 2} plotitem.amr_contour_show = [1, 0, 0] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 #----------------------------------------- # Figure for adjoint flagging #----------------------------------------- # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('adjoint') plotaxes.axescmd = 'subplot(122)' plotaxes.scaled = True plotaxes.title = 'Adjoint flag' def fixup(current_data): addgauges(current_data) plotaxes.afteraxes = fixup def masked_inner_product(current_data): from numpy import ma aux = current_data.aux tol = 1e-15 soln = ma.masked_where(aux[3, :, :] < tol, aux[3, :, :]) return soln plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = masked_inner_product plotitem.pcolor_cmap = colormaps.white_red plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 0.005 #plotitem.pcolor_cmax = 0.00001 # use for adjoint-error flagging plotitem.add_colorbar = False # doesn't work when adjoint all masked plotitem.colorbar_shrink = 0.75 plotitem.amr_celledges_show = [0, 0, 0] plotitem.amr_data_show = [1, 1, 0] # inner product not computed on finest level plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 plotaxes.xlimits = [-120, -60] plotaxes.ylimits = [-60, 0] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.show = False def gaugetopo(current_data): q = current_data.q h = q[0, :] eta = q[3, :] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = 'g-' def add_zeroline(current_data): from pylab import plot, legend, xticks, floor, axis, xlabel t = current_data.t gaugeno = current_data.gaugeno if gaugeno == 32412: try: plot(TG32412[:, 0], TG32412[:, 1], 'r') legend(['GeoClaw', 'Obs'], loc='lower right') except: pass axis((0, t.max(), -0.3, 0.3)) plot(t, 0 * t, 'k') n = int(floor(t.max() / 3600.) + 2) xticks([3600 * i for i in range(n)], ['%i' % i for i in range(n)]) xlabel('time (hours)') plotaxes.afteraxes = add_zeroline #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from clawpack.visclaw.data import ClawPlotData from numpy import linspace if plotdata is None: plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) def fixup(current_data): import pylab #addgauges(current_data) t = current_data.t t = t / 3600. # hours pylab.title('Surface at %4.2f hours' % t, fontsize=20) pylab.xticks(fontsize=15) pylab.yticks(fontsize=15) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.2 plotitem.pcolor_cmax = 0.2 plotitem.add_colorbar = True plotitem.amr_celledges_show = [1,1,0] plotitem.patchedges_show = 1 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [1,1,0] plotitem.patchedges_show = 1 plotaxes.xlimits = [-120,-60] plotaxes.ylimits = [-60,0] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' def add_zeroline(current_data): from pylab import plot, legend, xticks, floor, axis, xlabel t = current_data.t gaugeno = current_data.gaugeno plot(t, 0*t, 'k') n = int(floor(t.max()/3600.) + 2) xticks([3600*i for i in range(n)], ['%i' % i for i in range(n)]) xlabel('time (hours)') plotaxes.afteraxes = add_zeroline #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data def plot_corner(current_data): from pylab import plot plot([.0,.0],[-1,0],'r',linewidth=2) plot([.0,1],[0,.55],'r',linewidth=2) def sigmatr(current_data): # trace of sigma q = current_data.q return q[0,:,:] + q[1,:,:] # Figure for trace of sigma plotfigure = plotdata.new_plotfigure(name='trace(sigma)', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'trace(sigma)' plotaxes.scaled = True plotaxes.afteraxes = plot_corner # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = sigmatr plotitem.pcolor_cmap = colormaps.red_yellow_blue plotitem.pcolor_cmin = -1. plotitem.pcolor_cmax = 1. plotitem.add_colorbar = True plotitem.show = True # show on plot? # Figure for shear stress plotfigure = plotdata.new_plotfigure(name='shear', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'shear stress' plotaxes.scaled = True plotaxes.afteraxes = plot_corner # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 2 # sigma_12 plotitem.pcolor_cmap = colormaps.red_yellow_blue plotitem.pcolor_cmin = -0.2 plotitem.pcolor_cmax = 0.2 plotitem.add_colorbar = True plotitem.show = True # show on plot? # Figure for contours plotfigure = plotdata.new_plotfigure(name='contours', figno=2) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'pressure(black) and shear(green)' plotaxes.scaled = True plotaxes.afteraxes = plot_corner # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = sigmatr plotitem.contour_levels = linspace(-2,8,50) plotitem.contour_colors = 'k' plotitem.show = True # show on plot? # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = 2 # sigma_12 plotitem.contour_levels = linspace(-0.4,0.4,30) plotitem.contour_colors = 'g' plotitem.show = True # show on plot? # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) plotfigure.kwargs = {'figsize': (8, 5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True def fixup(current_data): import pylab addgauges(current_data) t = current_data.t t = t / 3600. # hours pylab.title('Surface at %4.2f hours' % t, fontsize=20) pylab.grid(True) #pylab.xticks(fontsize=15) #pylab.yticks(fontsize=15) plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = colormaps.red_white_blue #geoplot.tsunami_colormap plotitem.pcolor_cmin = sea_level - 0.1 plotitem.pcolor_cmax = sea_level + 0.1 plotitem.add_colorbar = False #plotitem.colorbar_shrink = 0.5 plotitem.colorbar_shrink = 1.0 plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 plotaxes.xlimits = [-230, -115] plotaxes.ylimits = [0, 65] # add contour lines of bathy if desired: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.show = False plotitem.plot_var = geoplot.topo plotitem.contour_levels = linspace(-3000, -3000, 1) plotitem.amr_contour_colors = ['y'] # color on each level plotitem.kwargs = {'linestyles': 'solid', 'linewidths': 2} plotitem.amr_contour_show = [1, 0, 0] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 #----------------------------------------- # Figure for adjoint #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Adjoint ', figno=20) plotfigure.kwargs = {'figsize': (8, 5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('adjoint') plotaxes.scaled = True plotaxes.title = 'Adjoint flag' def fixup(current_data): import pylab addgauges(current_data) t = current_data.t t = t / 3600. # hours pylab.title('Adjoint flag at %4.2f hours' % t, fontsize=20) pylab.grid(True) plotaxes.afteraxes = fixup adj_flag_tol = 0.000001 def masked_inner_product(current_data): from numpy import ma q = current_data.q soln = ma.masked_where(q[4, :, :] < adj_flag_tol, q[4, :, :]) return soln def masked_regions(current_data): from numpy import ma q = current_data.q soln = ma.masked_where(q[4, :, :] < 1e9, q[4, :, :]) return soln plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 4 #masked_inner_product plotitem.pcolor_cmap = colormaps.white_red plotitem.pcolor_cmin = 0.5 * adj_flag_tol plotitem.pcolor_cmax = 6 * adj_flag_tol plotitem.add_colorbar = False plotitem.amr_celledges_show = [0] plotitem.amr_data_show = [1, 1, 0, 0, 0, 0, 0] plotitem.patchedges_show = 0 #plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = masked_regions #plotitem.pcolor_cmap = colormaps.white_blue #plotitem.pcolor_cmin = 9e9 #plotitem.pcolor_cmax = 1.1e10 #plotitem.add_colorbar = False #plotitem.amr_celledges_show = [0] #plotitem.amr_data_show = [1,1,0,0] #plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 plotaxes.xlimits = [-230, -115] plotaxes.ylimits = [0, 65] #----------------------------------------- # Figure for levels #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Grid patches', figno=10) plotfigure.kwargs = {'figsize': (8, 5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Grid patches' plotaxes.scaled = True def aa_patches(current_data): import pylab pylab.ticklabel_format(format='plain', useOffset=False) pylab.xticks([180, 200, 220, 240], rotation=20, fontsize=28) pylab.yticks(fontsize=28) t = current_data.t t = t / 3600. # hours pylab.title('Grids patches at %4.2f hours' % t, fontsize=20) a = pylab.gca() a.set_aspect(1. / pylab.cos(41.75 * pylab.pi / 180.)) pylab.grid(True) def fixup(current_data): import pylab addgauges(current_data) t = current_data.t t = t / 3600. # hours pylab.title('Grids patches at %4.2f hours' % t, fontsize=20) pylab.grid(True) # Water plotitem = plotaxes.new_plotitem(plot_type='2d_patch') plotitem.amr_patch_bgcolor = [[1, 1, 1], [0.8, 0.8, 0.8], [0.8, 1, 0.8], [1, .7, .7], [0.6, 0.6, 1]] plotitem.amr_patchedges_color = ['k', 'k', 'g', 'r', 'b'] plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0, 1, 1, 1, 1] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] plotaxes.afteraxes = fixup plotaxes.xlimits = [-230, -115] plotaxes.ylimits = [0, 65] #----------------------------------------- # Zoom #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Crescent City', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = sea_level - 0.1 plotitem.pcolor_cmax = sea_level + 0.1 plotitem.add_colorbar = True #plotitem.colorbar_shrink = 0.5 plotitem.colorbar_shrink = 1.0 plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 ######## Limits below encompass Crescent City plotaxes.xlimits = [-127, -123.5] plotaxes.ylimits = [40.5, 44.5] #----------------------------------------- # Zoom2 #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Crescent City Zoomed', figno=2) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = sea_level - 0.1 plotitem.pcolor_cmax = sea_level + 0.1 plotitem.add_colorbar = True #plotitem.colorbar_shrink = 0.5 plotitem.colorbar_shrink = 1.0 plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 ######## Limits below encompass Crescent City zoomed area plotaxes.xlimits = [-124.235, -124.143] plotaxes.ylimits = [41.716, 41.783] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [9.5 * 3600, 15 * 3600] plotaxes.ylimits = [-3, 3] plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.show = False def gaugetopo(current_data): q = current_data.q h = q[0, :] eta = q[3, :] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = 'g-' def add_zeroline(current_data): from pylab import plot, legend, xticks, floor, axis, xlabel t = current_data.t gaugeno = current_data.gaugeno plot(t, 0 * t, 'k') n = int(floor(t.max() / 3600.) + 2) #xticks([3600*i for i in range(n)], ['%i' % i for i in range(n)]) xticks([3600 * i for i in range(9, n)], ['%i' % i for i in range(9, n)]) xlabel('time (hours)') plotaxes.afteraxes = add_zeroline #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ import os import numpy as np import matplotlib.pyplot as plt from clawpack.visclaw import geoplot, gaugetools, colormaps import clawpack.clawutil.data as clawutil import clawpack.amrclaw.data as amrclaw import clawpack.geoclaw.data import clawpack.geoclaw.multilayer.plot as ml_plot if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from numpy import linspace plotdata.clearfigures() # clear any old figures,axes,items data plotdata.save_frames = False # Load data from output clawdata = clawutil.ClawInputData(2) clawdata.read(os.path.join(plotdata.outdir, 'claw.data')) amrdata = amrclaw.AmrclawInputData(clawdata) amrdata.read(os.path.join(plotdata.outdir, 'amr.data')) geodata = clawpack.geoclaw.data.GeoClawData() geodata.read(os.path.join(plotdata.outdir, 'geoclaw.data')) multilayer_data = clawpack.geoclaw.data.MultilayerData() multilayer_data.read(os.path.join(plotdata.outdir, 'multilayer.data')) # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) # ======================================================================== # Generic helper functions # ======================================================================== def pcolor_afteraxes(current_data): # bathy_ref_lines(current_data) gauge_locations(current_data) def contour_afteraxes(current_data): # gauge_locations(current_data) # m_to_km_labels() plt.hold(True) pos = -80.0 * (23e3 / 180) + 500e3 - 5e3 plt.plot([pos, pos], [-300e3, 300e3], 'b', [pos - 5e3, pos - 5e3], [-300e3, 300e3], 'y') plt.hold(False) wind_contours(current_data) bathy_ref_lines(current_data) def profile_afteraxes(current_data): pass def gauge_locations(current_data, gaugenos='all'): plt.hold(True) gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos=gaugenos, format_string='kx', add_labels=True) plt.hold(False) # ======================================================================== # Axis limits # xlimits = [amrdata.xlower,amrdata.xupper] xlimits = [-100.0, 100.0] # ylimits = [amrdata.ylower,amrdata.yupper] ylimits = [-100.0, 100.0] eta = [multilayer_data.eta[0], multilayer_data.eta[1]] top_surface_limits = [eta[0] - 10, eta[0] + 10] internal_surface_limits = [eta[1] - 5, eta[1] + 5] depth_limits = [0.0, 0.4] top_speed_limits = [0.0, 0.1] internal_speed_limits = [0.0, 0.03] # ======================================================================== # Surface Elevations # ======================================================================== plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) plotfigure.show = True plotfigure.kwargs = {'figsize': (14, 4)} # Top surface plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Top Surface' plotaxes.axescmd = 'subplot(1,2,1)' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits ml_plot.add_inundation(plotaxes, 1, bounds=depth_limits) ml_plot.add_surface_elevation(plotaxes, 1, bounds=top_surface_limits) ml_plot.add_land(plotaxes, 1) # Bottom surface plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Internal Surface' plotaxes.axescmd = 'subplot(1,2,2)' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits ml_plot.add_inundation(plotaxes, 2, bounds=depth_limits) ml_plot.add_surface_elevation(plotaxes, 2, bounds=internal_surface_limits) ml_plot.add_colorbar = True ml_plot.add_land(plotaxes, 2) # ======================================================================== # Figure for cross section # ======================================================================== plotfigure = plotdata.new_plotfigure(name='cross-section', figno=4) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.title = 'Cross section at y=0' ml_plot.add_cross_section(plotaxes, 1) ml_plot.add_cross_section(plotaxes, 2) ml_plot.add_land_cross_section(plotaxes) # ======================================================================== # Water Speed # ======================================================================== plotfigure = plotdata.new_plotfigure(name='speed', figno=1) plotfigure.show = False plotfigure.kwargs = {'figsize': (14, 4)} # Top layer speed plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents - Top Layer' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(1,2,1)' ml_plot.add_speed(plotaxes, 1, bounds=top_speed_limits) ml_plot.add_land(plotaxes, 1) # Bottom layer speed plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents - Bottom Layer' plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(1,2,2)' ml_plot.add_speed(plotaxes, 2, bounds=internal_speed_limits) ml_plot.add_land(plotaxes, 2) # Individual components plotfigure = plotdata.new_plotfigure(name='speed_components', figno=401) plotfigure.show = False plotfigure.kwargs = {'figsize': (14, 14)} # Top layer plotaxes = plotfigure.new_plotaxes() plotaxes.title = "X-Velocity - Top Layer" plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(2,2,1)' ml_plot.add_x_velocity(plotaxes, 1) ml_plot.add_land(plotaxes, 1) plotaxes = plotfigure.new_plotaxes() plotaxes.title = "Y-Velocity - Top Layer" plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(2,2,2)' ml_plot.add_y_velocity(plotaxes, 1) ml_plot.add_land(plotaxes, 1) # Bottom layer plotaxes = plotfigure.new_plotaxes() plotaxes.title = "X-Velocity - Bottom Layer" plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(2,2,3)' ml_plot.add_x_velocity(plotaxes, 2) ml_plot.add_land(plotaxes, 2) plotaxes = plotfigure.new_plotaxes() plotaxes.title = "Y-Velocity - Bottom Layer" plotaxes.scaled = True plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits plotaxes.axescmd = 'subplot(2,2,4)' ml_plot.add_y_velocity(plotaxes, 2) ml_plot.add_land(plotaxes, 2) #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.show = False def gaugetopo(current_data): q = current_data.q h = q[0, :] eta = q[3, :] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = 'g-' def add_zeroline(current_data): from pylab import plot, legend, xticks, floor, axis, xlabel t = current_data.t gaugeno = current_data.gaugeno if gaugeno == 32412: try: plot(TG32412[:, 0], TG32412[:, 1], 'r') legend(['GeoClaw', 'Obs'], loc='lower right') except: pass axis((0, t.max(), -0.3, 0.3)) plot(t, 0 * t, 'k') n = int(floor(t.max() / 3600.) + 2) xticks([3600 * i for i in range(n)], ['%i' % i for i in range(n)]) xlabel('time (hours)') #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Import data objects clawdata = data.ClawInputData(2) clawdata.read(os.path.join(plotdata.outdir, 'claw.data')) # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) #----------------------------------------- # Figure for surface #----------------------------------------- extents = { "Full Domain": { 'extent': [ clawdata.lower[0], clawdata.upper[0], clawdata.lower[1], clawdata.upper[1] ], 'show_contours': False, 'show_patches': [1, 1, 1, 1], 'figsize': (6.4, 4.8) }, "Zoom 1": { 'extent': init_region, 'show_contours': True, 'show_patches': 0, 'figsize': (6.4 * 2.0, 4.8) } } for (name, param_dict) in extents.items(): plotfigure = plotdata.new_plotfigure(name='Surface %s' % name) plotfigure.kwargs['figsize'] = param_dict['figsize'] # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') # plotitem.plot_var = geoplot.surface plotitem.plot_var = surface_or_depth # plotitem.plot_var = 0 plotitem.pcolor_cmap = surface_cmap plotitem.pcolor_cmin = -10.0 plotitem.pcolor_cmax = 10.0 plotitem.add_colorbar = True plotitem.amr_celledges_show = [0, 0, 0, 0] plotitem.patchedges_show = param_dict['show_patches'] # Bathy contour plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.show = param_dict['show_contours'] plotitem.plot_var = geoplot.topo plotitem.contour_levels = numpy.arange(5000, 6000, 25) plotitem.amr_contour_colors = ['k'] # color on each level plotitem.kwargs = {'linestyles': 'solid', 'linewidths': 1} plotitem.amr_contour_show = [0, 0, 0, 1] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.show = param_dict['show_contours'] plotitem.plot_var = geoplot.topo plotitem.contour_levels = numpy.arange(4000, 5000, 25) plotitem.amr_contour_colors = ['k'] # color on each level plotitem.kwargs = {'linestyles': 'dashed', 'linewidths': 1} plotitem.amr_contour_show = [0, 0, 0, 1] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 4800 plotitem.pcolor_cmax = 5005 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = param_dict['show_patches'] plotaxes.xlimits = param_dict['extent'][:2] plotaxes.ylimits = param_dict['extent'][2:] def draw_rect(rect, axes, style="r--"): """rect = [xlower, ylower, xupper, yupper""" xlower = rect[0] xupper = rect[1] ylower = rect[2] yupper = rect[3] axes.plot([xlower, xupper], [ylower, ylower], style) axes.plot([xupper, xupper], [ylower, yupper], style) axes.plot([xupper, xlower], [yupper, yupper], style) axes.plot([xlower, xlower], [yupper, ylower], style) def afteraxes(cd): addgauges(cd) draw_rect([491000, 493700, 3085250, 3086250], plt.gca()) plotaxes.afteraxes = afteraxes # ----------------------------------------- # Figures for gauges # ----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.show = False # def gaugetopo(current_data): # q = current_data.q # h = q[0,:] # eta = q[3,:] # topo = eta - h # return topo # plotitem.plot_var = gaugetopo # plotitem.plotstyle = 'g-' # def add_zeroline(current_data): # from pylab import plot, legend, xticks, floor, axis, xlabel # t = current_data.t # gaugeno = current_data.gaugeno # if gaugeno == 32412: # try: # plot(TG32412[:,0], TG32412[:,1], 'r') # legend(['GeoClaw','Obs'],loc='lower right') # except: pass # axis((0,t.max(),-0.3,0.3)) # plot(t, 0*t, 'k') # n = int(floor(t.max()/3600.) + 2) # xticks([3600*i for i in range(n)], ['%i' % i for i in range(n)]) # xlabel('time (hours)') # plotaxes.afteraxes = add_zeroline #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- r"""Setplot function for surge plotting""" if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' fig_num_counter = surgeplot.figure_counter() # Load data from output clawdata = clawutil.ClawInputData(2) clawdata.read(os.path.join(plotdata.outdir, 'claw.data')) amrdata = amrclaw.AmrclawInputData(clawdata) amrdata.read(os.path.join(plotdata.outdir, 'amr.data')) physics = geodata.GeoClawData() physics.read(os.path.join(plotdata.outdir, 'geoclaw.data')) surge_data = geodata.SurgeData() surge_data.read(os.path.join(plotdata.outdir, 'surge.data')) friction_data = geodata.FrictionData() friction_data.read(os.path.join(plotdata.outdir, 'friction.data')) # Load storm track track = surgeplot.track_data(os.path.join(plotdata.outdir, 'fort.track')) # Calculate landfall time, off by a day, maybe leap year issue? landfall_dt = datetime.datetime(2008, 9, 13, 7) - datetime.datetime( 2008, 1, 1, 0) landfall = (landfall_dt.days - 1.0) * 24.0 * 60**2 + landfall_dt.seconds # Set afteraxes function surge_afteraxes = lambda cd: surgeplot.surge_afteraxes( cd, track, landfall, plot_direction=False) # Color limits surface_range = 5.0 speed_range = 3.0 eta = physics.sea_level if not isinstance(eta, list): eta = [eta] surface_limits = [eta[0] - surface_range, eta[0] + surface_range] # surface_contours = numpy.linspace(-surface_range, surface_range,11) surface_contours = [ -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5 ] surface_ticks = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] surface_labels = [str(value) for value in surface_ticks] speed_limits = [0.0, speed_range] speed_contours = numpy.linspace(0.0, speed_range, 13) speed_ticks = [0, 1, 2, 3] speed_labels = [str(value) for value in speed_ticks] wind_limits = [0, 64] # wind_limits = [-0.002,0.002] pressure_limits = [935, 1013] friction_bounds = [0.01, 0.04] # vorticity_limits = [-1.e-2,1.e-2] # def pcolor_afteraxes(current_data): # surge_afteraxes(current_data) # surge.plot.gauge_locations(current_data,gaugenos=[6]) def contour_afteraxes(current_data): surge_afteraxes(current_data) def add_custom_colorbar_ticks_to_axes(axes, item_name, ticks, tick_labels=None): axes.plotitem_dict[item_name].colorbar_ticks = ticks axes.plotitem_dict[item_name].colorbar_tick_labels = tick_labels # ========================================================================== # ========================================================================== # Plot specifications # ========================================================================== # ========================================================================== # ======================================================================== # Entire Gulf # ======================================================================== gulf_xlimits = [clawdata.lower[0], clawdata.upper[0]] gulf_ylimits = [clawdata.lower[1], clawdata.upper[1]] gulf_shrink = 0.9 def gulf_after_axes(cd): plt.subplots_adjust(left=0.08, bottom=0.04, right=0.97, top=0.96) surge_afteraxes(cd) # # Surface # plotfigure = plotdata.new_plotfigure(name='Surface - Entire Domain', figno=fig_num_counter.get_counter()) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes surgeplot.add_surface_elevation(plotaxes, plot_type='contourf', contours=surface_contours, shrink=gulf_shrink) surgeplot.add_land(plotaxes, topo_min=-10.0, topo_max=5.0) # surge.plot.add_bathy_contours(plotaxes) if article: plotaxes.plotitem_dict['surface'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'surface', surface_ticks, surface_labels) plotaxes.plotitem_dict['surface'].amr_patchedges_show = [ 1, 1, 1, 1, 1, 1, 1, 1 ] # # Water Speed # plotfigure = plotdata.new_plotfigure(name='Currents - Entire Domain', figno=fig_num_counter.get_counter()) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes # Speed surgeplot.add_speed(plotaxes, plot_type='contourf', contours=speed_contours, shrink=gulf_shrink) if article: plotaxes.plotitem_dict['speed'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'speed', speed_ticks, speed_labels) # Land surgeplot.add_land(plotaxes) surgeplot.add_bathy_contours(plotaxes) # # Friction field # plotfigure = plotdata.new_plotfigure(name='Friction', figno=fig_num_counter.get_counter()) plotfigure.show = friction_data.variable_friction and True def friction_after_axes(cd): plt.subplots_adjust(left=0.08, bottom=0.04, right=0.97, top=0.96) plt.title(r"Manning's $n$ Coefficient") # surge_afteraxes(cd) plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits # plotaxes.title = "Manning's N Coefficient" plotaxes.afteraxes = friction_after_axes plotaxes.scaled = True surgeplot.add_friction(plotaxes, bounds=friction_bounds, shrink=0.9) plotaxes.plotitem_dict['friction'].amr_patchedges_show = [ 0, 0, 0, 0, 0, 0, 0 ] plotaxes.plotitem_dict['friction'].colorbar_label = "$n$" # ======================================================================== # LaTex Shelf # ======================================================================== latex_xlimits = [-97.5, -88.5] latex_ylimits = [27.5, 30.5] latex_shrink = 1.0 def latex_after_axes(cd): if article: plt.subplots_adjust(left=0.07, bottom=0.14, right=1.0, top=0.86) else: plt.subplots_adjust(right=1.0) surge_afteraxes(cd) # # Surface # plotfigure = plotdata.new_plotfigure(name='Surface - LaTex Shelf', figno=fig_num_counter.get_counter()) plotfigure.show = True if article: plotfigure.kwargs = {'figsize': (8, 2.7), 'facecolor': 'none'} else: plotfigure.kwargs = {'figsize': (9, 2.7), 'facecolor': 'none'} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.xlimits = latex_xlimits plotaxes.ylimits = latex_ylimits plotaxes.afteraxes = latex_after_axes surgeplot.add_surface_elevation(plotaxes, plot_type='contourf', contours=surface_contours, shrink=latex_shrink) if article: plotaxes.plotitem_dict['surface'].add_colorbar = False # plotaxes.afteraxes = lambda cd: article_latex_after_axes(cd, landfall) else: add_custom_colorbar_ticks_to_axes( plotaxes, 'surface', [-5, -2.5, 0, 2.5, 5.0], ["-5.0", "-2.5", " 0", " 2.5", " 5.0"]) # plotaxes.plotitem_dict['surface'].contour_cmap = plt.get_cmap('OrRd') # surge.plot.add_surface_elevation(plotaxes,plot_type='contour') surgeplot.add_land(plotaxes) # plotaxes.plotitem_dict['surface'].amr_patchedges_show = [1,1,1,0,0,0,0] plotaxes.plotitem_dict['surface'].amr_patchedges_show = [ 0, 0, 0, 0, 0, 0, 0 ] # plotaxes.plotitem_dict['land'].amr_patchedges_show = [1,1,1,0,0,0,0] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0, 0, 0, 0, 0, 0, 0] # Plot using jet and 0.0 to 5.0 to match figgen generated ADCIRC results # plotaxes.plotitem_dict['surface'].pcolor_cmin = 0.0 # plotaxes.plotitem_dict['surface'].pcolor_cmax = 5.0 # plotaxes.plotitem_dict['surface'].pcolor_cmap = plt.get_cmap('jet') # # Water Speed # plotfigure = plotdata.new_plotfigure(name='Currents - LaTex Shelf', figno=fig_num_counter.get_counter()) plotfigure.show = True if article: plotfigure.kwargs = {'figsize': (8, 2.7), 'facecolor': 'none'} else: plotfigure.kwargs = {'figsize': (9, 2.7), 'facecolor': 'none'} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents' plotaxes.scaled = True plotaxes.xlimits = latex_xlimits plotaxes.ylimits = latex_ylimits plotaxes.afteraxes = latex_after_axes surgeplot.add_speed(plotaxes, plot_type='contourf', contours=speed_contours, shrink=latex_shrink) if article: plotaxes.plotitem_dict['speed'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'speed', speed_ticks, speed_labels) # surge.plot.add_surface_elevation(plotaxes,plot_type='contour') surgeplot.add_land(plotaxes) # plotaxes.plotitem_dict['speed'].amr_patchedges_show = [1,1,0,0,0,0,0] # plotaxes.plotitem_dict['land'].amr_patchedges_show = [1,1,1,0,0,0,0] plotaxes.plotitem_dict['speed'].amr_patchedges_show = [0, 0, 0, 0, 0, 0, 0] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0, 0, 0, 0, 0, 0, 0] # ======================================================================== # Houston/Galveston # ======================================================================== houston_xlimits = [-(95.0 + 26.0 / 60.0), -(94.0 + 25.0 / 60.0)] houston_ylimits = [29.1, 29.0 + 55.0 / 60.0] houston_shrink = 0.9 def houston_after_axes(cd): if article: plt.subplots_adjust(left=0.05, bottom=0.07, right=0.99, top=0.92) else: plt.subplots_adjust(left=0.12, bottom=0.06, right=0.97, top=0.97) surge_afteraxes(cd) # surge.plot.gauge_locations(cd) # # Surface Elevations # plotfigure = plotdata.new_plotfigure(name='Surface - Houston/Galveston', figno=fig_num_counter.get_counter()) plotfigure.show = True # if article: # plotfigure.kwargs['figsize'] = # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.xlimits = houston_xlimits plotaxes.ylimits = houston_ylimits plotaxes.afteraxes = houston_after_axes surgeplot.add_surface_elevation(plotaxes, plot_type='contourf', contours=surface_contours, shrink=houston_shrink) if article: plotaxes.plotitem_dict['surface'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'surface', surface_ticks, surface_labels) surgeplot.add_land(plotaxes) plotaxes.plotitem_dict['surface'].amr_patchedges_show = [ 0, 0, 0, 0, 0, 0, 0 ] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0, 0, 0, 0, 0, 0, 0] # surge.plot.add_bathy_contours(plotaxes) # Plot using jet and 0.0 to 5.0 to match figgen generated ADCIRC results # plotaxes.plotitem_dict['surface'].pcolor_cmin = 0.0 # plotaxes.plotitem_dict['surface'].pcolor_cmax = 5.0 # plotaxes.plotitem_dict['surface'].pcolor_cmap = plt.get_cmap('jet') # # Water Speed # plotfigure = plotdata.new_plotfigure(name='Currents - Houston/Galveston', figno=fig_num_counter.get_counter()) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents' plotaxes.scaled = True plotaxes.xlimits = houston_xlimits plotaxes.ylimits = houston_ylimits plotaxes.afteraxes = houston_after_axes surgeplot.add_speed(plotaxes, plot_type='contourf', contours=speed_contours, shrink=houston_shrink) if article: plotaxes.plotitem_dict['speed'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'speed', speed_ticks, speed_labels) surgeplot.add_land(plotaxes) # surge.plot.add_bathy_contours(plotaxes) # plotaxes.plotitem_dict['speed'].amr_patchedges_show = [1,1,1,1,1,1,1,1] # plotaxes.plotitem_dict['land'].amr_patchedges_show = [1,1,1,1,1,1,1,1] plotaxes.plotitem_dict['speed'].amr_patchedges_show = [0, 0, 0, 0, 0, 0, 0] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0, 0, 0, 0, 0, 0, 0] # ========================== # Hurricane Forcing fields # ========================== # Pressure field plotfigure = plotdata.new_plotfigure(name='Pressure', figno=fig_num_counter.get_counter()) plotfigure.show = surge_data.pressure_forcing and True plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.title = "Pressure Field" plotaxes.afteraxes = gulf_after_axes plotaxes.scaled = True surgeplot.add_pressure(plotaxes, bounds=pressure_limits, shrink=gulf_shrink) surgeplot.add_land(plotaxes) # Wind field plotfigure = plotdata.new_plotfigure(name='Wind Speed', figno=fig_num_counter.get_counter()) plotfigure.show = surge_data.wind_forcing and True plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.title = "Wind Field" plotaxes.afteraxes = gulf_after_axes plotaxes.scaled = True surgeplot.add_wind(plotaxes, bounds=wind_limits, plot_type='pcolor', shrink=gulf_shrink) surgeplot.add_land(plotaxes) # ======================================================================== # Figures for gauges # ======================================================================== plotfigure = plotdata.new_plotfigure(name='Surface & topo', figno=300, \ type='each_gauge') plotfigure.show = True plotfigure.clf_each_gauge = True # plotfigure.kwargs['figsize'] = (16,10) def gauge_after_axes(cd): if cd.gaugeno in [1, 2, 3, 4]: axes = plt.gca() # # Add Kennedy gauge data # kennedy_gauge = kennedy_gauges[gauge_name_trans[cd.gaugeno]] # axes.plot(kennedy_gauge['t'] - seconds2days(date2seconds(gauge_landfall[0])), # kennedy_gauge['mean_water'] + kennedy_gauge['depth'], 'k-', # label='Gauge Data') # Add GeoClaw gauge data geoclaw_gauge = cd.gaugesoln axes.plot(seconds2days(geoclaw_gauge.t - date2seconds(gauge_landfall[1])), geoclaw_gauge.q[3, :] + gauge_surface_offset[0], 'b--', label="GeoClaw") # Add ADCIRC gauge data # ADCIRC_gauge = ADCIRC_gauges[kennedy_gauge['gauge_no']] # axes.plot(seconds2days(ADCIRC_gauge[:,0] - gauge_landfall[2]), # ADCIRC_gauge[:,1] + gauge_surface_offset[1], 'r-.', label="ADCIRC") # Fix up plot axes.set_title('Station %s' % cd.gaugeno) axes.set_xlabel('Days relative to landfall') axes.set_ylabel('Surface (m)') axes.set_xlim([-2, 1]) axes.set_ylim([-1, 5]) axes.set_xticks([-2, -1, 0, 1]) axes.set_xticklabels([r"$-2$", r"$-1$", r"$0$", r"$1$"]) axes.grid(True) axes.legend() plt.hold(False) # surge.plot.gauge_afteraxes(cd) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-2, 1] # plotaxes.xlabel = "Days from landfall" # plotaxes.ylabel = "Surface (m)" plotaxes.ylimits = [-1, 5] plotaxes.title = 'Surface' plotaxes.afteraxes = gauge_after_axes # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # ===================== # Gauge Location Plot # ===================== gauge_xlimits = [-95.5, -94] gauge_ylimits = [29.0, 30.0] gauge_location_shrink = 0.75 def gauge_after_axes(cd): plt.subplots_adjust(left=0.12, bottom=0.06, right=0.97, top=0.97) surge_afteraxes(cd) surgeplot.gauge_locations(cd, gaugenos=[1, 2, 3, 4]) plt.title("Gauge Locations") plotfigure = plotdata.new_plotfigure(name='Gauge Locations', figno=fig_num_counter.get_counter()) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.xlimits = gauge_xlimits plotaxes.ylimits = gauge_ylimits plotaxes.afteraxes = gauge_after_axes surgeplot.add_surface_elevation(plotaxes, plot_type='contourf', contours=surface_contours, shrink=gauge_location_shrink) # surge.plot.add_surface_elevation(plotaxes, plot_type="contourf") add_custom_colorbar_ticks_to_axes(plotaxes, 'surface', surface_ticks, surface_labels) surgeplot.add_land(plotaxes) # plotaxes.plotitem_dict['surface'].amr_patchedges_show = [0,0,0,0,0,0,0] # plotaxes.plotitem_dict['surface'].add_colorbar = False # plotaxes.plotitem_dict['surface'].pcolor_cmap = plt.get_cmap('jet') # plotaxes.plotitem_dict['surface'].pcolor_cmap = plt.get_cmap('gist_yarg') # plotaxes.plotitem_dict['surface'].pcolor_cmin = 0.0 # plotaxes.plotitem_dict['surface'].pcolor_cmax = 5.0 plotaxes.plotitem_dict['surface'].amr_patchedges_show = [ 0, 0, 0, 0, 0, 0, 0 ] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0, 0, 0, 0, 0, 0, 0] # ============================================================== # Debugging Plots, only really work if using interactive plots # ============================================================== # # Water Velocity Components # plotfigure = plotdata.new_plotfigure( name='Velocity Components - Entire Domain', figno=fig_num_counter.get_counter()) plotfigure.show = False # X-Component plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = "subplot(121)" plotaxes.title = 'Velocity, X-Component' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = surgeplot.water_u plotitem.pcolor_cmap = colormaps.make_colormap({ 1.0: 'r', 0.5: 'w', 0.0: 'b' }) plotitem.pcolor_cmin = -speed_limits[1] plotitem.pcolor_cmax = speed_limits[1] plotitem.colorbar_shrink = gulf_shrink plotitem.add_colorbar = True plotitem.amr_celledges_show = [0, 0, 0] plotitem.amr_patchedges_show = [1, 1, 1] surgeplot.add_land(plotaxes) # Y-Component plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = "subplot(122)" plotaxes.title = 'Velocity, Y-Component' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = surgeplot.water_v plotitem.pcolor_cmap = colormaps.make_colormap({ 1.0: 'r', 0.5: 'w', 0.0: 'b' }) plotitem.pcolor_cmin = -speed_limits[1] plotitem.pcolor_cmax = speed_limits[1] plotitem.colorbar_shrink = gulf_shrink plotitem.add_colorbar = True plotitem.amr_celledges_show = [0, 0, 0] plotitem.amr_patchedges_show = [1, 1, 1] surgeplot.add_land(plotaxes) # # Depth # plotfigure = plotdata.new_plotfigure(name='Depth - Entire Domain', figno=fig_num_counter.get_counter()) plotfigure.show = False # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'depth' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes plotitem = plotaxes.new_plotitem(plot_type='2d_imshow') plotitem.plot_var = 0 plotitem.imshow_cmap = colormaps.make_colormap({ 1.0: 'r', 0.5: 'w', 0.0: 'b' }) plotitem.imshow_cmin = 0 plotitem.imshow_cmax = 100 plotitem.colorbar_shrink = gulf_shrink plotitem.add_colorbar = True plotitem.amr_celledges_show = [0, 0, 0] plotitem.amr_patchedges_show = [1, 1, 1, 1, 1, 1, 1, 1, 1] # Surge field plotfigure = plotdata.new_plotfigure(name='Surge Field', figno=fig_num_counter.get_counter()) plotfigure.show = ((surge_data.wind_forcing or surge_data.pressure_forcing) and False) plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.title = "Storm Surge Source Term S" plotaxes.afteraxes = gulf_after_axes plotaxes.scaled = True plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = surgeplot.pressure_field + 1 plotitem.pcolor_cmap = plt.get_cmap('PuBu') plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 1e-3 plotitem.add_colorbar = True plotitem.colorbar_shrink = gulf_shrink plotitem.colorbar_label = "Source Strength" plotitem.amr_celledges_show = [0, 0, 0] plotitem.amr_patchedges_show = [1, 1, 1, 1, 1, 0, 0] surgeplot.add_land(plotaxes) plotfigure = plotdata.new_plotfigure(name='Friction/Coriolis Source', figno=fig_num_counter.get_counter()) plotfigure.show = False plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.title = "Friction/Coriolis Source" plotaxes.afteraxes = surge_afteraxes plotaxes.scaled = True plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = surgeplot.pressure_field + 2 plotitem.pcolor_cmap = plt.get_cmap('PuBu') plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 1e-3 plotitem.add_colorbar = True plotitem.colorbar_shrink = gulf_shrink plotitem.colorbar_label = "Source Strength" plotitem.amr_celledges_show = [0, 0, 0] plotitem.amr_patchedges_show = [1, 1, 1, 1, 1, 0, 0] surgeplot.add_land(plotaxes) #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: if article: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = [54, 60, 66, 72, 78, 84] # list of frames to print plotdata.print_gaugenos = [1, 2, 3, 4] # list of gauges to print plotdata.print_fignos = [4, 5, 6, 7, 10, 3, 300] # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = False # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? else: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = [1, 2, 3, 4] # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'ascii' # 'ascii' or 'binary' to match setrun.py # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True def fixup(current_data): import pylab addgauges(current_data) t = current_data.t t = t / 3600. # hours pylab.title('Surface at %4.2f hours' % t, fontsize=20) pylab.xticks(fontsize=15) pylab.yticks(fontsize=15) plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.2 plotitem.pcolor_cmax = 0.2 plotitem.add_colorbar = True plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 1 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [1,1,0] plotitem.patchedges_show = 1 plotaxes.xlimits = [-120,-60] plotaxes.ylimits = [-60,0] # add contour lines of bathy if desired: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.show = False plotitem.plot_var = geoplot.topo plotitem.contour_levels = linspace(-3000,-3000,1) plotitem.amr_contour_colors = ['y'] # color on each level plotitem.kwargs = {'linestyles':'solid','linewidths':2} plotitem.amr_contour_show = [1,0,0] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.show = False def gaugetopo(current_data): q = current_data.q h = q[0,:] eta = q[3,:] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = 'g-' def add_zeroline(current_data): from pylab import plot, legend, xticks, floor, axis, xlabel t = current_data.t gaugeno = current_data.gaugeno if gaugeno == 32412: try: plot(TG32412[:,0], TG32412[:,1], 'r') legend(['GeoClaw','Obs'],loc='lower right') except: pass axis((0,t.max(),-0.3,0.3)) plot(t, 0*t, 'k') n = int(floor(t.max()/3600.) + 2) xticks([3600*i for i in range(n)], ['%i' % i for i in range(n)]) xlabel('time (hours)') plotaxes.afteraxes = add_zeroline #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) def title_hours(current_data): from pylab import title, mod t = current_data.t hours = int(t/3600.) tmin = mod(t,3600.) min = int(tmin/60.) tsec = mod(tmin,60.) sec = int(mod(tmin,60.)) if t < 120: timestr = '%s seconds' % t else: timestr = '%s:%s:%s' % (hours,str(min).zfill(2),str(sec).zfill(2)) title('%s after earthquake' % timestr) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) plotfigure.kwargs = {'figsize':(8,5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True def fixup(current_data): import pylab addgauges(current_data) t = current_data.t t = t / 3600. # hours pylab.title('Surface at %4.2f hours' % t, fontsize=20) pylab.grid(True) plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = colormaps.red_white_blue #geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.03 plotitem.pcolor_cmax = 0.03 plotitem.add_colorbar = False plotitem.colorbar_shrink = 0.5 plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 0 plotaxes.xlimits = [-240,-66] plotaxes.ylimits = [-47,65] #----------------------------------------- # Figure for adjoint #----------------------------------------- # Set up for axes in this figure: plotfigure = plotdata.new_plotfigure(name='Adjoint ', figno=20) plotfigure.kwargs = {'figsize': (8,5)} plotaxes = plotfigure.new_plotaxes('adjoint') plotaxes.scaled = True plotaxes.title = 'Adjoint flag' def fixup(current_data): addgauges(current_data) plotaxes.afteraxes = fixup adj_flag_tol = 0.000001 def masked_inner_product(current_data): from numpy import ma q = current_data.q soln = ma.masked_where(q[4,:,:] < adj_flag_tol, q[4,:,:]) return soln def masked_regions(current_data): from numpy import ma q = current_data.q soln = ma.masked_where(q[4,:,:] < 1e9, q[4,:,:]) return soln plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 4 #masked_inner_product plotitem.pcolor_cmap = colormaps.white_red plotitem.pcolor_cmin = adj_flag_tol plotitem.pcolor_cmax = 100*adj_flag_tol plotitem.add_colorbar = False plotitem.amr_celledges_show = [0] plotitem.amr_data_show = [1,1,0,0,0,0,0,0,0] plotitem.patchedges_show = 0 #plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = masked_regions #plotitem.pcolor_cmap = colormaps.white_blue #plotitem.pcolor_cmin = 9e9 #plotitem.pcolor_cmax = 1.1e10 #plotitem.add_colorbar = False #plotitem.amr_celledges_show = [0] #plotitem.amr_data_show = [1,1,0,0] #plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 0 plotaxes.xlimits = [-240,-66] plotaxes.ylimits = [-47,65] #----------------------------------------- # Figure for levels #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Grid patches', figno=10) plotfigure.kwargs = {'figsize': (8,5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Grid patches' plotaxes.scaled = True def aa_patches(current_data): from pylab import ticklabel_format, xticks, gca, cos, pi, yticks ticklabel_format(format='plain',useOffset=False) xticks([180, 200, 220, 240], rotation=20, fontsize = 28) yticks(fontsize = 28) a = gca() a.set_aspect(1./cos(41.75*pi/180.)) def fixup(current_data): import pylab addgauges(current_data) t = current_data.t t = t / 3600. # hours pylab.title('Grid patches at %4.2f hours' % t, fontsize=20) pylab.grid(True) plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_patch') plotitem.amr_patch_bgcolor = [[1,1,1], [0.8,0.8,0.8], [0.8,1,0.8], [1,.7,.7],[0.6,0.6,1]] plotitem.amr_patchedges_color = ['k','k','g','r','b'] plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0,1,1,1,1] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] plotaxes.xlimits = [-240,-66] plotaxes.ylimits = [-47,65] #----------------------------------------- # Zoom #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Crescent City Agrid', figno=1) #plotfigure.show = False plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.1 plotitem.pcolor_cmax = 0.1 plotitem.add_colorbar = True plotitem.colorbar_shrink = 0.5 plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 0 #plotaxes.xlimits = [-161.,-154.0333] #plotaxes.ylimits = [18.0317,22.9983] plotaxes.xlimits = [-126.995,-123.535] plotaxes.ylimits = [40.515,44.495] #----------------------------------------- # Zoom2 #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Crescent City Zoom', figno=2) #plotfigure.show = False plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.afteraxes = fixup # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.1 plotitem.pcolor_cmax = 0.1 plotitem.add_colorbar = True plotitem.colorbar_shrink = 0.5 plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 0 plotaxes.xlimits = [-124.2345,-124.1434] plotaxes.ylimits = [41.7168,41.7829] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface at gauges', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.show = False def gaugetopo(current_data): q = current_data.q h = q[0,:] eta = q[3,:] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = 'g-' def add_zeroline(current_data): from pylab import plot, legend, xticks, floor, axis, xlabel, \ xlim, ylim t = current_data.t gaugeno = current_data.gaugeno plot(t, 0*t, 'k') n = int(floor(t.max()/3600.) + 2) xticks([3600*i for i in range(n)], ['%i' % i for i in range(n)]) xlabel('time (hours)') xlim(14.5*3600,26.0*3600) ylim(-1.5,1.5) plotaxes.afteraxes = add_zeroline #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data def set_drytol(current_data): # The drytol parameter is used in masking land and water and # affects what color map is used for cells with small water depth h. # The cell will be plotted as dry if h < drytol. # The best value to use often depends on the application and can # be set here (measured in meters): current_data.user["drytol"] = 1.e-3 plotdata.beforeframe = set_drytol #----------------------------------------- # Figure for pcolor plot #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='pcolor', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.surface plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.1 plotitem.pcolor_cmax = 0.1 plotitem.add_colorbar = True plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 1 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 1 plotaxes.xlimits = [-2, 2] plotaxes.ylimits = [-2, 2] # Add contour lines of bathymetry: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = linspace(-.1, 0.5, 20) plotitem.amr_contour_colors = ['k'] # color on each level plotitem.kwargs = {'linestyles': 'solid'} plotitem.amr_contour_show = [1] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True #----------------------------------------- # Figure for cross section #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='cross-section', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-2, 2] plotaxes.ylimits = [-0.15, 0.3] plotaxes.title = 'Cross section at y=0' def plot_topo_xsec(current_data): from pylab import plot, hold, cos, sin, where, legend, nan t = current_data.t hold(True) x = linspace(-2, 2, 201) y = 0. B = h0 * (x**2 + y**2) / a**2 - h0 eta1 = sigma * h0 / a**2 * (2. * x * cos(omega * t) + 2. * y * sin(omega * t) - sigma) etatrue = where(eta1 > B, eta1, nan) plot(x, etatrue, 'r', label="true solution", linewidth=2) plot(x, B, 'g', label="bathymetry") ## plot([0],[-1],'kx',label="Level 1") # shouldn't show up in plots, ## plot([0],[-1],'bo',label="Level 2") # but will produced desired legend plot([0], [-1], 'bo', label="Computed") ## need to fix plotstyle legend() hold(False) plotaxes.afteraxes = plot_topo_xsec plotitem = plotaxes.new_plotitem(plot_type='1d_from_2d_data') def xsec(current_data): # Return x value and surface eta at this point, along y=0 from pylab import find, ravel x = current_data.x y = current_data.y dy = current_data.dy q = current_data.q ij = find((y <= dy / 2.) & (y > -dy / 2.)) x_slice = ravel(x)[ij] eta_slice = ravel(q[3, :, :])[ij] return x_slice, eta_slice plotitem.map_2d_to_1d = xsec plotitem.plotstyle = 'kx' ## need to be able to set amr_plotstyle plotitem.kwargs = {'markersize': 3} plotitem.amr_show = [1] # plot on all levels #----------------------------------------- # Figure for grids alone #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='grids', figno=2) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-2, 2] plotaxes.ylimits = [-2, 2] plotaxes.title = 'grids' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_patch') plotitem.amr_patch_bgcolor = ['#ffeeee', '#eeeeff', '#eeffee'] plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = [] # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from clawpack.visclaw import colormaps, geoplot plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'ascii' # Format of output # plotdata.format = 'netcdf' def set_drytol(current_data): # The drytol parameter is used in masking land and water and # affects what color map is used for cells with small water depth h. # The cell will be plotted as dry if h < drytol. # The best value to use often depends on the application and can # be set here (measured in meters): current_data.user['drytol'] = 1.e-2 plotdata.beforeframe = set_drytol #----------------------------------------- # Figure for pcolor plot #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='pcolor', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.9 plotitem.pcolor_cmax = 0.9 plotitem.add_colorbar = True plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [1, 1, 0] plotaxes.xlimits = [-100, 100] plotaxes.ylimits = [-100, 100] #----------------------------------------- # Figure for zoom #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Zoom', figno=10) #plotfigure.show = False plotfigure.kwargs = {'figsize': [12, 7]} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('diag zoom') plotaxes.axescmd = 'axes([0.0,0.1,0.6,0.6])' plotaxes.title = 'On diagonal' plotaxes.scaled = True plotaxes.xlimits = [55, 66] plotaxes.ylimits = [55, 66] def addgauges(current_data): from clawpack.visclaw import gaugetools gaugenos = range(101, 110) # on diagonal gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos=gaugenos, format_string='ko', add_labels=True) plotaxes.afteraxes = addgauges # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.9 plotitem.pcolor_cmax = 0.9 plotitem.add_colorbar = True plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [1, 1, 0] # Add contour lines of bathymetry: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = arange(-10., 0., 1.) plotitem.amr_contour_colors = ['k'] # color on each level plotitem.kwargs = {'linestyles': 'solid'} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # Add contour lines of topography: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = arange(0., 11., 1.) plotitem.amr_contour_colors = ['g'] # color on each level plotitem.kwargs = {'linestyles': 'solid'} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # Add dashed contour line for shoreline plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = geoplot.topo plotitem.contour_levels = [0.] plotitem.amr_contour_colors = ['k'] # color on each level plotitem.kwargs = {'linestyles': 'dashed'} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True #----------------------------------------- # Figure for zoom near axis #----------------------------------------- #plotfigure = plotdata.new_plotfigure(name='Zoom2', figno=11) # now included in same figure as zoom on diagonal # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('x zoom') plotaxes.show = True plotaxes.axescmd = 'axes([0.5,0.1,0.6,0.6])' plotaxes.title = 'On x-axis' plotaxes.scaled = True plotaxes.xlimits = [82, 93] plotaxes.ylimits = [-5, 6] def addgauges(current_data): from clawpack.visclaw import gaugetools gaugenos = range(1, 10) # on x-axis gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos=gaugenos, format_string='ko', add_labels=True) plotaxes.afteraxes = addgauges # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.9 plotitem.pcolor_cmax = 0.9 plotitem.add_colorbar = True plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [1, 1, 0] # Add contour lines of bathymetry: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = arange(-10., 0., 1.) plotitem.amr_contour_colors = ['k'] # color on each level plotitem.kwargs = {'linestyles': 'solid'} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # Add contour lines of topography: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = arange(0., 11., 1.) plotitem.amr_contour_colors = ['g'] # color on each level plotitem.kwargs = {'linestyles': 'solid'} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True # Add dashed contour line for shoreline plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = geoplot.topo plotitem.contour_levels = [0.] plotitem.amr_contour_colors = ['k'] # color on each level plotitem.kwargs = {'linestyles': 'dashed'} plotitem.amr_contour_show = [0, 0, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.show = True #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface & topo', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = [-2.0, 2.0] plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') def gaugetopo(current_data): q = current_data.q h = q[0, :] eta = q[3, :] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = 'g-' def add_zeroline(current_data): from pylab import plot, legend t = current_data.t legend(('surface', 'topography'), loc='lower left') plot(t, 0 * t, 'k') plotaxes.afteraxes = add_zeroline #----------------------------------------- # Figure for patches alone #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='patches', figno=2) plotfigure.show = False # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1] plotaxes.ylimits = [0, 1] plotaxes.title = 'patches' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_patch') plotitem.amr_patch_bgcolor = ['#ffeeee', '#eeeeff', '#eeffee'] plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] #----------------------------------------- # Scatter plot of surface for radially symmetric #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Scatter', figno=200) plotfigure.show = False # Note: will not look very good unless more of domain is refined # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0., 100.] plotaxes.ylimits = [-1.5, 2.] plotaxes.title = 'Scatter plot of surface' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_from_2d_data') plotitem.plot_var = geoplot.surface def q_vs_radius(current_data): from numpy import sqrt x = current_data.x y = current_data.y r = sqrt(x**2 + y**2) q = current_data.var return r, q plotitem.map_2d_to_1d = q_vs_radius plotitem.plotstyle = 'o' plotitem.amr_color = ['b', 'r', 'g'] plotaxes.afteraxes = "import pylab; pylab.legend(['Level 1','Level 2'])" #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = [4, 5, 104, 105] # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once plotdata.html_movie_width = 800 # width for js movie return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data def draw_interface_add_legend(current_data): from pylab import plot from numpy import abs, where, log10, exp, sin, linspace #plot([0., 0.], [-1000., 1000.], 'k--') try: from clawpack.visclaw import legend_tools labels = [ 'Level 1', 'Level 2', 'Level 3', 'Level 4', 'Level 5', 'Level 6', 'Level 7', 'Level 8', 'Level 9', 'Level 10' ] legend_tools.add_legend(labels, colors=amr_color, markers=amr_marker, linestyles=amr_linestyle, loc='upper left') except: pass # exact solution: t = current_data.t xx = linspace(-12, 12, 10000) #xpct = xx + t #xmct = xx - t #p_true = ar*exp(-betar*(xpct-5)**2) * sin(freqr*xpct) + \ # al*exp(-betal*(xmct+5)**2) * sin(freql*xmct) p_true = p_true_fcn(xx, t) plot(xx, p_true, 'k') def draw_interface_add_legend_innerprod(current_data): from pylab import plot #plot([0., 0.], [-1000., 1000.], 'k--') try: from clawpack.visclaw import legend_tools labels = ['Level 3', 'Level 4'] legend_tools.add_legend(labels, colors=['r', 'c'], markers=['o', '^'], linestyles=['', ''], loc='upper left') except: pass def add_grid(current_data): from pylab import grid grid(True) def color_by_level(current_data): from pylab import vstack, contourf, plot, ones, arange, colorbar fs = current_data.framesoln pout, level = gridtools1.grid_output_1d(fs, 0, xout, return_level=True) Xout = vstack((xout, xout)) Yout = vstack((-1.1 * ones(xout.shape), 1.1 * ones(xout.shape))) L = vstack((level, level)) contourf(Xout, Yout, L, v_levels, colors=c_levels) cb = colorbar(ticks=range(1, maxlevels + 1)) cb.set_label('AMR Level') plot(xout, pout, 'k') #import pdb; pdb.set_trace() def error_color_by_level(current_data): from pylab import vstack,contourf,plot,ones,arange,colorbar,\ ylim,semilogy fs = current_data.framesoln t = current_data.t pout, level = gridtools1.grid_output_1d(fs, 0, xout, return_level=True) err = abs(pout - p_true_fcn(xout, t)) Xout = vstack((xout, xout)) Yout = vstack((ylimits_error[0] * ones(xout.shape), ylimits_error[1] * ones(xout.shape))) L = vstack((level, level)) contourf(Xout, Yout, L, v_levels, colors=c_levels) cb = colorbar(ticks=range(1, maxlevels + 1)) cb.set_label('AMR Level') semilogy(xout, err, 'k') #semilogy(xout,level,'k') if tolerance is not None: plot(xout, tolerance * ones(xout.shape), 'r--') # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='Pressure and Velocity', figno=1) plotfigure.kwargs = {'figsize': (8, 8)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,1)' # top figure plotaxes.xlimits = xlimits plotaxes.ylimits = [-1.1, 1.1] plotaxes.title = 'Pressure' plotaxes.afteraxes = draw_interface_add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.amr_color = amr_color plotitem.amr_plotstyle = amr_plotstyle plotitem.amr_data_show = [1, 1, 1] plotitem.amr_kwargs = [{ 'markersize': 5 }, { 'markersize': 4 }, { 'markersize': 3 }] # Figure for error # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,2)' # bottom figure plotaxes.xlimits = xlimits plotaxes.ylimits = [1e-10, 1] plotaxes.title = 'abs(Error)' plotaxes.afteraxes = add_grid # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_semilogy') plotitem.plot_var = abs_error plotitem.amr_color = amr_color plotitem.amr_plotstyle = amr_plotstyle plotitem.amr_data_show = [1, 1, 1, 1, 1] plotfigure = plotdata.new_plotfigure(name='Pressure and Error', figno=2) plotfigure.show = False plotfigure.kwargs = {'figsize': (12, 8)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,1)' # top figure plotaxes.xlimits = xlimits plotaxes.ylimits = [-1.1, 1.1] plotaxes.title = 'Pressure' plotaxes.beforeaxes = color_by_level plotaxes.afteraxes = add_grid #draw_interface_add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.show = False plotitem.plot_var = 0 plotitem.amr_color = amr_color plotitem.amr_plotstyle = amr_plotstyle plotitem.amr_data_show = [1, 1, 1] plotitem.amr_kwargs = [{ 'markersize': 5 }, { 'markersize': 4 }, { 'markersize': 3 }] # Figure for error # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,2)' # bottom figure plotaxes.xlimits = xlimits plotaxes.ylimits = ylimits_error plotaxes.title = 'abs(Error)' plotaxes.beforeaxes = error_color_by_level plotaxes.afteraxes = add_grid # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_semilogy') plotitem.show = False plotitem.plot_var = abs_error plotitem.amr_color = amr_color plotitem.amr_plotstyle = amr_plotstyle plotitem.amr_data_show = [1, 1, 1, 1, 1] def plot_finest(current_data): from pylab import vstack,contourf,plot,ones,arange,colorbar,\ xlim,ylim,semilogy,figure,title,clf,subplot,show,draw,\ tight_layout,ylabel,grid fs = current_data.framesoln t = current_data.t print('+++ plot_finest at t = %.4f' % t) pout, level = gridtools1.grid_output_1d(fs, 0, xout, return_level=True) err = abs(pout - p_true_fcn(xout, t)) Xout = vstack((xout, xout)) L = vstack((level, level)) figure(3, figsize=(12, 8)) clf() subplot(311) Yout = vstack((-1.1 * ones(xout.shape), 1.1 * ones(xout.shape))) contourf(Xout, Yout, L, v_levels, colors=c_levels) cb = colorbar(ticks=range(1, maxlevels + 1)) cb.set_label('AMR Level') plot(xout, pout, 'k') xlim(xlimits) ylim(-1.1, 1.1) title('Pressure at t = %.4f' % t) subplot(312) Yout = vstack((ylimits_error[0] * ones(xout.shape), ylimits_error[1] * ones(xout.shape))) contourf(Xout, Yout, L, v_levels, colors=c_levels) cb = colorbar(ticks=range(1, maxlevels + 1)) cb.set_label('AMR Level') semilogy(xout, err, 'k') if tolerance is not None: plot(xout, tolerance * ones(xout.shape), 'r--') xlim(xlimits) ylim(ylimits_error) ylabel('abs(error)') grid(True) subplot(313) Yout = vstack( (0 * ones(xout.shape), (maxlevels + 1) * ones(xout.shape))) contourf(Xout, Yout, L, v_levels, colors=c_levels) cb = colorbar(ticks=range(1, maxlevels + 1)) cb.set_label('AMR Level') plot(xout, level, 'k') xlim(xlimits) ylim(0, maxlevels + 1) ylabel('AMR Level') tight_layout() grid(True) draw() plotfigure = plotdata.new_plotfigure(name='finest', figno=3) plotfigure.kwargs = {'figsize': (12, 8)} plotdata.afterframe = plot_finest # Figure for inner product, q[2] plotfigure = plotdata.new_plotfigure(name='Inner Product', figno=10) plotfigure.show = False # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-12, 12] plotaxes.ylimits = [ -15, 1 ] # use when taking inner product with forward solution #plotaxes.ylimits = [-0.01,0.02] # use when taking inner product with Richardson error plotaxes.title = 'log10(Inner Product)' plotaxes.afteraxes = draw_interface_add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = plot_innerprod plotitem.amr_color = amr_color plotitem.amr_plotstyle = amr_plotstyle plotitem.amr_data_show = [0, 1, 1, 1, 0] plotitem.show = True # show on plot? # Figure for abs(error) plotfigure = plotdata.new_plotfigure(name='Error', figno=11) plotfigure.show = False # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-12, 12] plotaxes.ylimits = [-15, 1] plotaxes.title = 'log10(Error)' plotaxes.afteraxes = draw_interface_add_legend # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 0 #plot_error plotitem.amr_color = amr_color plotitem.amr_plotstyle = amr_plotstyle plotitem.amr_data_show = [1, 1, 1, 1, 1] plotitem.show = True # show on plot? #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True plotfigure.kwargs = {'figsize': (10, 10)} plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(211)' plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Pressure' plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(212)' plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Velocity' plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 1 plotitem.plotstyle = 'b-' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from clawpack.visclaw import colormaps plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = "ascii" # Figure for pcolor plot plotfigure = plotdata.new_plotfigure(name='q[0]', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q[0]' plotaxes.scaled = True plotaxes.afteraxes = addgauges # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 0 plotitem.pcolor_cmap = colormaps.red_yellow_blue plotitem.pcolor_cmin = -1. plotitem.pcolor_cmax = 1. plotitem.add_colorbar = True plotitem.celledges_show = 0 plotitem.patchedges_show = 0 plotitem.MappedGrid = True plotitem.mapc2p = mapc2p plotitem.show = True # show on plot? # Figure for contour plot plotfigure = plotdata.new_plotfigure(name='contour', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q[0]' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = 0 plotitem.contour_levels = np.linspace(-0.9, 0.9, 10) plotitem.amr_contour_colors = ['k','b'] plotitem.patchedges_show = 1 plotitem.MappedGrid = True plotitem.mapc2p = mapc2p plotitem.show = True # show on plot? # Figure for grids plotfigure = plotdata.new_plotfigure(name='grids', figno=2) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'grids' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_patch') plotitem.MappedGrid = True plotitem.mapc2p = mapc2p plotitem.amr_celledges_show = [1,1,0] plotitem.amr_patchedges_show = [1] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q' # Plot q as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.html_movie = 'JSAnimation' # new style, or "4.x" for old style plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ # Reversing time in adjoint output setadjoint() if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' # 'ascii', 'binary', 'netcdf' def fix_plot(current_data): from pylab import plot from pylab import xticks,yticks,xlabel,ylabel,savefig,ylim,title t = current_data.t plot([0., 0.], [-1000., 1000.], 'k--') title('Adjoint at t = %5.3f seconds' % t, fontsize=26) yticks(fontsize=23) xticks(fontsize=23) # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='Adjoint', figno=1) plotfigure.kwargs = {'figsize': (10,3.5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-12,12] plotaxes.ylimits = [-0.5,4.3] plotaxes.title = 'Adjoint' plotaxes.afteraxes = fix_plot # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.amr_color = 'b' plotitem.amr_plotstyle = 'o' plotitem.amr_kwargs = [{'linewidth':2}] plotitem.amr_kwargs = [{'markersize':4}] plotitem.outdir = '../../adjoint/_outputReversed' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from clawpack.visclaw import colormaps, geoplot plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'ascii' # Format of output print('Reading all gauges...') gauge_solutions = particle_tools.read_gauges(gaugenos='all', outdir=plotdata.outdir) gaugenos_lagrangian = [k for k in gauge_solutions.keys() \ if gauge_solutions[k].gtype=='lagrangian'] gaugenos_stationary = [k for k in gauge_solutions.keys() \ if gauge_solutions[k].gtype=='stationary'] print('+++ gaugenos_lagrangian: ', gaugenos_lagrangian) def add_particles(current_data): t = current_data.t # plot recent path: t_path_length = 10. # length of path trailing particle kwargs_plot_path = {'linewidth': 1, 'color': 'k'} particle_tools.plot_paths(gauge_solutions, t1=t - t_path_length, t2=t, gaugenos=gaugenos_lagrangian, kwargs_plot=kwargs_plot_path) # plot current location: kwargs_plot_point = {'marker': 'o', 'markersize': 3, 'color': 'k'} particle_tools.plot_particles(gauge_solutions, t, gaugenos=gaugenos_lagrangian, kwargs_plot=kwargs_plot_point) # plot any stationary gauges: gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos=gaugenos_stationary, format_string='kx', add_labels=False) kwargs = {'loc': 'upper left'} legend_tools.add_legend(['Lagrangian particle', 'Stationary gauge'], linestyles=['', ''], markers=['o', 'x'], loc='lower right', framealpha=0.5, fontsize=10) def speed(current_data): from pylab import sqrt, where, zeros from numpy.ma import masked_where, allequal q = current_data.q h = q[0, :, :] hs = sqrt(q[1, :, :]**2 + q[2, :, :]**2) s = where(h > 1e-3, hs / h, 0.) s = masked_where(h < 1e-3, s) s = s * 1.94384 # convert to knots return s speed_cmap = colormaps.make_colormap({ 0: [0, 1, 1], 0.5: [1, 1, 0], 1: [1, 0, 0] }) #----------------------------------------- # Figure for pcolor plot #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='pcolor', figno=0) plotfigure.kwargs = {'figsize': (9, 4)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Speed' plotaxes.scaled = True plotaxes.xlimits = [0, 80] plotaxes.ylimits = [0, 50] plotaxes.afteraxes = add_particles # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface #plotitem.plot_var = geoplot.surface_or_depth plotitem.plot_var = speed #plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmap = speed_cmap plotitem.pcolor_cmin = 0. plotitem.pcolor_cmax = 20 plotitem.add_colorbar = True plotitem.colorbar_label = 'knots' plotitem.amr_celledges_show = [0, 0, 0] plotitem.amr_patchedges_show = [1] plotitem.amr_patchedges_color = ['m', 'g', 'w'] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.show = False plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] # Add contour lines of topography: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.show = False plotitem.plot_var = geoplot.topo from numpy import arange, linspace plotitem.contour_levels = arange(-75, 75, 10) #plotitem.contour_nlevels = 10 plotitem.amr_contour_colors = ['g'] # color on each level plotitem.kwargs = {'linestyles': 'solid'} plotitem.amr_contour_show = [1, 1, 1] # show contours only on finest level plotitem.celledges_show = 0 plotitem.patchedges_show = 0 #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface & topo', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = [-100, 100] plotaxes.title = 'Surface' # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # Plot topo as green curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') def gaugetopo(current_data): q = current_data.q h = q[0, :] eta = q[3, :] topo = eta - h return topo plotitem.plot_var = gaugetopo plotitem.plotstyle = 'g-' def add_zeroline(current_data): from pylab import plot, legend t = current_data.t legend(('surface', 'topography'), loc='lower left') plot(t, 0 * t, 'k') plotaxes.afteraxes = add_zeroline #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = range(40) plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once plotdata.html_movie_width = 700 # width used in JSAnimation return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' # 'ascii', 'binary', 'netcdf' # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) def timeformat(t): from numpy import mod hours = int(t / 3600.) tmin = mod(t, 3600.) min = int(tmin / 60.) sec = int(mod(tmin, 60.)) timestr = '%s:%s:%s' % (hours, str(min).zfill(2), str(sec).zfill(2)) return timestr def title_hours(current_data): from pylab import title t = current_data.t timestr = timeformat(t) title('Adjoint time %s before time of interest' % timestr) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Adjoint' plotaxes.scaled = True plotaxes.afteraxes = title_hours # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = -0.005 plotitem.pcolor_cmax = 0.005 plotitem.add_colorbar = True plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 100.0 plotitem.add_colorbar = False plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 plotaxes.xlimits = [-120, -60] plotaxes.ylimits = [-60, 0] # add contour lines of bathy if desired: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.show = False plotitem.plot_var = geoplot.topo plotitem.contour_levels = linspace(-3000, -3000, 1) plotitem.amr_contour_colors = ['y'] # color on each level plotitem.kwargs = {'linestyles': 'solid', 'linewidths': 2} plotitem.amr_contour_show = [1, 0, 0] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace import math if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data def speed(current_data): from numpy import ma, where, sqrt, log10 drytol = 1e-3 q = current_data.q h = q[0, :, :] hu = q[1, :, :] hv = q[2, :, :] u = where(h > 0.0, hu / h, 0.) v = where(h > 0.0, hv / h, 0.) speed = sqrt(u**2 + v**2) return speed def stress(current_data): from numpy import ma, where, sqrt, log10 q = current_data.q h = q[0, :, :] hu = q[1, :, :] hv = q[2, :, :] u = where(h > 0.0, hu / h, 0.) v = where(h > 0.0, hv / h, 0.) speed = np.sqrt(u**2 + v**2) #Speed calc, same as above n = 0.06 #Manning's n g = 9.8 #gravity cf = where( h > 0.0, (g * n**2) / (h**(1. / 3)), 0. ) #calculate friction coefficient, DONT FORGET THE F*****G PERIOD YOU IDIOT (mike) stress = 1000 * cf * (speed**2) return stress #####----------------------------------------- # Tuting-ish(depth) arrives here in Frame 16, t = 1.44e04 #----------------------------------------- # plotfigure = plotdata.new_plotfigure(name='Tutingish_depth', figno=30) plotfigure.show = False plotfigure.kwargs = {'figsize': [15, 15]} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('Depth') #plotaxes.title = 'Water Surface' plotaxes.scaled = True plotaxes.xlimits = [94.65, 95.0] plotaxes.ylimits = [28.6, 29.05] # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.depth #variable to plot plotitem.pcolor_cmap = geoplot.custom_river plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 250 plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land #plotitem.pcolor_cmap = geoplot.blank plotitem.pcolor_cmap = geoplot.bw_colormap plotitem.pcolor_cmin = 500.0 plotitem.pcolor_cmax = 3000.0 #plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] #plotaxes.afteraxes = addgauges #####----------------------------------------- # Tuting-ish (speed) #----------------------------------------- # plotfigure = plotdata.new_plotfigure(name='Tutingish_speed', figno=31) plotfigure.show = False plotfigure.kwargs = {'figsize': [15, 15]} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('Speed') #plotaxes.title = 'Water Surface' plotaxes.scaled = True plotaxes.xlimits = [94.65, 95.0] plotaxes.ylimits = [28.6, 29.05] # speed plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = speed plotitem.pcolor_cmap = geoplot.custom_river plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 45 plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land #plotitem.pcolor_cmap = geoplot.blank plotitem.pcolor_cmap = geoplot.bw_colormap plotitem.pcolor_cmin = 500.0 plotitem.pcolor_cmax = 3000.0 #plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] #plotaxes.afteraxes = addgauges #####----------------------------------------- # Tuting-ish (stress) #----------------------------------------- # plotfigure = plotdata.new_plotfigure(name='Tutingish_stress', figno=32) plotfigure.show = False plotfigure.kwargs = {'figsize': [15, 15]} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('Stress') #plotaxes.title = 'Water Surface' plotaxes.scaled = True plotaxes.xlimits = [94.65, 95.0] plotaxes.ylimits = [28.6, 29.05] # stress plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = stress plotitem.pcolor_cmap = geoplot.custom_river plotitem.pcolor_cmin = 0 plotitem.pcolor_cmax = 7000 #make this reasonable max stress plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land #plotitem.pcolor_cmap = geoplot.blank plotitem.pcolor_cmap = geoplot.bw_colormap plotitem.pcolor_cmin = 500 plotitem.pcolor_cmax = 3000.0 #plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] #plotaxes.afteraxes = addgauges #----------------------------------------------------- #####----------------------------------------- # Tuting zoomed (depth) arrives here in Frame 16, t = 1.44e04 #----------------------------------------- # plotfigure = plotdata.new_plotfigure(name='Tuting_depth', figno=33) plotfigure.show = False plotfigure.kwargs = {'figsize': [15, 15]} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('Depth') #plotaxes.title = 'Water Surface' plotaxes.scaled = True plotaxes.xlimits = [94.85, 95.0] plotaxes.ylimits = [28.9, 29.05] # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.depth #variable to plot plotitem.pcolor_cmap = geoplot.custom_river plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 250 plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land #plotitem.pcolor_cmap = geoplot.blank plotitem.pcolor_cmap = geoplot.bw_colormap plotitem.pcolor_cmin = 500.0 plotitem.pcolor_cmax = 3000.0 #plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] #plotaxes.afteraxes = addgauges #####----------------------------------------- # Tuting zoomed (speed) #----------------------------------------- # plotfigure = plotdata.new_plotfigure(name='Tuting_speed', figno=34) plotfigure.show = True plotfigure.kwargs = {'figsize': [15, 15]} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('Speed') #plotaxes.title = 'Water Surface' plotaxes.scaled = True plotaxes.xlimits = [94.85, 95.0] plotaxes.ylimits = [28.9, 29.05] # speed plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = speed plotitem.pcolor_cmap = geoplot.custom_river plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 20 plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land #plotitem.pcolor_cmap = geoplot.blank plotitem.pcolor_cmap = geoplot.bw_colormap plotitem.pcolor_cmin = 500.0 plotitem.pcolor_cmax = 3000.0 #plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] #plotaxes.afteraxes = addgauges #####----------------------------------------- # Tuting zoomed (stress) #----------------------------------------- # plotfigure = plotdata.new_plotfigure(name='Tuting_stress', figno=35) plotfigure.show = False plotfigure.kwargs = {'figsize': [15, 15]} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('Stress') #plotaxes.title = 'Water Surface' plotaxes.scaled = True plotaxes.xlimits = [94.85, 95.0] plotaxes.ylimits = [28.9, 29.05] # stress plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = stress plotitem.pcolor_cmap = geoplot.custom_river plotitem.pcolor_cmin = 0 plotitem.pcolor_cmax = 2000 #make this reasonable max stress plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land #plotitem.pcolor_cmap = geoplot.blank plotitem.pcolor_cmap = geoplot.bw_colormap plotitem.pcolor_cmin = 500 plotitem.pcolor_cmax = 3000.0 #plotitem.add_colorbar = True #turn off for making movies plotitem.amr_celledges_show = [0] #plotaxes.afteraxes = addgauges #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format #plotdata.print_framenos = np.arange(0,5,1) # list of frames to print plotdata.print_framenos = [15, 16, 17] #frame is a timestep, so this is the way #plotdata.print_gaugenos = [1,2,3,4] # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = False # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = False # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure for pcolor plot plotfigure = plotdata.new_plotfigure(name='pcolor', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1] plotaxes.ylimits = [0, 1] plotaxes.title = 'Solution' plotaxes.scaled = True # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 0 plotitem.pcolor_cmap = colormaps.yellow_red_blue plotitem.pcolor_cmin = 0.1 plotitem.pcolor_cmax = 1. plotitem.add_colorbar = True plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0] # Figure for contour plot plotfigure = plotdata.new_plotfigure(name='contour', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1] plotaxes.ylimits = [0, 1] plotaxes.title = 'Solution' plotaxes.scaled = True plotaxes.afteraxes = addgauges # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.plot_var = 0 plotitem.contour_nlevels = 20 plotitem.contour_min = 0.01 plotitem.contour_max = 0.99 plotitem.amr_contour_colors = ['r', 'g', 'b'] # color on each level plotitem.amr_patch_bgcolor = ['#ffeeee', '#eeeeff', '#eeffee'] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 # Figure for grid cells plotfigure = plotdata.new_plotfigure(name='cells', figno=2) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0, 1] plotaxes.ylimits = [0, 1] plotaxes.title = 'Grid patches' plotaxes.scaled = True def plot_rr(current_data): from pylab import plot plot(xv1, yv1, 'b', lw=2) plot(xv2, yv2, 'b', lw=2) plotaxes.afteraxes = plot_rr # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_patch') plotitem.amr_patch_bgcolor = ['#ffeeee', '#eeeeff', '#eeffee'] plotitem.amr_celledges_show = [1, 1, 0] plotitem.amr_patchedges_show = [1] #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='q', figno=300, \ type='each_gauge') plotfigure.clf_each_gauge = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q' # Plot q as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' # Parameters used only when creating html and/or latex hardcopy # e.g., via visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.html_movie = 'JSAnimation' # new style, or "4.x" for old style plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- r"""Setplot function for surge plotting""" if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' fig_num_counter = surgeplot.figure_counter() # Load data from output clawdata = clawutil.ClawInputData(2) clawdata.read(os.path.join(plotdata.outdir,'claw.data')) amrdata = amrclaw.AmrclawInputData(clawdata) amrdata.read(os.path.join(plotdata.outdir,'amr.data')) physics = geodata.GeoClawData() physics.read(os.path.join(plotdata.outdir,'geoclaw.data')) surge_data = geodata.SurgeData() surge_data.read(os.path.join(plotdata.outdir,'surge.data')) friction_data = geodata.FrictionData() friction_data.read(os.path.join(plotdata.outdir,'friction.data')) # Load storm track track = surgeplot.track_data(os.path.join(plotdata.outdir,'fort.track')) # Calculate landfall time, off by a day, maybe leap year issue? landfall_dt = datetime.datetime(2008,9,13,7) - datetime.datetime(2008,1,1,0) landfall = (landfall_dt.days - 1.0) * 24.0 * 60**2 + landfall_dt.seconds # Set afteraxes function surge_afteraxes = lambda cd: surgeplot.surge_afteraxes(cd, track, landfall, plot_direction=False) # Color limits surface_range = 5.0 speed_range = 3.0 eta = physics.sea_level if not isinstance(eta,list): eta = [eta] surface_limits = [eta[0]-surface_range,eta[0]+surface_range] # surface_contours = numpy.linspace(-surface_range, surface_range,11) surface_contours = [-5,-4.5,-4,-3.5,-3,-2.5,-2,-1.5,-1,-0.5,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5] surface_ticks = [-5,-4,-3,-2,-1,0,1,2,3,4,5] surface_labels = [str(value) for value in surface_ticks] speed_limits = [0.0,speed_range] speed_contours = numpy.linspace(0.0,speed_range,13) speed_ticks = [0,1,2,3] speed_labels = [str(value) for value in speed_ticks] wind_limits = [0,64] # wind_limits = [-0.002,0.002] pressure_limits = [935,1013] friction_bounds = [0.01,0.04] # vorticity_limits = [-1.e-2,1.e-2] # def pcolor_afteraxes(current_data): # surge_afteraxes(current_data) # surge.plot.gauge_locations(current_data,gaugenos=[6]) def contour_afteraxes(current_data): surge_afteraxes(current_data) def add_custom_colorbar_ticks_to_axes(axes, item_name, ticks, tick_labels=None): axes.plotitem_dict[item_name].colorbar_ticks = ticks axes.plotitem_dict[item_name].colorbar_tick_labels = tick_labels # ========================================================================== # ========================================================================== # Plot specifications # ========================================================================== # ========================================================================== # ======================================================================== # Entire Gulf # ======================================================================== gulf_xlimits = [clawdata.lower[0],clawdata.upper[0]] gulf_ylimits = [clawdata.lower[1],clawdata.upper[1]] gulf_shrink = 0.9 def gulf_after_axes(cd): plt.subplots_adjust(left=0.08, bottom=0.04, right=0.97, top=0.96) surge_afteraxes(cd) # # Surface # plotfigure = plotdata.new_plotfigure(name='Surface - Entire Domain', figno=fig_num_counter.get_counter()) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes surgeplot.add_surface_elevation(plotaxes, plot_type='contourf', contours=surface_contours, shrink=gulf_shrink) surgeplot.add_land(plotaxes,topo_min=-10.0,topo_max=5.0) # surge.plot.add_bathy_contours(plotaxes) if article: plotaxes.plotitem_dict['surface'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'surface', surface_ticks, surface_labels) plotaxes.plotitem_dict['surface'].amr_patchedges_show = [1,1,1,1,1,1,1,1] # # Water Speed # plotfigure = plotdata.new_plotfigure(name='Currents - Entire Domain', figno=fig_num_counter.get_counter()) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes # Speed surgeplot.add_speed(plotaxes, plot_type='contourf', contours=speed_contours, shrink=gulf_shrink) if article: plotaxes.plotitem_dict['speed'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'speed', speed_ticks, speed_labels) # Land surgeplot.add_land(plotaxes) surgeplot.add_bathy_contours(plotaxes) # # Friction field # plotfigure = plotdata.new_plotfigure(name='Friction', figno=fig_num_counter.get_counter()) plotfigure.show = friction_data.variable_friction and True def friction_after_axes(cd): plt.subplots_adjust(left=0.08, bottom=0.04, right=0.97, top=0.96) plt.title(r"Manning's $n$ Coefficient") # surge_afteraxes(cd) plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits # plotaxes.title = "Manning's N Coefficient" plotaxes.afteraxes = friction_after_axes plotaxes.scaled = True surgeplot.add_friction(plotaxes,bounds=friction_bounds,shrink=0.9) plotaxes.plotitem_dict['friction'].amr_patchedges_show = [0,0,0,0,0,0,0] plotaxes.plotitem_dict['friction'].colorbar_label = "$n$" # ======================================================================== # LaTex Shelf # ======================================================================== latex_xlimits = [-97.5,-88.5] latex_ylimits = [27.5,30.5] latex_shrink = 1.0 def latex_after_axes(cd): if article: plt.subplots_adjust(left=0.07, bottom=0.14, right=1.0, top=0.86) else: plt.subplots_adjust(right=1.0) surge_afteraxes(cd) # # Surface # plotfigure = plotdata.new_plotfigure(name='Surface - LaTex Shelf', figno=fig_num_counter.get_counter()) plotfigure.show = True if article: plotfigure.kwargs = {'figsize':(8,2.7), 'facecolor':'none'} else: plotfigure.kwargs = {'figsize':(9,2.7), 'facecolor':'none'} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.xlimits = latex_xlimits plotaxes.ylimits = latex_ylimits plotaxes.afteraxes = latex_after_axes surgeplot.add_surface_elevation(plotaxes, plot_type='contourf', contours=surface_contours, shrink=latex_shrink) if article: plotaxes.plotitem_dict['surface'].add_colorbar = False # plotaxes.afteraxes = lambda cd: article_latex_after_axes(cd, landfall) else: add_custom_colorbar_ticks_to_axes(plotaxes, 'surface', [-5,-2.5,0,2.5,5.0], ["-5.0","-2.5"," 0"," 2.5"," 5.0"]) # plotaxes.plotitem_dict['surface'].contour_cmap = plt.get_cmap('OrRd') # surge.plot.add_surface_elevation(plotaxes,plot_type='contour') surgeplot.add_land(plotaxes) # plotaxes.plotitem_dict['surface'].amr_patchedges_show = [1,1,1,0,0,0,0] plotaxes.plotitem_dict['surface'].amr_patchedges_show = [0,0,0,0,0,0,0] # plotaxes.plotitem_dict['land'].amr_patchedges_show = [1,1,1,0,0,0,0] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0,0,0,0,0,0,0] # Plot using jet and 0.0 to 5.0 to match figgen generated ADCIRC results # plotaxes.plotitem_dict['surface'].pcolor_cmin = 0.0 # plotaxes.plotitem_dict['surface'].pcolor_cmax = 5.0 # plotaxes.plotitem_dict['surface'].pcolor_cmap = plt.get_cmap('jet') # # Water Speed # plotfigure = plotdata.new_plotfigure(name='Currents - LaTex Shelf', figno=fig_num_counter.get_counter()) plotfigure.show = True if article: plotfigure.kwargs = {'figsize':(8,2.7), 'facecolor':'none'} else: plotfigure.kwargs = {'figsize':(9,2.7), 'facecolor':'none'} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents' plotaxes.scaled = True plotaxes.xlimits = latex_xlimits plotaxes.ylimits = latex_ylimits plotaxes.afteraxes = latex_after_axes surgeplot.add_speed(plotaxes, plot_type='contourf', contours=speed_contours, shrink=latex_shrink) if article: plotaxes.plotitem_dict['speed'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'speed', speed_ticks, speed_labels) # surge.plot.add_surface_elevation(plotaxes,plot_type='contour') surgeplot.add_land(plotaxes) # plotaxes.plotitem_dict['speed'].amr_patchedges_show = [1,1,0,0,0,0,0] # plotaxes.plotitem_dict['land'].amr_patchedges_show = [1,1,1,0,0,0,0] plotaxes.plotitem_dict['speed'].amr_patchedges_show = [0,0,0,0,0,0,0] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0,0,0,0,0,0,0] # ======================================================================== # Houston/Galveston # ======================================================================== houston_xlimits = [-(95.0 + 26.0 / 60.0), -(94.0 + 25.0 / 60.0)] houston_ylimits = [29.1, 29.0 + 55.0 / 60.0] houston_shrink = 0.9 def houston_after_axes(cd): if article: plt.subplots_adjust(left=0.05, bottom=0.07, right=0.99, top=0.92) else: plt.subplots_adjust(left=0.12, bottom=0.06, right=0.97, top=0.97) surge_afteraxes(cd) # surge.plot.gauge_locations(cd) # # Surface Elevations # plotfigure = plotdata.new_plotfigure(name='Surface - Houston/Galveston', figno=fig_num_counter.get_counter()) plotfigure.show = True # if article: # plotfigure.kwargs['figsize'] = # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.xlimits = houston_xlimits plotaxes.ylimits = houston_ylimits plotaxes.afteraxes = houston_after_axes surgeplot.add_surface_elevation(plotaxes, plot_type='contourf', contours=surface_contours, shrink=houston_shrink) if article: plotaxes.plotitem_dict['surface'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'surface', surface_ticks, surface_labels) surgeplot.add_land(plotaxes) plotaxes.plotitem_dict['surface'].amr_patchedges_show = [0,0,0,0,0,0,0] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0,0,0,0,0,0,0] # surge.plot.add_bathy_contours(plotaxes) # Plot using jet and 0.0 to 5.0 to match figgen generated ADCIRC results # plotaxes.plotitem_dict['surface'].pcolor_cmin = 0.0 # plotaxes.plotitem_dict['surface'].pcolor_cmax = 5.0 # plotaxes.plotitem_dict['surface'].pcolor_cmap = plt.get_cmap('jet') # # Water Speed # plotfigure = plotdata.new_plotfigure(name='Currents - Houston/Galveston', figno=fig_num_counter.get_counter()) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Currents' plotaxes.scaled = True plotaxes.xlimits = houston_xlimits plotaxes.ylimits = houston_ylimits plotaxes.afteraxes = houston_after_axes surgeplot.add_speed(plotaxes, plot_type='contourf', contours=speed_contours, shrink=houston_shrink) if article: plotaxes.plotitem_dict['speed'].add_colorbar = False else: add_custom_colorbar_ticks_to_axes(plotaxes, 'speed', speed_ticks, speed_labels) surgeplot.add_land(plotaxes) # surge.plot.add_bathy_contours(plotaxes) # plotaxes.plotitem_dict['speed'].amr_patchedges_show = [1,1,1,1,1,1,1,1] # plotaxes.plotitem_dict['land'].amr_patchedges_show = [1,1,1,1,1,1,1,1] plotaxes.plotitem_dict['speed'].amr_patchedges_show = [0,0,0,0,0,0,0] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0,0,0,0,0,0,0] # ========================== # Hurricane Forcing fields # ========================== # Pressure field plotfigure = plotdata.new_plotfigure(name='Pressure', figno=fig_num_counter.get_counter()) plotfigure.show = surge_data.pressure_forcing and True plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.title = "Pressure Field" plotaxes.afteraxes = gulf_after_axes plotaxes.scaled = True surgeplot.add_pressure(plotaxes, bounds=pressure_limits, shrink=gulf_shrink) surgeplot.add_land(plotaxes) # Wind field plotfigure = plotdata.new_plotfigure(name='Wind Speed', figno=fig_num_counter.get_counter()) plotfigure.show = surge_data.wind_forcing and True plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.title = "Wind Field" plotaxes.afteraxes = gulf_after_axes plotaxes.scaled = True surgeplot.add_wind(plotaxes, bounds=wind_limits, plot_type='pcolor', shrink=gulf_shrink) surgeplot.add_land(plotaxes) # ======================================================================== # Figures for gauges # ======================================================================== plotfigure = plotdata.new_plotfigure(name='Surface & topo', figno=300, \ type='each_gauge') plotfigure.show = True plotfigure.clf_each_gauge = True # plotfigure.kwargs['figsize'] = (16,10) def gauge_after_axes(cd): if cd.gaugeno in [1,2,3,4]: axes = plt.gca() # # Add Kennedy gauge data # kennedy_gauge = kennedy_gauges[gauge_name_trans[cd.gaugeno]] # axes.plot(kennedy_gauge['t'] - seconds2days(date2seconds(gauge_landfall[0])), # kennedy_gauge['mean_water'] + kennedy_gauge['depth'], 'k-', # label='Gauge Data') # Add GeoClaw gauge data geoclaw_gauge = cd.gaugesoln axes.plot(seconds2days(geoclaw_gauge.t - date2seconds(gauge_landfall[1])), geoclaw_gauge.q[3,:] + gauge_surface_offset[0], 'b--', label="GeoClaw") # Add ADCIRC gauge data # ADCIRC_gauge = ADCIRC_gauges[kennedy_gauge['gauge_no']] # axes.plot(seconds2days(ADCIRC_gauge[:,0] - gauge_landfall[2]), # ADCIRC_gauge[:,1] + gauge_surface_offset[1], 'r-.', label="ADCIRC") # Fix up plot axes.set_title('Station %s' % cd.gaugeno) axes.set_xlabel('Days relative to landfall') axes.set_ylabel('Surface (m)') axes.set_xlim([-2,1]) axes.set_ylim([-1,5]) axes.set_xticks([-2,-1,0,1]) axes.set_xticklabels([r"$-2$",r"$-1$",r"$0$",r"$1$"]) axes.grid(True) axes.legend() plt.hold(False) # surge.plot.gauge_afteraxes(cd) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-2,1] # plotaxes.xlabel = "Days from landfall" # plotaxes.ylabel = "Surface (m)" plotaxes.ylimits = [-1,5] plotaxes.title = 'Surface' plotaxes.afteraxes = gauge_after_axes # Plot surface as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 3 plotitem.plotstyle = 'b-' # ===================== # Gauge Location Plot # ===================== gauge_xlimits = [-95.5, -94] gauge_ylimits = [29.0, 30.0] gauge_location_shrink = 0.75 def gauge_after_axes(cd): plt.subplots_adjust(left=0.12, bottom=0.06, right=0.97, top=0.97) surge_afteraxes(cd) surgeplot.gauge_locations(cd, gaugenos=[1, 2, 3, 4]) plt.title("Gauge Locations") plotfigure = plotdata.new_plotfigure(name='Gauge Locations', figno=fig_num_counter.get_counter()) plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = True plotaxes.xlimits = gauge_xlimits plotaxes.ylimits = gauge_ylimits plotaxes.afteraxes = gauge_after_axes surgeplot.add_surface_elevation(plotaxes, plot_type='contourf', contours=surface_contours, shrink=gauge_location_shrink) # surge.plot.add_surface_elevation(plotaxes, plot_type="contourf") add_custom_colorbar_ticks_to_axes(plotaxes, 'surface', surface_ticks, surface_labels) surgeplot.add_land(plotaxes) # plotaxes.plotitem_dict['surface'].amr_patchedges_show = [0,0,0,0,0,0,0] # plotaxes.plotitem_dict['surface'].add_colorbar = False # plotaxes.plotitem_dict['surface'].pcolor_cmap = plt.get_cmap('jet') # plotaxes.plotitem_dict['surface'].pcolor_cmap = plt.get_cmap('gist_yarg') # plotaxes.plotitem_dict['surface'].pcolor_cmin = 0.0 # plotaxes.plotitem_dict['surface'].pcolor_cmax = 5.0 plotaxes.plotitem_dict['surface'].amr_patchedges_show = [0,0,0,0,0,0,0] plotaxes.plotitem_dict['land'].amr_patchedges_show = [0,0,0,0,0,0,0] # ============================================================== # Debugging Plots, only really work if using interactive plots # ============================================================== # # Water Velocity Components # plotfigure = plotdata.new_plotfigure(name='Velocity Components - Entire Domain', figno=fig_num_counter.get_counter()) plotfigure.show = False # X-Component plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = "subplot(121)" plotaxes.title = 'Velocity, X-Component' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = surgeplot.water_u plotitem.pcolor_cmap = colormaps.make_colormap({1.0:'r',0.5:'w',0.0:'b'}) plotitem.pcolor_cmin = -speed_limits[1] plotitem.pcolor_cmax = speed_limits[1] plotitem.colorbar_shrink = gulf_shrink plotitem.add_colorbar = True plotitem.amr_celledges_show = [0,0,0] plotitem.amr_patchedges_show = [1,1,1] surgeplot.add_land(plotaxes) # Y-Component plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = "subplot(122)" plotaxes.title = 'Velocity, Y-Component' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = surgeplot.water_v plotitem.pcolor_cmap = colormaps.make_colormap({1.0:'r',0.5:'w',0.0:'b'}) plotitem.pcolor_cmin = -speed_limits[1] plotitem.pcolor_cmax = speed_limits[1] plotitem.colorbar_shrink = gulf_shrink plotitem.add_colorbar = True plotitem.amr_celledges_show = [0,0,0] plotitem.amr_patchedges_show = [1,1,1] surgeplot.add_land(plotaxes) # # Depth # plotfigure = plotdata.new_plotfigure(name='Depth - Entire Domain', figno=fig_num_counter.get_counter()) plotfigure.show = False # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'depth' plotaxes.scaled = True plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.afteraxes = gulf_after_axes plotitem = plotaxes.new_plotitem(plot_type='2d_imshow') plotitem.plot_var = 0 plotitem.imshow_cmap = colormaps.make_colormap({1.0:'r',0.5:'w',0.0:'b'}) plotitem.imshow_cmin = 0 plotitem.imshow_cmax = 100 plotitem.colorbar_shrink = gulf_shrink plotitem.add_colorbar = True plotitem.amr_celledges_show = [0,0,0] plotitem.amr_patchedges_show = [1,1,1,1,1,1,1,1,1] # Surge field plotfigure = plotdata.new_plotfigure(name='Surge Field', figno=fig_num_counter.get_counter()) plotfigure.show = ((surge_data.wind_forcing or surge_data.pressure_forcing) and False) plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.title = "Storm Surge Source Term S" plotaxes.afteraxes = gulf_after_axes plotaxes.scaled = True plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = surgeplot.pressure_field + 1 plotitem.pcolor_cmap = plt.get_cmap('PuBu') plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 1e-3 plotitem.add_colorbar = True plotitem.colorbar_shrink = gulf_shrink plotitem.colorbar_label = "Source Strength" plotitem.amr_celledges_show = [0,0,0] plotitem.amr_patchedges_show = [1,1,1,1,1,0,0] surgeplot.add_land(plotaxes) plotfigure = plotdata.new_plotfigure(name='Friction/Coriolis Source', figno=fig_num_counter.get_counter()) plotfigure.show = False plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = gulf_xlimits plotaxes.ylimits = gulf_ylimits plotaxes.title = "Friction/Coriolis Source" plotaxes.afteraxes = surge_afteraxes plotaxes.scaled = True plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = surgeplot.pressure_field + 2 plotitem.pcolor_cmap = plt.get_cmap('PuBu') plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = 1e-3 plotitem.add_colorbar = True plotitem.colorbar_shrink = gulf_shrink plotitem.colorbar_label = "Source Strength" plotitem.amr_celledges_show = [0,0,0] plotitem.amr_patchedges_show = [1,1,1,1,1,0,0] surgeplot.add_land(plotaxes) #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: if article: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = [54,60,66,72,78,84] # list of frames to print plotdata.print_gaugenos = [1,2,3,4] # list of gauges to print plotdata.print_fignos = [4,5,6,7,10,3,300] # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = False # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? else: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = [1,2,3,4] # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data def fix_plot(current_data): from pylab import plot from pylab import xticks,yticks,xlabel,ylabel,savefig,ylim,title t = current_data.t plot([0., 0.], [-1000., 1000.], 'k--') title('Pressure at t = %5.3f seconds' % t, fontsize=26) yticks(fontsize=23) xticks(fontsize=23) def fix_plot_innerprod(current_data): from pylab import plot from pylab import xticks,yticks,xlabel,ylabel,savefig,ylim,title t = current_data.t plot([0., 0.], [-1000., 1000.], 'k--') title('Inner Product at t = %5.3f seconds' % t, fontsize=26) yticks(fontsize=23) xticks(fontsize=23) # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='Pressure', figno=1) plotfigure.kwargs = {'figsize': (10,3.5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [-12,12] plotaxes.ylimits = [-1.1,1.1] plotaxes.title = 'Pressure' plotaxes.afteraxes = fix_plot # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.amr_color = 'b' plotitem.amr_plotstyle = 'o' plotitem.amr_kwargs = [{'linewidth':2}] plotitem.amr_kwargs = [{'markersize':4}] # Figure for inner product, q[2] plotfigure = plotdata.new_plotfigure(name='Inner Product', figno=10) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' #plotaxes.ylimits = [-.5,1.1] # use when taking inner product with forward solution plotaxes.ylimits = [-0.01,0.02] # use when taking inner product with Richardson error plotaxes.title = 'Inner Product' plotaxes.afteraxes = fix_plot_innerprod # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 2 plotitem.amr_color = 'b' plotitem.amr_plotstyle = 'o' plotitem.amr_kwargs = [{'linewidth':2}] plotitem.amr_kwargs = [{'markersize':4}] plotitem.show = True # show on plot? # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data # Figure for q[0] plotfigure = plotdata.new_plotfigure(name='q[0]', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0,1.5] plotaxes.ylimits = [-2.,4.] plotaxes.title = 'q[0]' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 0 plotitem.plotstyle = '-' plotitem.color = 'b' plotitem.show = True # show on plot? # Figure for q[1] plotfigure = plotdata.new_plotfigure(name='q[1]', figno=1) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'q[1]' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d') plotitem.plot_var = 1 plotitem.plotstyle = '-' plotitem.color = 'b' plotitem.show = True # show on plot? # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() from clawpack.visclaw import colormaps plotdata.clearfigures() # clear any old figures,axes,items data # Figure for pressure # ------------------- plotfigure = plotdata.new_plotfigure(name='Pressure', figno=0) # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = 'auto' plotaxes.ylimits = 'auto' plotaxes.title = 'Pressure' plotaxes.scaled = True # so aspect ratio is 1 # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = 0 plotitem.pcolor_cmap = colormaps.blue_yellow_red plotitem.pcolor_cmin = -2.0 plotitem.pcolor_cmax = 2.0 plotitem.add_colorbar = True # Figure for scatter plot # ----------------------- plotfigure = plotdata.new_plotfigure(name='scatter', figno=3) plotfigure.show = (qref_dir is not None) # don't plot if 1d solution is missing # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.xlimits = [0,1.5] plotaxes.ylimits = [-2.,4.] plotaxes.title = 'Scatter plot' # Set up for item on these axes: scatter of 2d data plotitem = plotaxes.new_plotitem(plot_type='1d_from_2d_data') def p_vs_r(current_data): # Return radius of each grid cell and p value in the cell from pylab import sqrt x = current_data.x y = current_data.y r = sqrt(x**2 + y**2) q = current_data.q p = q[0,:,:] return r,p plotitem.map_2d_to_1d = p_vs_r plotitem.plot_var = 0 plotitem.plotstyle = 'o' plotitem.color = 'b' plotitem.show = (qref_dir is not None) # show on plot? # Set up for item on these axes: 1d reference solution plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.outdir = qref_dir plotitem.plot_var = 0 plotitem.plotstyle = '-' plotitem.color = 'r' plotitem.kwargs = {'linewidth': 2} plotitem.show = True # show on plot? def make_legend(current_data): import matplotlib.pyplot as plt plt.legend(('2d data', '1d reference solution')) plotaxes.afteraxes = make_legend # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.html_movie = 'JSAnimation' # new style, or "4.x" for old style plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' def timeformat(t): from numpy import mod hours = int(t / 3600.) tmin = mod(t, 3600.) min = int(tmin / 60.) sec = int(mod(tmin, 60.)) timestr = '%s:%s:%s' % (hours, str(min).zfill(2), str(sec).zfill(2)) return timestr def title_hours(current_data): from pylab import title t = current_data.t timestr = timeformat(t) title('%s after earthquake' % timestr) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Computational domain', figno=0) plotfigure.kwargs = {'figsize': (8, 7)} plotfigure.show = True # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes('pcolor') plotaxes.title = 'Surface' plotaxes.scaled = True def aa(current_data): from pylab import ticklabel_format, xticks, gca, cos, pi, savefig gca().set_aspect(1.) title_hours(current_data) ticklabel_format(useOffset=False) xticks(rotation=20) plotaxes.afteraxes = aa # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = cmin plotitem.pcolor_cmax = cmax plotitem.add_colorbar = True plotitem.colorbar_shrink = 0.7 plotitem.amr_celledges_show = [0, 0, 0] plotitem.amr_patchedges_show = [0, 0, 0, 0] plotitem.amr_data_show = [1, 1, 1, 1, 1, 0, 0] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = cmax_land plotitem.add_colorbar = False plotitem.amr_celledges_show = [0] plotitem.amr_patchedges_show = [0, 0, 0, 0] plotitem.amr_data_show = [1, 1, 1, 1, 1, 0, 0] # add contour lines of bathy if desired: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') plotitem.show = False plotitem.plot_var = geoplot.topo plotitem.contour_levels = linspace(-3000, -3000, 1) plotitem.amr_contour_colors = ['y'] # color on each level plotitem.kwargs = {'linestyles': 'solid', 'linewidths': 2} plotitem.amr_contour_show = [1, 0, 0] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 #----------------------------------------- # Figure for coastal area #----------------------------------------- x1, x2, y1, y2 = [-0.005, 0.016, -0.01, 0.01] plotfigure = plotdata.new_plotfigure(name="coastal area", figno=11) plotfigure.show = True plotfigure.kwargs = {'figsize': (6, 7)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.scaled = False plotaxes.xlimits = [x1, x2] plotaxes.ylimits = [y1, y2] def aa_withbox(current_data): from pylab import plot x1, x2, y1, y2 = (-0.009259, 0.013796, -0.005093, 0.005000) if current_data.t > 5 * 60.: plot([x1, x1, x2, x2, x1], [y1, y2, y2, y1, y1], 'w--') aa(current_data) plotaxes.afteraxes = aa_withbox # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.surface #plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = cmin plotitem.pcolor_cmax = cmax plotitem.add_colorbar = True plotitem.colorbar_shrink = 0.4 plotitem.amr_celledges_show = [0, 0, 0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = cmax_land plotitem.add_colorbar = False plotitem.amr_celledges_show = [0] plotitem.patchedges_show = 0 # add contour lines of bathy if desired: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') #plotitem.show = False plotitem.plot_var = geoplot.topo plotitem.contour_levels = [-2, -1, 0, 1, 2] plotitem.amr_contour_colors = ['yellow'] # color on each level plotitem.kwargs = {'linestyles': 'solid', 'linewidths': 1} plotitem.amr_contour_show = [0, 0, 1, 0] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 # Plots of timing (CPU and wall time): def make_timing_plots(plotdata): import os from clawpack.visclaw import plot_timing_stats try: timing_plotdir = plotdata.plotdir + '/_timing_figures' os.system('mkdir -p %s' % timing_plotdir) units = { 'comptime': 'minutes', 'simtime': 'minutes', 'cell': 'millions' } plot_timing_stats.make_plots(outdir=plotdata.outdir, make_pngs=True, plotdir=timing_plotdir, units=units) os.system('cp %s/timing.* %s' % (plotdata.outdir, timing_plotdir)) except: print('*** Error making timing plots') otherfigure = plotdata.new_otherfigure(name='timing', fname='_timing_figures/timing.html') otherfigure.makefig = make_timing_plots #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of pyclaw.plotters.data.ClawPlotData. Output: a modified version of plotdata. """ from clawpack.visclaw import colormaps, geoplot from numpy import linspace if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data plotdata.format = 'binary' # To plot gauge locations on pcolor or contour plot, use this as # an afteraxis function: def addgauges(current_data): from clawpack.visclaw import gaugetools gaugetools.plot_gauge_locations(current_data.plotdata, \ gaugenos='all', format_string='ko', add_labels=True) def timeformat(t): from numpy import mod hours = int(t/3600.) tmin = mod(t,3600.) min = int(tmin/60.) sec = int(mod(tmin,60.)) timestr = '%s:%s:%s' % (hours,str(min).zfill(2),str(sec).zfill(2)) return timestr def title_hours(current_data): from pylab import title t = current_data.t timestr = timeformat(t) title('%s after earthquake' % timestr) #----------------------------------------- # Figure for surface #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='Surface', figno=0) plotfigure.kwargs = {'figsize':(8,5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.title = 'Surface' plotaxes.scaled = False # need to set aspect ratio properly for lat/long def aa(current_data): from pylab import ticklabel_format, xticks, gca, cos, pi, savefig gca().set_aspect(1./cos(48*pi/180.)) title_hours(current_data) ticklabel_format(useOffset=False) xticks(rotation=20) plotaxes.afteraxes = aa #plotaxes.xlimits = [-122.7,-122.16] #plotaxes.ylimits = [47.2,48.3] # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = cmin plotitem.pcolor_cmax = cmax plotitem.add_colorbar = True plotitem.colorbar_shrink = 0.8 plotitem.amr_celledges_show = [0] #plotitem.celledges_show = 0 #plotitem.patchedges_show = 0 plotitem.amr_patchedges_show = [0] # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = cmax_land plotitem.add_colorbar = False plotitem.amr_celledges_show = [0] plotitem.patchedges_show = 0 #----------------------------------------- # Figure for zoom on Eagle Harbor #----------------------------------------- plotfigure = plotdata.new_plotfigure(name="fgmax region", figno=11) #plotfigure.show = False plotfigure.kwargs = {'figsize': (9,6)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.scaled = False plotaxes.xlimits = [-122.55,-122.48] plotaxes.ylimits = [47.61,47.64] if bg_image: plotaxes.beforeaxes = background_image plotaxes.afteraxes = aa # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = cmin plotitem.pcolor_cmax = cmax plotitem.add_colorbar = True plotitem.amr_data_show = [0,0,1] # only show on finest plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.show = False plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = cmax_land plotitem.add_colorbar = False plotitem.amr_celledges_show = [0] plotitem.patchedges_show = 0 # add contour lines of bathy if desired: plotitem = plotaxes.new_plotitem(plot_type='2d_contour') #plotitem.show = False plotitem.plot_var = geoplot.topo plotitem.contour_levels = [0] plotitem.amr_contour_colors = ['yellow'] # color on each level plotitem.kwargs = {'linestyles':'solid','linewidths':2} plotitem.amr_contour_show = [0,0,1] plotitem.celledges_show = 0 plotitem.patchedges_show = 0 #----------------------------------------- # Figure for zoom on Bainbridge / Seattle #----------------------------------------- plotfigure = plotdata.new_plotfigure(name="Bainbridge", figno=12) # not needed for this small domain plotfigure.show = False plotfigure.kwargs = {'figsize': (9,6)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.scaled = False plotaxes.xlimits = [-122.65, -122.3] plotaxes.ylimits = [47.5, 47.76] plotaxes.afteraxes = aa # Water plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') #plotitem.plot_var = geoplot.surface plotitem.plot_var = geoplot.surface_or_depth plotitem.pcolor_cmap = geoplot.tsunami_colormap plotitem.pcolor_cmin = cmin plotitem.pcolor_cmax = cmax plotitem.add_colorbar = True plotitem.amr_celledges_show = [0,0,0] plotitem.patchedges_show = 0 # Land plotitem = plotaxes.new_plotitem(plot_type='2d_pcolor') plotitem.plot_var = geoplot.land plotitem.pcolor_cmap = geoplot.land_colors plotitem.pcolor_cmin = 0.0 plotitem.pcolor_cmax = cmax_land plotitem.add_colorbar = False plotitem.amr_celledges_show = [0] plotitem.patchedges_show = 0 #----------------------------------------- # Figures for gauges #----------------------------------------- plotfigure = plotdata.new_plotfigure(name='gauge plot', figno=300, \ type='each_gauge') plotfigure.kwargs = {'figsize': (11,6)} #plotfigure.clf_each_gauge = False # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,1)' #plotaxes.ylimits = [-1,10] plotaxes.title = 'Flow depth' plotaxes.time_scale = 1./60. plotaxes.time_label = '' def add_ylabel_depth(current_data): from pylab import ylabel, grid ylabel('water depth (m)') grid(True) plotaxes.afteraxes = add_ylabel_depth # Plot depth as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = 'b-' # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(2,1,2)' #plotaxes.ylimits = [-1,10] plotaxes.title = 'Flow speed (m/s)' plotaxes.time_scale = 1./60. plotaxes.time_label = 'minutes' def add_ylabel_speed(current_data): from pylab import ylabel, tight_layout, grid ylabel('speed (m/s)') grid(True) tight_layout() plotaxes.afteraxes = add_ylabel_speed def speed(current_data): from numpy import sqrt, maximum q = current_data.q h = q[0,:] hu = q[1,:] hv = q[2,:] s = sqrt(hu**2 + hv**2) / maximum(h,0.001) return s # Plot depth as blue curve: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = speed plotitem.plotstyle = 'b-' #----------------------------------------- # Figures for fgmax plots #----------------------------------------- # Note: need to move fgmax png files into _plots after creating with # python run_process_fgmax.py # This just creates the links to these figures... if 0: otherfigure = plotdata.new_otherfigure(name='max depth', fname='depth.png') otherfigure = plotdata.new_otherfigure(name='max speed', fname='speed.png') #----------------------------------------- # Parameters used only when creating html and/or latex hardcopy # e.g., via pyclaw.plotters.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_gaugenos = 'all' # list of gauges to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' # pointer for top of index plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? plotdata.parallel = True # make multiple frame png's at once return plotdata
def setplot(plotdata=None): #-------------------------- """ Specify what is to be plotted at each frame. Input: plotdata, an instance of clawpack.visclaw.data.ClawPlotData. Output: a modified version of plotdata. """ if plotdata is None: from clawpack.visclaw.data import ClawPlotData plotdata = ClawPlotData() plotdata.clearfigures() # clear any old figures,axes,items data gamma = 1.4 def pressure(current_data): q = current_data.q rho = q[0,:] u = q[1,:]/rho p = (gamma-1)*(q[2,:] - 0.5*rho*u**2) return p plotfigure = plotdata.new_plotfigure(name='Density and Pressure', figno=1) plotfigure.kwargs = {'figsize':(10,5)} # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(1,2,1)' # left figure plotaxes.xlimits = [0,1] plotaxes.ylimits = [0,7] plotaxes.title = 'Density' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = 0 plotitem.plotstyle = '-' plotitem.color = 'b' # Set up for axes in this figure: plotaxes = plotfigure.new_plotaxes() plotaxes.axescmd = 'subplot(1,2,2)' # right plotaxes.xlimits = [0,1] plotaxes.ylimits = [0,1450] plotaxes.title = 'Pressure' # Set up for item on these axes: plotitem = plotaxes.new_plotitem(plot_type='1d_plot') plotitem.plot_var = pressure plotitem.plotstyle = '-' plotitem.color = 'b' # Parameters used only when creating html and/or latex hardcopy # e.g., via clawpack.visclaw.frametools.printframes: plotdata.printfigs = True # print figures plotdata.print_format = 'png' # file format plotdata.print_framenos = 'all' # list of frames to print plotdata.print_fignos = 'all' # list of figures to print plotdata.html = True # create html files of plots? plotdata.html_homelink = '../README.html' plotdata.latex = True # create latex file of plots? plotdata.latex_figsperline = 2 # layout of plots plotdata.latex_framesperline = 1 # layout of plots plotdata.latex_makepdf = False # also run pdflatex? return plotdata