Home page of Dimitri Komatitsch

 

Current SEISMIC_CPML download map since its first release

 

SEISMIC_CPML is a set of eight open-source Fortran90 programs to solve the two-dimensional or three-dimensional isotropic or anisotropic elastic, viscoelastic or poroelastic wave equation using a finite-difference method with Convolutional Perfectly Matched Layer (C-PML) conditions, developed by Dimitri Komatitsch and Roland Martin from University of Pau, France.

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

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). PDF reprint 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). PDF reprint 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). PDF reprint 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). PDF reprint 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 very well in practice even if it is not perfectly matched any more from a mathematical point of view.

This software is governed by the CeCILL license (version 2) (a French license very similar to GNU GPL version 2) under French law and abiding by the rules of distribution of free software. You can use, modify and/or redistribute the software under the terms of the CeCILL license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".

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

@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}}

@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}}

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 eight programs:


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

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

seismic_CPML_2D_anisotropic.f90: 2D C-PML program for an 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 very 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_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_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 PML and C-PML, see for instance Wikipedia about PML.

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

Full text of the CeCILL licence (version 2)

Official web site of the CeCILL licence

Home page of Dimitri Komatitsch