SPH
|
Checks for particle pairs, indicating a pairing instability. More...
#include <Diagnostics.h>
Classes | |
struct | Pair |
Public Member Functions | |
ParticlePairingDiagnostic (const Float radius=2._f, const Float limit=1.e-2_f) | |
Array< Pair > | getPairs (const Storage &storage) const |
Returns the list of particles forming pairs, i.e. particles on top of each other or very close. More... | |
virtual DiagnosticsReport | check (const Storage &storage, const Statistics &stats) const override |
Checks for particle pairs, returns SUCCESS if no pair is found. More... | |
![]() | |
virtual | ~Polymorphic () |
Checks for particle pairs, indicating a pairing instability.
Definition at line 37 of file Diagnostics.h.
|
inlineexplicit |
radius | Search radius for pairs in units of smoothing length. This should correspond to radius of selected smoothing kernel. |
limit | Maximal distance of two particles forming a pair in units of smoothing length. |
Definition at line 50 of file Diagnostics.h.
|
overridevirtual |
Checks for particle pairs, returns SUCCESS if no pair is found.
Implements IDiagnostic.
Definition at line 31 of file Diagnostics.cpp.
NAMESPACE_SPH_BEGIN Array< ParticlePairingDiagnostic::Pair > ParticlePairingDiagnostic::getPairs | ( | const Storage & | storage | ) | const |
Returns the list of particles forming pairs, i.e. particles on top of each other or very close.
If the array is not empty, this is a sign of pairing instability or multi-valued velocity field, both unwanted artefacts in SPH simulations. This might occur because of numerical instability, possibly due to time step being too high, or due to division by very small number in evolution equations. If the pairing instability occurs regardless, try choosing different parameter SPH_KERNEL_ETA (should be aroung 1.5), or by choosing different SPH kernel.
Definition at line 10 of file Diagnostics.cpp.