{"id":18377922,"url":"https://github.com/barbagroup/petibm","last_synced_at":"2025-04-06T21:31:56.784Z","repository":{"id":17342703,"uuid":"20114054","full_name":"barbagroup/PetIBM","owner":"barbagroup","description":"PetIBM - toolbox and applications of the immersed-boundary method on distributed-memory architectures","archived":false,"fork":false,"pushed_at":"2022-08-11T21:50:46.000Z","size":15638,"stargazers_count":104,"open_issues_count":1,"forks_count":48,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-07-31T20:31:54.906Z","etag":null,"topics":["computational-fluid-dynamics","gpu-computing","immersed-boundary-method","nvidia-amgx","petsc"],"latest_commit_sha":null,"homepage":"https://barbagroup.github.io/PetIBM","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barbagroup.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-23T21:06:47.000Z","updated_at":"2024-07-31T08:50:24.000Z","dependencies_parsed_at":"2022-09-13T08:11:04.855Z","dependency_job_id":null,"html_url":"https://github.com/barbagroup/PetIBM","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbagroup%2FPetIBM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbagroup%2FPetIBM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbagroup%2FPetIBM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbagroup%2FPetIBM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barbagroup","download_url":"https://codeload.github.com/barbagroup/PetIBM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247555424,"owners_count":20957763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computational-fluid-dynamics","gpu-computing","immersed-boundary-method","nvidia-amgx","petsc"],"created_at":"2024-11-06T00:29:42.051Z","updated_at":"2025-04-06T21:31:56.305Z","avatar_url":"https://github.com/barbagroup.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PetIBM - toolbox and applications of the immersed-boundary method on distributed-memory architectures\n\n[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/barbagroup/PetIBM/raw/master/LICENSE)\n[![Travis](https://img.shields.io/travis/barbagroup/PetIBM/develop.svg?logo=travis)](https://travis-ci.org/barbagroup/PetIBM)\n[![Docs](https://img.shields.io/badge/docs-0.4-brightgreen.svg)](https://barbagroup.github.io/PetIBM)\n[![DOI](https://img.shields.io/badge/JOSS-10.21105%2Fjoss.00558-brightgreen.svg)](https://doi.org/10.21105/joss.00558)\n[![CITE_BIB](https://img.shields.io/badge/Cite%20PetIBM-bibtex-blue.svg)](https://www.doi2bib.org/bib/10.21105/joss.00558)\n\nPetIBM implements immersed-boundary methods to solve 2D and 3D incompressible Navier-Stokes on stretched Cartesian grids using a projection approach.\n\nCurrently, two immersed boundary methods are implemented:\n\n* Immersed Boundary Projection Method (IBPM; Taira and Colonius, 2007);\n* decoupled version of the IBPM (Li et al., 2016).\n\nWith 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).\nSee [Doxygen pages](https://barbagroup.github.io/PetIBM/modules.html) for API manual.\n\nPetIBM relies on the [PETSc](http://www.mcs.anl.gov/petsc/) library for data structures and parallel routines.\nLinear systems can be solved either on CPUs using PETSc KSP objects or on multiple CUDA-capable GPU devices using the NVIDIA [AmgX](https://github.com/NVIDIA/AMGX) library.\nData transfers between PETSc and AmgX are handled by [AmgXWrapper](https://github.com/barbagroup/AmgXWrapper).\n\nPetIBM 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.\nPetIBM was also tested on the following HPC systems: [GW ColonialOne](https://colonialone.gwu.edu/) and [Titan at ORNL](https://www.olcf.ornl.gov/titan/).\n\nPlease see [Documentation](#documentation) for more details.\n\n---\n\n## Features\n\nPetIBM supports:\n\n* multiple immersed bodies,\n* moving bodies with prescribed kinematics,\n* 2D and 3D stretched Cartesian meshes,\n* distributed-memory architectures,\n* multiple GPUs on a single node,\n* GPU clusters, and\n* HDF5 I/O.\n\n---\n\n## Documentation\n\n* [Quick Start](doc/markdowns)\n  * [Dependencies and Installation](doc/markdowns/installation.md)\n  * [Run PetIBM](doc/markdowns/runpetibm.md)\n  * [Input files](doc/markdowns/inputs.md)\n  * [Output files](doc/markdowns/outputs.md)\n  * [2D Examples](doc/markdowns/examples2d.md)\n  * [3D Examples](doc/markdowns/examples3d.md)\n  * [Use PetIBM API](doc/markdowns/usepetibmapi.md)\n* [Online API manual](https://barbagroup.github.io/PetIBM)\n* [Change Log](CHANGELOG.md)\n* [Contributing](CONTRIBUTING.md)\n\nOffline API manual can be generated with [Doxygen](http://www.stack.nl/~dimitri/doxygen/).\n\n---\n\n## Papers published using PetIBM\n\n* Mesnard, O., \u0026 Barba, L. A. (2017). _Reproducible and Replicable Computational Fluid Dynamics: It's Harder Than You Think_. Computing in Science \u0026 Engineering, 19(4), 44-55, https://doi.org/10.1109/MCSE.2017.3151254.\n\n---\n\n## Contact\n\nPlease e-mail [Olivier Mesnard](mailto:mesnardo@gwu.edu) or [Pi-Yueh Chuang](mailto:pychuang@gwu.edu) if you have any questions, suggestions, or feedback.\n\nTo report bugs, please use the GitHub issue tracking system.\nWe are also open to pull-requests.\n\n---\n\n## References\n\n* Chang, W., Giraldo, F., \u0026 Perot, B. (2002). *Analysis of an exact fractional step method*. Journal of Computational Physics, 180(1), 183-199.\n* Li, R. Y., Xie, C. M., Huang, W. X., \u0026 Xu, C. X. (2016). *An efficient immersed boundary projection method for flow over complex/moving boundaries*. Computers \u0026 Fluids, 140, 122-135.\n* Perot, J. B. (1993). *An analysis of the fractional step method*. Journal of Computational Physics, 108(1), 51-58.\n* Taira, K., \u0026 Colonius, T. (2007). *The immersed boundary method: a projection approach*. Journal of Computational Physics, 225(2), 2118-2137.\n\n---\n\n## How to cite PetIBM\n\nIf PetIBM contributes to a project that leads to a scientific publication, please cite the project.\nYou can use this citation or the BibTeX entry below.\n\n\u003e 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](https://doi.org/10.21105/joss.00558)\n\n```console\n@article{chuang2018petibm,\n  doi = {10.21105/joss.00558},\n  url = {https://doi.org/10.21105/joss.00558},\n  year = {2018},\n  month = {may},\n  publisher = {The Open Journal},\n  volume = {3},\n  number = {25},\n  pages = {558},\n  author = {Pi-Yueh Chuang and Olivier Mesnard and Anush Krishnan and Lorena A. Barba},\n  title = {{PetIBM}: toolbox and applications of the immersed-boundary method on distributed-memory architectures},\n  journal = {The Journal of Open Source Software}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbagroup%2Fpetibm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarbagroup%2Fpetibm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbagroup%2Fpetibm/lists"}