Ffaultdisp (finite fault displacement solver) is intended to calculate permanent coseismic crust surface deformation using Finite Fault Model data according to Okada formulae. 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] [--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

 -h, --help: prints help
 -o, --output: specifies output deformation file instead of standart output
 -r, --region: specifies calculation region, lon -180/180 or 0/360, lat -90/90
 -s, --set: specifies file containing a set of points to calculate
 -i, --interval: set 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)
 --precision: number of decimal digits of displacement to output (default is 5)


File or piped data with following format:
lat lon depth[km] slip[cm] rake strike dip L[m] W[m]
This is a slightly modified USGS Subfault format. Empty lines are ignored, '#' can be used for comments at any position.

Set of points input format:

lon lat comment


Coseismic crust surface deformation (in meters) can be saved into file or printed to standart output.

Grid format (default):

lon lat ux uy uz
Set of points format (if -s option is used):
lon lat ux uy uz comment


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

Autoconf 2.62+
GCC 4.6.3+

At build-time you can disable OpenMP passing --disable-openmp to ./configure.


Language: C++
Platform: Linux (and probably UNIX)

Sources are under GPLv3 license. Just get it, compile and use: ffaultdisp-0.4.5.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.


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.


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