Particle method

From HandWiki
Short description: Class of numerical methods in scientific computing

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.

History

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.

List of methods and acronyms

The following numerical methods are generally considered to fall within the general class of "particle" methods. Acronyms are provided in parentheses.

Definition

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.[6]

A particle method algorithm is a 7-tuple [math]\displaystyle{ (P, G, u, f, i, e, \overset{\circ}{e}) }[/math], consisting of the two data structures [math]\displaystyle{ \begin{align} &P  := A_1 \times A_2 \times ... \times A_n &&\text{the particle space,}\\ &G := B_1 \times B_2 \times ... \times B_m &&\text{the global variable space,} \end{align} }[/math]

such that [math]\displaystyle{ [G\times P^*] }[/math] is the state space of the particle method, and five functions: [math]\displaystyle{ \begin{align} &u: [G \times P^*] \times \mathbb N \rightarrow \mathbb N^* &&\text{the neighborhood function,}\\ &f: G \rightarrow \{ \top,\bot \} &&\text{the stopping condition,}\\ &i: G \times P \times P \rightarrow P\times P &&\text{the interact function,}\\ &e: G \times P\rightarrow G \times P^* \ &&\text{the evolve function,} \\ &\overset{\circ}{e} : G \rightarrow G &&\text{the evolve function of the global variable.} \end{align} }[/math]

An initial state defines a particle method instance for a given particle method algorithm [math]\displaystyle{ (P, G, u, f, i, e, \overset{\circ}{e}) }[/math]:

[math]\displaystyle{ [g^1,\mathbf{p}^1] \in [G\times P^*]. }[/math]

The instance consists of an initial value for the global variable [math]\displaystyle{ g^1 \in G }[/math] and an initial tuple of particles [math]\displaystyle{ \mathbf p^1 \in P^* }[/math].

In a specific particle method, the elements of the tuple [math]\displaystyle{ (P, G, u, f, i, e, \overset{\circ}{e}) }[/math] need to be specified. Given a specific starting point defined by an instance [math]\displaystyle{ [g^{1},\mathbf{p}^{1}] }[/math], the algorithm proceeds in iterations. Each iteration corresponds to one state transition step [math]\displaystyle{ s }[/math] that advances the current state of the particle method [math]\displaystyle{ [g^{t},\mathbf{p}^{t}] }[/math] to the next state [math]\displaystyle{ [g^{t+1},\mathbf{p}^{t+1}] }[/math]. The state transition uses the functions [math]\displaystyle{ u, i, e, \overset{\circ}{e} }[/math] to determine the next state. The state transition function [math]\displaystyle{ S }[/math] generates a series of state transition steps until the stopping function [math]\displaystyle{ f }[/math] is [math]\displaystyle{ true }[/math]. The so-calculated final state is the result of the state transition function. The state transition function is identical for every particle method.

The state transition function is defined as

[math]\displaystyle{ S : [G\times P^*] \rightarrow [G\times P^*] }[/math]

with

[math]\displaystyle{ [g^T, \mathbf p^T]:=S([g^1, \mathbf p^1]) }[/math].

The pseudo-code illustrates the particle method state transition function:

 1 [math]\displaystyle{ [g, \mathbf p] = [g^1, \mathbf p^1] }[/math]
 2 while [math]\displaystyle{ f(g)=false }[/math]
 3   for [math]\displaystyle{ j = 1 }[/math] to [math]\displaystyle{ |\mathbf p| }[/math]
 4     [math]\displaystyle{ \mathbf k=u([g,\mathbf p],j) }[/math]
 5     for [math]\displaystyle{ l = 1 }[/math] to [math]\displaystyle{ |\mathbf k| }[/math]
 6       [math]\displaystyle{ (p_j,p_{k_j})=i(g,p_j,p_{k_j}) }[/math]
 7   [math]\displaystyle{ \mathbf q = () }[/math]
 8   for [math]\displaystyle{ j = 1 }[/math] to [math]\displaystyle{ |\mathbf p| }[/math]
 9     [math]\displaystyle{ (g,\overline{\mathbf q})=e(g,p_j) }[/math]
10     [math]\displaystyle{ \mathbf q=\mathbf q\circ\overline{\mathbf q} }[/math]
11   [math]\displaystyle{ \mathbf p=\mathbf q }[/math]
12   [math]\displaystyle{ g=\overset{\circ}{e}(g) }[/math]
13 [math]\displaystyle{ [g^T, \mathbf p^T] = [g, \mathbf p] }[/math]

The fat symbols are tuples, [math]\displaystyle{ \mathbf p, \mathbf q }[/math] are particle tuples and [math]\displaystyle{ \mathbf k }[/math] is an index tuple. [math]\displaystyle{ () }[/math] is the empty tuple. The operator [math]\displaystyle{ \circ }[/math] is the concatenation of the particle tuples, e.g. [math]\displaystyle{ (p_1,p_2)\circ(p_3,p_4,p_5)=(p_1,p_2,p_3,p_4,p_5) }[/math]. And [math]\displaystyle{ |\mathbf p| }[/math] is the number of elements in the tuple [math]\displaystyle{ \mathbf p }[/math], e.g. [math]\displaystyle{ |(p_1,p_2)|=2 }[/math].

See also

References

  1. Gingold RA, Monaghan JJ (1977). Smoothed particle hydrodynamics – theory and application to non-spherical stars. Mon Not R Astron Soc 181:375–389
  2. Libersky, L.D., Petscheck, A.G., Carney, T.C., Hipp, J.R., Allahdadi, F.A. (1993). High Strain Lagrangian Hydrodynamics. Journal of Computational Physics.
  3. Swegle, J.W., Hicks, D.L., Attaway, S.W. (1995). Smoothed Particle Hydrodynamics Stability Analysis. Journal of Computational Physics. 116(1), 123-134
  4. Liu, W.K., Jun, S., Zhang, Y.F. (1995), Reproducing kernel particle methods, International Journal of Numerical Methods in Fluids. 20, 1081-1106.
  5. D. Sulsky, Z., Chen, H. Schreyer (1994). a Particle Method for History-Dependent Materials. Computer Methods in Applied Mechanics and Engineering (118) 1, 179-196.
  6. 6.0 6.1 Pahlke, Johannes; Sbalzarini, Ivo F. (March 2023). "A Unifying Mathematical Definition of Particle Methods". IEEE Open Journal of the Computer Society 4: 97–108. doi:10.1109/OJCS.2023.3254466.   This article incorporates text available under the CC BY 4.0 license.

Further reading

  • Liu MB, Liu GR, Zong Z, AN OVERVIEW ON SMOOTHED PARTICLE HYDRODYNAMICS, INTERNATIONAL JOURNAL OF COMPUTATIONAL METHODS Vol. 5 Issue: 1, 135–188, 2008.
  • Liu, G.R., Liu, M.B. (2003). Smoothed Particle Hydrodynamics, a meshfree and Particle Method, World Scientific, ISBN:981-238-456-1.

External links