テスラノートテスラノート物理シミュレーションとAIとその応用。方程式はテンソル表記で下のように表せます。\label{eq:scale-factor-2}\end{align}$$ベクトル表記だとこうでした。\\\\\end{align}$$だいぶ話が戻りましたね。それでは実際に解法へ移っていきます。僕らは前回までで微分方程式を離散化するという方法を学習してきました。複雑なNavier-Stocks方程式も恐るるに足りません。各項を離散化してやればいいだけです。よし、解ける、、、となったところで一つ壁に当たります。圧力項どうしよう、、、。これらは4方程式で速度3つ、圧力1つの4つの未知数なので解けるはずなのですが、質量保存則をうまく使って圧力を処理しなければなりません。そこで計算アルゴリズムを考えていきます。圧力だけに注目して、それ以外をFとして書いて1次Adoms-Bashforth法で離散化してみます。\label{eq:scale-factor-3}\end{align}$$ここでの添字のiは、空間の離散化した添字ではなく、テンソルのiなことに注意してください。問題になりませんが、この意味でベクトルを使った方がいい時もあります。ここで悩むのはまず、離散化したのはいいものの、\(P^{n+1}\)とすればいいのか、\(P^n\)とすればいいのか、また\(u\)の方程式の中で\(P\)をどのように扱ったらいいのかというところでしょう。\(P^n\)だったらどうなるか考えます。方程式がどうなるか書いてみます。\label{eq:scale-factor-4}\end{align}$$\(P^{n+1}\)が一生求まる気がしません。\(P^{n+1}\)がどこにも存在せず、一生次のステップを求められないまま終わります。よって、\(P^{n+1}\)にするしかありません。この意味で、圧力項はどの解法でも陰解法になります。項に対して陽解法とか陰解法とか変えていいの?って思うかもしれませんが、普通に大丈夫です。陽解法の方を先に解いてあげて、陰解法の項だけでそれ使って後から解いたりなど色々その辺は柔軟にできます。項同士は線形ですから。\(P^{n+1}\)を採用します。\label{eq:scale-factor-5}\end{align}$$そして、2段分離をします。\label{eq:scale-factor-7}\end{align}$$こんなことしていいのか、、、と思うかもしれませんが、足して見ると元の式に一致すると思います。ここで、下の式ならば\(\tilde{u_i}\)は算出できます。\tilde{u_i}\)を中間速度と呼んだりします。1個目の圧力項の式を\(x_i\)で微分します。\label{eq:scale-factor-8}\end{align}$$ここですごいことに気づきます。0\end{align}$$これはn+1時点での連続条件のはずです。\)が求まることになります。\label{eq:scale-factor-9}\end{align}$$こうなります!!これで、Pを\(\tilde{u_i}\)から求めることができるような式ができました。これはよく見るとPoisson方程式になってます。電磁気でよく見るあれですね。圧力はPoisson方程式を解いて求めます。ここでは、時間ステップの逆行列ではなくて、単純な逆行列(連立方程式)を解くことになります。これで求まりそうなアルゴリズムを一つ構築できました。このような方法をフラクショナルステップ法と言います。優れたアルゴリズムなのですが、このような分離の際には分離誤差が生じてしまったり、上記のように空間的に離散化されていない方程式を基にフラクショナル・ステップ法を構成すると中間速度\(\tilde{u_i}\)の境界条件の設定が曖昧となってしまう、といった問題が生じたりします。今はこの問題には深入りしません。本来の形とは若干違うことや一般にフラクショナルステップ法というと、そのまま\(F^n\)にするのではなく、移流項を陽解法、粘性項を陰解法でとく方法を指すので後々もっと詳しくやっていきます。ここからはいろんな解法をみていきます。差分系の解法を大別すると以下のようになっています。(陰解法)MAC法MAC法は最も知られたアルゴリズムです。やり方もシンプルで分かりやすいです。それでは導出していきます。Navier-Stocks方程式から移流項と粘性項を陽的に時間離散化して、連続式を新たな時刻(\t^{n+1}\)において満足させると、次式になります。\label{eq:scale-factor-11}\end{align}$$やはり、iやjの添字が空間の離散化した添字ではなく、方程式のテンソルの添字なことに注意です。これの\eqref{eq:scale-factor-11}式の両辺の発散をとります。テンソルの発散をとるにはベクトルになっている添字で微分すればいいです。