Class of numerical methods in scientific computing
粒子法は 、科学計算において広く用いられている数値アルゴリズムの一種です。その応用範囲は、 数値流体力学 (CFD)から 分子動力学 (MD)、 離散要素法 まで多岐にわたります。
歴史 最も初期の粒子法の一つは、 1977年に発表された 平滑化粒子流体力学(SPH)である [1] 。Liberskyら [ 2] は、固体力学にSPHを初めて適用した。SPHの主な欠点は、境界近傍における結果の不正確さと、Swegleによって初めて研究された張力不安定性である [3] 。
1990年代には、新しい粒子法が登場しました。 再生核粒子法 [4] (RKPM)と呼ばれる近似法が登場しました。この近似法は、SPHにおける核推定値の補正を目的としており、境界近傍、非一様離散化、そして一般的に高次精度を実現することを目的としています。特筆すべきは、ほぼ同時期に、同様の機能を持つ 質点法 [5] が並行して開発されたことです 。1990年代以降、以下に挙げるものを含め、他にも様々な手法が開発されました。
方法と頭字語の一覧 以下の数値解析法は、一般的に「粒子法」の一般的なクラスに属すると考えられています。略語は括弧内に示されています。
意味 粒子法の数学的定義は、すべての粒子法に共通する構造的共通性を捉えている。 [6] そのため、応用分野を横断した形式的推論が可能となる。定義は3つの部分から構成される。第一に、粒子法アルゴリズム構造であり、これには構造要素、すなわちデータ構造と関数が含まれる。第二に、粒子法インスタンスの定義である。粒子法インスタンスは、粒子法アルゴリズムを用いて解決またはシミュレートできる特定の問題または設定を記述する。第三に、粒子状態遷移関数の定義である。状態遷移関数は、粒子法アルゴリズムのデータ構造と関数を用いて、粒子法がインスタンスから最終状態にどのように遷移するかを記述する。 [6]
粒子 法アルゴリズム は、2つのデータ構造からなる 7組の要素から構成されます。 ( P , G , u , f , i , e , e ∘ ) {\displaystyle (P,G,u,f,i,e,{\overset {\circ }{e}})} 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}}}
は 粒子法の状態空間であり、次の5つの関数があります。 [ G × P ∗ ] {\displaystyle [G\times P^{*}]} 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}}}
初期状態は、 与えられた粒子法アルゴリズムの 粒子法インスタンス を定義します。 ( 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^{*}].}
インスタンスは、グローバル変数の初期値 と粒子の初期タプルで構成されます 。 g 1 ∈ G {\displaystyle g^{1}\in G} p 1 ∈ P ∗ {\displaystyle \mathbf {p} ^{1}\in P^{*}}
特定の粒子法では、タプルの要素を 指定する必要があります。インスタンス によって定義された特定の開始点が与えられると 、アルゴリズムは反復処理を実行します。各反復は、 粒子法の現在の状態を 次の状態 に進める1つの状態遷移ステップに対応します 。状態遷移は、関数 を使用して 次の状態を決定します。 状態遷移関数は、 停止関数が になる まで、一連の状態遷移ステップを生成します 。このように計算された最終状態が、状態遷移関数の結果です。状態遷移関数は、すべての粒子法で同一です。 ( P , G , u , f , i , e , e ∘ ) {\displaystyle (P,G,u,f,i,e,{\overset {\circ }{e}})} [ g 1 , p 1 ] {\displaystyle [g^{1},\mathbf {p} ^{1}]} s {\displaystyle s} [ g t , p t ] {\displaystyle [g^{t},\mathbf {p} ^{t}]} [ g t + 1 , p t + 1 ] {\displaystyle [g^{t+1},\mathbf {p} ^{t+1}]} u , i , e , e ∘ {\displaystyle u,i,e,{\overset {\circ }{e}}} S {\displaystyle S} f {\displaystyle f} t r u e {\displaystyle true}
状態 遷移関数 は次のように定義される。
S : [ G × P ∗ ] → [ G × P ∗ ] {\displaystyle S:[G\times P^{*}]\rightarrow [G\times P^{*}]}
と
[ g T , p T ] := S ( [ g 1 , p 1 ] ) {\displaystyle [g^{T},\mathbf {p} ^{T}]:=S([g^{1},\mathbf {p} ^{1}])} 。
疑似コードは粒子法の状態遷移関数を示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 の 間 [ g , p ] = [ g 1 , p 1 ] {\displaystyle [g,\mathbf {p} ]=[g^{1},\mathbf {p} ^{1}]} f ( g ) = f a l s e {\displaystyle f(g)=false} j = 1 {\displaystyle j=1} | p | {\displaystyle |\mathbf {p} |} k = u ( [ g , p ] , j ) {\displaystyle \mathbf {k} =u([g,\mathbf {p} ],j)} l = 1 {\displaystyle l=1} | k | {\displaystyle |\mathbf {k} |} ( 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}})} q = ( ) {\displaystyle \mathbf {q} =()} j = 1 {\displaystyle j=1} | p | {\displaystyle |\mathbf {p} |} ( g , q ¯ ) = e ( g , p j ) {\displaystyle (g,{\overline {\mathbf {q} }})=e(g,p_{j})} q = q ∘ q ¯ {\displaystyle \mathbf {q} =\mathbf {q} \circ {\overline {\mathbf {q} }}} p = q {\displaystyle \mathbf {p} =\mathbf {q} } g = e ∘ ( g ) {\displaystyle g={\overset {\circ }{e}}(g)} [ g T , p T ] = [ g , p ] {\displaystyle [g^{T},\mathbf {p} ^{T}]=[g,\mathbf {p} ]} ファットシンボルはタプル、 はパーティクルタプル、は インデックスタプルです。 は空のタプルです。演算子は パーティクルタプルの 連結 です(例: )。また、 はタプル内の要素数です (例: ) 。 p , q {\displaystyle \mathbf {p} ,\mathbf {q} } k {\displaystyle \mathbf {k} } ( ) {\displaystyle ()} ∘ {\displaystyle \circ } ( 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})} | p | {\displaystyle |\mathbf {p} |} p {\displaystyle \mathbf {p} } | ( p 1 , p 2 ) | = 2 {\displaystyle |(p_{1},p_{2})|=2}
参照
参考文献 ^ Gingold RA, Monaghan JJ (1977). 平滑化粒子流体力学 ― 理論と非球面星への応用. Mon Not R Astron Soc 181:375–389 ^ Libersky, LD, Petscheck, AG, Carney, TC, Hipp, JR, Allahdadi, FA (1993). 高ひずみラグランジュ流体力学. 計算物理学ジャーナル . ^ Swegle, JW, Hicks, DL, Attaway, SW (1995). 平滑化粒子流体力学による安定性解析. 計算物理学ジャーナル . 116(1), 123-134 ^ Liu, WK, Jun, S., Zhang, YF (1995)「カーネル粒子法の再現」、 International Journal of Numerical Methods in Fluids . 20, 1081-1106。 ^ D. Sulsky, Z., Chen, H. Schreyer (1994). 履歴依存材料のための粒子法. 応用力学と工学におけるコンピュータ手法 (118) 1, 179-196. ^ ab Pahlke, Johannes; Sbalzarini, Ivo F. (2023年3月). 「粒子法の統一的な数学的定義」. IEEE Open Journal of the Computer Society . 4 : 97–108 . doi : 10.1109/OJCS.2023.3254466 . S2CID 257480034. この記事には、CC BY 4.0 ライセンスに基づいて利用可能なテキストが組み込まれています。
さらに読む Liu MB、Liu GR、Zong Z、「平滑化粒子流体力学の概要」、INTERNATIONAL JOURNAL OF COMPUTATIONAL METHODS Vol.5号:1、135–188、2008年。 Liu, GR, Liu, MB (2003). スムージング粒子流体力学、メッシュフリー粒子法 、World Scientific, ISBN 981-238-456-1 。
外部リンク