Coder Social home page Coder Social logo

petibm's Introduction

PetIBM - toolbox and applications of the immersed-boundary method on distributed-memory architectures

License Travis Docs DOI CITE_BIB

PetIBM implements immersed-boundary methods to solve 2D and 3D incompressible Navier-Stokes on stretched Cartesian grids using a projection approach.

Currently, two immersed boundary methods are implemented:

  • Immersed Boundary Projection Method (IBPM; Taira and Colonius, 2007);
  • decoupled version of the IBPM (Li et al., 2016).

With object-oriented design, the objects and classes in PetIBM can be re-used to develop other solvers easily, as long as the numerical methods used can fit into Perot's framework (Perot, 1993; Chang et. al, 2002). See Doxygen pages for API manual.

PetIBM relies on the PETSc library for data structures and parallel routines. Linear systems can be solved either on CPUs using PETSc KSP objects or on multiple CUDA-capable GPU devices using the NVIDIA AmgX library. Data transfers between PETSc and AmgX are handled by AmgXWrapper.

PetIBM runs only on Unix-based systems (no support on Windows) and was last tested on Ubuntu 16.04, MacOS Sierra 10.12.6, and Arch Linux. PetIBM was also tested on the following HPC systems: GW ColonialOne and Titan at ORNL.

Please see Documentation for more details.


Features

PetIBM supports:

  • multiple immersed bodies,
  • moving bodies with prescribed kinematics,
  • 2D and 3D stretched Cartesian meshes,
  • distributed-memory architectures,
  • multiple GPUs on a single node,
  • GPU clusters, and
  • HDF5 I/O.

Documentation

Offline API manual can be generated with Doxygen.


Papers published using PetIBM

  • Mesnard, O., & Barba, L. A. (2017). Reproducible and Replicable Computational Fluid Dynamics: It's Harder Than You Think. Computing in Science & Engineering, 19(4), 44-55, https://doi.org/10.1109/MCSE.2017.3151254.

Contact

Please e-mail Olivier Mesnard or Pi-Yueh Chuang if you have any questions, suggestions, or feedback.

To report bugs, please use the GitHub issue tracking system. We are also open to pull-requests.


References

  • Chang, W., Giraldo, F., & Perot, B. (2002). Analysis of an exact fractional step method. Journal of Computational Physics, 180(1), 183-199.
  • Li, R. Y., Xie, C. M., Huang, W. X., & Xu, C. X. (2016). An efficient immersed boundary projection method for flow over complex/moving boundaries. Computers & Fluids, 140, 122-135.
  • Perot, J. B. (1993). An analysis of the fractional step method. Journal of Computational Physics, 108(1), 51-58.
  • Taira, K., & Colonius, T. (2007). The immersed boundary method: a projection approach. Journal of Computational Physics, 225(2), 2118-2137.

How to cite PetIBM

If PetIBM contributes to a project that leads to a scientific publication, please cite the project. You can use this citation or the BibTeX entry below.

Pi-Yueh Chuang, Olivier Mesnard, Anush Krishnan, Lorena A. Barba (2018). PetIBM: toolbox and applications of the immersed-boundary method on distributed-memory architectures. Journal of Open Source Software, 3(25), 558, doi:10.21105/joss.00558

@article{chuang2018petibm,
  doi = {10.21105/joss.00558},
  url = {https://doi.org/10.21105/joss.00558},
  year = {2018},
  month = {may},
  publisher = {The Open Journal},
  volume = {3},
  number = {25},
  pages = {558},
  author = {Pi-Yueh Chuang and Olivier Mesnard and Anush Krishnan and Lorena A. Barba},
  title = {{PetIBM}: toolbox and applications of the immersed-boundary method on distributed-memory architectures},
  journal = {The Journal of Open Source Software}
}

petibm's People

Contributors

anushkrish avatar gforsyth avatar jedbrown avatar labarba avatar mesnardo avatar piyueh avatar

Watchers

 avatar

petibm's Issues

Issues regarding to old GCC version

  1. header file experimental/filesystem does not exist in old GCC version (at least not in GCC 4.9.2). I've already removed all code using std::experimental::filesystem, but I forgot to remove the # include <experimental/filesystem> in some source files.

  2. std::stringstream is not copyable and moveable in old GCC, at least not in GCC 4.9.2. Require workarounds.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.