TY - JOUR
T1 - An overview of the trilinos project
AU - Heroux, Michael A.
AU - Bartlett, Roscoe A.
AU - Howle, Vicki E.
AU - Hoekstra, Robert J.
AU - Hu, J. Jonathan
AU - Kolda, Tamara G.
AU - Lehoucq, Richard B.
AU - Long, Kevin R.
AU - Pawlowski, Roger P.
AU - Phipps, Eric T.
AU - Salinger, Andrew G.
AU - Thornquist, Heidi K.
AU - Tuminaro, Ray S.
AU - Willenbring, James M.
AU - Williams, Alan
AU - Stanley, Kendall S.
PY - 2005
Y1 - 2005
N2 - The Trilinos Project is an effort to facilitate the design, development, integration, and ongoing support of mathematical software libraries within an object-oriented framework for the solution of large-scale, complex multiphysics engineering and scientific problems. Trilinos addresses two fundamental issues of developing software for these problems: (i) providing a streamlined process and set of tools for development of new algorithmic implementations and (ii) promoting interoperability of independently developed software. Trilinos uses a two-level software structure designed around collections of packages. A Trilinos package is an integral unit usually developed by a small team of experts in a particular algorithms area such as algebraic preconditioners, nonlinear solvers, etc. Packages exist underneath the Trilinos top level, which provides a common look-and-feel, including configuration, documentation, licensing, and bug-tracking. Here we present the overall Trilinos design, describing our use of abstract interfaces and default concrete implementations. We discuss the services that Trilinos provides to a prospective package and how these services are used by various packages. We also illustrate how packages can be combined to rapidly develop new algorithms. Finally, we discuss how Trilinos facilitates high-quality software engineering practices that are increasingly required from simulation software.
AB - The Trilinos Project is an effort to facilitate the design, development, integration, and ongoing support of mathematical software libraries within an object-oriented framework for the solution of large-scale, complex multiphysics engineering and scientific problems. Trilinos addresses two fundamental issues of developing software for these problems: (i) providing a streamlined process and set of tools for development of new algorithmic implementations and (ii) promoting interoperability of independently developed software. Trilinos uses a two-level software structure designed around collections of packages. A Trilinos package is an integral unit usually developed by a small team of experts in a particular algorithms area such as algebraic preconditioners, nonlinear solvers, etc. Packages exist underneath the Trilinos top level, which provides a common look-and-feel, including configuration, documentation, licensing, and bug-tracking. Here we present the overall Trilinos design, describing our use of abstract interfaces and default concrete implementations. We discuss the services that Trilinos provides to a prospective package and how these services are used by various packages. We also illustrate how packages can be combined to rapidly develop new algorithms. Finally, we discuss how Trilinos facilitates high-quality software engineering practices that are increasingly required from simulation software.
KW - Interfaces
KW - Software framework
KW - Software quality engineering
UR - http://www.scopus.com/inward/record.url?scp=20044393250&partnerID=8YFLogxK
U2 - 10.1145/1089014.1089021
DO - 10.1145/1089014.1089021
M3 - Review article
AN - SCOPUS:20044393250
SN - 0098-3500
VL - 31
SP - 397
EP - 423
JO - ACM Transactions on Mathematical Software
JF - ACM Transactions on Mathematical Software
IS - 3
ER -