maketopo.py.html | |
Source file: maketopo.py | |
Directory: /Users/rjl/clawpack_src/clawpack_master/geoclaw/examples/tsunami/chile2010_adjoint | |
Converted: Mon Feb 19 2024 at 14:28:07 using clawcode2html | |
This documentation file will not reflect any later changes in the source file. |
""" Create topo and dtopo files needed for this example: etopo10min120W60W60S0S.asc download from GeoClaw topo repository dtopo_usgs100227.tt3 create using Okada model Prior to Clawpack 5.2.1, the fault parameters we specified in a .cfg file, but now they are explicit below. Call functions with makeplots==True to create plots of topo, slip, and dtopo. """ from __future__ import absolute_import from __future__ import print_function import os import clawpack.clawutil.data try: CLAW = os.environ['CLAW'] except: raise Exception("*** Must first set CLAW enviornment variable") # Scratch directory for storing topo and dtopo files: scratch_dir = os.path.join(CLAW, 'geoclaw', 'scratch') def get_topo(makeplots=False): """ Retrieve the topo file from the GeoClaw repository. """ from clawpack.geoclaw import topotools topo_fname = 'etopo10min120W60W60S0S.asc' url = 'http://depts.washington.edu/clawpack/geoclaw/topo/etopo/' + topo_fname clawpack.clawutil.data.get_remote_file(url, output_dir=scratch_dir, file_name=topo_fname, verbose=True) if makeplots: from matplotlib import pyplot as plt topo = topotools.Topography(os.path.join(scratch_dir,topo_fname), topo_type=2) topo.plot() fname = os.path.splitext(topo_fname)[0] + '.png' plt.savefig(fname) print("Created ",fname) def make_dtopo(makeplots=False): """ Create dtopo data file for deformation of sea floor due to earthquake. Uses the Okada model with fault parameters and mesh specified below. """ from clawpack.geoclaw import dtopotools import numpy dtopo_fname = os.path.join(scratch_dir, "dtopo_usgs100227.tt3") # Specify subfault parameters for this simple fault model consisting # of a single subfault: usgs_subfault = dtopotools.SubFault() usgs_subfault.strike = 16. usgs_subfault.length = 450.e3 usgs_subfault.width = 100.e3 usgs_subfault.depth = 35.e3 usgs_subfault.slip = 15. usgs_subfault.rake = 104. usgs_subfault.dip = 14. usgs_subfault.longitude = -72.668 usgs_subfault.latitude = -35.826 usgs_subfault.coordinate_specification = "top center" fault = dtopotools.Fault() fault.subfaults = [usgs_subfault] print("Mw = ",fault.Mw()) if os.path.exists(dtopo_fname): print("*** Not regenerating dtopo file (already exists): %s" \ % dtopo_fname) else: print("Using Okada model to create dtopo file") x = numpy.linspace(-77, -67, 100) y = numpy.linspace(-40, -30, 100) times = [1.] fault.create_dtopography(x,y,times) dtopo = fault.dtopo dtopo.write(dtopo_fname, dtopo_type=3) if makeplots: from matplotlib import pyplot as plt if fault.dtopo is None: # read in the pre-existing file: print("Reading in dtopo file...") dtopo = dtopotools.DTopography() dtopo.read(dtopo_fname, dtopo_type=3) x = dtopo.x y = dtopo.y plt.figure(figsize=(12,7)) ax1 = plt.subplot(121) ax2 = plt.subplot(122) fault.plot_subfaults(axes=ax1,slip_color=True) ax1.set_xlim(x.min(),x.max()) ax1.set_ylim(y.min(),y.max()) dtopo.plot_dZ_colors(1.,axes=ax2) fname = os.path.splitext(os.path.split(dtopo_fname)[-1])[0] + '.png' plt.savefig(fname) print("Created ",fname) if __name__=='__main__': get_topo(False) make_dtopo(False)