Computational Partial Differential Equations Numerical Methods and Diffpack Programming

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...

Full description

Bibliographic Details
Main Author: Langtangen, Hans Petter
Format: eBook
Language:English
Published: Berlin, Heidelberg Springer Berlin Heidelberg 1999, 1999
Edition:1st ed. 1999
Series:Lecture Notes in Computational Science and Engineering
Subjects:
Online Access:
Collection: Springer Book Archives -2004 - Collection details see MPG.ReNa
Table of Contents:
  • 1 Getting Started
  • 1.1 The First Diffpack Encounter
  • 1.2 Steady 1D Heat Conduction
  • 1.3 Simulation of Waves
  • 1.4 Projects
  • 1.5 About Programming with Objects
  • 1.6 Coding the PDE Simulator as a Class
  • 1.7 Projects
  • 2 Introduction to Finite Element Discretization
  • 2.1 Weighted Residual Methods
  • 2.2 Time Dependent Problems
  • 2.3 Finite Elements in One Space Dimension
  • 2.4 Example: A 1D Wave Equation
  • 2.5 Naive Implementation
  • 2.6 Projects
  • 2.7 Higher-Dimensional Finite Elements
  • 2.8 Calculation of derivatives
  • 2.9 Convection-Diffusion Equations
  • 2.10 Analysis of the Finite Element Method
  • 3 Programming of Finite Element Solvers
  • 3.1 A Simple Program for the Poisson Equation
  • 3.2 Increasing the Flexibility
  • 3.3 Some Visualization Tools
  • 3.4 Some Useful Diffpack Features
  • 3.5 Introducing More Flexibility
  • 3.6 Adaptive Grids
  • 3.7 Projects
  • 3.8 A Convection-Diffusion Solver
  • 3.9 A Heat Equation Solver
  • 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
  • 3.10 A More Flexible Heat Equation Solver
  • 3.11 Efficient Solution of the Wave Equation
  • 4 Nonlinear Problems
  • 4.1 Discretization and Solution of Nonlinear PDEs
  • 4.2 Software Tools for Nonlinear Finite Element Problems
  • 4.3 Projects
  • 5 Solid Mechanics Applications
  • 5.1 Linear Thermo-Elasticity
  • 5.2 Elasto-Viscoplasticity
  • 6 Fluid Mechanics Applications
  • 6.1 Convection-Diffusion Equations
  • 6.2 Shallow Water Equations
  • 6.3 An Implicit Finite Element Navier-Stokes Solver
  • 6.4 A Classical Finite Difference Navier-Stokes Solver
  • 6.5 A Fast Finite Element Navier-Stokes Solver
  • 6.6 Projects
  • 7 Coupled Problems
  • 7.1 Fluid-Structure Interaction; Squeeze-Film Damping
  • 7.2 Fluid Flow and Heat Conduction in Pipes
  • 7.3 Projects
  • 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