Particle methods is a widely used class of numerical algorithms in scientific computing. Its application ranges from computational fluid dynamics (CFD) over molecular dynamics (MD) to discrete element methods.
One of the earliest particle methods is smoothed particle hydrodynamics, presented in 1977.[1] Libersky et al.[2] were the first to apply SPH in solid mechanics. The main drawbacks of SPH are inaccurate results near boundaries and tension instability that was first investigated by Swegle.[3]
In the 1990s a new class of particle methods emerged. The reproducing kernel particle method[4] (RKPM) emerged, the approximation motivated in part to correct the kernel estimate in SPH: to give accuracy near boundaries, in non-uniform discretizations, and higher-order accuracy in general. Notably, in a parallel development, the Material point methods were developed around the same time[5] which offer similar capabilities. During the 1990s and thereafter several other varieties were developed including those listed below.
The following numerical methods are generally considered to fall within the general class of "particle" methods. Acronyms are provided in parentheses.
The mathematical definition of particle methods captures the structural commonalities of all particle methods.[6] It, therefore, allows for formal reasoning across application domains. The definition is structured into three parts:First, the particle method algorithm structure, including structural components, namely data structures, and functions.Second, the definition of a particle method instance. A particle method instance describes a specific problem or setting, which can be solved or simulated using the particle method algorithm. Third, the definition of the particle state transition function. The state transition function describes how a particle method proceeds from the instance to the final state using the data structures and functions from the particle method algorithm.
A particle method algorithm is a 7-tuple
(P,G,u,f,i,e,\overset{\circ}{e})
\begin{align} &P:=A1 x A2 x ... x An&&theparticlespace,\\ &G:=B1 x B2 x ... x Bm&&theglobalvariablespace, \end{align}
such that
[G x P*]
\begin{align} &u:[G x P*] x N → N* &&theneighborhoodfunction,\\ &f:G → \{\top,\bot\}&&thestoppingcondition,\\ &i:G x P x P → P x P&&theinteractfunction,\\ &e:G x P → G x P* &&theevolvefunction,\\ &\overset{\circ}{e}:G → G&&theevolvefunctionoftheglobalvariable. \end{align}
An initial state defines a particle method instance for a given particle method algorithm
(P,G,u,f,i,e,\overset{\circ}{e})
[g1,p1]\in[G x P*].
The instance consists of an initial value for the global variable
g1\inG
p1\inP*
In a specific particle method, the elements of the tuple
(P,G,u,f,i,e,\overset{\circ}{e})
[g1,p1]
s
[gt,pt]
[gt+1,pt+1]
u,i,e,\overset{\circ}{e}
S
f
true
The state transition function is defined as
S:[G x P*] → [G x P*]
with
[gT,pT]:=S([g1,p1])
The pseudo-code illustrates the particle method state transition function:
1
[g,p]=[g1,p1]
f(g)=false
j=1
|p|
k=u([g,p],j)
l=1
|k|
(pj,p
kj |
)=i(g,pj,p
kj |
)
q=
j=1
|p|
(g,\overline{q})=e(g,pj)
q=q\circ\overline{q}
p=q
g=\overset{\circ}{e}(g)
[gT,pT]=[g,p]
The fat symbols are tuples,
p,q
k
\circ
(p1,p2)\circ(p3,p4,p5)=(p1,p2,p3,p4,p5)
|p|
p
|(p1,p2)|=2