ツール紹介・仕事術

pythonで簡単にロケットエンジンの性能計算:RocketCEAの使い方 (Windows編)

はじめに

みなさんこんにちは。前回記事の続きで、ロケットエンジンの性能を計算する方法を考えていた時たまたま発見した超便利な“RocketCEA”について、今回はその導入方法と使い方を簡単に説明します。

python超初級レベルでも簡単にロケットの性能が計算できてしまう神ツールです!!
ロケット工学の前提知識やプログラミング経験がほとんどなくても使えるため、少しでも興味のある方は是非一度入れて試してみてください。

この記事はこういう人向け

  • ロケットエンジンのことは分からないけど燃焼計算がどのようなものか体験してみたい
  • CEAをもっと楽に使えるようにしたい
  • 化学平衡計算を楽にできるフリーソフトを知りたい
  • どうしてもgccをwindowsで動かしたい
  • 今回の記事のマニアック度:4 out of 5 stars

管理人も発見当初はサブ機のkubuntuで粘っていたのですが、ブログ執筆のためについにwindows版を導入しました。

CEAとは・RocketCEAとは

CEAとはNASAが開発した “Chemical Equilibrium with Applications” という化学平衡計算プログラムのことで、様々な化学種の燃焼計算や、計算結果に基づいたロケットエンジン燃焼器の性能計算ができます。fortran77で書かれておりフリーである反面、長年使い勝手が悪かった上、安保上の理由から最近は無償公開がされなくなってしまいました。

現在ではwebアプリとしてのみ使える状態です。

https://cearun.grc.nasa.gov/

しかし近年、消えてしまったと思われていたこのスタンドアローン版のCEAが有志の手で復活を遂げました。しかも使いやすいpythonのモジュールとして!公式ページはこちらから:

https://rocketcea.readthedocs.io/en/latest/

復活しただけでなく、使い勝手も大幅に向上していてて、月面着陸以来の人類の進歩です(嘘)!!!そんなRocketCEAの入れ方と使い方を見ていきましょう。

CEAで計算できること

  • ロケット燃焼器内の化学平衡
  • 古典ロケット方程式に則ったノズル出口の状態
  • ロケットノズルの推力やIsp、圧力、化学種、温度などの基本諸元

試した方法

本モジュールに最初に着目したqiita記事はこちらです。linux環境、mac環境はこの通りに導入すれば問題なく動きます。

しかしwindowsでも動かそうとするとgccの壁にあたり、少し悪戦苦闘することになりました。。。(mingwを取り巻く環境は10年前からあまり状況が改善してない気が汗)

次の章に解決方法を書いているので、どうしてもwindowsで動かしたいという方は参考にしてみてくださいね。

インストール方法

実際に導入した手順です。.NET Frameworkが壊れてたり、おかしなバージョンのgccが入っていなければこの手順通りにやれば多分動くと思います!

トラブルがあった場合、可能な限りサポートいたします!

動作環境

OS

管理人がCADとクリスタ、他Steamなどゲームで使っているメインPCです。

ソフト環境

python: 3.10.1

その他競合しそうな環境:Git Bash, Anaconda

pythonの準備

実行に必要なライブラリです

https://rocketcea.readthedocs.io/en/latest/quickstart.html

numpyとmatplotlibを入れます/最新版に更新します。

pip install numpy
pip install matplotlib

pip install --upgrade numpy
pip install --upgrade matplotlib

gfortranの導入

rocketCEAを使うためにはfortranのコンパイラが必要です。ここでgcc gfortranを使います。linuxだと一瞬なのですが、windowsではここでいくつかコツがあります。順番通りにやって行きましょう。

一応の公式ガイド (これが原因で泥沼に)

https://rocketcea.readthedocs.io/en/latest/installgfortran.html#link-installgfortran

mingw64のダウンロード

下記のページにアクセスします。

https://sourceforge.net/projets/mingw-w64/

ここにある”ダウンロード”は してはいけません

動かないバージョンがdlされます。

Filesのタブから下にスクロールし、MinGW-W64 GCC-8.1.0から “x86_64-win32-seh”をダウンロードします。

gcc導入ではOnline Installerを推奨するサイトが多いのですが、環境によってはどのバージョンを入れようとしても下記のエラーが出てきて使用不能です。PATHを通してもダメでした。
したがって直接実行できるzipをダウンロードします。

ちなみにRocketCEA公式ページで紹介されている手順ではこのようなエラーが出てしまいます。

mingw64の解凍

無事にダウンロードができたら解凍します。

解凍フォルダmingw64の中身はこんな感じです。

解凍が完了したらmingw64フォルダごとCドライブ直下などわかりやすい場所に移動します。

環境変数の設定

下記にPATHを通す必要があります。コマンドプロンプトから下記の通り追加するかコントロールパネルを使います。

1. cmdで通す方法
set PATH=C:\MinGW\mingw64\bin;C:\MinGW\mingw64\lib;%PATH%

2. コントロールパネルで通す方法

コントロールパネルを開き、“環境変数”で検索。

“環境変数を編集”

環境変数の画面を開いたら、“システム環境変数”“Path”を編集、下記を追加します。

C:\MinGW\mingw64\bin

C:\MinGW\mingw64\lib

念の為、私はC:\MinGW\mingw64も追加しました。

動作確認

以上で”インストール”は終了です。パスを通したことで直接コンパイラプログラム(gcc.exe)を叩くため特にほかの作業をしなくても動くはずです。システムを再起動し、gfortranが使えるようになっているかサンプルコードで確認します。

#test.c
#include <stdio.h>

main()
{
  printf("Hello World\n");
}

gccでコンパイラを実行してみます。

何やらエラーが出てきましたがとりあえず無事に動くことが確認できました。

RocketCEAの導入

gccが入ったらrocketcea本体を導入します。pythonのライブラリとして公開されています。

pip install rocketcea

以上です。

下記から直接ソースを落として使っても良いです。

公式ガイドの通り動作確認を行います。これで動けば導入は完了です。

python -c "from rocketcea.cea_obj import CEA_Obj; C=CEA_Obj(oxName='LOX', fuelName='LH2'); print(C.get_Isp())"
374.30361765576265

最初公式の通りに進めたものの、gccが動かず困りました。私の場合はここで書いた方法で解決したので、これでも不具合があった場合はお問い合わせかツイッターで教えてください!

次ページ(使い方)へ

1 2
ABOUT ME
Trude (まきブロ管理人)
機械屋さん。多くの人に機械の面白さやエンジニアリングの楽しさを知ってもらうべく、解説や紹介記事を発信しています。
RELATED POST

POSTED COMMENT

  1. […] pythonで簡単にロケットエンジンの性能計算:RocketCEAの使い方 (Windows編)pythonを使ってロケットエンジンの性能計算や化学平衡計算ができるRocketCEAについて紹介。NASA CEAがpythonから呼び出し […]

  2. […] pythonで簡単にロケットエンジンの性能計算:RocketCEAの使い方 (Windows編)pythonを使ってロケットエンジンの性能計算や化学平衡計算ができるRocketCEAについて紹介。NASA CEAがpythonから呼び出し […]

  3. […] NASA CEAをPythonで使えるようにするプログラム。MinGWが必要で、それをWindows10にインストールするのに意外と引っかかったが、こちらのサイトがとても参考になりました。これと同じトラブルに悩み、これで解決。ありがとうございました。要は、MinGWのOnlineインストールを使っては駄目ということ。バイナリをダウンロードして、C:MinGWに展開。自分はCygwin派なので、MinGWにパスは通さなかったが、Anaconda環境でRocketCEAのインストールまで正常終了。 […]

Starship特集:打ち上げ能力計算ツールのご紹介|まきブログ Makkiblog へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です