1st Edition
Verification of Computer Codes in Computational Science and Engineering
How can one be assured that computer codes that solve differential equations are correct? Standard practice using benchmark testing no longer provides full coverage because today's production codes solve more complex equations using more powerful algorithms. By verifying the order-of-accuracy of the numerical algorithm implemented in the code, one can detect most any coding mistake that would prevent correct solutions from being computed.
Verification of Computer Codes in Computational Science and Engineering sets forth a powerful alternative called OVMSP: Order-Verification via the Manufactured Solution Procedure. This procedure has two primary components: using the Method of Manufactured Exact Solutions to create analytic solutions to the fully-general differential equations solved by the code and using grid convergence studies to confirm the order-of-accuracy. The authors present a step-by-step procedural guide to OVMSP implementation and demonstrate its effectiveness.
Properly implemented, OVMSP offers an exciting opportunity to identify virtually all coding 'bugs' that prevent correct solution of the governing partial differential equations. Verification of Computer Codes in Computational Science and Engineering shows you how this can be done. The treatment is clear, concise, and suitable both for developers of production quality simulation software and as a reference for computational science and engineering professionals.
THE MATHEMATICAL MODEL AND NUMERICAL ALGORITHM
The Mathematical Model
Numerical Methods for Solving Differential Equations
THE CODE VERIFICATION PROCEDURE
Static Testing
Dynamic Testing
Overview of the Order-Verification Procedure
Details of the Procedure
Closing Remarks
DESIGN OF COVERAGE TEST SUITE
Basic Design Issues
Coverage Issues Related to Boundary Conditions
Coverage Issues Related to Grids and Grid Refinement
FINDING EXACT SOLUTIONS
Obtaining Exact Solutions from the Forward Problem
The Method of Manufactured Exact Solutions
BENEFITS OF THE ORDER-VERIFICATION PROCEDURE
A Taxonomy of Coding Mistakes
A Simple PDE Code
Blind Tests
RELATED CODE DEVELOPMENT ACTIVITIES
Numerical Algorithm Development
Testing for Code Robustness
Testing for Code Efficiency
Code Confirmation Exercises
Solution Verification
Code Validation
Software Quality Engineering
SAMPLE CODE VERIFICATION EXERCISES
Burgers' Equation in Cartesian Coordinates (Code 1)
Burgers' Equation in Curvilinear Coordinates (Code 2)
Incompressible Navier-Stokes (Code 3)
Compressible Navier-Stokes (Code 4)
ADVANCED TOPICS
Computer Platforms
Look-up Tables
Automatic Time-Stepping Options
Hard-Wired Boundary Conditions
Codes with Artificial Dissipation Terms
Eigenvalue Problems
Solution Uniqueness
Solution Smoothness
Codes with Shock Capturing Schemes
Dealing with Codes that Make Non-Ordered Approximations
SUMMARY AND CONCLUSIONS
REFERENCES
APPENDICES
Other Methods for PDE Code Testing
Implementation Issues in the Forward Approach
Results of Blind Tests
A Manufactured Solution to the Free-Surface Porous Media Equations
INDEX
Biography
Patrick Knupp, Kambiz Salari