skip to main content
research-article

An Object-Oriented Design for Two-Dimensional Vortex Particle Methods

Published: 01 August 2009 Publication History

Abstract

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.

References

[1]
Anderson, C. R. 1986. A method of local corrections for computing the velocity field due to a distribution of vortex blobs. J. Comput. Phys. 62, 11--123.
[2]
Anderson, C. R. 1992. An implementation of the fast multipole method without multipoles. SIAM J. Sci. Stat. Comput. 13, 4, 923--947.
[3]
Beazley, D. et al. 1995. SWIG: Simplified wrapper and interface generator. http://www.swig.org.
[4]
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’96. USENIX Association, 129--139.
[5]
Beazley, D. M. and Lomdahl, P. S. 1996. Lightweight computational steering of very large scale molecular dynamics simulations. In Proceedings of the ACM/IEEE Conference on Supercomputing (CDROM) (Supercoming’96). IEEE Computer Society Press, 50.
[6]
Budd, T. 1991. An Introduction to Object-Oriented Programming, 1st ed. Addison-Wesley, Reading, MA.
[7]
Carrier, J., Greengard, L., and Rokhlin, V. 1988. A fast adaptive multipole algorithm for particle simulations. SIAM J. Sci. Stat. Comput. 9, 4, 669--686.
[8]
Chorin, A. J. 1973. Numerical study of slightly viscous flow. J. Fluid Mech. 57, 4, 785--796.
[9]
Chorin, A. J. 1978. Vortex sheet approximation of boundary layers. J. Comput. Phys. 27, 3, 428--442.
[10]
Chorin, A. J. 1980. Vortex models and boundary layer instability. SIAM J. Sci. Statist. Comput. 1, 1--21.
[11]
Cottet, G.-H. and Koumoutsakos, P. 2000. Vortex Methods: Theory and Practice. Cambridge University Press, Cambridge, UK.
[12]
Feathers, M. et al. 2000. CppUnit: A C++ port of the JUnit framework for unit testing. http://cppunit.sourceforge.net/.
[13]
Greengard, L. and Rokhlin, V. 1987. A fast algorithm for particle simulations. J. Comput. Phys. 73, 325--348.
[14]
Hess, J. L. and Smith, A. M. O. 1966. Calculation of potential flow about arbitrary bodies. Prog. Aeronaut. Sci. 8, 1--138.
[15]
Hunter, J. D. 2007. Matplotlib: A 2D graphics environment. Comput. Sci. Eng. 9, 3, 90--95.
[16]
Jones, E., Oliphant, T., Peterson, P., et al. 2001. SciPy: Open source scientific tools for Python. http://www.scipy.org/.
[17]
Katz, J. and Plotkin, A. 1991. Low-Speed Aerodynamics: From Wing Theory to Panel Methods. McGraw--Hill Education, New York, NY.
[18]
Leonard, A. 1980. Vortex methods for flow simulation. J. Comput. Phys. 37, 289--335.
[19]
Majda, A. J. and Bertozzi, A. L. 2001. Vorticity and Incompressible Fluid Flow. Cambridge University Press, Cambridge, UK.
[20]
Nielsen, O. M. 2001. Pypar: parallel programming in the spirit of Python. http://datamining.anu.edu.au/~ole/pypar/.
[21]
Pérez, F. and Granger, B. 2007. IPython: A system for interactive scientific computing. Comput. Sci. Eng. 9, 3, 21--29.
[22]
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.
[23]
Ramachandran, P. 2003. Scientific data visualization with MayaVi. In SciPy’03----Python for Scientific Computing Workshop. CalTech, Pasadena, CA.
[24]
Ramachandran, P. 2004a. Development and study of a high-resolution two-dimensional random vortex method. Ph.D. dissertation. Department of Aerospace Engineering, IIT-Madras, Chennai, India.
[25]
Ramachandran, P. 2004b. Python for CFD: A case study. In SciPy’04---Python for Scientific Computing Conference. CalTech, Pasadena, CA.
[26]
Ramachandran, P., Rajan, S. C., and Ramakrishna, M. 2003. A fast, two-dimensional panel method. SIAM J. Sci. Comput. 24, 6, 1864--1878.
[27]
Ramachandran, P., Rajan, S. C., and Ramakrishna, M. 2005. A fast multipole method for higher order vortex panels in two dimensions. SIAM J. Sci. Comput. 26, 5, 1620--1642.
[28]
Ramachandran, P., Ramakrishna, M., and Rajan, S. C. 2007. Efficient rectilinear particle motion in the presence of complex two-dimensional geometries. Comput. Math. Appl. 53, 2, 329--344. (Recent Advances in Non-Linear Mechanics).
[29]
Stroustrup, B. 1998. The C++ Programming Language, 3rd Ed. Addison-Wesley, Reading, MA.
[30]
Turner, P. J., Stambulchik, E., et al. 1998. Grace: A 2d plotting tool. http://plasma-gate.weizmann.ac.il/Grace/.
[31]
van Dommelen, L. and Rundensteiner, E. A. 1989. Fast, adaptive summation of point forces in the two-dimensional Poisson equation. J. Comput. Phys. 83, 126--147.
[32]
van Heesch, D. 1997. Doxygen. http://www.stack.nl/~dimitri/doxygen/index.html.
[33]
van Rossum, G. et al. 1991. The Python programming language. http://www.python.org/.

Cited By

View all
  • (2013)A case studyProceedings of the 5th International Workshop on Software Engineering for Computational Science and Engineering10.5555/2663370.2663373(9-18)Online publication date: 18-May-2013
  • (2013)A case study: Agile development in the community laser-induced incandescence modeling environment (CLiiME)2013 5th International Workshop on Software Engineering for Computational Science and Engineering (SE-CSE)10.1109/SECSE.2013.6615094(9-18)Online publication date: May-2013

Recommendations

Reviews

William I. Thacker

Unlike other application areas, the numerical computing community has not really embraced object-oriented design and programming. The paper describes a very good application of object-oriented programming to vortex particle methods-an advanced and significant application. In fact, it makes two significant contributions: an example of how to apply object-oriented design and programming to a numerical problem, and a software package with an infrastructure that allows-through object-oriented design-easy experimentation with new algorithms. The paper gives an overview of the techniques for solving fluid-flow problems with vortex particle methods. This is helpful for understanding the design of the hierarchical solution and for assisting readers who are not familiar with vortex particle methods. The sections on the object-oriented design of the program solution require some previous knowledge of object-oriented design and inheritance. However, with minimal background, the discussion is very easy to understand. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Comments

Information & Contributors

Information

Published In

cover image ACM Transactions on Mathematical Software
ACM Transactions on Mathematical Software  Volume 36, Issue 4
August 2009
140 pages
ISSN:0098-3500
EISSN:1557-7295
DOI:10.1145/1555386
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 August 2009
Accepted: 01 January 2009
Revised: 01 August 2008
Received: 01 January 2008
Published in TOMS Volume 36, Issue 4

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Object-orientation
  2. particle methods
  3. vortex methods

Qualifiers

  • Research-article
  • Research
  • Refereed

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)5
  • Downloads (Last 6 weeks)1
Reflects downloads up to 20 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2013)A case studyProceedings of the 5th International Workshop on Software Engineering for Computational Science and Engineering10.5555/2663370.2663373(9-18)Online publication date: 18-May-2013
  • (2013)A case study: Agile development in the community laser-induced incandescence modeling environment (CLiiME)2013 5th International Workshop on Software Engineering for Computational Science and Engineering (SE-CSE)10.1109/SECSE.2013.6615094(9-18)Online publication date: May-2013

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media