Month: May 2014

Tutorial on wave propagation

May 30, 2014 Documentation No comments

A new paper is added to the collection of reproducible documents:
Pengliang Yang from Xi’an Jiaotong University contributes A numerical tour of wave propagation

This tutorial is written for beginners as an introduction to basic wave propagation using finite difference method, from acoustic and elastic wave modeling, to reverse time migration and full waveform inversion. Most of the theoretical delineations summarized in this tutorial have been implemented in Madagascar with Matlab, C and CUDA programming, which will benefit readers’ further study.

Erupting Mount St. Helens

May 27, 2014 Examples No comments

The example in rsf/tutorials/sthelens reproduces the analysis by Evan Bianco of the digital elevation data from Mount St. Helens before and after its catastrophic eruption.

Madagascar users are encouraged to try improving the results.

Light Bartlein color palette

May 15, 2014 Examples No comments

The orange-white-purple diverging color palette was suggested in the article

Light, A. and P.J. Bartlein (2004) The end of the rainbow? Color schemes for improved data graphics. EOS Transactions of the American Geophysical Union 85(40):385

Matteo Niccoli recommends it for seismic data as a replacement for the familiar red-white-blue pallete (color=g in Madagascar). Now the Light-Bartlein palette is available to Madagascar plotting programs, such as sfgrey, as color=lb. See the following example from rsf/rsf/sfgrey:

More information:

Program of the month: sfhelicon

May 13, 2014 Programs No comments

sfhelicon performs multidimensional convolution and inverse convolution (recursive filtering) using the helix transform.

The theory behind helical convolution is explained by Jon Claerbout in the paper

Claerbout, J., 1998, Multidimensional recursive filters via a helix: Geophysics, 63, 1532-1541

and in the corresponding chapter in his book Image Estimation by Example. The following example from gee/hlx/helicon illustrates inverse convolution on a helix.

sfhelicon works in N dimensions. The filter for is supplied by filt= parameter, which points to a real-valued RSF file with filter coefficents. The filter lags on a helix can be stored in a separate integer-value RSF file specified wih lag= parameter (which can be optionally contained inside the file with filter coefficients). The dimensions used for specifying the filter lags are not necessarily the same as the dimensions of the input data and can be specified with n= parameter (which can be optionally contained inside the file with filter lags).

The choice between forward and inverse convolution is controlled by div= parameter. The adjoint flag is supplied by adj= parameter. The following figure illustrates the act of the adjoint convolution and inverse convolution on a helix.

For an example of least-squares inversion with sfhelicon using the conjugate-gradient algorithm, see the documentation for sfconjgrad.

10 previous programs of the month:

madagascar-1.6 released

May 9, 2014 Celebration No comments

The 1.6 stable release features fifteen new reproducible papers and multiple other enhancements including the addition of the seismic migration gallery.

According to the SourceForge statistics, the previous 1.5 stable distribution has been downloaded more than 5,000 times. The record number of downloads in September 2013 is probably due to the fact that Madagascar is being used for teaching at different universities. The top country (with 40% of all downloads) was China, followed by the US, Brazil, Mexico, and Australia.

According to, the year before the 1.6 release was the period of a high development activity, with 41 contributors (up 41% compared to the previous year) making 1,762 commits to the repository. says that Madagascar “has a well established, mature codebase maintained by a very large development team with stable year-over-year commits” and estimated 201 man-years of effort.