Solving PDEs in C++


Book Description

In this much-expanded second edition, author Yair Shapira presents new applications and a substantial extension of the original object-oriented framework to make this popular and comprehensive book even easier to understand and use. It not only introduces the C and C++ programming languages, but also shows how to use them in the numerical solution of partial differential equations (PDEs). The book leads readers through the entire solution process, from the original PDE, through the discretization stage, to the numerical solution of the resulting algebraic system. The high level of abstraction available in C++ is particularly useful in the implementation of complex mathematical objects, such as unstructured mesh, sparse matrix, and multigrid hierarchy, often used in numerical modeling. The well-debugged and tested code segments implement the numerical methods efficiently and transparently in a unified object-oriented approach.




PETSc for Partial Differential Equations: Numerical Solutions in C and Python


Book Description

The Portable, Extensible Toolkit for Scientific Computation (PETSc) is an open-source library of advanced data structures and methods for solving linear and nonlinear equations and for managing discretizations. This book uses these modern numerical tools to demonstrate how to solve nonlinear partial differential equations (PDEs) in parallel. It starts from key mathematical concepts, such as Krylov space methods, preconditioning, multigrid, and Newton’s method. In PETSc these components are composed at run time into fast solvers. Discretizations are introduced from the beginning, with an emphasis on finite difference and finite element methodologies. The example C programs of the first 12 chapters, listed on the inside front cover, solve (mostly) elliptic and parabolic PDE problems. Discretization leads to large, sparse, and generally nonlinear systems of algebraic equations. For such problems, mathematical solver concepts are explained and illustrated through the examples, with sufficient context to speed further development. PETSc for Partial Differential Equations addresses both discretizations and fast solvers for PDEs, emphasizing practice more than theory. Well-structured examples lead to run-time choices that result in high solver performance and parallel scalability. The last two chapters build on the reader’s understanding of fast solver concepts when applying the Firedrake Python finite element solver library. This textbook, the first to cover PETSc programming for nonlinear PDEs, provides an on-ramp for graduate students and researchers to a major area of high-performance computing for science and engineering. It is suitable as a supplement for courses in scientific computing or numerical methods for differential equations.




Ordinary and Partial Differential Equation Routines in C, C++, Fortran, Java, Maple, and MATLAB


Book Description

This book provides a set of ODE/PDE integration routines in the six most widely used computer languages, enabling scientists and engineers to apply ODE/PDE analysis toward solving complex problems. This text concisely reviews integration algorithms, then analyzes the widely used Runge-Kutta method. It first presents a complete code before discussin




Numerical Solution of Partial Differential Equations by the Finite Element Method


Book Description

An accessible introduction to the finite element method for solving numeric problems, this volume offers the keys to an important technique in computational mathematics. Suitable for advanced undergraduate and graduate courses, it outlines clear connections with applications and considers numerous examples from a variety of science- and engineering-related specialties.This text encompasses all varieties of the basic linear partial differential equations, including elliptic, parabolic and hyperbolic problems, as well as stationary and time-dependent problems. Additional topics include finite element methods for integral equations, an introduction to nonlinear problems, and considerations of unique developments of finite element techniques related to parabolic problems, including methods for automatic time step control. The relevant mathematics are expressed in non-technical terms whenever possible, in the interests of keeping the treatment accessible to a majority of students.




Solving PDEs in Python


Book Description

This book offers a concise and gentle introduction to finite element programming in Python based on the popular FEniCS software library. Using a series of examples, including the Poisson equation, the equations of linear elasticity, the incompressible Navier–Stokes equations, and systems of nonlinear advection–diffusion–reaction equations, it guides readers through the essential steps to quickly solving a PDE in FEniCS, such as how to define a finite variational problem, how to set boundary conditions, how to solve linear and nonlinear systems, and how to visualize solutions and structure finite element Python programs. This book is open access under a CC BY license.




Partial Differential Equations


Book Description

Our understanding of the fundamental processes of the natural world is based to a large extent on partial differential equations (PDEs). The second edition of Partial Differential Equations provides an introduction to the basic properties of PDEs and the ideas and techniques that have proven useful in analyzing them. It provides the student a broad perspective on the subject, illustrates the incredibly rich variety of phenomena encompassed by it, and imparts a working knowledge of the most important techniques of analysis of the solutions of the equations. In this book mathematical jargon is minimized. Our focus is on the three most classical PDEs: the wave, heat and Laplace equations. Advanced concepts are introduced frequently but with the least possible technicalities. The book is flexibly designed for juniors, seniors or beginning graduate students in science, engineering or mathematics.




Computational Partial Differential Equations


Book Description

Targeted at students and researchers in computational sciences who need to develop computer codes for solving PDEs, the exposition here is focused on numerics and software related to mathematical models in solid and fluid mechanics. The book teaches finite element methods, and basic finite difference methods from a computational point of view, with the main emphasis on developing flexible computer programs, using the numerical library Diffpack. Diffpack is explained in detail for problems including model equations in applied mathematics, heat transfer, elasticity, and viscous fluid flow. All the program examples, as well as Diffpack for use with this book, are available on the Internet. XXXXXXX NEUER TEXT This book is for researchers who need to develop computer code for solving PDEs. Numerical methods and the application of Diffpack are explained in detail. Diffpack is a modern C++ development environment that is widely used by industrial scientists and engineers working in areas such as oil exploration, groundwater modeling, and materials testing. All the program examples, as well as a test version of Diffpack, are available for free over the Internet.




Preconditioning and the Conjugate Gradient Method in the Context of Solving PDEs


Book Description

Preconditioning and the Conjugate Gradient Method in the Context of Solving PDEs?is about the interplay between modeling, analysis, discretization, matrix computation, and model reduction. The authors link PDE analysis, functional analysis, and calculus of variations with matrix iterative computation using Krylov subspace methods and address the challenges that arise during formulation of the mathematical model through to efficient numerical solution of the algebraic problem. The book?s central concept, preconditioning of the conjugate gradient method, is traditionally developed algebraically using the preconditioned finite-dimensional algebraic system. In this text, however, preconditioning is connected to the PDE analysis, and the infinite-dimensional formulation of the conjugate gradient method and its discretization and preconditioning are linked together. This text challenges commonly held views, addresses widespread misunderstandings, and formulates thought-provoking open questions for further research.?




Programming for Computations - Python


Book Description

This book presents computer programming as a key method for solving mathematical problems. There are two versions of the book, one for MATLAB and one for Python. The book was inspired by the Springer book TCSE 6: A Primer on Scientific Programming with Python (by Langtangen), but the style is more accessible and concise, in keeping with the needs of engineering students. The book outlines the shortest possible path from no previous experience with programming to a set of skills that allows the students to write simple programs for solving common mathematical problems with numerical methods in engineering and science courses. The emphasis is on generic algorithms, clean design of programs, use of functions, and automatic tests for verification.




Programming for Computations - MATLAB/Octave


Book Description

This book presents computer programming as a key method for solving mathematical problems. There are two versions of the book, one for MATLAB and one for Python. The book was inspired by the Springer book TCSE 6: A Primer on Scientific Programming with Python (by Langtangen), but the style is more accessible and concise, in keeping with the needs of engineering students. The book outlines the shortest possible path from no previous experience with programming to a set of skills that allows the students to write simple programs for solving common mathematical problems with numerical methods in engineering and science courses. The emphasis is on generic algorithms, clean design of programs, use of functions, and automatic tests for verification.