Ffaultdisp

Ffaultdisp (finite fault displacement solver) is intended to calculate static or pseudo-dynamic coseismic crustal deformations using Finite Fault Model data according to Okada formulae. In static mode (default behavior) Ffaultdisp is producing resulting 3-components field of surface deformations. In pseudo-dynamic mode Ffaultdisp is producing netCDF file with series of time-separated snapshots of 3-components field from the begining of the rupture process. Multithreaded computation (OpenMP) is enabled by default.

Use -h option to get help on commandline arguments:

Usage: ffaultdisp [FAULT] -r lon1/lat1/lon2/lat2 [-o dispfile] [-i lon_int/lat_int] [-c CR] [-p FP] [-d time_int] [--precision P]
  or:  ffaultdisp [FAULT] -s setfile [-o dispfile]  [-c CR] [-p FP] [--precision P]
Finite Fault Model data can be supplied via standart input or from file
Standart output will be used if -o option is omited

Options:
 -h, --help: prints help
 -o, --output: specifies output deformation file instead of standart output
 -r, --region: specifies calculation region for grid, lon -180/180 or 0/360, lat -90/90
 -s, --set: specifies file containing a set of points to calculate
 -i, --interval: sets grid spacial interval in ang min (1/1 by default)
 -c, --CR: specifies mu/(lambda+mu) ratio (0.5 by default)
 -p, --fault-pos: adjusts fault centroid position (0: bottom left, 1: center [default], 2: bottom center, 3: top center)
 -d, --dynamic: DYNAMIC MODE -- generate displacement fields with specified time interval
	input: FSP format, output: netCDF format
 --precision: number of decimal digits of displacement to output (default is 5)

Input

Ffauldisp supports two input formats for finite faults: FSP and own format.
  1. FSP format description is available here: http://equake-rc.info/SRCMOD/fileformats/fsp/. FSP files could be obtained from USGS eathquake catalog.
  2. ffaultdisp own format (spaces or tab separated table):
    lat lon depth[km] slip[cm] rake strike dip L[m] W[m]
    Empty lines are ignored, '#' can be used for comments at any position.
A file with a set of point for calculation could be specified instead of grid as follows (tab separated):
lon lat comment

Output

  1. TXT grid output format (tab separated):
    lon lat ux uy uz
  2. Set of points output format (tab separated):
    lon lat ux uy uz comment
  3. netCDF file
The output values are in meters.

ChangeLog

28 Jan 2021: v1.0.1
Reading data from standart input fixed
28 Oct 2020: v1.0
Dynamic mode
25 Sep 2020: v0.5
FSP format support
17 Feb 2018: v0.4.5
Fix fault longitude issue
09 Nov 2017: v0.4.4
Fix calculations around +/-180 longitude
03 Dec 2015: v0.4.3
Fixed one line FFM files parsing
14 Jul 2015: v0.4.2
New option --precision for tune number of digits of to output
29 Apr 2014: v0.4.1
Spherical distance is calculated correctly now
13 Apr 2014: v0.4
Added ability to produce a set of point instead of grid (-s option)
Region bounds check fixed
29 Jan 2014: v0.3
Top center centroid position added
03 Oct 2013: v0.2
Small code and build fixes
23 Mar 2012: v0.1
Initial release

How fast?

Grid mode:

USGS Finite fault for Tohoku 2011 EQ (325 subfaults). Making a 6°×10° grid with 1' spacing:
$ time ./ffaultdisp FF_20110311\ Tohoku\ USGS\ new.txt -o TohokuUSGS.txt -r 139/33/145/43
Fault 325 of 325

real	0m56.726s
user	5m15.426s
sys	0m0.430s
This test was performed on AMD Phenom II X6 1075T (3 GHz) machine.

Set mode:

USGS Finite fault for Iquique, Chile M8.2 2014/04/01 (374 subfaults). Calculating a set of 452 IGS stations:
$ time ffaultdisp ~/ffm/Iquique_14apr01.ffm -s ~/ffm/igsstations.txt -o /tmp/set.dat
Point 452 of 452

real	0m1.485s
user	0m2.300s
sys	0m0.013s
This test was performed on AMD E-450 APU (1.65 GHz) powered laptop.

Build requirements

You can disable OpenMP at build-time passing --disable-openmp to ./configure.

Sources

Language: C++

Platform: Linux (and probably UNIX)

Sources are under GPLv3 license.

Just get it, compile and use: ffaultdisp-1.0.tar.xz. Also Arch Linux PKGBUILD is available.

Feel free to email me on any questions and bugs. My address can be found inside README file of source package.

Acknowledgments

The okada85 code by François Beauducel (Institut de Physique du Globe de Paris) and a code by Prof. Mikhail Nosov (Moscow State University) was used for verification and testing.


References

Okada Y. Surface deformation due to shear and tensile faults in a half-space //Bull. Seis. Soc. Am., 75(4), 1985. – P.1135-1154.