William Symes, Anthony Padula, and S Scott (2005 submitted)
The Standard Vector Library: A Software Framework For Coupling Complex Simulation And Optimization
ACM Transactions on Mathematical Software.
Object oriented design solves a fundamental programming problem arising in simulation driven optimization: the separation in code of multiple levels of abstraction naturally appearing in solution algorithms for such problems. The Standard Vector Library provides classes expressing core concepts (vector, function,...) of calculus in Hilbert space with minimal implementation dependence, and standardized interfaces behind which to hide application-dependent implementation details (data containers, function objects). Important innovations introduced by this project and its predecessor (the Hilbert Class Library) include vector space and function evaluation objects, natural product structures, and extensive tool or wrapper classes to ease application construction. The library features extensive use of ISO standard C++ support for both object-oriented and generic programming models, a component-friendly structure for support of distributed computing via client-server frameworks, and systematic extensibility of class capabilities through method-forwarding.