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 VERIFICATIONTHE MATHEMATICAL MODEL AND NUMERICAL ALGORITHMThe Mathematical ModelNumerical Methods for Solving Differential EquationsTHE CODE VERIFICATION PROCEDUREStatic TestingDynamic TestingOverview of the Order-Verification ProcedureDetails of the ProcedureClosing RemarksDESIGN OF COVERAGE TEST SUITEBasic Design IssuesCoverage Issues Related to Boundary ConditionsCoverage Issues Related to Grids and Grid RefinementFINDING EXACT SOLUTIONSObtaining Exact Solutions from the Forward ProblemThe Method of Manufactured Exact SolutionsBENEFITS OF THE ORDER-VERIFICATION PROCEDUREA Taxonomy of Coding MistakesA Simple PDE CodeBlind TestsRELATED CODE DEVELOPMENT ACTIVITIESNumerical Algorithm DevelopmentTesting for Code RobustnessTesting for Code EfficiencyCode Confirmation ExercisesSolution VerificationCode ValidationSoftware Quality EngineeringSAMPLE CODE VERIFICATION EXERCISESBurgers' Equation in Cartesian Coordinates (Code 1)Burgers' Equation in Curvilinear Coordinates (Code 2)Incompressible Navier-Stokes (Code 3)Compressible Navier-Stokes (Code 4)ADVANCED TOPICSComputer PlatformsLook-up TablesAutomatic Time-Stepping OptionsHard-Wired Boundary ConditionsCodes with Artificial Dissipation TermsEigenvalue ProblemsSolution UniquenessSolution SmoothnessCodes with Shock Capturing SchemesDealing with Codes that Make Non-Ordered ApproximationsSUMMARY AND CONCLUSIONSREFERENCESAPPENDICESOther Methods for PDE Code TestingImplementation Issues in the Forward ApproachResults of Blind TestsA Manufactured Solution to the Free-Surface Porous Media EquationsINDEX