diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3fc5b857..44168e63a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,7 @@ on: - 'docs/**' workflow_dispatch: + # Cancel redundant CI tests automatically concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/AUTHORS.md b/AUTHORS.md new file mode 100644 index 000000000..073e9317c --- /dev/null +++ b/AUTHORS.md @@ -0,0 +1,25 @@ +# Authors + +TrixiParticles.jl's development is coordinated by a group of *principal developers*, +who are also its main contributors and who can be contacted in case of +questions about TrixiParticles.jl. In addition, there are *contributors* who have +provided substantial additions or modifications. Together, these two groups form +"The TrixiParticles.jl Authors" as mentioned in the [LICENSE.md](LICENSE.md) file. + +## Principal Developers +* [Erik Faulhaber](https://www.mi.uni-koeln.de/NumSim/erik-faulhaber/), + University of Cologne, Germany +* [Niklas Neher](https://www.ihr.uni-stuttgart.de/institut/team/Neher-00004/), + High-Performance Computing Center Stuttgart (HLRS), Germany +* [Sven Berger](https://www.hereon.de/institutes/surface_science/interface_modeling/team/098972/index.php.de), + Helmholtz Center Hereon, Germany + +## Contributors +The following people contributed major additions or modifications to TrixiParticles.jl and +are listed in alphabetical order: +* Sven Berger +* Erik Faulhaber +* Gregor Gassner +* Niklas Neher +* Hendrik Ranocha +* Michael Schlottke-Lakemper diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..5c74bcf79 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,131 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to +[Michael Schlottke-Lakemper](mailto:m.schlottke-lakemper@acom.rwth-aachen.de), +[Sven Berger](mailto:sven.berger@hereon.de), +or any other of the principal developers responsible for enforcement listed in +[AUTHORS.md](AUTHORS.md). +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..a989300b7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,54 @@ +# Contributing + +TrixiParticles.jl is an open-source project and we are very happy to accept contributions +from the community. Please feel free to open issues or submit patches (preferably +as pull requests) any time. For planned larger contributions, it is often +beneficial to get in contact with one of the principal developers first (see +[AUTHORS.md](AUTHORS.md)). + +TrixiParticles.jl and its contributions are licensed under the MIT license (see +[LICENSE.md](LICENSE.md)). As a contributor, you certify that all your +contributions are in conformance with the *Developer Certificate of Origin +(Version 1.1)*, which is reproduced below. + +## Developer Certificate of Origin (Version 1.1) +The following text was taken from +[https://developercertificate.org](https://developercertificate.org): + + Developer Certificate of Origin + Version 1.1 + + Copyright (C) 2004, 2006 The Linux Foundation and its contributors. + 1 Letterman Drive + Suite D4700 + San Francisco, CA, 94129 + + Everyone is permitted to copy and distribute verbatim copies of this + license document, but changing it is not allowed. + + + Developer's Certificate of Origin 1.1 + + By making a contribution to this project, I certify that: + + (a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + + (b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + + (c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + + (d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..74743e018 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023-present The TrixiParticles.jl Authors (see [AUTHORS.md](AUTHORS.md)) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 000000000..e31fdd7c2 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,39 @@ +# Changelog + +TrixiParticles.jl follows the interpretation of [semantic versioning (semver)](https://julialang.github.io/Pkg.jl/dev/compatibility/#Version-specifier-format-1) +used in the Julia ecosystem. Notable changes will be documented in this file for human readability. +We aim at 3 to 4 month between major release versions and about 2 weeks between minor versions. + + +## Version 0.1.x + +### Highlights + +### Added + +### Removed + +### Deprecated + + +## Pre Initial Release (v0.1.0) +This section summarizes the initial features that TrixiParticles.jl was released with. + +### Highlights +#### EDAC +An implementation of EDAC (Entropically Damped Artificial Compressibility) was added, +which allows for more stable simulations compared to basic WCSPH and reduces spurious pressure oscillations. + +#### WCSPH +An implementation of WCSPH (Weakly Compressible Smoothed Particle Hydrodynamics), which is the classical SPH approach. + +Features: +- Correction schemes (Shepard (0. Order) ... MixedKernelGradient (1. Order)) +- Density reinitialization +- Kernel summation and Continuity equation density formulations +- Flexible boundary conditions e.g. dummy particles with Adami pressure extrapolation, pressure zeroing, pressure mirroring... +- Moving boundaries + +#### TLSPH +An implementation of TLSPH (Total Lagrangian Smoothed Particle Hydrodynamics) for solid bodies enabling FSI (Fluid Structure Interactions). + diff --git a/README.md b/README.md index 60a4f7188..97a86a7d2 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,84 @@ [![CI](https://github.com/trixi-framework/TrixiParticles.jl/actions/workflows/ci.yml/badge.svg)](https://github.com/trixi-framework/TrixiParticles.jl/actions/workflows/ci.yml) [![codecov](https://codecov.io/github/trixi-framework/TrixiParticles.jl/branch/main/graph/badge.svg?token=RDZXYbij0b)](https://codecov.io/github/trixi-framework/TrixiParticles.jl) [![SciML Code Style](https://img.shields.io/static/v1?label=code%20style&message=SciML&color=9558b2&labelColor=389826)](https://github.com/SciML/SciMLStyle) +[![License: MIT](https://img.shields.io/badge/License-MIT-success.svg)](https://opensource.org/licenses/MIT) + +[![Youtube](https://img.shields.io/youtube/channel/views/UCpd92vU2HjjTPup-AIN0pkg?style=social)](https://www.youtube.com/@trixi-framework) +[![Slack](https://img.shields.io/badge/chat-slack-e01e5a)](https://join.slack.com/t/trixi-framework/shared_invite/zt-sgkc6ppw-6OXJqZAD5SPjBYqLd8MU~g) + +**TrixiParticles.jl** is a numerical simulation framework designed for particle-based numerical methods, with an emphasis on multiphysics applications, written in [Julia](https://julialang.org). +A primary goal of the framework is to be user-friendly for engineering, science, and educational purposes. In addition to its extensible design and optimized implementation, we prioritize the user experience, including installation, pre- and postprocessing. +It features include: + +## Features +- Incompressible Navier-Stokes + - Methods: Weakly Compressible Smoothed Particle Hydrodynamics (WCSPH), Entropically Damped Artificial Compressibility (EDAC) +- Solid-body mechanics + - Methods: Total Lagrangian SPH (TLSPH) +- Fluid-Structure Interaction +- Output formats: + - VTK + +## Examples + +## Installation +If you have not yet installed Julia, please [follow the instructions for your +operating system](https://julialang.org/downloads/platform/). TrixiParticles.jl works +with Julia v1.9 and newer. We recommend using the latest stable release of Julia. + +### For users + + +### For developers +If you plan on editing TrixiParticles.jl itself, you can download TrixiParticles.jl locally and use the +code from the cloned directory: +```bash +git clone git@github.com:trixi-framework/TrixiParticles.jl.git +cd TrixiParticles.jl +mkdir run +cd run +julia --project=. -e 'using Pkg; Pkg.develop(PackageSpec(path=".."))' # Install locally +julia --project=. -e 'using Pkg; Pkg.add("OrdinaryDiffEq")' # Install additional packages +``` +**Note:** OrdinaryDiffEq is only necessary to run examples. + +If you installed TrixiParticles.jl this way, you always have to start Julia with the `--project` +flag set to your `run` directory, e.g., +```bash +julia --project=. +``` +## Documentation + +## Publications + +## Cite Us + +## Authors +Erik Faulhaber (University of Cologne) and Niklas Neher (HLRS) implemented the foundations for TrixiParticles.jl and are principal developers along with Sven Berger (hereon). The project was started by Michael Schlottke-Lakemper (RWTH Aachen University/HLRS) and Gregor Gassner (University of Cologne), who provide scientific direction and technical advice. +The full list of contributors can be found in [AUTHORS.md](AUTHORS.md). + +## License and contributing +TrixiParticles.jl is licensed under the MIT license (see [LICENSE.md](LICENSE.md)). Since TrixiParticles.jl is +an open-source project, we are very happy to accept contributions from the +community. Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for more details. +Note that we strive to be a friendly, inclusive open-source community and ask all members +of our community to adhere to our [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md). +To get in touch with the developers, +[join us on Slack](https://join.slack.com/t/trixi-framework/shared_invite/zt-sgkc6ppw-6OXJqZAD5SPjBYqLd8MU~g) +or [create an issue](https://github.com/trixi-framework/TrixiParticles.jl/issues/new). + +## Acknowledgments +
+ + +
+ +The project has benefited from funding from [hereon](https://www.hereon.de/) and [HiRSE](https://www.helmholtz-hirse.de/).