Home page of Dimitri Komatitsch

 

SEISMIC_CPML is a set of twelve open-source Fortran90 programs under the GNU GPL version 2+ license to solve the two-dimensional or three-dimensional isotropic or anisotropic acoustic, elastic, viscoelastic or poroelastic wave equation using a finite-difference method with Convolutional or Auxiliary Perfectly Matched Layer (C-PML or ADE-PML) conditions, developed by Dimitri Komatitsch and Roland Martin from CNRS, France. Contributions by other authors have recently been added.

You can get the full source code of the programs at the official Web site: http://geodynamics.org/cig/software/seismic_cpml

The codes are then self-explanatory and very easy to use; to understand how to use them just edit the source codes and read the comments they contain.

The unsplit Convolutional Perfectly Matched Layer (C-PML) for the 3D elastic wave equation was introduced and is described in detail in:

Dimitri Komatitsch and Roland Martin, An unsplit convolutional Perfectly Matched Layer improved at grazing incidence for the seismic wave equation, Geophysics, vol. 72(5), p SM155-SM167, doi: 10.1190/1.2757586 (2007). Preprint BibTeX

It was originally developed for Maxwell's equations by Roden and Gedney (2000) (see reference below).

An extension to viscoelastic media is developed in:

Roland Martin and Dimitri Komatitsch, An unsplit convolutional perfectly matched layer technique improved at grazing incidence for the viscoelastic wave equation, Geophysical Journal International, vol. 179(1), p. 333-344, doi: 10.1111/j.1365-246X.2009.04278.x (2009). Preprint BibTeX

and the viscoelastic parameters of the Zener body model used to fit a constant-Q model are computed based upon:

Émilie Blanc, Dimitri Komatitsch, Emmanuel Chaljub, Bruno Lombard and Zhinan Xie, Highly-accurate stability-preserving optimization of the Zener viscoelastic model, with application to wave propagation in the presence of strong attenuation, Geophysical Journal International, vol. 205(1), p. 427-439, doi: 10.1093/gji/ggw024 (2016). Preprint BibTeX


An extension to poroelastic media is developed in:

Roland Martin, Dimitri Komatitsch and Abdelaâziz Ezziani, An unsplit convolutional Perfectly Matched Layer improved at grazing incidence for seismic wave propagation in poroelastic media, Geophysics, vol. 73(4), p T51-T61, doi: 10.1190/1.2939484 (2008). Preprint BibTeX

and a variational formulation is developed in:

Roland Martin, Dimitri Komatitsch and Stephen D. Gedney, A variational formulation of a stabilized unsplit convolutional perfectly matched layer for the isotropic or anisotropic seismic wave equation, Computer Modeling in Engineering and Sciences, vol. 37(3), p. 274-304 (2008). Preprint BibTeX

An extension to higher-order time schemes, called ADE-PML (Auxiliary Differential Equation - PML) is developed in:

Roland Martin, Dimitri Komatitsch, Stephen D. Gedney and Émilien Bruthiaux, A high-order time and space formulation of the unsplit perfectly matched layer for the seismic wave equation using Auxiliary Differential Equations (ADE-PML), Computer Modeling in Engineering and Sciences, vol. 56(1), p. 17-42 (2010). Preprint BibTeX

Note that in the case of an anisotropic medium the modification made is not strictly speaking perfectly matched any more, i.e., not a PML, but rather a “Modified PML / M-PML” based on Meza-Fajardo and Papageorgiou, Bulletin of the Seismological Society of America, vol. 98(4), p. 1811-1836 (2008). However, it works well in practice even if it is not perfectly matched any more from a mathematical point of view.

IMPORTANT: all of our codes are written in Fortran; if you have written or if you write a C or C++ version of some of these codes and want to make them open source (GNU GPL v2 or v3) and part of the package, please do not hesitate to send them to us, we will add them to our tar file and will acknowledge you as the author.

This software is governed by the GNU GPL version 2+ license.

If you use this code for your own research, please cite some (or all) of these articles:

@ARTICLE{BlKoChLoXi16,
title = {Highly accurate stability-preserving optimization of the {Z}ener viscoelastic model, with application to wave propagation in the presence of strong attenuation},
author = {\'Emilie Blanc and Dimitri Komatitsch and Emmanuel Chaljub and Bruno Lombard and Zhinan Xie},
journal = {Geophysical Journal International},
year = {2016},
number = {1},
pages = {427-439},
volume = {205},
doi = {10.1093/gji/ggw024}}

@ARTICLE{MaKo09,
author = {Roland Martin and Dimitri Komatitsch},
title = {An unsplit convolutional perfectly matched layer technique improved at grazing incidence for the viscoelastic wave equation},
journal = {Geophysical Journal International},
year = {2009},
volume = {179},
number = {1},
pages = {333-344},
doi = {10.1111/j.1365-246X.2009.04278.x}}

@ARTICLE{MaKoEz08,
author = {Roland Martin and Dimitri Komatitsch and Abdelaaziz Ezziani},
title = {An unsplit convolutional perfectly matched layer improved at grazing incidence for seismic wave equation in poroelastic media},
journal = {Geophysics},
year = {2008},
volume = {73},
pages = {T51-T61},
number = {4},
doi = {10.1190/1.2939484}}

@ARTICLE{MaKoGe08,
author = {Roland Martin and Dimitri Komatitsch and Stephen D. Gedney},
title = {A variational formulation of a stabilized unsplit convolutional perfectly matched layer for the isotropic or anisotropic seismic wave equation},
journal = {Computer Modeling in Engineering and Sciences},
year = {2008},
volume = {37},
pages = {274-304},
number = {3}}

@ARTICLE{MaKoGeBr10,
author = {Roland Martin and Dimitri Komatitsch and Stephen D. Gedney and Emilien Bruthiaux},
title = {A high-order time and space formulation of the unsplit perfectly matched layer for the seismic wave equation using {Auxiliary Differential Equations (ADE-PML)}},
journal = {Computer Modeling in Engineering and Sciences},
year = {2010},
volume = {56},
pages = {17-42},
number = {1}}

@ARTICLE{KoMa07,
author = {Dimitri Komatitsch and Roland Martin},
title = {An unsplit convolutional {P}erfectly {M}atched {L}ayer improved at grazing incidence for the seismic wave equation},
journal = {Geophysics},
year = {2007},
volume = {72},
number = {5},
pages = {SM155-SM167},
doi = {10.1190/1.2757586}}


Roden and Gedney's original article for Maxwell's equations is:


@ARTICLE{RoGe00,
author = {J. A. Roden and S. D. Gedney},
title = {Convolution {PML} ({CPML}): {A}n Efficient {FDTD} Implementation of the {CFS}-{PML} for Arbitrary Media},
journal = {Microwave and Optical Technology Letters},
year = {2000},
volume = {27},
number = {5},
pages = {334-339},
doi = {10.1002/1098-2760(20001205)27:5<334::AID-MOP14>3.0.CO;2-A}}



The package is composed of the following twelve programs:


seismic_CPML_2D_pressure_second_order.f90: 2D C-PML program for an acoustic medium using a second-order finite-difference spatial operator.

seismic_CPML_2D_isotropic_second_order.f90: 2D C-PML program for an elastic isotropic medium using a second-order finite-difference spatial operator.

seismic_CPML_2D_isotropic_fourth_order.f90: 2D C-PML program for an elastic isotropic medium using a fourth-order finite-difference spatial operator.

seismic_CPML_2D_anisotropic.f90: 2D C-PML program for an elastic anisotropic medium using a second-order finite-difference spatial operator. More precisely we implement a “Modified PML / M-PML” based on Meza-Fajardo and Papageorgiou, Bulletin of the Seismological Society of America, vol. 98(4), p. 1811-1836 (2008). Strictly speaking the layers are not perfectly matched any more from a mathematical point of view, but the code works well in practice.

seismic_CPML_2D_poroelastic_fourth_order.f90: 2D C-PML program for a poroelastic medium using a fourth-order finite-difference spatial operator.

seismic_ADEPML_2D_elastic_RK4_eighth_order.f90: 2D ADE-PML program for an isotropic elastic medium using an eighth-order finite-difference spatial operator and fourth-order Runge-Kutta implicit, semi implicit or explicit time scheme.

seismic_ADEPML_2D_viscoelastic_RK4_eighth_order.f90: 2D ADE-PML program for an isotropic viscoelastic medium using an eighth-order finite-difference spatial operator and fourth-order Runge-Kutta implicit, semi implicit or explicit time scheme.

seismic_PML_Collino_2D_isotropic.f90: 2D classical split PML program for an isotropic medium using a second-order finite-difference spatial operator, for comparison.

seismic_PML_Collino_2D_anisotropic_fourth.f90: 2D classical split PML program for an anisotropic medium using a fourth-order finite-difference spatial operator, for comparison.

seismic_CPML_3D_isotropic_MPI_OpenMP.f90: 3D C-PML program for an isotropic medium using a second-order finite-difference spatial operator. Parallel implementation based on both MPI and OpenMP.

seismic_PML_Collino_3D_isotropic_OpenMP.f90: 3D classical split PML program for an isotropic medium using a second-order finite-difference spatial operator, for comparison. Parallel implementation based on OpenMP.

seismic_CPML_3D_viscoelastic_MPI.f90: 3D C-PML program for a viscoelastic medium using a fourth-order finite-difference spatial operator. Parallel implementation based on MPI.

Makefile: a standard Makefile. You can type “make all” to compile all the codes.

For more details about the classical PML, see for instance Wikipedia about PML.

For more details about finite differences in the time domain (FDTD), see for instance Wikipedia about FDTD.

Home page of Dimitri Komatitsch