7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Euler-Lagrange 方程式からSPH法の運動方程式を求める

Posted at

SPH法の理論と実装 ~理論編1~ - Qiita ですっ飛ばしたところを少し詳しく書きます。自分用のメモも兼ねて。
より正確に知りたい人は、Rosswog (2009) や Springel (2010) を眺めたほうがいいです。

記号

記号 説明
$\boldsymbol{r}$ 位置
$\boldsymbol{v}$ 速度
$m$ 質量
$p$ 圧力
$\rho$ 密度
$u$ 単位質量当たり内部エネルギー
$L$ ラグランジアン
$W(r,h)$ カーネル関数
$h$ smoothing length
$d$ 次元

導出

ラグランジアン
$$
L = \sum_j \left( m_j \frac{\boldsymbol{v}^2_j}{2} - m_j u_j \right)
$$
に対して、Euler-Lagrange 方程式

\frac{d}{dt} \left( \frac{\partial L}{\partial \dot{\boldsymbol{r}}_i} \right) - \frac{\partial L}{\partial \boldsymbol{r}_i} = 0

を考えます。第1項は簡単で、

\frac{d}{dt} \left( \frac{\partial L}{\partial \dot{\boldsymbol{r}}_i} \right) = m_i \frac{d \boldsymbol{v}_i}{dt}

です。
第2項は

\frac{\partial L}{\partial \boldsymbol{r}_i} = - \sum_j m_j \frac{\partial u_j}{\partial \boldsymbol{r}_i} = - \sum_j m_j \frac{p_j}{\rho_j^2} \frac{\partial \rho_j}{\partial \boldsymbol{r}_i}

となります。等エントロピーを仮定し、
$$
du = -p dV = -p d\left( \frac{1}{\rho} \right) = \frac{p}{\rho^2} d\rho
$$
の関係式 (熱力学第一法則)を使用しています。SPH法の密度の計算式

\rho_j = \sum_k m_k W_{jk}\\
W_{jk} \equiv W(|\boldsymbol{r}_j - \boldsymbol{r}_k|, h)

から

\frac{\partial \rho_j}{\partial \boldsymbol{r}_i} =
\begin{cases}
\sum_k m_k \nabla_i W_{ik} & (i = j)\\
m_i \nabla_i W_{ij} & (i \neq j)
\end{cases}

となり、

\frac{\partial L}{\partial \boldsymbol{r}_i} = - m_i \frac{p_i}{\rho_i^2} \sum_k m_k \nabla_i W_{ik} - \sum_{j \neq i} m_j \frac{p_j}{\rho_j^2} m_i \nabla_i W_{ij}

と変形できます。添字を付け替えると

\frac{\partial L}{\partial \boldsymbol{r}_i} = - m_i \sum_j m_j \left( \frac{p_i}{\rho_i^2} + \frac{p_j}{\rho_j^2} \right) \nabla_i W_{ij}

のように整理できます。ここで、 $ \nabla_i W_{ii} = 0 $であることを使っています。
第1項と第2項を合わせて、運動方程式

m_i \frac{d \boldsymbol{v}_i}{dt} = - m_i \sum_j m_j \left( \frac{p_i}{\rho_i^2} + \frac{p_j}{\rho_j^2} \right) \nabla_i W_{ij}

が導出できます。

可変smoothing lengthの場合の導出

smoothing length が粒子ごとに与えられる場合を考えます。密度の計算式は

\rho_j = \sum_k m_k W_{jk}(h_j)\\
W_{jk}(h_j) \equiv W(|\boldsymbol{r}_j - \boldsymbol{r}_k|, h_j)

を使います。このとき、密度の空間微分は、smoothing lengthが変数であることを考慮して

\frac{\partial \rho_j}{\partial \boldsymbol{r}_i} = \sum_k m_k \left[ \nabla_i W_{jk}(h_j) + \frac{\partial W_{jk}(h_j)}{\partial h_j} \frac{\partial h_j}{\partial \rho_j} \frac{\partial \rho_j}{\partial \boldsymbol{r}_i} \right]

となります。smoothing length の条件として

$$
\rho_j h_j^d = {\rm const.}
$$
を与えると、以下のように整理できます。

\frac{\partial \rho_j}{\partial \boldsymbol{r}_i} = f_j \times
\begin{cases}
\sum_k m_k \nabla_i W_{ik}(h_i) & (i = j)\\
m_i \nabla_i W_{ij}(h_j) & (i \neq j)
\end{cases}\\

f_j = \left(1 + \frac{h_j}{\rho_j d} \sum_k m_k \frac{\partial W_{jk}(h_j)}{\partial h_j} \right)^{-1}

これを使うと、Euler-Lagrange方程式の第2項は

\frac{\partial L}{\partial \boldsymbol{r}_i} = - m_i \sum_j m_j \left( f_i \frac{p_i}{\rho_i^2} \nabla_i W_{ij}(h_i) + f_j \frac{p_j}{\rho_j^2} \nabla_i W_{ij}(h_j) \right)

となるので、運動方程式が

m_i \frac{d \boldsymbol{v}_i}{dt} = - m_i \sum_j m_j \left( f_i \frac{p_i}{\rho_i^2} \nabla_i W_{ij}(h_i) + f_j \frac{p_j}{\rho_j^2} \nabla_i W_{ij}(h_j) \right)

に変わります。

参考文献

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?