Last active
June 13, 2019 17:27
-
-
Save ka-pr/bb1bfa98c7cabbb7c803337c0bc77b17 to your computer and use it in GitHub Desktop.
HCL python
View raw
(Sorry about that, but we can’t show files that are this big right now.)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "# Computing hazard curve for a given characteristic earthquake at a target site using the openquake hazardlib library\n", | |
| "\n", | |
| "### In the hazard curve calculation, we need to define \n", | |
| " (1) earthquake source(s), \n", | |
| " (2) target site(s) information, \n", | |
| " (3) ground motion prediction equation(s), and\n", | |
| " (4) target ground motion intensity type(s) with the corresponding ground motion intensity levels for the calculation.\n", | |
| "\n", | |
| "#### This notebook we demonstrate the hazard curve calculation for one single source (characterisitc earthquake in this case), one singe site. However, multiple sources, target sites are available, but it's beyond the scope of this demonstration. For the further information, please check out https://github.com/gem/oq-hazardlib or some more exmpales in https://github.com/GEMScienceTools/notebooks/tree/master/hazardlib\n", | |
| "\n", | |
| " \n", | |
| "#### Developed by Yen-Shin Chen, 20/01/2017\n", | |
| "\n", | |
| "\n", | |
| "#### Modified from https://github.com/GEMScienceTools/notebooks/tree/master/hazardlib\n", | |
| "\n", | |
| "\n", | |
| "To use this notebook you will need to have openquake hazard lib installed. Please follow the instructions from the openquake github to do this." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "WARNING:root:Cannot find the rtree module, using slow filtering\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%matplotlib inline\n", | |
| "\n", | |
| "from openquake.hazardlib.source import CharacteristicFaultSource\n", | |
| "from openquake.hazardlib.geo.surface.simple_fault import SimpleFaultSurface\n", | |
| "from openquake.hazardlib.mfd import ArbitraryMFD, YoungsCoppersmith1985MFD\n", | |
| "from openquake.hazardlib.geo import Point, Line\n", | |
| "from openquake.hazardlib.pmf import PMF\n", | |
| "from openquake.hazardlib.const import TRT\n", | |
| "from openquake.hazardlib.tom import PoissonTOM\n", | |
| "from openquake.hazardlib.calc.hazard_curve import calc_hazard_curves\n", | |
| "from openquake.hazardlib.site import Site, SiteCollection\n", | |
| "from openquake.hazardlib.imt import SA\n", | |
| "from openquake.hazardlib.gsim.akkar_2014 import AkkarEtAlRjb2014\n", | |
| "from openquake.hazardlib import const\n", | |
| "\n", | |
| "import numpy\n", | |
| "from mpl_toolkits.basemap import Basemap\n", | |
| "from matplotlib import pyplot\n", | |
| "from matplotlib import collections" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### 1. Define a planar characteristic fault source, we need to assign:\n", | |
| " (1) source id\n", | |
| " (2) fault source name\n", | |
| " (3) tectonic regionalisation type (e.g., Active Shallow Crust)\n", | |
| " (4) magnitude frequency distribution (e.g., arbitaray magnitude frequency distirbution, youngs&coppersmith 1995 magnitude frequency distirbution, truncated Guterberg-Richter magnitude frequency distirbution)\n", | |
| " (5) temporal occurence model (e.g., Poisson model for 50 years)\n", | |
| " (6) characteristic fault source surface\n", | |
| " (7) rake angle\n", | |
| " \n", | |
| " For assigning the parameters for magnitude frequency distribution (Youngs and Coppersmith 1995 is recommended for Characteristic fault source), please check the following link, and the demonstration at the bottom of this notebook.\n", | |
| " \n", | |
| " http://docs.openquake.org/oq-hazardlib/stable/mfd.html#module-openquake.hazardlib.mfd.youngs_coppersmith_1985" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "src = CharacteristicFaultSource(\n", | |
| " source_id='1',\n", | |
| " name='characteristic fault',\n", | |
| " tectonic_region_type='Active Shallow Crust',\n", | |
| " mfd=YoungsCoppersmith1985MFD.from_characteristic_rate(\n", | |
| " min_mag=5.0, b_val=0.85, char_mag=6.75,\n", | |
| " char_rate=0.000125, bin_width=0.1),\n", | |
| " temporal_occurrence_model=PoissonTOM(50.),\n", | |
| " surface=SimpleFaultSurface.from_fault_data(fault_trace = Line([Point(10, 45.), Point(10., 46.), Point(10.2, 46.5)]), \n", | |
| " upper_seismogenic_depth = 0.0, \n", | |
| " lower_seismogenic_depth = 4.2426406871192848, \n", | |
| " dip = 45.0, \n", | |
| " mesh_spacing = 1.0),\n", | |
| " rake=90.\n", | |
| ")\n", | |
| "sources = [src]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### 2. Define the investigated site includes a geographical location defined by its position as well as its soil characteristics.\n", | |
| "\n", | |
| " (1) location: representing where the site is located.\n", | |
| " (2) vs30: Average shear wave velocity in the top 30 m, in m/s.\n", | |
| " (3) vs30measured: Boolean value, ``True`` if ``vs30`` was measured on that location and ``False`` if it was inferred.\n", | |
| " (4) z1pt0: Vertical distance from earth surface to the layer where seismic waves start to propagate with a speed above 1.0 km/sec, in meters.\n", | |
| " (5) z2pt5: Vertical distance from earth surface to the layer where seismic waves start to propagate with a speed above 2.5 km/sec, in km.\n", | |
| " (6) backarc\": Boolean value, ``True`` if the site is in the subduction backarc and ``False`` if it is in the subduction forearc or is unknown" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "s1 = Site(location=Point(10.2, 45.5, 0),\n", | |
| " vs30=760, vs30measured=True,\n", | |
| " z1pt0=3.4, z2pt5=5.6, backarc=False)\n", | |
| "\n", | |
| "sites = SiteCollection([s1])\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### 3. Define the GMPE and the investigated ground motion intensity types /uncertainty truncation level" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "gsims = {const.TRT.ACTIVE_SHALLOW_CRUST: AkkarEtAlRjb2014()}\n", | |
| "truncation_level = 3.\n", | |
| "imts = {'SA(1.0)': [0.005, 0.007, 0.0098, 0.0137, 0.0192, 0.0269, 0.0376, 0.0527, 0.0738, 0.103, 0.145,\n", | |
| " 0.203, 0.284, 0.397, 0.556, 0.778, 1.09, 1.52, 2.13]}\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### 4. Hazard curve calculation" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "curves = calc_hazard_curves(\n", | |
| " sources, sites, imts, gsims, truncation_level)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### 5. Visualise the hazard curve and save it as a pdf file" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAHwCAYAAACfcxbrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XecVNX5x/HPA9hAs7YIasQSVCyoiIpEQGPBn200xpIV\nYwG7qNlEE41GjElUsEXFlkhs0VFjQaJGsQOxIWuLiiWi2A0WVEAp+/z+OHfc2d0pu9yZvbOz3/fr\nNa+7c9s5sx5nH8495znm7oiIiIiIJKlL0hUQEREREVFQKiIiIiKJU1AqIiIiIolTUCoiIiIiiVNQ\nKiIiIiKJU1AqIiIiIolTUCoiIiIiiVNQKiIiIiKJU1AqIiIiIolTUCoi0smY2fZm1hC9hiZdHxER\nUFAqIhWiWaB0ZiuvuTbrmt7lrmMVKtk602a2lpmdYmaTzGymmX1tZvPM7D0zu9/MTjezdUpVnohU\nn25JV0BEpJklCZRKFlxJ25jZMsB5wDHAMrT8b7F69BoGnG1m/wB+5e7vt2tFRaTiKSgVEZElYmar\nAPcAAwnB6JfATcCjwHvAQqAXsB2wL7A+sD/wBHBpAlUWkQqmoFRERNrMzAz4B40B6T+BI9x9do7T\n7wV+a2Y/B8a2Xy1FpCNRUCoiIkviF8AOhID0fmBfd28odIG732hmDwMblL96ItLRaKKTiFQ1Mxto\nZn8ws0fN7EMz+9bM5pjZy2Z2hZltVODa0VkTqVrzOqTZ9UuZ2Z5mdpmZPWNmn5nZAjObbWZPRfdf\npUj9347u/bfo/QAzu87M3jKzb8ysRSBoZsua2W/N7PlowtFsM5tqZkdEPZyxmNlSwK+it98AI4sF\npBnu/oG7P9bsfpkJa28VKffQ6LzFuSa2teJ3tTja/9/ovCmt+KxrROU1mNl5ec75npmdFv2OP4na\n2AdmNtHMflqsDBEJ1FMqIlXLzA4Fro3eZk/AWR7oC2wEHGlmJ7r7lXluE2cS1V+BQ3LcYyVga2Ab\nYJSZ7e3uTxQo3wHM7GjgMqBr1vEmwaCZ9SSM6eybVe5ywCDgR8BPgYuW8PNk7AqsEd3/H+7+Ucz7\nlUqx31Xm93ETcAYwyMx6u/usAvesBSy69u/ND5rZTsCtwMo0/e/cE9gT2NPM7gMOcPd5S/KhRDoL\nBaUiUs26AZ8BE4ApwBvAXEJAtSVwIrAqcJmZvdq8Bw+4nDBuMp+uwPXAFoSApHlw0xX4L3AnMC06\n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\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x7f586d2c6150>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "fig = pyplot.figure(figsize=(7, 5))\n", | |
| "ax = fig.add_subplot(111)\n", | |
| "\n", | |
| "ax.plot(list(imts.values())[0], curves[list(imts.items())[0][0]][0], color='b', linewidth=3)\n", | |
| "ax.set_xscale('log')\n", | |
| "ax.set_yscale('log')\n", | |
| "ax.grid()\n", | |
| "txt = ax.set_xlabel('SA(1.0) (g)', fontsize=20)\n", | |
| "txt = ax.set_ylabel('Probability of exceedance \\n in 50 years', fontsize=20)\n", | |
| "ax.set_title('Hazard Curve', fontsize=20)\n", | |
| "pyplot.savefig('./hazard_curve.pdf')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### 6. Plot map of the characteristic fault rupture and the target site\n", | |
| " (1) In the function, get_map_projection, we create the map projection for ecah specific fault rupture\n", | |
| " (2) In the function, get_mesh_boundary, we obtain the coordinate of the fault rupture\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def get_map_projection(src):\n", | |
| " \"\"\"\n", | |
| " Return map projection specific to source.\n", | |
| " \"\"\"\n", | |
| " # extract rupture enclosing polygon (considering a buffer of 10 km)\n", | |
| " rup_poly = src.get_rupture_enclosing_polygon(10.)\n", | |
| " min_lon = numpy.min(rup_poly.lons)-3.\n", | |
| " max_lon = numpy.max(rup_poly.lons)+3.\n", | |
| " min_lat = numpy.min(rup_poly.lats)-2.5\n", | |
| " max_lat = numpy.max(rup_poly.lats)+2.5\n", | |
| " \n", | |
| " # create map projection\n", | |
| " m = Basemap(projection='merc', llcrnrlat=min_lat, urcrnrlat=max_lat,\n", | |
| " llcrnrlon=min_lon, urcrnrlon=max_lon, resolution='l', epsg=4269)\n", | |
| "\n", | |
| " return min_lon, max_lon, min_lat, max_lat, m" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def get_mesh_boundary(mesh):\n", | |
| " \"\"\"\n", | |
| " Return coordinates of mesh boundary\n", | |
| " \"\"\"\n", | |
| " boundary_lons = numpy.concatenate((mesh.lons[0, :], mesh.lons[1:, -1], mesh.lons[-1,:-1][::-1], mesh.lons[:-1, 0][::-1]))\n", | |
| " boundary_lats = numpy.concatenate((mesh.lats[0, :], mesh.lats[1:, -1], mesh.lats[-1,:-1][::-1], mesh.lats[:-1, 0][::-1]))\n", | |
| " \n", | |
| " return boundary_lons, boundary_lats" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### We make use of the two functions above to obtain the rupture boundary and the corresponding magnitude" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# loop over ruptures, extract rupture surface boundary and magnitude\n", | |
| "min_lon, max_lon, min_lat, max_lat, m = get_map_projection(src)\n", | |
| "\n", | |
| "boundaries = []\n", | |
| "mags = []\n", | |
| "for rup in src.iter_ruptures():\n", | |
| " surf = rup.surface\n", | |
| " mesh = surf.get_mesh()\n", | |
| " mag = rup.mag\n", | |
| "\n", | |
| " boundary_lons, boundary_lats = get_mesh_boundary(mesh)\n", | |
| " xx, yy = m(boundary_lons, boundary_lats)\n", | |
| "\n", | |
| " boundaries.append([(x, y) for x, y in zip(xx, yy)])\n", | |
| " mags.append(mag)\n", | |
| "boundaries = numpy.array(boundaries)\n", | |
| "mags = numpy.array(mags)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### Plot rupture and the target site" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer/export?bbox=6.86934907792,42.40655941,13.3862884593,49.0910408971&bboxSR=4269&imageSR=4269&size=2000,2051&dpi=96&format=png32&f=image\n" | |
| ] | |
| }, | |
| { | |
| "data": { |
View raw
(Sorry about that, but we can’t show files that are this big right now.)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment