断熱圧縮とポリトロープ変化

熱力学
Author

Ryo Nakagami

Published

2025-06-15

Modified

2025-07-02

圧縮機における断熱圧縮

理論冷凍サイクルでは可逆断熱圧縮(平衡状態を維持しながらの断熱圧縮)として扱われますが,実際には圧縮機において圧縮中の冷媒上記には熱の出入りがあります. また,圧縮機頭部を冷却し,圧縮中に加熱した冷媒ガスから積極的に熱を除去することもあり,これらの圧縮をポリトロープ圧縮と呼びます.

断熱圧縮

  • \(c_p\): 定圧比熱 [kJ/(kg\(\cdot\)K)]
  • \(c_p\): 定容比熱 [kJ/(kg\(\cdot\)K)]

として理想気体の \(c_v, c_p\) の関係をまず考えてみます.理想気体の状態方程式より

\[ pv = RT \]

これは状態式なので全微分すると

\[ pdv + vdp = Rdt \]

これを用いて比エンタルピ変化を考えると

\[ \begin{align} dh &= du + pdv + vdp\\ &= du + RdT \end{align} \]

理想気体を仮定しているので

\[ \begin{align} du &= c_vdT\\ dh &= c_pdT \end{align} \]

従って,

\[ c_pdT = c_vdT + RdT \]

両辺をdTで除して整理すると

\[ c_p - c_v = R \]

ここで比熱比 \(\kappa\) を次のように定義する

\[ \frac{c_p}{c_v} = \kappa \]

整理すると

\[ \begin{align} c_p &= \frac{\kappa R}{\kappa - 1}\\ c_v &= \frac{R}{\kappa - 1} \end{align} \]

ポワソン公式の導出

断熱圧縮では \(dq = 0\) であるので,理想気体では

\[ \begin{align} &c_vdT + pdv = 0\\ &\Rightarrow dT = -\frac{pdv}{c_v} \end{align} \]

理想気体の状態方程式を微分すると

\[ pdv + vdp = RdT \]

これらを \(dT\) を消去する形で整理すると

\[ \begin{gather} \frac{R + c_v}{c_v}pdv + vdp = 0\\ \Rightarrow \frac{c_p}{c_v}pdv + vdp = 0\\ \Rightarrow \kappa \frac{dv}{v} = -\frac{dp}{p} \end{gather} \]

これを積分すると

\[ pv^\kappa = C \label{eq-poisson} \]

この断熱圧縮時の理想気体の可逆断熱圧縮時の圧力 \(p\) と比体積 \(v\)\(\kappa\) の関係をポアソンの公式と呼びます.

温度と圧力で表したポアソンの公式

\(\eqref{eq-poisson}\) を理想気体の状態方程式を用いて変形すると

\[ \begin{align} pv^\kappa = p\left(\frac{RT}{p}\right)^\kappa = C \end{align} \]

従って

\[ \frac{p^{(\kappa-1)/\kappa}}{T} = \text{const} \]

とポアソンの公式を露わことができます.

同様に \(T\)\(v\) についてならば

\[ Tv^{\kappa-1}= \text{const} \]

断熱圧縮と状態変化

圧縮機で断熱圧縮をした結果 \(p_1 \to p_2\) まで変化したとします.このときの温度変化はポワソン公式より

\[ \frac{T_2}{T_1} = \left(\frac{p_2}{p_1}\right)^{(\kappa-1)/\kappa} \label{eq-compress-ratio} \]

つまり

  • 圧力比が大きいほど温度比も大きくなる
  • 比熱比が大きいほど温度比も大きくなる
Note
  • 実際の圧縮機での冷媒蒸気の圧縮では圧縮機の機械的な摩擦による熱が冷媒に加わり,吐出しガス温度はより高くなる
  • この温度が高すぎると冷凍機油を劣化させ,圧縮機寿命に影響を及ぼしてしまう
  • 鉱油の冷凍機油の劣化温度は一般に120~130℃以上

Example 1 CoolPropを用いた圧縮機吐出しガス温度の計算

蒸発温度が -20℃,凝縮温度が 30℃,圧縮機吸い込み蒸気の加熱度が 5K のとき,圧縮機吸込み蒸気を凝縮圧力まで断熱圧縮した後の吐出しガス温度 \(Td\) をもとめてみます. 冷媒はR410Aとして,比熱比 \(\kappa = 1.28\) で一定とする.

圧縮機吸い込み温度 \(T\) は,

\[ T = 273.15 + (-20) + 5 = 258.15 \]

低い圧センサを \(P_l\), 高圧センサを \(P_h\) とすると \(\eqref{eq-compress-ratio}\) より

\[ Td = 258.15 \times \left(\frac{P_h}{P_l}\right)^{(\kappa-1)/\kappa} \]

よってまず,圧力比を取得します

Code
from CoolProp.CoolProp import PropsSI

Te = 273.15 - 20   # 蒸発温度
Tc = 273.15 + 30
fluid = 'R410A'  # 冷媒名

# 飽和圧力(単位:Pa)を取得
P_l = PropsSI('P', 'T', Te, 'Q', 0, fluid)
P_h = PropsSI('P', 'T', Tc, 'Q', 0, fluid)
P_ratio = P_h/P_l

print(f"低圧圧力 = {P_l/1000000:.4f} MPa")
print(f"高圧圧力 = {P_h/1000000:.4f} MPa")
print(f"圧力比 = {P_ratio:.4f}")
低圧圧力 = 0.4007 MPa
高圧圧力 = 1.8891 MPa
圧力比 = 4.7148

圧力比がわかったので実際に計算してみると

Code
Te = 273.15 + (-20) + 5 
kappa = 1.28

Td = Te * (P_ratio) ** ((kappa - 1)/kappa)
print(f"圧縮機吹出しガス温度 = {Td:4f} K = {Td - 273.15:4f} ℃")
圧縮機吹出しガス温度 = 362.403188 K = 89.253188 ℃

次に圧縮前後の比エンタルピ差を求めてみます.

\[ dh = dq + vdp \]

であるので断熱圧縮時は \(dq = 0\) つまり

\[ \begin{align} h_2 - h_1 &= \int^2_1 vdp\\ &= \int^2_1 \left(\frac{C}{p}\right)^{1/\kappa}dp\\ &= \frac{\kappa}{\kappa - 1}(p_2v_2 - p_1v_1) \label{eq-compress-work} \end{align} \]


ポリトロープ変化

圧縮機での実際の圧縮では,

  • 吸い込み蒸気がシリンダ壁などで加熱
  • 圧縮ガスの熱が圧縮機壁を通って外部に放熱

という現象が発生し,可逆断熱圧縮とはなりません.可逆断熱圧縮とならなくても圧力 \(p\) と比容積 \(v\) が以下のような指数関係で結ばれるような変化とみなせる,つまり

\[ pv^n = C \]

であるとき,これはポリトロープ変化(ポリトロープ圧縮)と呼びます.

Definition 1 ポリトロープ変化

理想気体と見なせる気体について,圧力 \(p\) と比容積 \(v\) が以下のような指数関係で結ばれるような変化をポリトロープ変化という

\[ pv^n = C \]

  • \(C\): constant
  • \(n\): ポリトロープ指数

温度と圧力の能動的な同時操作を行えば,変化経路としては,どのような向きの経路でも取ることができると仮定される(=可逆的変化

ポリトロープ変化と変化の種類

ポリトロープ指数 対応状況 変化
\(n=0\) \(p=C\) 等圧変化
\(n=1\) \(pv=C\) 等温変化
\(n=\infty\) \(v=C\) 等積変化
\(n=\kappa\) \(pv^\kappa=C\) 断熱変化

Example 2 \(1 < n < \kappa\) のポリトロープ圧縮

等温変化,断熱変化,ポリトロープ変化それぞれの場合のPV plotは以下のようになります.

Code
import matplotlib.pyplot as plt
import numpy as np


def plot_pv_diagram():
    # 理想気体の比熱比 (γ) を設定
    # 断熱変化は PV^γ = const で表される
    kappa = (
        1.4  # 単原子分子理想気体の場合 5/3 = 1.67, 二原子分子理想気体の場合 7/5 = 1.4
    )
    poly = 1.2

    # 点 1 の状態量
    P1 = 2.0  # P軸のスケールに合わせて適当な値に調整
    V1 = 1.0  # V軸のスケールに合わせて適当な値に調整
    TA = P1 * V1  # PV = nRT なので、T は PV に比例すると考えられる

    # 点 2 の状態量
    P2 = np.linspace(P1, 7.0, 1000)
    V2_adiabatic = V1 * (P1 / P2) ** (1 / kappa)
    V2_poly = V1 * (P1 / P2) ** (1 / poly)
    V2_iso = V1 * (P1 / P2)

    # Matplotlibでプロット
    plt.figure(figsize=(8, 6))

    # 断熱変化の曲線 (AからB)
    plt.plot(V2_adiabatic, P2, linewidth=2, label="adiabatic")
    plt.plot(V2_poly, P2, linewidth=2, label="polytropic")
    plt.plot(V2_iso, P2, linewidth=2, label="iso")

    # text labelの付与
    plt.text(V2_poly[0], P2[0] + 0.1, '1', fontsize=12, ha='right')
    plt.text(V2_poly[-1], P2[-1] * 1.01, '2\'', fontsize=12, ha='right')


    # 軸ラベルとタイトル
    plt.xlabel("v")
    plt.ylabel("p")
    plt.title("PV plot")
    plt.legend()

    # 軸の範囲を設定
    plt.xlim(0, 1.2)
    plt.ylim(0, 7.5)

    # 凡例
    # plt.legend() # 等温変化と断熱変化の凡例は曲線上に直接記述した方が見やすいかも

    # グリッド
    plt.grid(True, linestyle=":", alpha=0.6)

    # 軸の目盛りとラベル
    plt.yticks([P1, P2[-1]], [f"P1", f"P2"])

    plt.tight_layout()
    plt.show()


# 関数を呼び出してグラフを表示
plot_pv_diagram()

冷媒を状態1から状態2’までポリトロープ圧縮した場合,圧縮の際に外部に熱が放出される場合の比エンタルピー変化は

\[ h_2 - h_1 = q_{12} + \int^2_1 vdp \]

断熱圧縮の場合は,\(q_{12} = 0\) であるから断熱圧縮仕事 \(-l_{12}\)

\[ -l_{12} = h_2 - h_1 \]

ポリトロープ圧縮仕事 \(-l_{12'}\)

\[ \begin{align} -l_{12'} &= -l_{12} + q_{12}\\ &= h_2 -h_1 + q_{12}\\ &= h_{2'} - h_1 \end{align} \]

\(\eqref{eq-compress-work}\) より

\[ \begin{align} -l_{12} &= \frac{\kappa}{\kappa - 1}(p_2v_2 - p_1v_1)\\ -l_{1'2} &= \frac{n}{n - 1}(p_{2'}v_{2'} - p_1v_1) \end{align} \]

Note
  • 比熱比 \(\kappa\), ポリトロープ指数 \(n\), 状態1と2の圧力 \(p_1, p_2\) がわかれば,圧縮後の比体積 \(v_2, v_{2'}\) がわかる
  • PH線図では変化後の座標を等比体積線と圧力の交点として図示することができる

Example 3 放熱量の計算

R410A用の圧縮機で

  • 吸い込み蒸気の圧力 \(p_1 = 0.40\) MPa
  • 吸い込み蒸気の比体積が \(v_1 = 0.07\) m³/kg
  • 吐出し蒸気の圧力 \(p_2 = 1.88\) MPa
  • 比熱比 \(\kappa = 1.3\)

とします.ポリトロープ指数 \(n=1.2\) のポリトロープ圧縮仕事に成るためには,断熱圧縮仕事からどれくらいの熱量が放熱される必要があるか考えてみます.

断熱圧縮後の比体積 \(v_2\) と断熱圧縮仕事 \(-l_{12}\)

\[ \begin{align} v_2 &= v_1\left(\frac{p_1}{p_2}\right)^{1/\kappa}\\ -l_{12} &= \frac{\kappa}{\kappa-1}(p_2v_2 - p_1v_1) \end{align} \]

ポリトロープ圧縮後の比体積 \(v_{2'}\) と圧縮仕事 \(-l_{12'}\)

\[ \begin{align} v_{2'} &= v_1\left(\frac{p_1}{p_{2'}}\right)^{1/n}\\ -l_{12'} &= \frac{n}{n-1}(p_{2'}v_{2'} - p_1v_1) \end{align} \]

熱量 \(dq\)

\[ dq = -l_{12'} - (-l_{12}) \]

これをPythonで実装すると

Code
def calculate_heat_released(p1_MPa, v1, p2_MPa, kappa, n):
    """
    ポリトロープ圧縮過程で放出される熱量 dq [kJ/kg] を計算する
    
    Parameters:
        p1_MPa (float): 吸い込み圧力 [MPa]
        v1 (float): 吸い込み比体積 [m^3/kg]
        p2_MPa (float): 吐出し圧力 [MPa]
        kappa (float): 断熱比(比熱比)[-]
        n (float): ポリトロープ指数 [-]
    
    Returns:
        dq (float): 放熱量 [kJ/kg]
        l12 (float): 断熱圧縮仕事 [kJ/kg]
        l12p (float): ポリトロープ圧縮仕事 [kJ/kg]
    """
    # 単位変換 MPa → Pa
    p1 = p1_MPa * 1e6
    p2 = p2_MPa * 1e6

    # 断熱圧縮後の比体積 v2
    v2 = v1 * (p1 / p2)**(1 / kappa)

    # 断熱圧縮仕事 [J/kg → kJ/kg]
    l12 = (kappa / (kappa - 1)) * (p2 * v2 - p1 * v1) / 1000

    # ポリトロープ圧縮後の比体積 v2'
    v2p = v1 * (p1 / p2)**(1 / n)

    # ポリトロープ圧縮仕事 [J/kg → kJ/kg]
    l12p = (n / (n - 1)) * (p2 * v2p - p1 * v1) / 1000

    # 放熱量(断熱仕事との差)
    dq = l12p - l12

    return dq, l12, l12p

dq, l12, l12p = calculate_heat_released(
    p1_MPa=0.40,
    v1=0.07,
    p2_MPa=1.88,
    kappa=1.3,
    n=1.2
)

print(f"断熱圧縮仕事      : {-l12:.2f} kJ/kg")
print(f"ポリトロープ圧縮仕事: {-l12p:.2f} kJ/kg")
print(f"放出される熱量     : {dq:.2f} kJ/kg")
断熱圧縮仕事      : -52.08 kJ/kg
ポリトロープ圧縮仕事: -49.43 kJ/kg
放出される熱量     : -2.65 kJ/kg

📘 理解度チェック

Exercise 1

\(10\) kg の理想気体が \(pv^{1.3} = C\) に従って,圧力 \(0.1\) MPa, 温度 300K の初期状態から圧縮され,圧力 \(2.7\) MPa になったとする.このとき,

  1. 圧縮後の気体の温度を求めよ

圧縮後の気体の温度を求めよ

理想気体の状態方程式より

\[ \frac{p_1v_1}{T_1} = \frac{p_2v_2}{T_2} \]

  • \(p_i\): 状態 \(i\) の圧力
  • \(T_i\): 状態 \(i\) の温度(K)
  • \(v_i\): 状態 \(i\) の比容積

これを問題文に当てはめると

\[ \begin{align} & \frac{0.1\text{MPa}\times v_1}{300} = \frac{2.7\text{MPa}\times v_2}{T_2}\\ &\Rightarrow T_2 = \frac{2.7}{0.1} \times 300 \times \underbrace{\frac{v_2}{v_1}}_{\text{比容積比率}} \end{align} \]

比容積比率はポリトロープ変化 \(pv^{1.3} = C\) より

\[ \frac{p_1}{p_2} = \left(\frac{v_2}{v_1}\right)^{1.3} \]

したがって,

\[ \frac{v_2}{v_1} = \left(\frac{1}{27}\right)^{\frac{1}{1.3}} \]

よってこれを計算すると

Code
import numpy as np

volume_ratio = 27 ** (-10/13)
p_ratio = 27
base_temp = 300

res_temp = volume_ratio * p_ratio * base_temp
print(f"{res_temp:.2f}K")
641.85K

Appendix: CoolProp

冷媒の飽和圧力(saturation pressure)の取得

Syntax

Code
from CoolProp.CoolProp import PropsSI

T = 273.15 + 5   # 飽和温度 [K](例:5℃)
fluid = 'R410A'  # 冷媒名

# 飽和圧力(単位:Pa)を取得
P_sat = PropsSI('P', 'T', T, 'Q', 0, fluid)

print(f"飽和圧力 = {P_sat/1000000:.2f} MPa")
飽和圧力 = 0.94 MPa

入力仕様

引数 内容
'P' 求めたいプロパティ(圧力)
'T', T 与える温度([K])
'Q', 0 品質(0: 飽和液体、1: 飽和蒸気)
fluid 冷媒名(例:‘R410A’, ‘R134a’)
  • 単一冷媒, 共沸冷媒では’Q’, 0 または ‘Q’, 1 のどちらでも、飽和温度においては同じ飽和圧力を返します
  • R407Cのような温度勾配の大きい非共沸冷媒では異なる飽和圧力を返します

References