1
3. CJ爆轟パラメータの計算
2
爆発と爆轟
●
密閉空間で可燃ガスが燃焼すると「爆発」します
●
その時の状態は?
完全な密閉空間で燃焼したらどのような圧力温度状態
になるか?
●
あるいは、もし「爆轟」が起きたら、爆轟波面の圧力
温度は?
→ 化学平衡計算が必要になります
3
以下の計算をします
● 定圧断熱火炎温度(圧力=初期圧力)
enthalpy, pressure が初期状態と同じ
● 定容断熱火炎温度&圧力
密閉空間での燃焼 (爆発)の圧力・温度
  specific internal energy, specific volume が
初期状態と同じ
http://en.wikipedia.org/wiki/Adiabatic_flame_temperature
● CJ 爆轟速度・圧力・温度、その他のパラメータ
4
平衡計算
● Gibbs 自由エネルギー最小になる組成を求めることに
なります。
● オープンソースソフトの Cantera を使用すれば、比
較的簡単に、断熱火炎温度や、密閉空間での断熱爆発
圧力を計算できます。
● CJ状態の計算は、
衝撃波保存則が成り立つこと
最小爆速となるもの
を Root Finding の逐次解法を使って求めます。
5
CJ 爆轟計算
●
衝撃波保存則
→ 衝撃波面での熱力学状態は
p, v, e がある関係を満たさねばならない
● CJ条件
→ とりうる (p,v,e) の中で、爆速が最小の点
→ そこでは DCJ = CCJ + UCJ
D:爆速、C:音速、U:物質速度(粒子速度)
擾乱は波面に追いつかない
6
衝撃波保存則の説明
– 定常衝撃波で考える –
7
● 衝撃波は媒体中を超音速で伝播し、波面前後で圧力
などのパラメータが不連続に変化する圧力波です
● 衝撃波面の厚さは、凝縮相中では一般的に非常に薄
い(μmオーダーかそれ以下)ことが知られています
8
衝撃波の保存則
● 衝撃波面背後の圧力・密度(あるいは比体積 = 単位重量
あたりの体積、密度の逆数)・内部エネルギー・物質速度
(粒子速度とも言います)・衝撃波速度の5つの未知数の間
にはどのような関係が成り立つでしょうか。
● 衝撃波面前後で3つの保存則 (質量保存、運動量保存、エ
ネルギー保存) が成り立ちます。
9
時刻 t から t + t⊿ の間に、衝撃波が下のように断面積 S の管内を進行した
場合を考えます。衝撃波面前方は静止していると仮定します(物質速度 = 0)。
また、衝撃波速度 Us は一定で、衝撃波背後の状態量 (p1
, ρ1
, e1
) も定常で
あると仮定します。
断面積 = S
10
(1) 質量保存則
● Us t⊿ の長さにあった物質が (Us – u) t⊿ の長さに圧
縮され、密度が ρ0 から ρ1 になったわけですから、
以下の式が成り立ちます。
11
(2) 運動量保存則
● 静止していたρ0Us t⊿ の長さの物質が u の速度を得
たわけですから、運動量保存則(運動量の変化量は受
けた力積に等しい)から
したがって
凝縮相中の衝撃波の場合一般に p1 >> p0 なので
と近似しても差し支えありません
12
(3) エネルギー保存則
● ρ0Us t⊿ の長さ、断面積 S の物質におけるエネル
ギー増加は
で、これが系外から得た pv 仕事
に等しいわけですから、
これを次ページのように変形します
13
まず、質量保存則を変形して(下の式の変形の最後のほうで使います)
この式と、運動量保存則の式を使うと、エネルギー保存則は以下のように変形できます
密度の逆数(比体積) を v で表すと
p0 を無視すると
14
衝撃波保存則のまとめ
15
● 前頁の(3)式が衝撃圧縮曲線になります。
● つまり、(p,v,e)曲面上で、初期状態の点を通るある1
本の曲線です。その初期状態から衝撃圧縮された状態
は、その曲線上にあります。
●
理想気体は状態式既知ですので、初期状態が与えられ
れば、その衝撃圧縮曲線は計算で求まります。
e.g. ある v に対して、温度を変化させると e が変化する。その中で、(3)
式を満たす温度を決める
実際には、逐次解法で求める
16
● 衝撃波保存則は、体積力や放射損失がない場合は精度
よく成り立ちます。
● 5つの変数に対して3つ式があるので、2つの変数を計
測すれば (p,v,e) 状態式データが得られます。
●
高速飛翔体を同じ物質に衝突させて衝撃波速度を測定
します。
u = ½ x (飛翔体速度)
● 高圧での状態方程式の Reference となっています。
● (p, v, e) 状態方程式なので、どうやって 温度 を求め
るか&計測するか、が課題です。
●
凝縮相の状態方程式・構成方程式の理論・実験技術
は、核兵器・通常兵器開発のために発達してきた分野
です。
17
CJ 条件
Chapman-Jouget Conditions
18
爆轟(detonation)
●
燃焼波は圧縮波を送り出し、燃焼波の前方に衝撃波が
形成されます。
● 燃焼波はやがて衝撃波に追いつき、燃焼波面と衝撃波
面は一体となります。これが爆轟です。
●
爆轟にはいくつかの形態がありますが、多くの場合、
定常に進行することが知られています。
● Chapman(1899) と Jouget(1906) はそれぞれ独立に一
次元定常爆轟波の理論(CJ理論)を提唱しました。
● この定常に進行する爆轟のことを、CJ爆轟と呼びま
す。
19
ZND理論
● CJ理論では、反応速度は無限に速いと仮定していま
す。つまり、反応帯の厚さは0で、衝撃波前方の未燃
物は、衝撃波到達で直ちに生成物へと変化するものと
仮定しています。
● これに対して有限の反応速度を考えたのがZND理論で
す(Zeldovich, von Neumann, and Doering)
● つまり、衝撃波到達とともに、未燃物はそのまま圧縮
され、有限の時間で反応生成物へと変化していきま
す。
20
● 衝撃波保存則では 5つの変数、3つの式
●
さらに状態方程式
● つまり取りうる衝撃波面の状態 (p,v,e) には無限の組
み合わせがあります (Hugoniot)
●
しかし、爆轟の場合、爆轟速度は一定であることが経
験的に知られていました
● 従って、無限の点の中から1点のみを決める「条件」
が必要になります
21
ChapmanChapmanはランキンーユゴニオの式を満足するはランキンーユゴニオの式を満足するDDの最小値の最小値
が安定な爆轟速度であると仮定した。が安定な爆轟速度であると仮定した。
JouguetJouguetは安定な爆轟速度は爆轟生成ガスの粒子速度は安定な爆轟速度は爆轟生成ガスの粒子速度WWと爆と爆
轟生成ガスの音速轟生成ガスの音速CCの和に等しいと仮定した。の和に等しいと仮定した。
D=C+UD=C+U
22
2
00
0
V
D
V-V
PP








レーリー線レーリー線
ユゴニオ曲線ユゴニオ曲線
D=VD=V00tanθtanθ
HH00(Q=0)(Q=0)
V))(VP(P
2
1
EE 000 
VV00
PP00
PPC-JC-J
PP
VV
DD
CC
C-JC-J
θθ
AA
BB
PPBB
A-Bは、未燃物の衝撃圧縮曲線 (Hugoniot)
C-Dは、反応生成物の衝撃圧縮曲線
23
Cantera を使った
爆発・爆轟状態の数値計算
24
Cantera とは ?
Cantera is a suite of object-oriented software tools
for problems involving
chemical kinetics, thermodynamics, and/or transport processes.
It is a C++ based code with interfaces for
python, matlab, C, and fortran 90.
Python での利用例
from Cantera import * #Use Cantera module
mech = 'h2air_highT.cti' #Reaction kinetics mechanism file
q = 'H2:2.0 O2:1.0 N2:3.76' #Gas composition
p = 100000. #Pressure
t = 300. #Temperature
gas=IdealGasMix(mech) #IdealGasMix Class
gas.set(X=q,T=t,P=p) #Define the state
gas.equilibrate('HP') #Equilibrium calculation under constant
#enthalpy and pressure
print gas  #print compositions, state variables etc
https://code.google.com/p/cantera/
25
Cantera
● Chemkin 入力が使える (converter)
● Stiff ODE Solver
● BSD New License
商用使用可
CRUNCH CFD も使用
26
本日の presentation で
使用している環境・ソフトウェア
● OS: xubuntu 14.04
● Python 2.7.6 (ubuntu package)
● Cantera 2.1.1 (download & install)
http://cantera.github.io/docs/sphinx/html/cython/index.html#sec-cython-documentation
● EDL Shock and Detonation Toolbox (download)
CJ爆轟パラメータ計算機能をもつライブラリ
http://shepherd.caltech.edu/EDL/public/cantera/html/SD_Toolbox/
Cantera 1.7
Python も古いバージョン
若干の手直しが必要です
理論は以下のPDFに記載されています
http://shepherd.caltech.edu/EDL/public/cantera/doc/tex/ShockDetonation/ShockDetonation.pdf
27
Pythonの特徴
●
スクリプト言語、動的型付け
●
インデントベース → ソースが読みやすい
●
多くのモジュールがあり、コーディングが圧倒的に短
くてすむ(ことが多い)
● 多くの科学技術系プログラムがPython をスクリプト
環境として組み込んでいる
Abaqus, ParaView, Blender......
Maya
● 多くのOS環境下で使える
28
(python) module, class の調べ方
● まず、どんな module, class, 関数があるかを調べます
● Internet で sample プログラム を探すのもいいのですが、以下のよ
うにすれば系統的に調べられます
● 対話モードで help('modules')
あるいは python -c “help('modules')”
install 済 & PYTHONPATH にあるすべての modules が出力されます
● install されていないものを探索するには
pip search xxxxxx
● epydoc Cantera
→ 実行したところでの html ディレクトリ下に Cantera-
module.html が生成
これをブラウザで開けば、class, 関数, 変数
などがわかる
ubuntu では (以下同様)
sudo apt-get install pip
sudo pip install epydoc
29
● Pythonで、CGIサーバーを立てて、ブラウザか
ら
ガス種(H2, CH4, …..)
ガスの体積比率
初期圧力・温度
を入力
● 以下の状態を数値計算して返す
断熱火炎温度
一定体積爆発
CJ爆轟
30
(爆発研究所内部LANのLinuxマシンでCGI サーバーを立ち上げます)
以下のサイトにアクセスして下さい
http://explosion.homeip.net:37080
PC(linux)、iPhone、Android......
なんでも大丈夫(なハズ)
Fuel選択、組成・初期温度圧力入力
Compute !! をクリックします
次頁のように表示されます
31
ガス選択
入力
(合計が1.0でなく
ても大丈夫です)
クリック!
32
どのようなプログラムで、どのようにCGIサーバーを立てているかを解説します
33
● Pythonを使えば簡単にCGIサーバーを立てられます
● python -m CGIHTTPServer
たったこれだけ
これを実行した directory の index.html が表示されます
CGIスクリプトは cgi-bin/ 以下に置きます
http://localhost:8000
でアクセスできます
● 8000番以外のポートの場合は Python スクリプトを書いてポート番
号を指定します
● ルータを設定して、WANからのport番号へのアクセスをそのPCのIP
アドレス/ポート番号につなげば、外部からアクセスできるようにな
ります
● 恒久的な用途には向かないと思いますが、CGIのチェックには簡便で
す。
少人数&内部LANでの社内用途にはこれで十分かもしれません。
34
● index.html
Fuel の選択
組成・初期圧力温度の入力
● cgi-bin/CJcalc.cgi
実際は Python スクリプトです。 
平衡計算・CJ計算を行います
Cantera, SDToolbox の2つのPython モジュール
が平衡計算&CJ計算を担っています
35
index.html 主要部分
ごく普通のCGIです
<form action="cgi-bin/CJcalc.cgi" method="get" enctype="multipart/form-data">
<select name="Fuel">
<option value="hydrogen">hydrogen</option>
<option value="methane">methane</option>
</select>
<br>
<br>
<h2>Initial Conditions
</h2>
Fuel Fraction = <input maxlength="10" size="10" value="0.3" name="f"> <br>
Air Fraction = <input maxlength="10" size="10" value="0.7" name="a"> <br><br>
Initial Pressure = <input maxlength="10" size="10" value="0.1" name="p"> MPa <br>
Initial Temperature = <input maxlength="10" size="10" value="300" name="t"> K <br>
<br>
&nbsp; <input value="Compute !!" type="submit">
</form>
これが平衡計算を実行するプログラムです
実体は Python スクリプトです
実際の index.html は40行程度です
36
CJcalc.cgiの中味
Web CGI サーバー にアクセスして、
実際のソースコードを解説します
CJcalc.cgi: 90行程度

CJ爆轟パラメータの計算 / computaion of detonation parameters.