Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 2 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (8.7%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: kajjohns
- Language: MATLAB
- Default Branch: main
- Size: 11.8 MB
Statistics
- Stars: 13
- Watchers: 2
- Forks: 8
- Open Issues: 0
- Releases: 2
Metadata Files
README.md
SliDeFS
SliDeFS (Slip Deficit From Strain) is a method for inverting surface strain rate components for slip deficit rate on faults as described in Johnson et al. (2024, see citation at bottom). The most recent release of SliDeFS inverts for slip deficit rates on faults and distributed moment sources. Faults are discretized into rectangular slip patches and the Okada (1985) solution is used to relate slip deficit rate (backslip) to surface strain rates (Exx, Exy, Eyy). Off-fault moment sources are represented with analytical solutions for force couples in a thin elastic plate (plane stress elasticity). The inversion is a bounded least squares inversion with optional spatial smoothing of slip deficit rate and damping of moment sources. Gaussian or truncated Gaussian priors on slip deficit rate can be included. Strain rates are computed on a triangular mesh constructed from surface traces of the fault model to minimize strain singularity artifacts. Details are provided in Johnson et al. (2022). Moment sources are computed at nodes of the same triangular mesh used for the slip deficit rate calculations. This mesh can be quite dense in areas of fault complexity. It would not be difficult to modify the code to utilize a different, simpler, mesh for the moment sources, but this has not been coded into the current release.
A brief listing of the workflow steps is provided here followed by more detailed explanations below.
- Prepare fault geometry and create FaultInfo mat file. Prepare strain rate observation file (text file) with columns lon, lat, Exx, Exy, Eyy, SigExx, SigExy, Sig_Eyy where strain rates and standard deviations are in units of 1/yr or micro-strain/yr (units are specified with a flag in the code)
- In the buildmesh folder, run buildmesh.m to create the triangular mesh for strain rate Greens functions.
The remaining steps are all conducted in the main SliDeFS folder.
- Run buildbackslipGreensFunctions.m. Will take a few minutes for relatively small problem (100-200 segments) up to several hours for a large problem (thousands of segments).
- Run invertstrainratefor_backslip.m. Will take a few seconds for small problems and up to ~15-20 minutes for large problems.
- Run plotbestfitting.m to view inversion results.
- (optional) Run plotprincipaldirections.m to view observed and model principal strain rate directions
- (optional) Run sample_posterior.m to compute posterior distribution of slip deficit rate. (minutes to hours depending on size of problem)
- (optional – requires step 7) Run plotslipratesalongfaults.m to visualize depth-averaged slip deficit rates along specified faults.
- (optional – requires step 7) Run plotmomentsources.m to visualize the spatial distribution of principal moment rate sources and uncertainties.
More detailed description of workflow.
- Prepare the fault geometry and create FaultInfo file. I have included an example, faultinfoCSAF.mat, for central San Andreas Fault. The method assumes rectangular, planar fault sections defined with a strike and dip using the right-hand rule -- thumb with palm down points in direction of strike (thumb points from first endpoint of segment towards second endpoint) and index finger in direction of positive dip angle (between 0 and 90 degrees). You need to build the FaultInfo mat file that contains a cell array of fault information as shown below. Each entry of the array is for a fault comprised of smaller segments (often many). Rake is defined as the angle in the fault plane between the slip vector and the strike vector. Zero degree rake is left-lateral, +/-180 is right lateral, 90 is reverse and -90 is normal sense of slip.
% this needs to be a mat file that contains a cell array of FaultInfo
% structures for each fault in the model. For the k-th fault, FaultInfo{k}
% contains
% FaultInfo{k}.SegEnds, (Nx4 matrix of N fault segment coordinates (Cartesian) of
% format [x1 x2 y1 y2] where (x1,y1) is first endpoint and (x2,y2)
% is the other endpoint
% FaultInfo{k}.FaultName, string, name of fault
% FaultInfo{k}.FaultID, ID number associated with fault, scalar
% FaultInfo{k}.Dip, dip angle (degrees, positive), scalar
% FaultInfo{k}.Rake, rake angle (degrees), scalar
% FaultInfo{k}.PrefSlipRate, preferred slip rate (mm/yr), scalar
% FaultInfo{k}.UBSlipRate, upper bound on slip rate (mm/yr), scalar
% FaultInfo{k}.LBSlipRate, lower bound on slip rate (mm/yr), scalar
% FaultInfo{k}.STDSlipRate, standard deviation of slip rate (mm/yr), scalar
% NOTE: PrefSlipRate, UBSlipRate, LBSlipRate, or STDSlipRate can be set to
% empty, [], if not known
% FaultInfo{k}.RecurrenceTime, earthquake recurrence time, yrs, specify nan
% if you don't want to compute earthquake cycles for the fault
% (i.e., use elastic halfspace solution), specify 'inf' to use the
% default value
% FaultInfo{k}.TimeSinceEq, time since last last earthquake (yr),
% specify 'inf' to use default setting
Create the triangular mesh for strain rate Greens functions using buildmesh.m. Various parameters are specified in INPUT SECTION. This script requires the FaultInfo file because the mesh depends on fault segment geometry. Specify the nominal slip patch length (along strike) – this needs to be the same length use to make the slip patches in buildbackslip_GreensFunctions.m. hmax is the largest allowable patch size in the mesh (side length of triangle). The mesh geometry parameters are saved in mat file named by string variable ‘savename’.
Build Greens Functions. Various parameters and options are set in the INPUT SECTION: (a) The origin (lat, lon) is used to convert to Cartesian coordinate system and must be same origin used to for the Cartesian geometry specified in FaultInfo. (b) variablerake is ‘true’ if you want to allow estimated slip deficit vector to deviate from the rake specified in FaultInfo. This requires Greens functions to be computed in rake and rake-perpendicular directions. Set to ‘false’ if you want to require slip deficit in direction of rake in Faultinfo. (c) coseismicslip (meters) is used to define the default recurrence time for faults. Recurrence time is coseismicslip*1000/PrefSlipRate (PrefSlipRate in mm/yr, specified in FaultInfo. (d) teqfrac is the default time since the last earthquake, normalized by recurrence time (e) Slip patch discretization paremeters: nvetotal is number of slip patches down dip on faults, pL is the nominal patch length along strike, and DLockmax is the bottom depth of the fault (also maximum locking depth). (f) refine is the length (km) of refined fault patches used to construct the Greens Functions for the top row of slip patches. Although the inversion solves for slip deficit on larger slip patches, the refined, smaller slip patches with imposed linear slip gradients are used to construct the Greens Functions of the shallow patches to avoid strain rate singularities due to discontinuous slip gradients. (refine=1 km is recommended). (g) Nterms is the number of terms in the Hankel transform for the viscoelastic calculations. Nterms=100 is fine for model domains of a few 100 km, but Nterms=200 shoud be used for larger model domains (about 1000 km) (h) Viscosity model parameters: H1 is elastic thickness (km) which probably should be same as DLockmax. H2 is thickness of ‘mantle lid’ (typically higher viscosity than mantle). tR1 is relaxation time of mantle lid, and tR2 is relaxation time of mantle below depth H2.
Various parameters/options for the inversion are specified in the INPUT SECTION of invertstrainrateforbackslip.m: (a) regulargrid is used only for plotting purposes. If regulargrid = true, plotting assumes a regular grid spacing of strain rate observations (in lat and long directions) with spacing of dl degrees. (b) If variablerake = true, inversion will solve for slip deficit components in both the specified rake and rake-perpendicular directions (rake specified in FaultInfo) – this requires that you computed variable rake Greens functions. If variablerake = false, inversion will fix slip deficit in direction of specified rake (this is a less expensive inversion). (c) rakeweight is a weighting factor placed on minimizing the amount of rake-perpendicular slip deficit rate. This allows you to control to some extent the degree to which slip deficit direction is allowed to deviate from the specified rake direction. (d) Set useelastic = true to use elastic half-space Greens functions only and ignore time-dependent deformation due to viscoelastic cycle. Set useelastic = false to include viscoelastic earthquake cycle deformation (for faults with FaultInfo.RecurrenceTime values not specified as ‘nan’). (e) Set useGaussianprior = true to use preferred slip rates (mean) and slip rate standard deviations in FaultInfo as gaussian priors o slip deficit rate. If bounds are included, this is a truncated Gaussian prior. (f) If useboundsforstd = true, the bounds in FaultInfo will be used to construct the standard deviation for the Gaussian slip deficit rate prior. In this case, stdscale is used to compute the standard deviations as (ub-lb)*stdscale (g) useupperbounds and uselowerbounds specifiy (true/false) whether bounds are included. If uselowerbounds = false, lower bounds on slip deficit rate are set to zero (to allow fully creeping patches). (h) scaleupperbounds and scalelowerbounds are scalar multipliers to increase or decrease bounds specified in FaultInfo (uniformly). (i) weightsmoothing is weight placed on first-derivative smoothing of slip deficit rate across neighboring slip patches
Run plotbestfitting.m to view inversion results. The INPUT SECTION you to turn on/off a number of plotting options.
Run plotprincipaldirections.m to view observed and model principal strain rate directions. No inputs required.
Run sample_posterior.m to compute posterior distribution of slip deficit rate. The number of samples of slip deficit rate for each slip patch can be varied (10^4 seems to work well) as well as the correlation distance. Slip deficit rate correlations for patches farther than the correlation distance will be neglected (to speed up the sampling).
(optional – requires step 7) Run plotslipratesalongfaults.m to visualize depth-averaged slip deficit rates along specified faults. In the INPUT SECTION, provide a list of fault names (or partial fault names). Any fault name containing the name in the list will be plotted.
(optional – requires step 7) Run plotmomentsources.m to visualize principal directions of moment rate sources and confidence regions. In the INPUT SECTION you can change the size of the principal direction vectors and change the legend scale bar.
Reference: Johnson, K. M., Wallace, L. M., Maurer, J.,Hamling, I., Williams, C., Rollins, C., et al.(2024). Inverting geodetic strain rates forslip deficit rate in complex deforming zones: An application to the New Zealandplate boundary. Journal of GeophysicalResearch: Solid Earth, 129,e2023JB027565. https://doi.org/10.1029/2023JB027565
Owner
- Login: kajjohns
- Kind: user
- Repositories: 1
- Profile: https://github.com/kajjohns
Citation (citation.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Johnson" given-names: "Kaj M." orcid: "https://orcid.org/0000-0003-1511-5241" title: "SliDeFS v1.0.0 [Software]. Zenodo." version: 2.0.0 doi: 10.5281/zenodo.12583880 date-released: 2024-6-28 url: "https://github.com/kajjohns/SliDeFS"
GitHub Events
Total
- Issues event: 2
- Watch event: 6
- Member event: 1
- Issue comment event: 4
- Push event: 8
- Pull request event: 2
- Fork event: 3
Last Year
- Issues event: 2
- Watch event: 6
- Member event: 1
- Issue comment event: 4
- Push event: 8
- Pull request event: 2
- Fork event: 3
Issues and Pull Requests
Last synced: 9 months ago
All Time
- Total issues: 1
- Total pull requests: 1
- Average time to close issues: 2 months
- Average time to close pull requests: 36 minutes
- Total issue authors: 1
- Total pull request authors: 1
- Average comments per issue: 5.0
- Average comments per pull request: 0.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 1
- Pull requests: 1
- Average time to close issues: 2 months
- Average time to close pull requests: 36 minutes
- Issue authors: 1
- Pull request authors: 1
- Average comments per issue: 5.0
- Average comments per pull request: 0.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- ZhangLupeng123 (1)
Pull Request Authors
- jhdorsett (1)