XFOIL 3D
XFOILを用いた翼型の3次元極曲線を計算・可視化するCLIツール
プロジェクト概要
人力飛行機などの低レイノルズ数帯の翼型解析に用いられるXFOILをPythonから自動制御し、複数のレイノルズ数における極曲線を計算・可視化するCLIツールです。
通常の解析結果は二次元のグラフ(レイノルズ数ごと)になりますが、本ツールでは迎角とレイノルズ数を変数とする3次元曲面として可視化することで、翼型の全体的なパフォーマンスの直感的な把握を可能にしました。
- 使用言語: Python
- 主要ライブラリ:
multiprocessing,Scipy,Plotly,pandas,questionary - 外部プログラム: XFOIL(Fortran製)
技術的な工夫とアーキテクチャ
1. Fortran特有の読み込みバッファ文字数の制限
XFOILはFortranで記述された古いソフトウェアであり、ファイルパスの読み込みバッファが約80文字に制限されているという特有の仕様があります。絶対パスを渡すと文字列が途切れてクラッシュする問題を回避するため、Python側で動的に一時ディレクトリを作成し、subprocess.runの実行カレントディレクトリをそこに固定。XFOILには短い相対ファイル名のみを渡すアーキテクチャを設計し、この制約を克服しました。
2. マルチプロセスによる並列計算とフェールセーフ
数万パターンの計算を現実的な時間で終わらせるためmultiprocessing.Poolを用いてレイノルズ数ごとにXFOILのプロセスを独立して立ち上げ、CPUコア数に応じた完全並列処理を実装しました。また、流体計算特有の「収束せず無限ループに陥る」事象に対し、プロセスごとのタイムアウト処理を設け、システム全体がフリーズしない設計としています。
3. スケール差を考慮した数学的な3D曲面補間 (RBF)
XFOILの計算が収束しなかった点を補完するため、SciPyの`RBFInterpolatorPを用いた薄板スプライン補間を実装しました。 ここで、レイノルズ数(数十万規模)と迎角(数十規模)ではオーダーが全く異なるため、そのままユークリッド距離を計算するとレイノルズ数の影響が支配的になり、正しい曲面が生成されません。これを防ぐため、内部で両軸を [0, 1] にスケール正規化してからRBF空間にマッピングする数学的処理を組み込んでいます。
関連プロジェクト
大規模データ向け高速類似文字列検索システムの実装
100万件のデータから編集距離3以内の類似文字列を高速検索するシステム。階層的フィルタリングとMyersのビット並列アルゴリズムをC言語で実装し、精度100%と実行速度の最適化を両立。
Fusion Wing Importer
Flow5/XFLR5の解析データからAutodesk Fusion上に3D翼モデルを自動生成するアドイン
OpenCVを用いた古典的なリアルタイム動体検知アプリケーション
ビデオソース内の特定の領域(ROI)を監視し、動きを記録する動体検知アプリケーション。移動平均を用いた背景モデルの構築、モルフォロジー変換によるノイズ除去、デバウンス処理を取り入れたステートマシンによるイベント管理を実装。