Modelling static displacement

Kite comes with a SandboxScene, which is a playground for static displacement sources of different kinds and modelling engines. It support analytical backends such as Okada disloc-code [1] and Compound dislocation model ([2]; http://www.volcanoedeformation.com/). Numerical forward modelling is enabled through pyrocko.gf, this allows us to put geometrically more complex sources into the modelling sandbox.

Currently implemented static displacement sources:

Several Pyrocko Sources:

Analytical dilatational point through CDM ([2]) sources:

More information about the sources and their implementation can be found at the modules reference: kite.sources.

[1]Okada, Y., 1992, Internal deformation due to shear and tensile faults in a half-space, Bull. Seism. Soc. Am., 82, 1018-1040.
[2](1, 2) Nikkhoo, M., Walter, T. R., Lundgren, P. R., Prats-Iraola, P. (2017): Compound dislocation models (CDMs) for volcano deformation analyses. - Geophysical Journal International, 208, 2, p. 877-894.

Add Displacement Sources into SandboxScene

In this example we will add a simple OkadaSource into a SandboxScene.

from kite import SandboxScene
from kite.sources import OkadaSource, PyrockoRectangularSource

import matplotlib.pyplot as plt
import numpy as num


km = 1e3

sandbox = SandboxScene()
# Set the LOS incident angles, remember :class:`kite.Scene`
sandbox.phi.fill(num.rad2deg(100.))
sandbox.theta.fill(num.rad2deg(23.))

okada = OkadaSource(
    northing=40*km,
    easting=40*km,
    depth=4*km,
    length=8*km,
    width=4*km,
    strike=63.,
    dip=33.,
    slip=3.,
    opening=1)

pyrocko_rectangular = PyrockoRectangularSource(
    northing=40*km,
    easting=40*km,
    depth=4*km,
    length=8*km,
    width=4*km,
    strike=63.,
    dip=33.,
    slip=3.,
    store_dir='gfstore_halfspace')

sandbox.addSource(okada)

sandbox.processSources()

# Plot the resulting surface displacements
fig, axis = plt.subplots(nrows=2, ncols=2)
axis[0][0].imshow(sandbox.north)
axis[0][1].imshow(sandbox.east)
axis[1][0].imshow(sandbox.down)
axis[1][1].imshow(sandbox.displacement)  # Displacement in LOS
fig.show()

A full list of available sources and their parameters can be found at the modules’ reference page kite.sources.

Save and Load pyrocko.SandboxScene

In this small example we will add a basic EllipsoidSource to the sandbox. Subsequently we will save it and load it again.

from kite import SandboxScene
from kite.sources import EllipsoidSource


km = 1e3

sandbox = SandboxScene()

ellipsoid_source = EllipsoidSource(
    northing=40*km,
    easting=40*km,
    depth=4*km,
    length_x=100,
    length_y=200,
    length_z=350,
    roation_x=42.)
sandbox.addSource(ellipsoid_source)

sandbox.save('/tmp/sandbox_scene.yml')
playground = SandboxScene.load('/tmp/sandbox_scene.yml')

Graphical Manipulation of Displacement Sources

The graphical user interface Static Displacement Modelling with Talpa offers tools to handle and interact with the different kinds of displacement sources.