プロジェクト一覧へ
XFOIL 3D

XFOIL 3D

XFOILを用いた翼型の3次元極曲線を計算・可視化するCLIツール

2026年3月 - 2026年3月 期間: 1ヶ月未満

使用技術

プロジェクト概要

人力飛行機などの低レイノルズ数帯の翼型解析に用いられる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空間にマッピングする数学的処理を組み込んでいます。

関連プロジェクト