💧

C#で流体計算①

2022/10/15に公開約1,300字

こんにちは、もーとこです。
今回は業務チックな話題から離れて、私が大学院で勉強していた内容を使ってシミュレーションをしてみたいと思います。

モデル

一様な遅い流れが円柱をよぎるときの流れをシミュレーションします。
イメージとしては、川の流れが橋脚の周りによけていく感じです。

さらに円柱が等間隔で無数に並べられている状況を想定します。
そのほうが計算が楽なんでね。

計算方程式

下記条件でシミュレーションを行います。

  • 2次元
  • 圧縮なし
  • 滑りなし
  • 密度は1(水を想定)
  • 慣性の影響を無視(レイノルズ数を低めに設定)

以上から計算する方程式は以下のとおりです。

\frac{\partial \bm{v}}{\partial t} = - \nabla p + \frac{1}{Re} \Delta \bm{v} + \bm{f} \\ \nabla \cdot \bm{v} = 0

ただしpは圧力、\bm{x} = (x,y), \bm{v}(\bm{x},t) = (v_x(\bm{x},t), v_y(\bm{x},t))\bm{f} = (f_x(\bm{x},t), f_y(\bm{x},t))です。

Volume Penalization法

流れる流体が物体から受ける力を方程式に反映させる方法はいくつかありますが、今回はVolume Penalization法(VP法)を使います。
参考文献 Volume Penalization 法による翼果まわりの流れの数値解析

数式は一見難しいですが、気持ちとしては

物体内部+物体表面の領域(=物体領域)では流速を物体の移動速度に収束させる
⇒物体から見た流体領域の速度を0にする / 流体から見た物体領域の速度を物体の速度にする

という手法です。

参考文献に基づいて、別記事で詳しく書きます。

スペクトル法

次に方程式の各項を計算する方法ですが、モデルのところで円柱が等間隔で無数に並べられているとしました。
こういった周期的な系を考えるときは境界条件に周期的境界条件を適用します。

このときに有用な計算方法にスペクトル法というものがあり、方程式の解を周期的な関数の重ね合わせで表現しようとするものです。
参考文献 スペクトル法を用いた数値計算– 一次元線形移流方程式の場合 –

計算手法の説明は面倒難しいので割愛します。

次回

いきなり方程式を計算し始めるのは大変なので、まずはスペクトル法の計算につかうフーリエ変換について、お話しようと思います。

Discussion

ログインするとコメントできます