Logo - springer
Slogan - springer

Mathematics - Computational Science & Engineering | Computational Partial Differential Equations - Numerical Methods and Diffpack Programming

Computational Partial Differential Equations

Numerical Methods and Diffpack Programming

Langtangen, Hans Petter

1999, XXIII, 685 p.


Springer eBooks may be purchased by end-customers only and are sold without copy protection (DRM free). Instead, all eBooks include personalized watermarks. This means you can read the Springer eBooks across numerous devices such as Laptops, eReaders, and tablets.

You can pay for Springer eBooks with Visa, Mastercard, American Express or Paypal.

After the purchase you can directly download the eBook file or read it online in our Springer eBook Reader. Furthermore your eBook will be stored in your MySpringer account. So you can always re-download your eBooks.

(net) price for USA

ISBN 978-3-662-01170-6

digitally watermarked, no DRM

Included Format: PDF

download immediately after purchase

learn more about Springer eBooks

add to marked items

  • About this textbook

  • The only textbook teaching computational PDEs together with Diffpack
During the last decades there has been a tremendous advancement of com­ puter hardware, numerical algorithms, and scientific software. Engineers and scientists are now equipped with tools that make it possible to explore real­ world applications of high complexity by means of mathematical models and computer simulation. Experimentation based on numerical simulation has become fundamental in engineering and many of the traditional sciences. A common feature of mathematical models in physics, geology, astrophysics, mechanics, geophysics, as weH as in most engineering disciplines, is the ap­ pearance of systems of partial differential equations (PDEs). This text aims at equipping the reader with tools and skills for formulating solution methods for PDEs and producing associated running code. Successful problem solving by means of mathematical models inscience and engineering often demands a synthesis of knowledge from several fields. Besides the physical application itself, one must master the tools of math­ ematical modeling, numerical methods, as weH as software design and im­ plementation. In addition, physical experiments or field measurements might play an important role in the derivation and the validation of models. This book is written in the spirit of computational sciences as inter-disciplinary activities. Although it would be attractive to integrate subjects like mathe­ matics, physics, numerics, and software in book form, few readers would have the necessary broad background to approach such a text.

Content Level » Research

Keywords » Approximation - C++ programming language - Derivative - Windows - algorithm - algorithms - calculus - differential equation - finite elements - mathematics - numerics - object-oriented programming - programming - simulation - verification

Related subjects » Analysis - Computational Intelligence and Complexity - Computational Science & Engineering - Software Engineering - Theoretical, Mathematical & Computational Physics

Table of contents 

1 Getting Started.- 1.1 The First Diffpack Encounter.- 1.1.1 What is Diffpack?.- 1.1.2 A Trivial C++ Program.- 1.1.3 A Trivial Diffpack Program.- 1.2 Steady 1D Heat Conduction.- 1.2.1 The Physical and Mathematical Model.- 1.2.2 A Finite Difference Method.- 1.2.3 Implementation in Diffpack.- 1.2.4 Dissection of the Program.- 1.2.5 Tridiagonal Matrices.- 1.2.6 Variable Coefficients.- 1.2.7 A Nonlinear Heat Conduction Problem.- 1.3 Simulation of Waves.- 1.3.1 Modeling Vibrations of a String.- 1.3.2 A Finite Difference Method.- 1.3.3 Implementation.- 1.3.4 Visualizing the Results.- 1.3.5 A 2D Wave Equation with Variable Wave Velocity.- 1.3.6 A Model for Water Waves.- 1.4 Projects.- 1.4.1 A Uni-Directional Wave Equation.- 1.4.2 Centered Differences for a Boundary-Layer Problem.- 1.4.3 Upwind Differences for a Boundary-Layer Problem.- 1.5 About Programming with Objects.- 1.5.1 Motivation for the Object Concept.- 1.5.2 Example: Implementation of a Vector Class in C++.- 1.5.3 Arrays in Diffpack.- 1.5.4 Example: Design of an ODE Solver Environment.- 1.5.5 Abstractions for Grids and Fields.- 1.6 Coding the PDE Simulator as a Class.- 1.6.1 Steady 1D Heat Conduction Revisited.- 1.6.2 Empirical Investigation of the Numerical Method.- 1.6.3 Simulation of Waves Revisited.- 1.7 Projects.- 1.7.1 Transient Flow Between Moving Plates.- 1.7.2 Transient Channel Flow.- 1.7.3 Coupled Heat and Fluid Flow.- 1.7.4 Difference Schemes for Transport Equations.- 2 Introduction to Finite Element Discretization.- 2.1 Weighted Residual Methods.- 2.1.1 Basic Principles.- 2.1.2 Example: A 1D Poisson Equation.- 2.1.3 Treatment of Boundary Conditions.- 2.2 Time Dependent Problems.- 2.2.1 A Wave Equation.- 2.2.2 A Heat Equation.- 2.3 Finite Elements in One Space Dimension.- 2.3.1 Piecewise Polynomials.- 2.3.2 Handling of Essential Boundary Conditions.- 2.3.3 Direct Computation of the Linear System.- 2.3.4 Element-By-Element Formulation.- 2.3.5 Extending the Concepts to Quadratic Elements.- 2.3.6 Summary of the Elementwise Algorithm.- 2.4 Example: A 1D Wave Equation.- 2.4.1 The Finite Element Equations.- 2.4.2 Interpretation of the Discrete Equations.- 2.4.3 Accuracy and Stability.- 2.5 Naive Implementation.- 2.6 Projects.- 2.6.1 Heat Conduction with Cooling Law.- 2.6.2 Retardation of a Well-Bore.- 2.7 Higher-Dimensional Finite Elements.- 2.7.1 The Bilinear Element and Generalizations.- 2.7.2 The Linear Triangle.- 2.7.3 Example: A 2D Wave Equation.- 2.7.4 Other Two-Dimensional Element Types.- 2.7.5 Three-Dimensional Elements.- 2.8 Calculation of derivatives.- 2.8.1 Global Least-Squares Smoothing.- 2.8.2 Flux Computations in Heterogeneous Media.- 2.9 Convection-Diffusion Equations.- 2.9.1 A One-Dimensional Model Problem.- 2.9.2 Multi-Dimensional Equations.- 2.9.3 Time-Dependent Problems.- 2.10 Analysis of the Finite Element Method.- 2.10.1 Weak Formulations.- 2.10.2 Variational Problems.- 2.10.3 Results for Continuous Problems.- 2.10.4 Results for Discrete Problems.- 2.10.5 A Priori Error Estimates.- 2.10.6 Numerical Experiments.- 2.10.7 Adaptive Finite Element Methods.- 3 Programming of Finite Element Solvers.- 3.1 A Simple Program for the Poisson Equation.- 3.1.1 Discretization.- 3.1.2 Basic Parts of a Simulator Class.- 3.2 Increasing the Flexibility.- 3.2.1 A Generalized Model Problem.- 3.2.2 Using the Menu System.- 3.2.3 Creating the Grid Object.- 3.3 Some Visualization Tools.- 3.3.1 Storing Fields for Later Visualization.- 3.3.2 Filtering Simres Data.- 3.3.3 Visualizing Diffpack Data in Plotmtv.- 3.3.4 Visualizing Diffpack Data in Matlab.- 3.3.5 Visualizing Diffpack Data in Vtk.- 3.3.6 Visualizing Diffpack Data in IRIS Explorer.- 3.3.7 Plotting Fields Along Lines Through the Domain.- 3.4 Some Useful Diffpack Features.- 3.4.1 The Menu System.- 3.4.2 Multiple Loops.- 3.4.3 Computing Numerical Errors.- 3.4.4 Functors.- 3.4.5 Computing Derivatives of Finite Element Fields.- 3.4.6 Specializing Code in Subclass Solvers.- 3.5 Introducing More Flexibility.- 3.5.1 Setting Boundary Condition Information in the Grid.- 3.5.2 Line and Surface Integrals.- 3.5.3 Simple Mesh Generation Tools.- 3.5.4 Debugging.- 3.5.5 Automatic Report Generation.- 3.5.6 Specializing Code in Subclass Solvers.- 3.5.7 Overriding Menu Answers in the Program.- 3.5.8 Estimating Convergence Rates.- 3.5.9 Axisymmetric Formulations and Cartesian 2D Code.- 3.5.10 Summary.- 3.6 Adaptive Grids.- 3.6.1 How to Extend an Existing Simulator.- 3.6.2 Organization of Refinement Criteria.- 3.6.3 Example: Corner-Flow Singularity.- 3.6.4 lransient Problems.- 3.7 Projects.- 3.7.1 Flow in an Open Inclined Channel.- 3.7.2 Stress Concentration due to Geometric Imperfections.- 3.7.3 Lifting Airfoil.- 3.8 A Convection-Diffusion Solver.- 3.9 A Heat Equation Solver.- 3.9.1 Discretization.- 3.9.2 Implementation.- 3.10 A More Flexible Heat Equation Solver.- 3.10.1 About the Model Problem and the Simulator.- 3.10.2 Visualization and Animation of Time-Dependent Data.- 3.10.3 Variable Time Step Size.- 3.10.4 Applying a Transient Solver to a Stationary PDE.- 3.10.5 Handling Simulation and Visualization from a Script.- 3.10.6 Some Computer Exercises Involving Heat Transfer.- 3.11 Efficient Solution of the Wave Equation.- 3.11.1 Discretization.- 3.11.2 Implementation.- 3.11.3 Extensions of the Model Problem.- 3.11.4 Flexible Representation of Variable Coefficients.- 4 Nonlinear Problems.- 4.1 Discretization and Solution of Nonlinear PDEs.- 4.1.1 Finite Difference Discretization.- 4.1.2 Finite Element Discretization.- 4.1.3 The Group Finite Element Method.- 4.1.4 Successive Substitutions.- 4.1.5 Newton-Raphson’s Method.- 4.1.6 A Transient Nonlinear Heat Conduction Problem.- 4.1.7 Iteration Methods at the PDE Level.- 4.1.8 Continuation Methods.- 4.2 Software Tools for Nonlinear Finite Element Problems.- 4.2.1 A Solver for a Nonlinear Heat Equation.- 4.2.2 Extending the Solver.- 4.3 Projects.- 4.3.1 Operator Splitting for a Reaction-Diffusion Model.- 4.3.2 Compressible Potential Flow.- 5 Solid Mechanics Applications.- 5.1 Linear Thermo-Elasticity.- 5.1.1 Physical and Mathematical Problem.- 5.1.2 A Finite Element Method.- 5.1.3 Engineering Finite Element Notation.- 5.1.4 Implementation.- 5.1.5 Examples.- 5.2 Elasto-Viscoplasticity.- 5.2.1 Basic Physical Features of Elasto-Viscoplasticity.- 5.2.2 A Three-Dimensional Elasto-Viscoplastic Model.- 5.2.3 Simplification in Case of a Forward Schemne in Time.- 5.2.4 Numerical Handling of Yield Criteria.- 5.2.5 Implementation.- 6 Fluid Mechanics Applications.- 6.1 Convection-Diffusion Equations.- 6.1.1 The Physical and Mathematical Model.- 6.1.2 A Finite Element Method.- 6.1.3 Incorporation of Nonlinearities.- 6.1.4 Software Tools.- 6.1.5 Melting and Solidification.- 6.2 Shallow Water Equations.- 6.2.1 The Physical and Mathematical Model.- 6.2.2 Finite Difference Methods on Staggered Grids.- 6.2.3 Implementation.- 6.2.4 Nonlinear and Dispersive Terms.- 6.2.5 Finite Element Methods.- 6.3 An Implicit Finite Element Navier-Stokes Solver.- 6.3.1 The Physical and Mathematical Model.- 6.3.2 A Finite Element Method.- 6.3.3 Solution of the Nonlinear Systems.- 6.3.4 Implementation.- 6.4 A Classical Finite Difference Navier-Stokes Solver.- 6.4.1 Operator Splitting.- 6.4.2 Finite Differences on 3D Staggered Grids.- 6.4.3 A Multigrid Solver for the Pressure Equation.- 6.4.4 Implementation.- 6.5 A Fast Finite Element Navier-Stokes Solver.- 6.5.1 Operator Splitting and Finite Element Discretization.- 6.5.2 An Optimized Implementation.- 6.6 Projects.- 6.6.1 Analysis of Discrete Shallow Water Waves.- 6.6.2 Approximating the Navier-Stokes Equations by a Laplace Equation.- 7 Coupled Problems.- 7.1 Fluid-Structure Interaction; Squeeze-Film Damping.- 7.1.1 The Physical and Mathematical Model.- 7.1.2 Numerical Methods.- 7.1.3 Implementation.- 7.2 Fluid Flow and Heat Conduction in Pipes.- 7.2.1 The Physical and Mathematical Model.- 7.2.2 Numerical Methods.- 7.2.3 Implementation.- 7.3 Projects.- 7.3.1 Transient Thermo-Elasticity.- 7.3.2 Convective-Diffusive Transport in Viscous Flow.- 7.3.3 Chemically Reacting Fluid.- A Mathematical Topics.- A.1 Scaling and Dimensionless Variables.- A.2 Indicial Notation.- A.3 Compact Notation for Difference Equations.- A.4 Stability and Accuracy of Difference Approximations.- A.4.1 Typical Solutions of Simple Prototype PDEs.- A.4.2 Physical Significance of Parameters in the Solution.- A.4.3 Analytical Dispersion Relations.- A.4.4 Solution of Discrete Equations.- A.4.5 Numerical Dispersion Relations.- A.4.6 Convergence.- A.4.7 Stability.- A.4.8 Accuracy.- A.4.9 Truncation Error.- A.4.10 Traditional von Neumann Stability Analysis.- A.4.11 Example: Analysis of the Heat Equation.- A.5 Exploring the Nature of Some PDEs.- B Diffpack Topics.- B.1 Brief Overview of Important Diffpack Classes.- B.2 Diffpack-Related Operating System Interaction.- B.2.1 Unix.- B.2.2 Windows.- B.3 Basic Diffpack Features.- B.3.1 Diffpack man pages.- B.3.2 Standard Command-Line Options.- B.3.3 Generalized Input and Output.- B.3.4 Automatic Verification of a Code.- B.4 Visualization Support.- B.4.1 Curves.- B.4.2 Scalar and Vector Fields.- B.5 Details on Finite Element Programming.- B.5.1 Basic Functions for Finite Element Assembly.- B.5.2 Using Functors for the Integrands.- B.5.3 Class Relations in the Finite Element Engine.- B.6 Optimizing Diffpack Codes.- B.6.1 Avoiding Repeated Matrix Factorizations.- B.6.2 Avoiding Repeated Assembly of Linear Systems.- B.6.3 Optimizing the Assembly Process.- B.6.4 Optimizing Array Indexing.- C Iterative Methods for Sparse Linear Systems.- C.1 Classical Iterative Methods.- C.1.1 A General Framework.- C.1.2 Jacobi, Gauss-Seidel, SOR, and SSOR Iteration.- C.2 Conjugate Gradient-Like Iterative Methods.- C.2.1 Galerkin and Least-Squares Methods.- C.2.2 Summary of the Algorithms.- C.2.3 A Framework Based on the Error.- C.3 Preconditioning.- C.3.1 Motivation and Basic Principles.- C.3.2 Classical Iterative Methods as Preconditioners.- C.3.3 Incomplete Factorization Preconditioners.- C.4 Multigrid and Domain Decomposition Methods.- C.4.1 Domain Decomposition.- C.4.2 Multigrid Methods.- D Software Tools for Solving Linear Systems.- D.1 Storing and Initializing Linear Systems.- D.1.1 Vector and Matrix Formats.- D.1.2 Detailed Matrix Examples.- D.1.3 Representation of Linear Systems.- D.2 Programming with Linear Solvers.- D.2.1 Gaussian Elimination.- D.2.2 A Simple Demo Program.- D.2.3 A 3D Poisson Equation Solver.- D.3 Classical Iterative Methods.- D.4 Conjugate Gradient-like Methods.- D.4.1 Symmetric Systems.- D.4.2 Nonsymmetric Systems.- D.5 Preconditioning Strategies.- D.6 Convergence History and Stopping Criteria.- D.7 Example: Implicit Methods for Transient Diffusion.

Popular Content within this publication 



Read this Book on Springerlink

Services for this book

New Book Alert

Get alerted on new Springer publications in the subject area of Computational Mathematics and Numerical Analysis.

Additional information