The computational demands of modern-day simulation software needed
across a range of diverse scientific disciplines lead many programmers
to choose to write their code in an object-oriented language such as
C++.
This easy-to-read textbook/reference presents an essential guide to
object-oriented C++ programming for scientific computing. With a
practical focus on learning by example, the theory is supported by
numerous exercises. Features of both the C++ language and standard
libraries are highlighted via the development of classes of vectors and
matrices, allowing demonstration of key concepts such as inheritance,
encapsulation, operator overloading, templates, and exception handling.
The text then explains how these classes can be adapted for parallel
computing, before demonstrating how a flexible, extensible library can
be written for the numerical solution of differential equations.
Topics and features: provides a specific focus on the application of C++
to scientific computing, including parallel computing using MPI;
stresses the importance of a clear programming style to minimize the
introduction of errors into code; presents a practical introduction to
procedural programming in C++, covering variables, flow of control,
input and output, pointers, functions, and reference variables; exhibits
the efficacy of classes, highlighting the main features of
object-orientation; examines more advanced C++ features, such as
templates and exceptions; supplies useful tips and examples throughout
the text, together with chapter-ending exercises, and code available to
download from www.springer.com.
This clearly written textbook is a "must-read" for programmers of all
levels of expertise. Basic familiarity with concepts such as operations
between vectors and matrices, and the Newton-Raphson method for finding
the roots of non-linear equations, would be an advantage, but extensive
knowledge of the underlying mathematics is not assumed.