This program performs a simultaneous Transdimensional inversion of Surface wave dispersion curves with the reversible jump algorithm
Primary contributors:
Thomas Bodin, Dorian Soergel, Alistair Boyce
README last updated: A, Boyce 09/12/2021
----------------------------- CITATION -----------------------------
If you use this code please cite the following manuscript:
Bodin, T., Leiva, J., Romanowicz, B., Maupin, V. & Yuan, H. (2016) Imaging anisotropic layering with Bayesian inversion of multiple data types. Geophys. J. Int. 206, 605–629. doi: 10.1093/gji/ggw124.
----------------------------- OUTLINE -----------------------------
- LICENSE
- README.md
- data_joint.h : parameter file for joint inversion, input data
- params.h : parameter file for internal variables
- Makefile : Fortran compilation file (uses mpif90)
- Model_PREM_SIMPLE.in : Reference model (Currently PREM)
- RJ_MCMC_joint.f90 : MAIN CODE
- postprocess_binary_outputs.f90 : Postprocessing of bayesian output
- src/ : Supporting code & functions
- dispersion_all.in : input dispersion curve file
- process_MCMC_output_joint.py : performs the re-weighting step
- postprocess_util.py : supporting functions for re-weighting
- postprocess_functions.py : functions to be applied on each sample
- plot_results_joint.py : Plotting scripts in python
----------------------------- DETAILS -----------------------------
The main code is compiled using make joint
. The relevant parameters are mostly in data_joint.h, in particular the input/output file names, the number of temperatures and the number of iterations, thinning and burn-in, as well as the bounds for inverted parameters, in particular the bounds for Vs, Xi, Vp and the uncertainty parameters for Rayleigh and Love waves. The bounds for the number of layers is in params.h .
The code produces unformatted output files, which contain a header containing different parameters of the inversion and for each model the number of layers of the model, the values of the different parameters for each layer as well as the corresponding dispersion curves. These binary files are then converted to text files using the postprocess_binary_outputs.f90
code compiled with make postprocess_binary
.
The re-weighting step, that for each dispersion curve and each sample of the bayesian inversion determines a weight and then applies it to various functions is done by process_MCMC_output_joint.py
. The functions to be applied on each sample are defined in postprocess_functions.py
. This produces output hdf5 files.
The plotting can then be done using plot_results_joint.py
.