Open-source codes for the Transdimensional Bayesian Fault-slip Inversion (Parametric Slip Inversion, PSI) following Hallo and Gallovic (2020). The model space is sampled by the Markov Chain Monte Carlo (MCMC) with Parallel Tempering that allows exploration of highly-dimensional model spaces. The code is parallelized in Fortran by MPI (CPU) that allows usage of High-Performance Computing (HPC) clusters.
Hallo, M., Gallovic, F. (2020). Bayesian self-adapting fault slip inversion with Green's functions uncertainty and application on the 2016 Mw7.1 Kumamoto earthquake, Journal of Geophysical Research: Solid Earth, 125, e2019JB018703. https://doi.org/10.1029/2019JB018703
Bayesian Inference, Markov Chain Monte Carlo (MCMC), Uncertainty Quantification, High-Performance Computing (HPC), Code Parallelization (MPI/CPU), Transdimensional Bayesian Inference, Data-driven Inversion, Occam's razor
The official software version is archived on Zenodo:
Copyright (C) 2017-2019 Miroslav Hallo
This program is published under the GNU General Public License (GNU GPL).
This program is free software: you can modify it and/or redistribute it or any derivative version under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. We would like to kindly ask you to acknowledge the authors and don't remove their names from the code.
You should have received copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
a) Compiled "pt.f90"
- Parallel Tempering library (M.Sambridge)
- http://www.iearth.edu.au/codes/ParallelTempering/
b) Compiled "time_2d.c"
- Finite-differences computation of 2D travel time library (P.Podvin)
- https://github.com/fgallovic/RIKsrf/blob/master/src-RIKsrf/Time_2d.c
c) Compiled "gr_nez.for" and "cnv_nez.for"
- Discrete wavenumber method for Green's functions computation (M.Bouchon)
- https://github.com/fgallovic/LinSlipInv/tree/master/src-dwn
d) LINUX/UNIX machine with LAPACK or MKL
e) Fortran90 and MPI compilers
f) MATLAB for ploting results
dwn - Directory containing Green's functions computation
examples - Directory containing examples of input files
input - Directory with input files
inv - Work directory for the ongoing inversion
lib - Directory with compiled libraries and additional functions
src - Directory with source codes of the PSI
plot_prepare.m - Plots prepared suf-faults for Green's functions
plot_psi_fit.m - Plots final data fit
plot_psi_model.m - Plots final fault-slip model
plot_psi_posteriorPDF.m - Plots ensemble statistics
run_psi.sh - Run the PSI inversion
run_res.sh - Run post-processing of the PSI inversion
- Compile Green's functions computation codes in the folder
- Copy the required third-party PT and Time_2d libraries into folder
- Set your compilers in MAKEFILE in the folder
- Compile the PSI by using the MAKEFILE, executable binaries should appear
- Set input parameters into files of the folder
- Run ./stations to prepare list of stations in X,Y coordinates (or prepare it manually)
- Run ./prepare to prepare input files for Green's functions computation
- Compute Green's functions and copy NEZsor.dat into PSI root folder
- Prepare observed data into NEZwave.dat file in the PSI root folder (ASCII file)
- Run ./waves to prepare vector of observed data var_Unez.tmp
- Execute PSI inversion using ./run_psi.sh bash script
- Execute PSI post-processing using ./run_res.sh bash script
- Plot and see results in the folder by MATLAB scripts in the PSI root folder
Note: See connected example files for the structure of ASCII input files and observed data.