◐ Shell
reader mode source ↗
Jump to content
From Wikipedia, the free encyclopedia
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

[edit]

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

[edit]

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

Definition

[edit]

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 ( P , G , u , f , i , e , e ) {\displaystyle (P,G,u,f,i,e,{\overset {\circ }{e}})} , consisting of the two data structures P := A 1 × A 2 × . . . × A n the particle space, G := B 1 × B 2 × . . . × B m the global variable space, {\displaystyle {\begin{aligned}&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{aligned}}}

such that [ G × P ] {\displaystyle [G\times P^{*}]} is the state space of the particle method, and five functions: u : [ G × P ] × N N the neighborhood function, f : G { , } the stopping condition, i : G × P × P P × P the interact function, e : G × P G × P   the evolve function, e : G G the evolve function of the global variable. {\displaystyle {\begin{aligned}&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{aligned}}}

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

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

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

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

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

with

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

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

 1 
  
    
      
        [
        g
        ,
        
          p
        
        ]
        =
        [
        
          g
          
            1
          
        
        ,
        
          
            p
          
          
            1
          
        
        ]
      
    
    {\displaystyle [g,\mathbf {p} ]=[g^{1},\mathbf {p} ^{1}]}
  

 2 while 
  
    
      
        f
        (
        g
        )
        =
        f
        a
        l
        s
        e
      
    
    {\displaystyle f(g)=false}
  

 3   for 
  
    
      
        j
        =
        1
      
    
    {\displaystyle j=1}
  
 to 
  
    
      
        
          |
        
        
          p
        
        
          |
        
      
    
    {\displaystyle |\mathbf {p} |}
  

 4     
  
    
      
        
          k
        
        =
        u
        (
        [
        g
        ,
        
          p
        
        ]
        ,
        j
        )
      
    
    {\displaystyle \mathbf {k} =u([g,\mathbf {p} ],j)}
  

 5     for 
  
    
      
        l
        =
        1
      
    
    {\displaystyle l=1}
  
 to 
  
    
      
        
          |
        
        
          k
        
        
          |
        
      
    
    {\displaystyle |\mathbf {k} |}
  

 6       
  
    
      
        (
        
          p
          
            j
          
        
        ,
        
          p
          
            
              k
              
                j
              
            
          
        
        )
        =
        i
        (
        g
        ,
        
          p
          
            j
          
        
        ,
        
          p
          
            
              k
              
                j
              
            
          
        
        )
      
    
    {\displaystyle (p_{j},p_{k_{j}})=i(g,p_{j},p_{k_{j}})}
  

 7   
  
    
      
        
          q
        
        =
        (
        )
      
    
    {\displaystyle \mathbf {q} =()}
  

 8   for 
  
    
      
        j
        =
        1
      
    
    {\displaystyle j=1}
  
 to 
  
    
      
        
          |
        
        
          p
        
        
          |
        
      
    
    {\displaystyle |\mathbf {p} |}
  

 9     
  
    
      
        (
        g
        ,
        
          
            
              q
            
            ¯
          
        
        )
        =
        e
        (
        g
        ,
        
          p
          
            j
          
        
        )
      
    
    {\displaystyle (g,{\overline {\mathbf {q} }})=e(g,p_{j})}
  

10     
  
    
      
        
          q
        
        =
        
          q
        
        
        
          
            
              q
            
            ¯
          
        
      
    
    {\displaystyle \mathbf {q} =\mathbf {q} \circ {\overline {\mathbf {q} }}}
  

11   
  
    
      
        
          p
        
        =
        
          q
        
      
    
    {\displaystyle \mathbf {p} =\mathbf {q} }
  

12   
  
    
      
        g
        =
        
          
            e
            
          
        
        (
        g
        )
      
    
    {\displaystyle g={\overset {\circ }{e}}(g)}
  

13 
  
    
      
        [
        
          g
          
            T
          
        
        ,
        
          
            p
          
          
            T
          
        
        ]
        =
        [
        g
        ,
        
          p
        
        ]
      
    
    {\displaystyle [g^{T},\mathbf {p} ^{T}]=[g,\mathbf {p} ]}
  

The fat symbols are tuples, p , q {\displaystyle \mathbf {p} ,\mathbf {q} } are particle tuples and k {\displaystyle \mathbf {k} } is an index tuple. ( ) {\displaystyle ()} is the empty tuple. The operator {\displaystyle \circ } is the concatenation of the particle tuples, e.g. ( p 1 , p 2 ) ( p 3 , p 4 , p 5 ) = ( p 1 , p 2 , p 3 , p 4 , p 5 ) {\displaystyle (p_{1},p_{2})\circ (p_{3},p_{4},p_{5})=(p_{1},p_{2},p_{3},p_{4},p_{5})} . And | p | {\displaystyle |\mathbf {p} |} is the number of elements in the tuple p {\displaystyle \mathbf {p} } , e.g. | ( p 1 , p 2 ) | = 2 {\displaystyle |(p_{1},p_{2})|=2} .

See also

[edit]

References

[edit]
  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. ^ a b 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. S2CID 257480034.  This article incorporates text available under the CC BY 4.0 license.
  • 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.
[edit]