pyrocko.modelling.okada¶
Elastostatic solutions and boundary element modelling for rectangular dislocation sources.
Functions
|
BEM least squares inversion to get fault dislocations given stress field. |
|
Build coefficient matrix for given fault patches. |
Classes
|
Rectangular analytical source model. |
|
Base class for analytical source models. |
|
Okada source with additional 2D indexes for bookkeeping. |
|
Rectangular Okada source model. |
- class AnalyticalSource(**kwargs)[source]¶
Bases:
LocationBase class for analytical source models.
- ♦ name¶
str, optional, default:''
- ♦ time¶
pyrocko.util.get_time_float (
pyrocko.guts.Timestamp), optional, default:0.0Source origin time
- ♦ vr¶
float, optional, default:0.0Rupture velocity [m/s]
- class AnalyticalRectangularSource(**kwargs)[source]¶
Bases:
AnalyticalSourceRectangular analytical source model.
Coordinates on the source plane are with respect to the origin point given by (lat, lon, east_shift, north_shift, depth).
- ♦ strike¶
float, default:0.0Strike direction in [deg], measured clockwise from north.
- ♦ dip¶
float, default:90.0Dip angle in [deg], measured downward from horizontal.
- ♦ rake¶
float, default:0.0Rake angle in [deg], measured counter-clockwise from right-horizontal in on-plane view.
- ♦ al1¶
float, default:0.0Left edge source plane coordinate [m].
- ♦ al2¶
float, default:0.0Right edge source plane coordinate [m].
- ♦ aw1¶
float, default:0.0Lower edge source plane coordinate [m].
- ♦ aw2¶
float, default:0.0Upper edge source plane coordinate [m].
- ♦ slip¶
float, optional, default:0.0Slip on the rectangular source area [m].
- class OkadaSource(**kwargs)[source]¶
Bases:
AnalyticalRectangularSourceRectangular Okada source model.
- ♦ opening¶
float, optional, default:0.0Opening of the plane in [m].
- ♦ poisson¶
float, optional, default:0.25Poisson ratio
. The Poisson ratio
. If set to
None, calculated from the Lame’ parametersand
using
(e.g. Mueller 2007).
- ♦ lamb¶
float, optionalFirst Lame parameter
[Pa]. If set to
None, it is computed from Poisson ratioand shear modulus
. Important: We assume a perfect elastic solid with
. Through
this leads to
.
- ♦ shearmod¶
float, optional, default:32000000000.0Shear modulus
[Pa]. If set to
None, it is computed from poisson ratio. Important: We assume a perfect elastic solid with. Through
this leads to
.
- property seismic_moment¶
Scalar Seismic moment
.
Code copied from Kite. It disregards the opening (as for now). We assume
.
Important
We assume a perfect elastic solid with
.
Through
this leads to
.
- Returns:
Seismic moment release.
- Return type:
- property moment_magnitude¶
Moment magnitude
from seismic moment.
We assume
.
- Returns:
Moment magnitude.
- Return type:
- source_patch()[source]¶
Get source location and geometry array for okada_ext.okada input.
The values are defined according to Okada (1992).
- Returns:
Source data as input for okada_ext.okada. The order is northing [m], easting [m], depth [m], strike [deg], dip [deg], al1 [m], al2 [m], aw1 [m], aw2 [m].
- Return type:
ndarray:(9, )
- source_disloc()[source]¶
Get source dislocation array for okada_ext.okada input.
The given slip is splitted into a strike and an updip part based on the source rake.
- Returns:
Source dislocation data as input for okada_ext.okada. The order is dislocation in strike [m], dislocation updip [m], opening [m].
- Return type:
ndarray:(3, )
- discretize(nlength, nwidth, *args, **kwargs)[source]¶
Discretize fault into rectilinear grid of fault patches.
Fault orientation, slip and elastic parameters are passed to the sub-faults unchanged.
- Parameters:
- Returns:
Discrete fault patches.
- Return type:
list of
OkadaPatch
- class OkadaPatch(parent=None, *args, **kwargs)[source]¶
Bases:
OkadaSourceOkada source with additional 2D indexes for bookkeeping.
- ♦ ix¶
intRelative index of the patch in x
- ♦ iy¶
intRelative index of the patch in y
- make_okada_coefficient_matrix(source_patches_list, pure_shear=False, rotate_sdn=True, nthreads=1, variant='normal')[source]¶
Build coefficient matrix for given fault patches.
The boundary element method (BEM) for a discretized fault and the determination of the slip distribution
from stress drop
is based on
. Here the coefficient matrix
is built, based on the displacements from Okada’s solution (Okada, 1992) and their partial derivatives.
- Parameters:
source_patches_list (list of
OkadaSource.) – Source patches, to be used in BEM.pure_shear (bool) – If
True, only shear forces are taken into account.rotate_sdn (bool) – If
True, rotate to strike, dip, normal.nthreads (int) – Number of threads.
- Returns:
Coefficient matrix for all source combinations.
- Return type:
ndarray:(len(source_patches_list) * 3, len(source_patches_list) * 3)
- invert_fault_dislocations_bem(stress_field, coef_mat=None, source_list=None, pure_shear=False, epsilon=None, nthreads=1, **kwargs)[source]¶
BEM least squares inversion to get fault dislocations given stress field.
Follows least squares inversion approach by Menke (1989) to calculate dislocations on a fault with several segments from a given stress field. The coefficient matrix connecting stresses and displacements of the fault patches can either be specified by the user (
coef_mat) or it is calculated using the solution of Okada (1992) for a rectangular fault in a homogeneous half space (source_list).- Parameters:
stress_field (
ndarray:(nsources, 3)) – Stress change [Pa] for each source patch (asstress_field[isource, icomponent]where isource indexes the source patch andicomponentindexes component, ordered (strike, dip, tensile).coef_mat (
ndarray:(len(source_list) * 3, len(source_list) * 3)) – Coefficient matrix connecting source patch dislocations and the stress field.source_list (list of
OkadaSource) – Source patches to be used for BEM.epsilon (float) – If given, values in
coef_matsmaller thanepsilonare set to zero.nthreads (int) – Number of threads allowed.
- Returns:
Inverted displacements as
displacements[isource, icomponent]where isource indexes the source patch andicomponentindexes component, ordered (strike, dip, tensile).- Return type:
ndarray:(nsources, 3)