200 Views
August 24, 26
スライド概要
スタガード格子による数値流体解析プログラム basilisk の紹介
basilisk を使用してみた ・なぜ興味を持ったか yotakagi77さん Qiita “GerrisをUbuntuにインストール”(2021年10月23日) moritam51さん 第88回オープンCAE勉強会@関西(2022年2月5日) Basiliskによる軸対称milkCrown解析 (Openscc) #staggered grid 使用 my first CFD 任意形状への対応で挫折 VOF、IBM (Immersed Boundary Method) との親和性 詳細なウェッブサイト https://basilisk.fr 第20回OpenCAE勉強会@横浜 2026/08/22A 1
Basilisk 開発者 Stéphane Popinet Centre National de la Recherche Scientifique (CNRS) Institut Jean le Rond d’Alembert、ソルボンヌ大学 有限差分法 PDEソルバー、staggered grid 前身ソフト gerris 特徴 VOFに強い 層流 ソース(C) 公開、研究者用コード 研究グループで使用したコード&開発中のコード (sandbox) UGM … 2023, 2025, 2027? 2
インストール インストールページ https://basilisk.fr/src/INSTALL インストールディレクトリー basilisk |-- src |-- ライブラリー *.h | ユーティリティー |-- example 例題 *.c |-- test サンプル *.c |-- tutorial 練習、ユーザー問題 ・ インストールされるプログラム Basilisk C; basilisk 専用プレコンパイラ 起動コマンド qcc (プレコンパイル → C) 3
解析実行のあらまし 1.個別問題向きのソース(*.c) を作成 形状設定&格子形成 初期条件 境界条件 デフォールトはノイマン&フリースリップ 実行のコントロール(出力、終了判定) 2.コンパイル(qcc、 executable; ex. bump) make を使って簡易化可能 (所要オプション付加) 3.実行 ./bump > out.ppm 2> log y 解析領域 (デフォールト) 1 0 1 x 4
チュートリアル問題
*サンブナン(浅水波方程式)の解析 2D
#include “saint-venant.h” サン-ブナン方程式の
ライブラリー
ソルバーを使用する
#define LEVEL 8
メッシュの分解能 2^8
(ほかに境界条件等)
~Events(次頁)~
解析のコントロール,出力
等など
int main() {
origin (-0.5, -0.5);
init_grid (1 << LEVEL);
run();
}
原点の移動 (スケール)
メッシュ生成
実行
ほかに、物性値等のパラメータも設定
5
チュートリアル問題 結果 *mesh adaption の設定 event adapt (i++) { adapt_wavelet ({h}, (double []){4e-3}, maxlevel = LEVEL); } 水深 格子サイズ ppm → mp4 変換済 6
ライブラリーと関数の調べ方 ・ ライブラリーと関数のマニュアル reference manual 的なものはない website にソースコードと説明 サイト内検索機能 → 使用例、機能、引数、デフォールト値 srcディレクトリー grep “output_ppm” *.h ライブラリー(ソルバーとユーティリティー) saint-venant.h、 navier-stokes/centered.h two-phase.h、 two-phase-clsvof.h two-phase-levelset.h utils.h、 output.h、 view.h、lambda2.h 等 例えば、output.h で定義されている関数 output_field、output_metrix、output_ppm 等 7
例1静止液滴(無重力) test/rising.c を修正 scale SCALE 0.01、0.001、0.0001 m (直径 2., 0.2, 0.02mm) 0.2*scale y scale x 空気 密度 1.2kg/m3、 粘度 1.6E-5 Pas 水 密度1000kg/m3、粘度 0.001 Pas 表面張力係数 σ= 0.071 N/m 重力加速度 g = 0 m/s2 メッシュ分割 LEVEL 6,7,8(64,128, 256) 液滴 13, 25, 51 8
静止液滴の解析結果(VOF値) SCALE = 0.001 LEVEL 8 51/256 7 6 21/128 13/64 PPM → MP4 9
Spurious Current の変動 SCALE= 0.001, LEVEL=8 Time [0.0、0.01] 0.0001 10
Spurious Current の変動 SCALE= 0.001, LEVEL=7 Time [0.0、0.01] 0.0001 11
Spurious Current の変動 SCALE= 0.001,LEVEL=6 Time [0.0、0.01] 0.0001 12
Adaptive Mesh(VOF) LEVEL 8 Adapted(6~8) PPM → MP4 13
静止液滴の解析結果 LEVELの変動 メッシュ分割(瞬間値) 14
Spurious Current の変動 SCALE= 0.01, LEVEL=6 Time [0.0、0.1] 0.001 scale;0.1 15
Spurious Current の変動 SCALE= 0.0001, LEVEL=8 Time [0.0、0.001] 0.00001 scale;0.001 16
纏め ・ basilisk を Ubuntu24(virtual)にインストール Example, Test の例題を実行 ・ インストールとチュートリアル以外、マニュアルはない 例題とライブラリーのソースコードが web で解説されている 関数の内容や引数の意味が簡単にわかるわけではない sandbox 検討中の拡張機能、検討中の問題 ・空気中の浮遊液滴 直径0.2mm以下で spurious current よる液滴の揺動が 顕著 自由落下の軌道に影響 17