zbMATH — the first resource for mathematics

Computational partial differential equations. Numerical methods and Diffpack programming. (English) Zbl 0929.65098
Lecture Notes in Computational Science and Engineering. 2. Berlin: Springer. xxiii, 658 p. (1999).
This book is a description of the C++ software package Diffpack, result of the work of the author and his coworkers during the past several years. Diffpack is a program that provides features for the numerical treatment of ordinary and partial differential equations (PDEs) and visualization of the solutions by means of graphs and animations. There are versions of the program for Unix/XWindows and DOS/Windows operating systems. Here we will only comment on the book and the Unix version of the demo version of the program. Demo versions of Diffpack can be obtained for free from the company Numerical Objects on a CD-ROM. This company also sells the full version of Diffpack.
The installation program creates a complex file structure with numerous files located in several subdirectories. The ready-made libraries contain hundreds of files designed for linear system solution, grid generation, finite element method (FEM), visualization, etc. In the author’s words, the book is written mainly for readers who are or want to become professional programmers of numerical applications. Earlier experience with the C++ language is not necessary but some background with the C language is needed. Some of the main ideas are to use the object oriented features of the C++ language as a means of achieving conceptual and notational simplicity, as close to mathematical notation as possible. This applies to matrix algebra, in particular.
The book is written with applications to physics, mechanics, and engineering in mind. The treatment is complete and it covers all aspects from mathematical tools to description of algorithms and implementation details. Step by step the book familiarizes the reader with the computational power and features of Diffpack by way of many example programs which in electronic form are available on the CD-ROM. There are more than a hundred exercises which sometimes require small modification of the example programs, sometimes are larger programming projects or theoretical tasks which deepen the text. This approach is quite natural and the example programs are very helpful, because without working examples the use of the numerous ready-made libraries, that are part of Diffpack, would be very difficult for the unexperienced reader.
The graphing of the results is done via Gnuplot or some other graphing options which are mentioned in the book. Standard programming tools are effectively used. These include Perl scripts, makefiles, very extensive writing of simulation results to files, cleaning of directories by deleting unnecessary files, examples of the use of GUIs, etc. The results of simulations can, in some cases, be viewed as a “movie”.
The book is organized into seven chapters and four appendices. The mathematical prerequisites for reading the book are modest, only the standard university curriculum courses multivariable calculus, ordinary differential equations and linear algebra form the foundation on which the book is built. The chapters are: 1. Getting started, 2. Introduction to FEM discretization, 3. Programming FEM solvers, 4. Nonlinear problems, 5. Solid mechanics applications, 6. Fluid mechanics applications, 7. Coupled problems.
The topics thus are best suited for students of computational science and engineering. FEM is the main tool in Diffpack for solving PDEs. The book is also an introduction to both mathematical and programming aspects of FEM. The author has done a very valuable service to the potential users of Diffpack by writing this book. The book is also useful for those who want to learn implementation of numerical object oriented algorithms. Object oriented numerics is still in its beginning stages and there are not too many books available.
This book might be described as a pioneering work in this new area because of its innovations and the new ideas which are implemented in the software. The author indicates that the software will be periodically updated. This is important because the C++ language itself is developping quickly (for instance, at the moment there is no universal standard in C++ for matrix algebra and numerical linear algebra (see http://math.nist.gov/tnt/ for these issues)).

65N30 Finite element, Rayleigh-Ritz and Galerkin methods for boundary value problems involving PDEs
65-02 Research exposition (monographs, survey articles) pertaining to numerical analysis
74-02 Research exposition (monographs, survey articles) pertaining to mechanics of deformable solids
76M10 Finite element methods applied to problems in fluid mechanics
74S05 Finite element methods applied to problems in solid mechanics
65Y15 Packaged methods for numerical algorithms
65F10 Iterative numerical methods for linear systems
76-02 Research exposition (monographs, survey articles) pertaining to fluid mechanics
Diffpack; gnuplot