大気シミュレーション

目標

大気の流れを支配する法則の数値シミュレーションをやってみる。基礎となる法則

を離散化した差分方程式を計算機上で解いて、流体の運動を調べる。

以下の課題を一つずつ確認していく。

自前のプログラム

上の熱力学関係式と流体の運動方程式を差分方程式として実装したものを作ってみた。 コードはhttps://github.com/tkono17/Airdog.gitにおいてあるので、そこからダウンロードして使う。

まず、作業用のディレクトリを作って以下の作業は全てそのディレクトリの下で行う。 ここでは、作業ディレクトリをFluidという名前のディレクトリとして、以下の手順で示すcd Fluid は実際には、Fluidの絶対パスを指定する必要がある場合があるので自分の環境に応じて適切なコマンドを実行する。

mkdir Fluid;

Gitレポジトリからコードをダウンロードする

cd Fluid
git clone https://github.com/tkono17/Airdog.git

いろいろな作業を行うためにディレクトリを用意する

cd Fluid
mkdir build sw scripts run analysis

簡単に各ディレクトリの役割をまとめると、こんな感じである。

ディレクトリ

使用用途

Airdog

プログラムのソースコード

build

プログラムをコンパイルするための作業用

sw

コンパイルしたプログラムを保管するため

scripts

いろいろなスクリプト(環境設定等)

run

プログラムを実行するところ

analysis

生成したデータを解析するところ

環境設定

今後は上で示したディレクトリ構造のもとでプログラムの開発やデータ解析を行っていきたい。そのために、簡単な環境設定をしておくと便利である。 scripts/setup.shというディレクトリを作り、以下の内容を記述する。

export SWDIR=Fluid/sw
export PATH=${SWDIR}/bin:${PATH}
export LD_LIBRARY_PATH=${SWDIR}/lib:${LD_LIBRARY_PATH}

Airdogプログラムをコンパイルするためには、環境変数SWDIRでインストール先ディレクトリを設定するようになっている。 このファイルを用意できたら、ターミナルを開いて作業を開始する前に毎回Fluidディレクトリから以下のコマンドを実行する。

source ./scripts/setup.sh

プログラムのコンパイル

cd Fluid/build
cmake ../Airdog
make
make install

makeを実行して100%処理が終了していれば、コンパイル作業は正常に終了したことになる。 プログラムのソースコードを更新した場合は再度コンパイルが必要なため、cmake, makeをやり直す必要がある。 make installを実行すると、コンパイル済みのファイルがFluid/swにコピーされて利用可能になる。

プログラムの内容

有限の大きさの空間に格子を設定して、各格子点における空気の物理量を保持する。全ての格子点における物理量が系の状態を決定する。プログラムでは基礎方程式の時間発展を解いて、系の状態の時間発展を追跡する。データ量が膨大になるため、何回かの時間ステップを経過した後での状態の2次元断面や2次元面への射影をした結果として得られる2次元分布のみを記録するようにしている。

状態変数: 密度、圧力、温度、速度 (u, v, w)

境界条件

OpenFOAMプログラム

無料の流体解析プログラムである。