{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,9,24]],"date-time":"2025-09-24T10:17:59Z","timestamp":1758709079983,"version":"3.41.0"},"reference-count":49,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2010,1,1]],"date-time":"2010-01-01T00:00:00Z","timestamp":1262304000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000006","name":"Office of Naval Research","doi-asserted-by":"publisher","award":["N00014-08-1-0086"],"award-info":[{"award-number":["N00014-08-1-0086"]}],"id":[{"id":"10.13039\/100000006","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Math. Softw."],"published-print":{"date-parts":[[2010,1]]},"abstract":"<jats:p>We present three new object-oriented software design patterns in Fortran 2003 and C++. These patterns integrate coupled differential equations, facilitating the flexible swapping of physical and numerical software abstractions at compile-time and runtime. The Semi-Discrete pattern supports the time advancement of a dynamical system encapsulated in a single abstract data type (ADT). The Puppeteer pattern combines ADTs into a multiphysics package, mediates interabstraction communications, and enables implicit marching even when nonlinear terms couple separate ADTs with private data. The Surrogate pattern emulates C++ forward references in Fortran 2003. After code demonstrations using the Lorenz equations, we provide architectural descriptions of our use of the new patterns in extending the Rouson et al. [2008a] Navier-Stokes solver to simulate multiphysics phenomena. We also describe the relationships between the new patterns and two previously developed architectural elements: the Strategy pattern of Gamma et al. [1995] and the template emulation technique of Akin [2003]. This report demonstrates how these patterns manage complexity by providing logical separation between individual physics models and the control logic that bridges between them. Additionally, it shows how language features such as operator overloading and automated memory management enable a clear mathematical notation for model bridging and system evolution.<\/jats:p>","DOI":"10.1145\/1644001.1644004","type":"journal-article","created":{"date-parts":[[2010,1,19]],"date-time":"2010-01-19T20:14:58Z","timestamp":1263932098000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":13,"title":["Design patterns for multiphysics modeling in Fortran 2003 and C++"],"prefix":"10.1145","volume":"37","author":[{"given":"Damian W. I.","family":"Rouson","sequence":"first","affiliation":[{"name":"Sandia National Laboratories, Livermore, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Helgi","family":"Adalsteinsson","sequence":"additional","affiliation":[{"name":"Sandia National Laboratories, Livermore, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jim","family":"Xia","sequence":"additional","affiliation":[{"name":"IBM Corporation, Markham, Ont., Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2010,1,22]]},"reference":[{"volume-title":"Object-Oriented Programming via Fortran 90\/95","author":"Akin E.","key":"e_1_2_2_1_1","doi-asserted-by":"crossref","DOI":"10.1017\/CBO9780511530111"},{"key":"e_1_2_2_2_1","unstructured":"Alexander C. Ishikawa S. Murray S. Jacobson M. Fiksdahl-King I. and Angel S. 1977. A Pattern Language: Towns Buildings Construction. Oxford University Press Oxford U.K. Alexander C. Ishikawa S. Murray S. Jacobson M. Fiksdahl-King I. and Angel S. 1977. A Pattern Language: Towns Buildings Construction. Oxford University Press Oxford U.K."},{"key":"e_1_2_2_3_1","unstructured":"Balay S. Buschelman K. Eijkhout V. Gropp W. Kaushik D. Knepley M. McInnes L. C. Smith B. and Zhang H. 2007. PETSc Users Manual ANL-95\/11--Rev. 2.3.3. Argonne National Laboratory Argonne IL. Balay S. Buschelman K. Eijkhout V. Gropp W. Kaushik D. Knepley M. McInnes L. C. Smith B. and Zhang H. 2007. PETSc Users Manual ANL-95\/11--Rev. 2.3.3. Argonne National Laboratory Argonne IL."},{"key":"e_1_2_2_4_1","doi-asserted-by":"crossref","unstructured":"Barker V. A. Blackford L. S. Dongarra J. Du Croz J. Hammarling S. Marinova M. Waniewsky J. and Yalamov P. 2001. LAPACK95 Users' Guide. Society for Industrial and Applied Mathematics Philadelphia PA. Barker V. A. Blackford L. S. Dongarra J. Du Croz J. Hammarling S. Marinova M. Waniewsky J. and Yalamov P. 2001. LAPACK95 Users' Guide. Society for Industrial and Applied Mathematics Philadelphia PA.","DOI":"10.1137\/1.9780898718201"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1177\/1094342006064488"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/567806.567807"},{"key":"e_1_2_2_7_1","doi-asserted-by":"crossref","unstructured":"Blackford L. S. Choi J. Cleary A. D'Azevedo E. Demmel J. Dhillon I. Dongarra J. Hammarling S. Henry G. Petitet A. Stanley K. Walker D. and Whaley R. C. 1997. ScaLAPACK Users' Guide. Society for Industrial and Applied Mathematics Philadelphia PA. Blackford L. S. Choi J. Cleary A. D'Azevedo E. Demmel J. Dhillon I. Dongarra J. Hammarling S. Henry G. Petitet A. Stanley K. Walker D. and Whaley R. C. 1997. ScaLAPACK Users' Guide. Society for Industrial and Applied Mathematics Philadelphia PA.","DOI":"10.1137\/1.9780898719642"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/5992.998640"},{"key":"e_1_2_2_9_1","unstructured":"Booch G. Rumbaugh J. and Jacobson I. 1999. The Unified Modeling Language User Guide Addison-Wesley Reading MA. Booch G. Rumbaugh J. and Jacobson I. 1999. The Unified Modeling Language User Guide Addison-Wesley Reading MA."},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jcp.2006.10.018"},{"key":"e_1_2_2_11_1","unstructured":"Collins-Sussman B. Fitzpatrick B. W. and Pilato C. M. 2004. Version Control with Subversion O'Reilly & Associates Sebastopol CA. Collins-Sussman B. Fitzpatrick B. W. and Pilato C. M. 2004. Version Control with Subversion O'Reilly & Associates Sebastopol CA."},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/263877.263880"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1155\/1997\/570746"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0010-4655(98)00101-5"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-72584-8_77"},{"key":"e_1_2_2_16_1","unstructured":"Decyk V. K. and Gardner H. J. 2008. Design patterns in Fortran 90\/95. Comput. Phys. Commun. In press. Decyk V. K. and Gardner H. J. 2008. Design patterns in Fortran 90\/95. Comput. Phys. Commun. In press."},{"key":"e_1_2_2_17_1","unstructured":"Free Software Foundation. 2004a. Gnu concurrent version system home page. http:\/\/www.gnu.org\/software\/cvs. Free Software Foundation. 2004a. Gnu concurrent version system home page. http:\/\/www.gnu.org\/software\/cvs."},{"key":"e_1_2_2_18_1","unstructured":"Free Software Foundation. 2004b. Gnu mailman home page. http:\/\/www.gnu.org\/software\/mailman\/mailman.html. Free Software Foundation. 2004b. Gnu mailman home page. http:\/\/www.gnu.org\/software\/mailman\/mailman.html."},{"volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","year":"1995","author":"Gamma E.","key":"e_1_2_2_19_1"},{"key":"e_1_2_2_20_1","unstructured":"Gardner H. and Manduchi G. 2007. Design Patterns for e-Science. Springer Berlin Germany. Gardner H. and Manduchi G. 2007. Design Patterns for e-Science. Springer Berlin Germany."},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1155\/2000\/419840"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1089014.1089021"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1109\/MCISE.2004.1255817"},{"volume-title":"Chairs","year":"1999","author":"Joy W.","key":"e_1_2_2_24_1"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0022112087000892"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0164-1212(03)00217-6"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0022112004000023"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1175\/1520-0469(1963)020<0130:DNF>2.0.CO;2"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1124708.1124711"},{"volume-title":"Principles, Patterns and Practices","year":"2004","author":"Martin R. C.","key":"e_1_2_2_30_1"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPS.2005.290"},{"key":"e_1_2_2_32_1","first-page":"13","article-title":"Patterns for Parallel Programming. Addison-Wesley, Reading","volume":"25","author":"Mattson T. G.","year":"2004","journal-title":"MA."},{"key":"e_1_2_2_33_1","first-page":"1019","article-title":"Fire dynamics simulator (version 5) user's guide","author":"McGrattan K.","year":"2008","journal-title":"NIST Special Publication"},{"key":"e_1_2_2_34_1","doi-asserted-by":"crossref","unstructured":"Metcalf M. Reid J. and Cohen M. 2004. Fortran 95\/2003 Explained. Oxford University Press Oxford U.K. Metcalf M. Reid J. and Cohen M. 2004. Fortran 95\/2003 Explained. Oxford University Press Oxford U.K.","DOI":"10.1093\/oso\/9780198526926.001.0001"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1103\/PhysRevLett.101.015301"},{"volume-title":"Revolutionizing engineering science through simulation. Report of the National Science Foundation Blue Ribbon Panel on Simulation-Based Engineering Science","author":"Oden J. T.","key":"e_1_2_2_36_1"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1103\/PhysRevLett.28.76"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1155\/2008\/393918"},{"key":"e_1_2_2_39_1","unstructured":"Rouson D. W. I. and Handler R. 2007. Towards a variational multiscale large-eddy simulation of the atmospheric boundary layer. In Environmental Sciences and Environmental Computing Vol. III Envirocomp Institute Inc. Fremont CA. Rouson D. W. I. and Handler R. 2007. Towards a variational multiscale large-eddy simulation of the atmospheric boundary layer. In Environmental Sciences and Environmental Computing Vol. III Envirocomp Institute Inc. Fremont CA."},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1155\/2005\/702048"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/1322436.1322438"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1063\/1.2832776"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1155\/2004\/910505"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1155\/2006\/731428"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.132.0115"},{"edition":"3","volume-title":"The C++ Programming Language","author":"Stroustrup B.","key":"e_1_2_2_46_1"},{"key":"e_1_2_2_47_1","unstructured":"The Mozilla Organization. 2004a. Mozilla Bonsai home page. http:\/\/ww.mozilla.org\/bonsai.html. The Mozilla Organization. 2004a. Mozilla Bonsai home page. http:\/\/ww.mozilla.org\/bonsai.html."},{"key":"e_1_2_2_48_1","unstructured":"The Mozilla Organization. 2004b. Mozilla Bugzilla home page. http:\/\/ww.mozilla.org \/projects\/bonsai. The Mozilla Organization. 2004b. Mozilla Bugzilla home page. http:\/\/ww.mozilla.org \/projects\/bonsai."},{"volume-title":"Proceedings of the 9th International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS '04). C. Rasmussen, Workshop Chair. 72--79","author":"Zhang K.","key":"e_1_2_2_49_1"}],"container-title":["ACM Transactions on Mathematical Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1644001.1644004","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1644001.1644004","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T20:26:43Z","timestamp":1750278403000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1644001.1644004"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2010,1]]},"references-count":49,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2010,1]]}},"alternative-id":["10.1145\/1644001.1644004"],"URL":"https:\/\/doi.org\/10.1145\/1644001.1644004","relation":{},"ISSN":["0098-3500","1557-7295"],"issn-type":[{"type":"print","value":"0098-3500"},{"type":"electronic","value":"1557-7295"}],"subject":[],"published":{"date-parts":[[2010,1]]},"assertion":[{"value":"2008-03-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2009-03-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2010-01-22","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}