SPH
Classes | Public Member Functions | List of all members
ParticlePairingDiagnostic Class Reference

Checks for particle pairs, indicating a pairing instability. More...

#include <Diagnostics.h>

Inheritance diagram for ParticlePairingDiagnostic:
IDiagnostic Polymorphic

Classes

struct  Pair
 

Public Member Functions

 ParticlePairingDiagnostic (const Float radius=2._f, const Float limit=1.e-2_f)
 
Array< PairgetPairs (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...
 
- Public Member Functions inherited from Polymorphic
virtual ~Polymorphic ()
 

Detailed Description

Checks for particle pairs, indicating a pairing instability.

Definition at line 37 of file Diagnostics.h.

Constructor & Destructor Documentation

◆ ParticlePairingDiagnostic()

ParticlePairingDiagnostic::ParticlePairingDiagnostic ( const Float  radius = 2._f,
const Float  limit = 1.e-2_f 
)
inlineexplicit
Parameters
radiusSearch radius for pairs in units of smoothing length. This should correspond to radius of selected smoothing kernel.
limitMaximal distance of two particles forming a pair in units of smoothing length.

Definition at line 50 of file Diagnostics.h.

Member Function Documentation

◆ check()

DiagnosticsReport ParticlePairingDiagnostic::check ( const Storage storage,
const Statistics stats 
) const
overridevirtual

Checks for particle pairs, returns SUCCESS if no pair is found.

Todo:
some message? compare it to the limit?

Implements IDiagnostic.

Definition at line 31 of file Diagnostics.cpp.

◆ getPairs()

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.

Returns
Detected pairs of particles given by their indices in the array, in no particular order.
Todo:
symmetrized h

Definition at line 10 of file Diagnostics.cpp.


The documentation for this class was generated from the following files: