Although numerical methods have a sound mathematical basis there is also a bit of creativity involved; the finite-difference method is no exception. This book provides a good review of the mathematical foundations for the various numerical implementations, but it does not shy away from discussing the many creative solutions often needed to make these algorithms tractable and efficient. This book is focused primarily on modelling earthquake ruptures and seismic waves; however, it will have utility for any seismologist interested in and/or involved with seismic wave propagation problems.
The finite-difference method applied to seismic problems has been around for over 50 years and, as such, there is a significant database of peer-reviewed literature. However, this book is one of only a few that provides a consistent and compact treatise of the finite-difference method for the seismic wave propagation problem. Most books that I have come across are actually a collection of peer-reviewed papers (i.e. monograph); although they do provide a comprehensive collection of state-of-the-art research, they lack a coherent voice and theme.
This book is divided into four parts. Part 1 gives a review of the elastic wave equation, viscoelasticity and earthquake source mechanism. Part 2 presents the finite-difference method for both the one-dimensional and three-dimensional case, describing the more popular formulations and numerical implementations with sufficient detail about boundary conditions. In Part 3, the authors move beyond the finite-difference method and provide some discussion on hybrid finite-difference implementations as well as the finite-element method. Finally, in Part 4 the authors provide an example of applying the finite-difference method to study real data. Furthermore, the authors discuss the importance of verification and validation of the finite-difference method. As an added bonus, the authors provide access to computer codes via online resources. The codes are fairly easy to install either for single-core or message passing interface (MPI) implementation, and could be used as a learning resource and/or for research.
I have some reservations about this book however, and hope these can be addressed in future editions. First, the discussion often presents developments in the various aspects of the finite-difference method in chronological order and often in significant detail; all this detail may be a distraction from the main point of discussion, however. Although it is understandable that the authors wish to credit all bodies of research in order to be as complete and balanced as possible in their discussion, I felt the mention of particular papers was not always relevant to the point being made. Second, it would be helpful to have references of key publications at the end of each chapter and/or suggestions for further reading. Third, if the authors were to develop some worked examples throughout the book, this would enable the concepts presented to be linked to actual algorithms (such as within the computer coding provided online). In my experience, learning is certainly enhanced when concepts are applied to a practical problem.
That said, I would certainly buy a hard copy of this book at £75. In fact, I wish this book had been available while I was working on my PhD thesis. It will make an extremely useful addition to my current library, fitting nicely between Computational Fluid Mechanics and Heat Transfer by Tannehill et al. (Reference Tannehill, Anderson and Pletcher1997) and A Practical Guide to Pseudospectral Methods by Fornberg (Reference Fornberg1998).