Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/entity-toolkit/entity
New generation astrophysical plasma simulation code with CPU/GPU portability
https://github.com/entity-toolkit/entity
astrophysics gpu kokkos particle-in-cell plasma pppl princeton simulation
Last synced: 3 months ago
JSON representation
New generation astrophysical plasma simulation code with CPU/GPU portability
- Host: GitHub
- URL: https://github.com/entity-toolkit/entity
- Owner: entity-toolkit
- License: bsd-3-clause
- Created: 2021-04-21T05:14:28.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-04-08T05:04:54.000Z (10 months ago)
- Last Synced: 2024-04-08T06:24:01.526Z (10 months ago)
- Topics: astrophysics, gpu, kokkos, particle-in-cell, plasma, pppl, princeton, simulation
- Language: C++
- Homepage: https://entity-toolkit.github.io/wiki/
- Size: 45.3 MB
- Stars: 22
- Watchers: 5
- Forks: 2
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `Entity`
tl;dr: One particle-in-cell code to rule them all.
`Entity` is an open-source coordinate-agnostic particle-in-cell (PIC) code written in C++17 specifically targeted to study plasma physics in relativistic astrophysical systems. The main algorithms of the code are written in covariant form, allowing to easily implement arbitrary grid geometries. The code is highly modular, and is written in the architecture-agnostic way using the [`Kokkos`](https://kokkos.org/kokkos-core-wiki/) performance portability library, allowing the code to efficiently use device parallelization on CPU and GPU architectures of different types. The multi-node parallelization is implemented using the `MPI` library, and the data output is done via the [`ADIOS2`](https://github.com/ornladios/ADIOS2) library which supports multiple output formats, including `HDF5` and `BP5`.
`Entity` is part of the `Entity toolkit` framework, which also includes a Python library for fast and efficient data analysis and visualization of the simulation data: [`nt2py`](https://pypi.org/project/nt2py/).
Our [detailed documentation](https://entity-toolkit.github.io/) includes everything you need to know to get started with using and/or contributing to the `Entity toolkit`. If you find bugs or issues, please feel free to add a GitHub issue or submit a pull request. Users with significant contributions to the code will be added to the list of developers, and assigned an emoji of their choice (important).
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
## Core developers (alphabetical)
👀 __Yangyang Cai__ {[@StaticObserver](https://github.com/StaticObserver): GRPIC}
💁♂️ __Alexander Chernoglazov__ {[@SChernoglazov](https://github.com/SChernoglazov): PIC}
🍵 __Benjamin Crinquand__ {[@bcrinquand](https://github.com/bcrinquand): GRPIC, cubed-sphere}
🧋 __Alisa Galishnikova__ {[@alisagk](https://github.com/alisagk): GRPIC}
☕ __Hayk Hakobyan__ {[@haykh](https://github.com/haykh): framework, PIC, GRPIC, cubed-sphere}
🥔 __Jens Mahlmann__ {[@jmahlmann](https://github.com/jmahlmann): framework, MPI, cubed-sphere}
🐬 __Sasha Philippov__ {[@sashaph](https://github.com/sashaph): all-around}
🤷 __Arno Vanthieghem__ {[@vanthieg](https://github.com/vanthieg): framework, PIC}
😺 __Muni Zhou__ {[@munizhou](https://github.com/munizhou): PIC}
## Branch policy
Master branch contains the latest stable version of the code which has already been released. Development on the core is done on branches starting with `dev/`, while fixing bugs is done in branches that start with `bug/`. User-specific modifications (i.e., new problem generators plus perhaps minor corrections in the core) are done on branches starting with `pgen/`. Before merging to the master branch, all the branches must first be merged to the latest release-candidate branch, which ends with `rc`, via a pull request. After which, when all the release goals are met, the `rc` branch is merged to the master and released as a new stable version. Stale branches will be archived with a tag starting with `archive/` (can still be accessed via the "Tags" tab) and removed.