科学計算における数値手法のクラス
粒子法は 、科学計算において広く使用されている数値アルゴリズムの一種です。その応用範囲は、 数値流体力学 (CFD) から 分子動力学 (MD)、 離散要素法 まで多岐にわたります。
歴史
最も初期の粒子法の1つは 、1977年に発表された 平滑化粒子流体力学です。 [1] Libersky ら [2] は、固体力学にSPHを初めて適用しました。SPHの主な欠点は、境界付近の結果が不正確であることと、Swegleによって最初に調査された張力不安定性です。 [3]
1990 年代に新しい種類の粒子法が登場しました。 再生カーネル粒子法 [4] (RKPM) が登場しました。この近似法は、SPH のカーネル推定を修正する動機の一部となり、境界付近の精度、非一様離散化、および一般に高次の精度を実現しました。注目すべきことに、並行して 開発された 質点法 [5] は、同様の機能を備えています。1990 年代以降、以下に挙げるものを含め、いくつかの他の変種が開発されました。
方法と頭字語の一覧
以下の数値法は、一般的に「粒子」法の一般的なクラスに属すると考えられています。頭字語は括弧内に示されています。
意味
粒子法の数学的定義は、すべての粒子法の構造的共通性を捉えています。 [6] そのため、アプリケーションドメイン間での形式的推論が可能になります。定義は3つの部分に分かれています。第1に、粒子法アルゴリズム構造で、構造コンポーネント、つまりデータ構造と関数が含まれます。第2に、粒子法インスタンスの定義です。粒子法インスタンスは、粒子法アルゴリズムを使用して解決またはシミュレートできる特定の問題または設定を記述します。第3に、粒子状態遷移関数の定義です。状態遷移関数は、粒子法アルゴリズムのデータ構造と関数を使用して、粒子法がインスタンスから最終状態に進む方法を記述します。 [6]
粒子 法アルゴリズム は、2つのデータ構造からなる
7組の組である。
(
ポ
、
グ
、
あなた
、
ふ
、
私
、
e
、
e
∘
)
{\displaystyle (P,G,u,f,i,e,{\overset {\circ }{e}})}
ポ
:=
あ
1
×
あ
2
×
。
。
。
×
あ
ん
粒子空間、
グ
:=
B
1
×
B
2
×
。
。
。
×
B
メートル
グローバル変数空間、
{\displaystyle {\begin{aligned}&P:=A_{1}\times A_{2}\times ...\times A_{n}&&{\text{粒子空間、}}\\&G:=B_{1}\times B_{2}\times ...\times B_{m}&&{\text{グローバル変数空間、}}\end{aligned}}}
は
粒子法の状態空間であり、次の 5 つの関数があります。
[
グ
×
ポ
∗
]
{\displaystyle [G\times P^{*}]}
あなた
:
[
グ
×
ポ
∗
]
×
いいえ
→
いいえ
∗
近傍関数、
ふ
:
グ
→
{
⊤
、
⊥
}
停止条件、
私
:
グ
×
ポ
×
ポ
→
ポ
×
ポ
対話機能、
e
:
グ
×
ポ
→
グ
×
ポ
∗
進化機能、
e
∘
:
グ
→
グ
グローバル変数の進化関数。
{\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}
参照
参考文献
^ ギンゴールド RA、モナハン 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 。
外部リンク