Particles
This MR implements unresolved particles via the MESA-PD particle code generation framework.
The objective is the implementation of fluid (<)-> particle and later particle <-> particle interactions. Since the particles are assumed to be smaller than the elements, the module is referred to as unresolved particles. Thus fluid-particle interactions are not meant to be fully resolved but are modeled instead. At this point, only the one-way coupling (fluid acts on particles, not vice versa) is considered. This is sufficient to, e.g., implement tracer particles.
Some notes:
- The implementation is already fully parallelized.
- There is a new tutorial (no. 12) including some images.
- The particle properties are subject to change and probably need to be discussed in the future. As of now, it is possible to flexibly add custom real and integer scalars to particles if needed.
- Direct application of velocity and force fields is possible. For tracer particles, the former is sufficient and can be interpreted as a extremely simplified form of Faxén's law (https://en.wikipedia.org/wiki/Fax%C3%A9n%27s_law). Force fields are also already supported, and naturally involve the particle mass for the computation of the resulting translational velocity.
- Theoretically, all features that are available in MESA-PD can be used. This includes, for instance, other integrators. However, using them involves generating the corresponding C++ code via MESA-PD through the python script in the
data/codegen/unresolved_particles/
directory. - I had in mind that there has been a temporary(?) tracer particle implementation in the TerraNeo module. I cannot find it right now (could be on a branch) - and I might be wrong. If there is one, we should consider replacing it (and add required features to this new version - if possible).
- Blended domains are not yet supported.
Edited by Nils Kohl