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.
INTRODUCTION TO CODE VERIFICATION 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