Skip to main content

Note: please consider using cutde instead of okada_wrapper. Triangular dislocations are strictly more powerful than rectangles. In addition, cutde supports many features not supported by okada_wrapper, including built-in tools to build large matrices or construct hierarchical matrix approximations. If you need a rectangular dislocation, one can easily be composed from two triangles.

Okada wrapper (MATLAB, Python)

Okada dislocations in Python and MATLAB!

These files are MATLAB and Python wrappers for the Okada DC3D0 point source and the DC3D rectangular dislocation surface fortran subroutines. The Matlab wrappers are written using the MEX functions. The original subroutine was written by Y. Okada as part of the paper:

Okada, Y., 1992, Internal deformation due to shear and tensile faults in a half-space, Bull. Seism. Soc. Am., 82, 1018-1040.

The inputs and outputs here are slightly different from the okada implementation, though not in any substantial way. Look at the original documentation webpage here for more details

A different MATLAB mex wrapper for the Okada dislocation sources is available on Paul Segall's website.

Common issues:

If you're having problems installing on a recent version of OSX, see here for some help: https://github.com/tbenthompson/okada_wrapper/issues/3

MATLAB

Download the code::

git clone https://github.com/tbenthompson/okada_wrapper.git

Make sure that MATLAB has a properly configured compiler. This page on MATLAB's site has details. It seem like GCC is automatically found if it is installed.

Open matlab and run::

mex 'DC3D0wrapper.F'
mex 'DC3Dwrapper.F'
DC3D0wrapper

Then, DC3D0wrapper can be treated like any other MATLAB function::

[success, u, grad_u] = DC3D0wrapper(0.6, [1.0, 1.0, -1.0],3.0,...
                                    90, [1.0, 0.0, 0.0, 0.0]);

Five arguments are required:

  • alpha = (lambda + mu) / (lambda + 2 * mu)
  • xo = 3-vector representing the observation point (x, y, z in the original)
  • depth = the depth of the slip plane
  • dip = the dip-angle of the slip plane in degrees
  • potency = 4-vector (POT1,2,3,4 in original)
    • index 1 = strike-slip = Moment of double-couple / mu
    • index 2 = dip-slip = Moment of double-couple / mu
    • index 3 = inflation = Intensity of isotropic part / lambda
    • index 4 = tensile = Intensity of linear dipole / mu

Three outputs are provided:

  • success - a return code from DC3D0=0 if normal, 1 if singular, 2 if a positive z value for the observation point was given
  • u - 3-vector representing the displacement at the observation point. for example, u(2) = u_y
  • grad_u = the 3x3 tensor representing the partial derivatives of the displacement, for example, grad_u(1, 2) = d(u_x)/dy
DC3Dwrapper

DC3Dwrapper can also be used for rectangular dislocation sources

[success, u, grad_u] = DC3Dwrapper(0.6, [1.0, 1.0, -1.0], 3.0,...
                                    90, [-0.7, 0.7], [-0.7, 0.7],...
                                    [1.0, 0.0, 0.0]);

Seven arguments are required:

  • alpha = (lambda + mu) / (lambda + 2 * mu)
  • xo = 3-vector representing the observation point (x, y, z in the original)
  • depth = the depth of the fault origin
  • dip = the dip-angle of the rectangular dislocation surface
  • strike_width = the along-strike range of the surface (al1,al2 in the original)
  • dip_width = the along-dip range of the surface (aw1, aw2 in the original)
  • dislocation = 3-vector representing the direction of motion on the surface (DISL1 = strike-slip, DISL2 = dip-slip, DISL3 = opening/overlap)

The outputs are identical to DC3D0wrapper

Python

NEW: You can install okada_wrapper directly from the PyPI by running::

pip install okada_wrapper

For the old, manual installation method, download the code::

git clone https://github.com/tbenthompson/okada_wrapper.git

Make sure that a Fortran compiler is installed. The wrappers are tested using gcc/gfortran, but should hopefully work with other fortran compilers.

Then, run the install script::

pip install ./okada_wrapper

The syntax is almost identical to the MATLAB version::

from okada_wrapper import dc3d0wrapper, dc3dwrapper
success, u, grad_u = dc3d0wrapper(0.6, [1.0, 1.0, -1.0], 3.0,
                                  1.0, [1.0, 0.0, 0.0, 0.0])
success, u, grad_u = dc3dwrapper(0.6, [1.0, 1.0, -1.0],
                                 3.0, 90, [-0.7, 0.7], [-0.7, 0.7],
                                 [1.0, 0.0, 0.0])                                      

The arguments and outputs are identical to the MATLAB version.

Tests

To run the tests, from the root directory in MATLAB type::

test_okada.m

or, for python::

python test_okada.py

Okada plot

Metadata

Release files for okada-wrapper 24.6.15

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for okada-wrapper 24.6.15
File Size Uploaded
okada_wrapper-24.6.15.tar.gz 94.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for okada-wrapper 24.6.15
File Interpreter ABI Platform
okada_wrapper-24.6.15-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details

Total release size: 131.0 kB

Release files / okada_wrapper-24.6.15.tar.gz

Download URL okada_wrapper-24.6.15.tar.gz
Size 94.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c19bacfc4336c59d94e3ece3ed378fe2ae3496a165412c47e08164fe8b66f307
BLAKE2b-256 checksum
How to use checksums
9ac9010fa37a6b83e6fd6afb9434d9b71d454ad3d420d35205aeb333f0227e65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.3

Release files / okada_wrapper-24.6.15-cp312-cp312-macosx_14_0_arm64.whl

Download URL okada_wrapper-24.6.15-cp312-cp312-macosx_14_0_arm64.whl
Size 37.0 kB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
de3a65710c39fb0eb4cb347ba2d4c53fdff3bebbcd5fbaa3602c5e31d13f996c
BLAKE2b-256 checksum
How to use checksums
0f3543ead5d80e6ccac35812f371795993cee389f2edadadaf640c58c112cace
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

24.6.15 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page