{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:32:06Z","timestamp":1750307526698,"version":"3.41.0"},"reference-count":32,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2009,8,1]],"date-time":"2009-08-01T00:00:00Z","timestamp":1249084800000},"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. Math. Softw."],"published-print":{"date-parts":[[2009,8]]},"abstract":"<jats:p>Vortex methods offer a grid-free alternative to simulating incompressible, viscous, fluid flows. They require the use of fairly sophisticated algorithms and can be complicated to implement for general flows. This article describes an object-oriented design used to implement a vortex particle based flow solver in two dimensions. We provide an overview of the various abstractions that arose as a result of this design. Several of the algorithms have common components that may be abstracted and reused. We demonstrate how the design allowed us to derive the traditional benefits of OOD. In addition, we show how the design directly suggested elegant generalizations of existing algorithms. Finally, we show the benefits of using software testing techniques and building a powerful scripting layer for the library.<\/jats:p>","DOI":"10.1145\/1555386.1555387","type":"journal-article","created":{"date-parts":[[2009,9,1]],"date-time":"2009-09-01T17:52:59Z","timestamp":1251827579000},"page":"1-28","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["An Object-Oriented Design for Two-Dimensional Vortex Particle Methods"],"prefix":"10.1145","volume":"36","author":[{"given":"Prabhu","family":"Ramachandran","sequence":"first","affiliation":[{"name":"Indian Institute of Technology Bombay"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"M.","family":"Ramakrishna","sequence":"additional","affiliation":[{"name":"Indian Institute of Technology Madras"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2009,8]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1016\/0021-9991(86)90102-6"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1137\/0913055"},{"key":"e_1_2_1_3_1","volume-title":"et al","author":"Beazley D.","year":"1995","unstructured":"Beazley , D. et al . 1995 . SWIG : Simplified wrapper and interface generator. http:\/\/www.swig.org. Beazley, D. et al. 1995. SWIG: Simplified wrapper and interface generator. http:\/\/www.swig.org."},{"key":"e_1_2_1_4_1","volume-title":"Proceedings of the 4th Annual Tcl\/Tk Workshop\u201996","author":"Beazley D. M.","year":"1996","unstructured":"Beazley , D. M. 1996 . SWIG: An easy to use tool for integrating scripting languages with C and C++ . In Proceedings of the 4th Annual Tcl\/Tk Workshop\u201996 . USENIX Association, 129--139. Beazley, D. M. 1996. SWIG: An easy to use tool for integrating scripting languages with C and C++. In Proceedings of the 4th Annual Tcl\/Tk Workshop\u201996. USENIX Association, 129--139."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/369028.369136"},{"key":"e_1_2_1_6_1","volume-title":"An Introduction to Object-Oriented Programming","author":"Budd T.","unstructured":"Budd , T. 1991. An Introduction to Object-Oriented Programming , 1 st ed. Addison-Wesley , Reading, MA . Budd, T. 1991. An Introduction to Object-Oriented Programming, 1st ed. Addison-Wesley, Reading, MA.","edition":"1"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1137\/0909044"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0022112073002016"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1016\/0021-9991(78)90019-0"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1137\/0901001"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511526442"},{"key":"e_1_2_1_12_1","volume-title":"et al","author":"Feathers M.","year":"2000","unstructured":"Feathers , M. et al . 2000 . CppUnit: A C++ port of the JUnit framework for unit testing. http:\/\/cppunit.sourceforge.net\/. Feathers, M. et al. 2000. CppUnit: A C++ port of the JUnit framework for unit testing. http:\/\/cppunit.sourceforge.net\/."},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1016\/0021-9991(87)90140-9"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1016\/0376-0421(67)90003-6"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1109\/MCSE.2007.55"},{"key":"e_1_2_1_16_1","unstructured":"Jones E. Oliphant T. Peterson P. etal 2001. SciPy: Open source scientific tools for Python. http:\/\/www.scipy.org\/.  Jones E. Oliphant T. Peterson P. et al. 2001. SciPy: Open source scientific tools for Python. http:\/\/www.scipy.org\/."},{"key":"e_1_2_1_17_1","unstructured":"Katz J. and Plotkin A. 1991. Low-Speed Aerodynamics: From Wing Theory to Panel Methods. McGraw--Hill Education New York NY.  Katz J. and Plotkin A. 1991. Low-Speed Aerodynamics: From Wing Theory to Panel Methods . McGraw--Hill Education New York NY."},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1016\/0021-9991(80)90040-6"},{"key":"e_1_2_1_19_1","doi-asserted-by":"crossref","unstructured":"Majda A. J. and Bertozzi A. L. 2001. Vorticity and Incompressible Fluid Flow. Cambridge University Press Cambridge UK.  Majda A. J. and Bertozzi A. L. 2001. Vorticity and Incompressible Fluid Flow . Cambridge University Press Cambridge UK.","DOI":"10.1017\/CBO9780511613203"},{"key":"e_1_2_1_20_1","unstructured":"Nielsen O. M. 2001. Pypar: parallel programming in the spirit of Python. http:\/\/datamining.anu.edu.au\/~ole\/pypar\/.  Nielsen O. M. 2001. Pypar: parallel programming in the spirit of Python. http:\/\/datamining.anu.edu.au\/~ole\/pypar\/."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/MCSE.2007.53"},{"volume-title":"Cambridge University Press","author":"Puckett E. G.","key":"e_1_2_1_22_1","unstructured":"Puckett , E. G. 1991. Vortex methods: An introduction and survey of selected research topics . In Incompressible Computational Fluid Dynamics---Trends and Advances, R. A. Nicolaides and M. D. Gunzburger, Eds. Cambridge University Press , Cambridge , UK , 335. Puckett, E. G. 1991. Vortex methods: An introduction and survey of selected research topics. In Incompressible Computational Fluid Dynamics---Trends and Advances, R. A. Nicolaides and M. D. Gunzburger, Eds. Cambridge University Press, Cambridge, UK, 335."},{"key":"e_1_2_1_23_1","volume-title":"Scientific Computing Workshop. CalTech","author":"Ramachandran P.","year":"2003","unstructured":"Ramachandran , P. 2003 . Scientific data visualization with MayaVi. In SciPy\u201903----Python for Scientific Computing Workshop. CalTech , Pasadena, CA. Ramachandran, P. 2003. Scientific data visualization with MayaVi. In SciPy\u201903----Python for Scientific Computing Workshop. CalTech, Pasadena, CA."},{"key":"e_1_2_1_25_1","volume-title":"Scientific Computing Conference. CalTech","author":"Ramachandran P.","year":"2004","unstructured":"Ramachandran , P. 2004 b. Python for CFD: A case study. In SciPy\u201904---Python for Scientific Computing Conference. CalTech , Pasadena, CA. Ramachandran, P. 2004b. Python for CFD: A case study. In SciPy\u201904---Python for Scientific Computing Conference. CalTech, Pasadena, CA."},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.5555\/773502.773516"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1137\/S1064827502420719"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.camwa.2006.02.050"},{"key":"e_1_2_1_29_1","volume-title":"The C++ Programming Language","author":"Stroustrup B.","unstructured":"Stroustrup , B. 1998. The C++ Programming Language , 3 rd Ed. Addison-Wesley , Reading, MA . Stroustrup, B. 1998. The C++ Programming Language, 3rd Ed. Addison-Wesley, Reading, MA.","edition":"3"},{"key":"e_1_2_1_30_1","volume-title":"Grace: A 2d plotting tool","author":"Turner P. J.","year":"1998","unstructured":"Turner , P. J. , Stambulchik , E. , 1998 . Grace: A 2d plotting tool . http:\/\/plasma-gate.weizmann.ac.il\/Grace\/. Turner, P. J., Stambulchik, E., et al. 1998. Grace: A 2d plotting tool. http:\/\/plasma-gate.weizmann.ac.il\/Grace\/."},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1016\/0021-9991(89)90225-8"},{"key":"e_1_2_1_32_1","unstructured":"van Heesch D. 1997. Doxygen. http:\/\/www.stack.nl\/~dimitri\/doxygen\/index.html.  van Heesch D. 1997. Doxygen. http:\/\/www.stack.nl\/~dimitri\/doxygen\/index.html."},{"key":"e_1_2_1_33_1","volume-title":"et al","author":"van Rossum G.","year":"1991","unstructured":"van Rossum , G. et al . 1991 . The Python programming language. http:\/\/www.python.org\/. van Rossum, G. et al. 1991. The Python programming language. http:\/\/www.python.org\/."}],"container-title":["ACM Transactions on Mathematical Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1555386.1555387","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1555386.1555387","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T12:23:04Z","timestamp":1750249384000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1555386.1555387"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2009,8]]},"references-count":32,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2009,8]]}},"alternative-id":["10.1145\/1555386.1555387"],"URL":"https:\/\/doi.org\/10.1145\/1555386.1555387","relation":{},"ISSN":["0098-3500","1557-7295"],"issn-type":[{"type":"print","value":"0098-3500"},{"type":"electronic","value":"1557-7295"}],"subject":[],"published":{"date-parts":[[2009,8]]},"assertion":[{"value":"2008-01-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2009-01-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2009-08-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}