反応管 メタノール平衡圧ビューア
密閉した反応管に純メタノールを入れて加熱すると、中の圧力はどこまで上がるのか——を、温度・メタノールの量・容器の大きさから見積もるツールです。水版の双子ツールで、メタノールは水(約374℃)より低い約240℃で臨界点を迎えるのが特徴です。

使い方
-
画面の見方
水版と同じ並び(左で条件入力 → 中央に答え → 右に計算式 → 下に2つのグラフ)。薄緑がメタノール版の目印です。右上の「水版へ →」で条件を引き継いだまま水版に切り替えられます。
-
条件を入れる
温度 T(25〜340℃)・メタノールの量 V_fill(室温の液量)・容器体積を入れます。室温メタノール密度は 25℃ / 20℃ から選択可。下に密度 ρ と充填率が自動で出ます。
-
圧力と相を読む
中央の大きな数字が平衡圧(MPa、下に bar / atm も)。バッジが相状態です。例:180℃・メタノール2 mL・容器5 mL → 2.716 MPa・気液二相(V+L)。
-
グラフで全体像をつかむ
左=いまの密度のまま温度を上げたときの圧力カーブと飽和蒸気圧曲線・臨界点(約240℃)。右=温度×充填量でどの相になるかのマップ。白丸が今の条件です。
-
やってみよう:温度を上げると
320℃に上げると 22.24 MPa・超臨界(SC) に。メタノールは約240℃で臨界点を超えるので、水より低い温度で超臨界になります。
-
やってみよう:温度を下げると
逆に80℃まで下げると 0.181 MPa(約1.8気圧)・気液二相。低温では圧力はごくわずかです。
-
やってみよう:メタノールを増やすと
同じ180℃でもメタノールを4 mLに増やすと 12.57 MPa・亜臨界メタノール(L) へ。量(密度)が増えると圧力が上がり、相も変わります。
仕組みと使った技術
全体の流れ
- ユーザーが温度 T(25–340℃)・メタノール充填量 V_fill(室温の液量)・容器体積 V_vessel(既定5 mL)をスライダまたは数値入力で指定する。室温メタノール密度は25℃と20℃の2択(CoolProp計算値)をセレクトボックスで切り替えられる。
- 密閉管は等容系であるため、状態は (T, 全体密度 ρ = メタノール質量 / V_vessel) の2変数で決まる(ρは選択した室温密度で充填量を質量に換算して算出)。
- ビルド前に precompute.py が CoolProp(HEOS, Methanol de Reuck/Piazza EOS)を呼び出し、(T, ρ) の単相2Dグリッドと、T軸に沿った飽和蒸気圧・飽和液密度・飽和蒸気密度の1D飽和テーブルを data_grid.json へ書き出す。T軸はメタノールHEOS妥当上限346.85℃(620 K)の手前で安全側の340℃で打ち切る。臨界点近傍の精度向上のため Tcrit±0.5/0.2/0.05℃と臨界点そのものを飽和テーブルの追加ノットとして挿入する。
- core.js が相判定と圧力補間を行う。T ≥ Tcrit は単相(超臨界 or 気体様)、T < Tcrit では rhoV_sat ≤ ρ ≤ rhoL_sat なら二相(V+L)で P = Psat(T)、ρ > rhoL_sat なら亜臨界メタノール(L)、ρ < rhoV_sat なら蒸気(V)として、それぞれ境界相対密度補間(Δρ = ρ − ρsat(T) をアンカーにT方向補間)で単相EOSグリッドから圧力を求める。
- build.py が template.html・Plotly.js(vendor埋め込み)・data_grid.json・core.js・app.js を単一HTMLに結合して dist/反応管_メタノール平衡圧ビューア.html とVercel公開用 reactor-methanol-pressure/index.html を生成する。ブラウザは外部通信なし・インストール不要でブラウザ内だけで動作する。
- app.js の UI層が左ペインに圧力値と相バッジ、右ペインに「式と計算」透明化パネル(ρ算出→相判定→圧力補間の3〜4ステップを数式付きで表示)、下部に P–T 等容線グラフ(等容線・飽和蒸気圧曲線・臨界点・現在点)と相状態ヒートマップ(温度–充填量の二次元で相域を可視化)を描画する。
- URLパラメータ(?T=&fill=&vessel=)で初期条件を指定でき、「水版へ →」リンクが現在の条件をそのまま水版URLに引き継いで遷移する(室温密度は流体間で意味が異なるため引き継がない)。
使った技術
- CoolProp (HEOS, Methanol de Reuck/Piazza EOS)
- Python側でビルド前に純メタノールの (T, ρ) 2Dグリッドおよび飽和テーブルを事前計算するための物性ライブラリ
- Python / precompute.py
- 非一様ρグリッドと臨界点ノット付き飽和テーブルを生成し data_grid.json に書き出すビルドスクリプト。EOS妥当上限(340℃)や室温密度(25℃/20℃)の計算もここで行う
- JavaScript / core.js
- DOM・Plotly非依存の物性補間・相分岐ロジック。qa_compare.py と同一仕様でPython参照実装と突合検証済み。NodeとブラウザのどちらでもCommonJS/グローバルで動作
- JavaScript / app.js
- UI層(スライダ・数値入力・室温密度セレクト→core.js呼び出し→Plotly描画・計算透明化パネル更新・相互リンクURL生成)
- Plotly.js (cartesianバンドル)
- P–T等容線グラフと相状態ヒートマップの描画。vendorとして単一HTMLに埋め込み、外部通信なしの動作を実現
- Python / build.py
- template.html・vendor Plotly・data・core・appを結合して単一HTMLを生成するビルドスクリプト。dist版とVercel公開用index.htmlを同時出力
- Python / qa_compare.py + Node / verify_core.js
- qa_compare.pyがPythonで補間参照実装とCoolProp直計算を突合し精度統計を出力。verify_core.jsがJS core.jsをNodeで実行して参照実装との最大絶対差を定量検証する
- Cloudflare Workers
- reactor-methanol-pressureフォルダのindex.htmlと仕様書spec.htmlを静的配信。noindexで検索除外
実装の工夫
- メタノールHEOS(de Reuck/Piazza, CoolProp)の妥当上限が620K(346.85℃)であるため、T軸は安全側の340℃で打ち切る設計を採用。ρグリッド上端は室温メタノール密度≈786 kg/m³を少し超える800 kg/m³に設定し、フル充填まで対応している。
- ρグリッドは非一様設計。希薄蒸気(5〜50、5刻み)・蒸気〜中密度(50〜250、5刻み)・臨界密度近傍〜主操作域(250〜600、2.5刻み)・圧縮液急峻域(600〜800、1刻み)の4セグメントで細かさを変え、精度とファイルサイズを両立している。
- L相(単相液)のラベルを「亜臨界メタノール (L)」と命名し、プロファイルJSONから注入する設計にした。水版の「加圧熱水」に相当するが流体ごとに意味が異なるため、core.js自体はラベルを持たずprofileで上書きするアーキテクチャを採用(water/methanol両版でcore.jsを共有できる)。
- 薄緑パレット(--bg:#e9f0e0, --accent:#3f7d35)を採用し、水版(ベージュ系)と色でツールを識別できるようにした。ヒートマップのplot_bgcolorも同系の#f8fbf3に統一している。
- 室温メタノール密度の切り替えをUIに組み込んだ。25℃と20℃の2値をprecompute.pyがCoolPropで計算してprofileに埋め込み、セレクトボックスの選択値がリアルタイムにρ計算へ反映される。物性グリッドの再計算は不要で表示値・グラフが即座に更新される。
- 相互リンク(「水版へ →」)は現在の条件 T/fill/vessel をURLパラメータで引き継ぐ。roomパラメータは流体間で換算値の意味が異なるため渡さない設計とし、app.jsのupdateSibling関数で実装している。リンク先URLはprecompute.pyのprofile.sibling.hrefに定義したVercel公開URLを使用する。
用語
- 平衡圧
- 密閉容器の中で、液体とその蒸気がつり合った(平衡になった)ときに示す圧力。
- 等容系(定容)
- 容器の体積が変わらない系。密閉した反応管はこれにあたり、状態は温度と全体密度だけで決まる。
- 全体密度 ρ
- 入れたメタノールの質量 ÷ 容器体積。等容系では圧力と相を決める鍵になる量。
- 充填率
- 容器体積に対する、室温で測ったメタノールの体積の割合。
- 飽和蒸気圧
- ある温度で液体と蒸気が共存できる圧力。気液二相のときの圧力はこれで決まる。
- 気液二相(V+L)
- 液体と蒸気が同時に存在している状態。容器内に液面がある状態。
- 臨界点
- これより高温・高圧では気体と液体の区別が無くなる点。メタノールは約240℃・8.1 MPa(水の約374℃より低温)。
- 超臨界(SC)
- 臨界点を超えた状態。気体と液体の中間のような性質をもつ。
- 亜臨界メタノール(L)
- 臨界点に達しない範囲で加圧された、高温の液体のメタノール(水版の「加圧熱水」に相当)。