HSAI Institute for Maneuverability and Terrain Physics Simulations (IMTPS) Software Engineering Owen J. Eslinger, Ph.D. 8 Oct 2009
Development Team Multiple Authors Multiple Platforms (Mac/Linux/PC) Multiple Compilers (Intel/PGI/GNU/…) Development Team Multiple Authors Multiple Platforms (Mac/Linux/PC) Multiple Compilers (Intel/PGI/GNU/…) Third Party Applications (Lapack, UMFPACK, Parmetis …) May not be present on all platforms May be different versions or in non-standard locations Third Party Applications (Lapack, UMFPACK, Parmetis …) May not be present on all platforms May be different versions or in non-standard locations Modular Code Toggle modules to streamline calculations Alterations to code may affect other modules Problem specific modules (heat / groundwater / … ) Modular Code Toggle modules to streamline calculations Alterations to code may affect other modules Problem specific modules (heat / groundwater / … ) Revision Control - SVN
SVN - Countermine ADH Branch
How I came to love the bomb, or why Stacy shouldn’t be beaten regularly
CMake Developed by Kitware, Inc. Portable: Unix, Windows, etc. Language Support: C, C++, Fortran Comparable to: Scons - Pthon Build System Easily add package support with modules Auto-detect system configuration
Wiki Started: Number of Pages: Number of Edits: Number of Users: User with Most Edits (Number): Total Current Lines: Pages with Edits in Last Quarter: (internal ERDC only)
CTest - Nightly Testing Straightforward Test Problems Designed to test basic functionality Mesh Refinement Studies on Basic Geometries Test Boundary Condition Implementation
CTest - Nightly Testing Test 6-10 Test Test Test 3-5
CTest - Test 6 Test 6a U=x Test 6b U=z Test 6c U=y Test 6d U=1-z
CTest – Test 7 Test 7a *MISSING* Test 7b U=z Test 7c U=y Test 7d U=x
CDash - Dashboard Display Nightly, Experimental, Continuous Builds We Perform Nightly Testing
Dashboard, Failure Modes
Test Results Tests Uploaded to Central Repository Performed on multiple machines Test various compilers and modules Easy for all contributors to monitor Tests Uploaded to Central Repository Performed on multiple machines Test various compilers and modules Easy for all contributors to monitor Tests Performed Nightly Clearly display Pass/Fail Statistics Facilitates Maintenance across multiple developers Tests Performed Nightly Clearly display Pass/Fail Statistics Facilitates Maintenance across multiple developers >
Development Team Multiple Authors Multiple Platforms (Mac/Linux/PC) Multiple Compilers (Intel/PGI/GNU/…) Development Team Multiple Authors Multiple Platforms (Mac/Linux/PC) Multiple Compilers (Intel/PGI/GNU/…) Third Party Applications (Lapack, UMFPACK, Parmetis …) May not be present on all platforms May be different versions or in non-standard locations Third Party Applications (Lapack, UMFPACK, Parmetis …) May not be present on all platforms May be different versions or in non-standard locations Modular Code Toggle modules to streamline calculations Alterations to code may affect other modules Problem specific modules (heat / groundwater / … ) Modular Code Toggle modules to streamline calculations Alterations to code may affect other modules Problem specific modules (heat / groundwater / … ) Complex Development Environment
Owen J. Eslinger Information Technology Laboratory (ITL) US Army Engineer Research and Development Center (ERDC) US Army Corps of Engineers (USACE)