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

import matplotlib.pyplot as plt
import numpy as num

km = 1e3

sandbox = SandboxScene()
# Set the LOS incident angles, remember :class:kite.Scene

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.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.)