{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,20]],"date-time":"2026-03-20T11:52:27Z","timestamp":1774007547103,"version":"3.50.1"},"reference-count":46,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2016,3,29]],"date-time":"2016-03-29T00:00:00Z","timestamp":1459209600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Graph."],"published-print":{"date-parts":[[2016,5,25]]},"abstract":"<jats:p>With existing programming tools, writing high-performance simulation code is labor intensive and requires sacrificing readability and portability. The alternative is to prototype simulations in a high-level language like Matlab, thereby sacrificing performance. The Matlab programming model naturally describes the behavior of an entire physical system using the language of linear algebra. However, simulations also manipulate individual geometric elements, which are best represented using linked data structures like meshes. Translating between the linked data structures and linear algebra comes at significant cost, both to the programmer and to the machine. High-performance implementations avoid the cost by rephrasing the computation in terms of linked or index data structures, leaving the code complicated and monolithic, often increasing its size by an order of magnitude.<\/jats:p>\n          <jats:p>In this article, we present Simit, a new language for physical simulations that lets the programmer view the system both as a linked data structure in the form of a hypergraph and as a set of global vectors, matrices, and tensors depending on what is convenient at any given time. Simit provides a novel assembly construct that makes it conceptually easy and computationally efficient to move between the two abstractions. Using the information provided by the assembly construct, the compiler generates efficient in-place computation on the graph. We demonstrate that Simit is easy to use: a Simit program is typically shorter than a Matlab program; that it is high performance: a Simit program running sequentially on a CPU performs comparably to hand-optimized simulations; and that it is portable: Simit programs can be compiled for GPUs with no change to the program, delivering 4 to 20\u00d7 speedups over our optimized CPU code.<\/jats:p>","DOI":"10.1145\/2866569","type":"journal-article","created":{"date-parts":[[2016,3,31]],"date-time":"2016-03-31T11:55:39Z","timestamp":1459425339000},"page":"1-21","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":46,"title":["Simit"],"prefix":"10.1145","volume":"35","author":[{"given":"Fredrik","family":"Kjolstad","sequence":"first","affiliation":[{"name":"Massachusetts Institute of Technology"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Shoaib","family":"Kamil","sequence":"additional","affiliation":[{"name":"Adobe, Broadway, Cambridge MA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jonathan","family":"Ragan-Kelley","sequence":"additional","affiliation":[{"name":"Stanford University, Stanford, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"David I. W.","family":"Levin","sequence":"additional","affiliation":[{"name":"Disney Research"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Shinjiro","family":"Sueda","sequence":"additional","affiliation":[{"name":"California Polytechnic State University, San Luis Obispo, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Desai","family":"Chen","sequence":"additional","affiliation":[{"name":"Massachusetts Institute of Technology"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Etienne","family":"Vouga","sequence":"additional","affiliation":[{"name":"University of Texas at Austin"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Danny M.","family":"Kaufman","sequence":"additional","affiliation":[{"name":"Adobe, Seattle, WA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Gurtej","family":"Kanwar","sequence":"additional","affiliation":[{"name":"Massachusetts Institute of Technology"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Wojciech","family":"Matusik","sequence":"additional","affiliation":[{"name":"Massachusetts Institute of Technology"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Saman","family":"Amarasinghe","sequence":"additional","affiliation":[{"name":"Massachusetts Institute of Technology"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2016,3,29]]},"reference":[{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.5555\/91254"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1179352.1141947"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1007\/11537908_5"},{"key":"e_1_2_2_6_1","unstructured":"Mario Botsch Stefan Steinberg Stephan Bischoff and Leif Kobbelt. 2002. OpenMesh -- A generic and efficient polygon mesh data structure. (2002).  Mario Botsch Stefan Steinberg Stephan Bischoff and Leif Kobbelt. 2002. OpenMesh -- A generic and efficient polygon mesh data structure. (2002)."},{"key":"e_1_2_2_7_1","volume-title":"Computational Geometry Algorithms Library.","author":"CGAL.","unstructured":"CGAL. 2015. Computational Geometry Algorithms Library. Retrieved from http:\/\/www.cgal.org. (2015). Accessed: 2015-09-24. CGAL. 2015. Computational Geometry Algorithms Library. Retrieved from http:\/\/www.cgal.org. (2015). Accessed: 2015-09-24."},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/362384.362685"},{"key":"e_1_2_2_9_1","volume-title":"COMSOL Multiphysics User\u2019s Guide","author":"COMSOL AB.","year":"2005","unstructured":"COMSOL AB. 2005. COMSOL Multiphysics User\u2019s Guide . Version : September ( 2005 ). COMSOL AB. 2005. COMSOL Multiphysics User\u2019s Guide. Version: September (2005)."},{"key":"e_1_2_2_10_1","volume-title":"Bullet physics library. Open Source: Bulletphysics.org 4, 6","author":"Coumans Erwin","year":"2006","unstructured":"Erwin Coumans and others. 2006. Bullet physics library. Open Source: Bulletphysics.org 4, 6 ( 2006 ). Erwin Coumans and others. 2006. Bullet physics library. Open Source: Bulletphysics.org 4, 6 (2006)."},{"key":"e_1_2_2_11_1","unstructured":"Denis Demidov. 2015. AMGCL. Retrieved from http:\/\/ddemidov.github.io\/amgcl.  Denis Demidov. 2015. AMGCL. Retrieved from http:\/\/ddemidov.github.io\/amgcl."},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2063384.2063396"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.simpat.2010.11.005"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2037636.2037646"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1016\/0306-4379(82)90023-0"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1002\/andp.19163540702"},{"key":"e_1_2_2_17_1","volume-title":"Proceedings of Bridges.","author":"Elliott Conal","year":"2001","unstructured":"Conal Elliott . 2001 . Functional image synthesis . In Proceedings of Bridges. Conal Elliott. 2001. Functional image synthesis. In Proceedings of Bridges."},{"key":"e_1_2_2_18_1","volume-title":"SOFA: A modular yet efficient simulation framework. In Surgetica 2007 - Computer-Aided Medical Interventions: Tools and Applications (Surgetica","author":"Faure Fran\u00e7ois","year":"2007","unstructured":"Fran\u00e7ois Faure , J\u00e9r\u00e9mie Allard , St\u00e9phane Cotin , Paul Neumann , Pierre-Jean Bensoussan , Christian Duriez , Herv\u00e9 Delingette , and Laurent Grisoni . 2007 . SOFA: A modular yet efficient simulation framework. In Surgetica 2007 - Computer-Aided Medical Interventions: Tools and Applications (Surgetica 2007, Gestes m\u00e9dicaux chirurgicaux assist\u00e9s par ordinateur), Philippe Merloz and Jocelyne Troccaz (Eds.). Chamb\u00e9ry, France , 101--108. Fran\u00e7ois Faure, J\u00e9r\u00e9mie Allard, St\u00e9phane Cotin, Paul Neumann, Pierre-Jean Bensoussan, Christian Duriez, Herv\u00e9 Delingette, and Laurent Grisoni. 2007. SOFA: A modular yet efficient simulation framework. In Surgetica 2007 - Computer-Aided Medical Interventions: Tools and Applications (Surgetica 2007, Gestes m\u00e9dicaux chirurgicaux assist\u00e9s par ordinateur), Philippe Merloz and Jocelyne Troccaz (Eds.). Chamb\u00e9ry, France, 101--108."},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.5555\/846276.846284"},{"key":"e_1_2_2_20_1","unstructured":"Ga\u00ebl Guennebaud Beno\u00eet Jacob and others. 2010. Eigen v3. Retrieved from http:\/\/eigen.tuxfamily.org.  Ga\u00ebl Guennebaud Beno\u00eet Jacob and others. 2010. Eigen v3. Retrieved from http:\/\/eigen.tuxfamily.org."},{"key":"e_1_2_2_21_1","doi-asserted-by":"crossref","unstructured":"Brian Guenter and Sung-Hee Lee. 2009. Symbolic Dynamics and Geometry. AK Peters.  Brian Guenter and Sung-Hee Lee. 2009. Symbolic Dynamics and Geometry. AK Peters.","DOI":"10.1201\/b15909"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/282918.282923"},{"key":"e_1_2_2_23_1","volume-title":"Art of Doing Science and Engineering: Learning to Learn","author":"Hamming Richard","unstructured":"Richard Hamming . 2003. History of computer\u2014software . In Art of Doing Science and Engineering: Learning to Learn . CRC Press . Richard Hamming. 2003. History of computer\u2014software. In Art of Doing Science and Engineering: Learning to Learn. CRC Press."},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/97880.97911"},{"key":"e_1_2_2_25_1","volume-title":"Private communication. (May","author":"Hecht Fr\u00e9d\u00e9ric","year":"2015","unstructured":"Fr\u00e9d\u00e9ric Hecht . 2015. Private communication. (May 2015 ). Fr\u00e9d\u00e9ric Hecht. 2015. Private communication. (May 2015)."},{"key":"e_1_2_2_26_1","volume-title":"Karlsson and Sorensen Inc","author":"Hibbit","year":"1998","unstructured":"Hibbit , Karlsson and Sorensen Inc . 1998 . ABAQUS\/Standard: User\u2019s Manual . Vol. 1 . Hibbit, Karlsson and Sorensen Inc . Hibbit, Karlsson and Sorensen Inc. 1998. ABAQUS\/Standard: User\u2019s Manual. Vol. 1. Hibbit, Karlsson and Sorensen Inc."},{"key":"e_1_2_2_27_1","unstructured":"Gerard J. Holzmann. 1988. Beyond Photography. Prentice Hall.  Gerard J. Holzmann. 1988. Beyond Photography. Prentice Hall."},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2013.6544832"},{"key":"e_1_2_2_29_1","volume-title":"Young","author":"Kincaid David R.","year":"1989","unstructured":"David R. Kincaid , Thomas C. Oppe , and David M . Young . 1989 . ITPACKV 2D User\u2019s Guide . David R. Kincaid, Thomas C. Oppe, and David M. Young. 1989. ITPACKV 2D User\u2019s Guide."},{"key":"e_1_2_2_30_1","unstructured":"Peter Kohnke. 1999. ANSYS Theory Reference. Ansys.  Peter Kohnke. 1999. ANSYS Theory Reference. Ansys."},{"key":"e_1_2_2_31_1","unstructured":"Karen Liu. 2014. Dynamic animation and robotics toolkit. http:\/\/dartsim.github.io.  Karen Liu. 2014. Dynamic animation and robotics toolkit. http:\/\/dartsim.github.io."},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.5555\/3023549.3023589"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/882262.882362"},{"key":"e_1_2_2_34_1","unstructured":"MATLAB. 2014. Version 8.3.0 (R2014a). MathWorks Inc. Natick MA.  MATLAB. 2014. Version 8.3.0 (R2014a). MathWorks Inc. Natick MA."},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2010324.1964932"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1063\/1.1712836"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1833349.1778803"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993501"},{"key":"e_1_2_2_39_1","unstructured":"Julien Pommier and Yves Renard. 2005. Getfem++ an open source generic C++ library for finite element methods. http:\/\/download.gna.org\/getfem\/html\/homepage\/.  Julien Pommier and Yves Renard. 2005. Getfem++ an open source generic C++ library for finite element methods. http:\/\/download.gna.org\/getfem\/html\/homepage\/."},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/2185520.2185528"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01454201"},{"key":"e_1_2_2_42_1","volume-title":"The OpenGL Graphics System: A Specification. Silicon Graphics","author":"Segal Mark","unstructured":"Mark Segal and Kurt Akeley . 1994. The OpenGL Graphics System: A Specification. Silicon Graphics , Inc . Mark Segal and Kurt Akeley. 1994. The OpenGL Graphics System: A Specification. Silicon Graphics, Inc."},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1111\/j.1467-8659.2012.03230.x"},{"key":"e_1_2_2_44_1","unstructured":"Russell Smith. 2004. Open Dynamics Engine v0.5 User Guide.  Russell Smith. 2004. Open Dynamics Engine v0.5 User Guide."},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/2248487.2151013"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2461912.2461993"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1088\/1742-6596\/16\/1\/071"},{"key":"e_1_2_2_48_1","volume-title":"Efficient GPU data structures and methods to solve sparse linear systems in dynamics applications. Computer Graphics Forum 32, 1","author":"Weber Daniel","year":"2013","unstructured":"Daniel Weber , Jan Bender , Markus Schnoes , Andre Stork , and Dieter Fellner . 2013. Efficient GPU data structures and methods to solve sparse linear systems in dynamics applications. Computer Graphics Forum 32, 1 ( 2013 ). Daniel Weber, Jan Bender, Markus Schnoes, Andre Stork, and Dieter Fellner. 2013. Efficient GPU data structures and methods to solve sparse linear systems in dynamics applications. Computer Graphics Forum 32, 1 (2013)."}],"container-title":["ACM Transactions on Graphics"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2866569","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2866569","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T21:15:05Z","timestamp":1750281305000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2866569"}},"subtitle":["A Language for Physical Simulation"],"short-title":[],"issued":{"date-parts":[[2016,3,29]]},"references-count":46,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2016,5,25]]}},"alternative-id":["10.1145\/2866569"],"URL":"https:\/\/doi.org\/10.1145\/2866569","relation":{},"ISSN":["0730-0301","1557-7368"],"issn-type":[{"value":"0730-0301","type":"print"},{"value":"1557-7368","type":"electronic"}],"subject":[],"published":{"date-parts":[[2016,3,29]]},"assertion":[{"value":"2015-05-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2015-12-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2016-03-29","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}