熱力学はエネルギーの変換と移動を扱う学問です。エンジン、冷蔵庫、化学反応、宇宙空間の熱設計など、工学のあらゆる分野で熱力学の知識が必要になります。
本記事では、熱力学を学ぶうえで最初に押さえるべき基本概念を体系的に整理します。系の分類、状態量と過程量の違い、平衡状態、準静的過程、可逆・不可逆過程について、数学的な定義と直感的な理解の両方を提供します。
本記事の内容
- 系(system)の分類:開放系・閉鎖系・孤立系
- 状態量と過程量の違い
- 平衡状態の定義
- 準静的過程と可逆・不可逆過程
- Pythonによる状態変化の可視化
前提知識
この記事は熱力学の最初の記事です。特別な前提知識は不要ですが、微分積分の基礎があると理解が深まります。
系(System)の分類
熱力学では、まず注目する対象を系(system)として定義し、それ以外を外界(surroundings)と呼びます。系と外界の間の境界(boundary)を通じて、物質やエネルギーがやり取りされるかどうかによって、系を3種類に分類します。
開放系(Open System)
境界を通じて物質とエネルギーの両方が出入りできる系です。
例:沸騰しているやかん(蒸気が逃げ、外部から熱を受ける)
閉鎖系(Closed System)
境界を通じてエネルギーの出入りは可能だが、物質の出入りはない系です。
例:密閉されたシリンダー内の気体(ピストンを通じて仕事をやり取りするが、気体は漏れない)
孤立系(Isolated System)
物質もエネルギーも外界とやり取りしない系です。
例:理想的な断熱容器(完全な孤立系は理想化であり、実際には近似的にしか実現できません)
これらの関係をまとめると次の表になります。
| 系の種類 | 物質の移動 | エネルギーの移動 |
|---|---|---|
| 開放系 | 可 | 可 |
| 閉鎖系 | 不可 | 可 |
| 孤立系 | 不可 | 不可 |
状態量と過程量
状態量(State Variable)
系の現在の状態だけで値が定まる物理量を状態量と呼びます。状態量は経路によらず、始状態と終状態だけで変化量が決まります。
代表的な状態量:
- 圧力 $p$
- 温度 $T$
- 体積 $V$
- 内部エネルギー $U$
- エンタルピー $H$
- エントロピー $S$
数学的には、状態量の微小変化は完全微分(exact differential)で表されます。例えば、状態量 $f(x, y)$ の微小変化は:
$$ df = \frac{\partial f}{\partial x}\bigg|_y dx + \frac{\partial f}{\partial y}\bigg|_x dy $$
完全微分の条件は次の通りです。
$$ \frac{\partial}{\partial y}\left(\frac{\partial f}{\partial x}\right) = \frac{\partial}{\partial x}\left(\frac{\partial f}{\partial y}\right) $$
循環積分が0になることも状態量の特徴です。
$$ \oint df = 0 $$
過程量(Process Variable)
系がある状態から別の状態に変化する際の経路に依存する量を過程量と呼びます。
代表的な過程量:
- 仕事 $W$
- 熱 $Q$
過程量の微小量は、完全微分ではないことを強調して $\delta W$、$\delta Q$ と表記します( $dW$、$dQ$ とは書きません)。
$$ W = \int_{\text{経路}} \delta W \quad \text{(経路に依存)} $$
平衡状態
系の巨視的な性質(温度、圧力、密度など)が時間的に変化せず一様である状態を熱力学的平衡状態と呼びます。平衡状態は以下の3つの平衡が同時に成立している状態です。
- 熱平衡(thermal equilibrium): 系内で温度が一様
- 力学的平衡(mechanical equilibrium): 系内で圧力が一様
- 化学平衡(chemical equilibrium): 化学組成が変化しない
状態量は平衡状態においてのみ明確に定義されます。非平衡状態では温度や圧力が場所によって異なるため、系全体としての単一の値を定義できません。
準静的過程(Quasi-static Process)
系が常に平衡状態を保ちながら、無限にゆっくりと変化する過程を準静的過程と呼びます。
準静的過程では、各瞬間で系は平衡状態にあるため、状態量が常に定義されます。これにより、$p$-$V$ 図上に過程を連続的な曲線として描くことができます。
準静的でない過程(急激な膨張など)では、途中の状態が平衡から外れているため、$p$-$V$ 図上に明確な経路を描くことができません。
可逆過程と不可逆過程
可逆過程(Reversible Process)
系とその外界の両方を完全に元の状態に戻すことができる過程を可逆過程と呼びます。
可逆過程が成立するための条件は次の2つです。
- 過程が準静的であること
- 摩擦などの散逸がないこと
可逆過程は理想化された概念であり、実際の過程は必ず不可逆性を含みます。しかし、可逆過程は理論的な上限を与えるため、熱力学の解析において重要な基準となります。
不可逆過程(Irreversible Process)
系と外界を完全には元に戻せない過程を不可逆過程と呼びます。
不可逆性の原因:
- 摩擦
- 有限の温度差を通じた熱移動
- 自由膨張
- 混合
- 化学反応
不可逆過程では、エントロピーが生成されます。
$$ \Delta S_{\text{total}} = \Delta S_{\text{系}} + \Delta S_{\text{外界}} > 0 $$
Pythonでの実装
準静的過程と非準静的過程の違いを、ピストン内の気体の膨張を例にして可視化します。
import numpy as np
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# --- (1) 系の分類の図解 ---
categories = ['Open\nSystem', 'Closed\nSystem', 'Isolated\nSystem']
mass_flow = [1, 0, 0]
energy_flow = [1, 1, 0]
x = np.arange(len(categories))
width = 0.3
bars1 = axes[0].bar(x - width/2, mass_flow, width, label='物質の移動', color='steelblue')
bars2 = axes[0].bar(x + width/2, energy_flow, width, label='エネルギーの移動', color='coral')
axes[0].set_xticks(x)
axes[0].set_xticklabels(categories, fontsize=10)
axes[0].set_ylabel('可 (1) / 不可 (0)')
axes[0].set_title('系の分類')
axes[0].set_ylim(0, 1.5)
axes[0].legend()
axes[0].grid(True, alpha=0.3, axis='y')
# --- (2) 状態量(経路によらない)vs 過程量(経路による) ---
# 2つの経路で同じ始点・終点を結ぶ
V = np.linspace(1, 4, 200)
# 経路1: 等温膨張
p1 = 4.0 / V # pV = const
# 経路2: まず定容で圧力を下げ、次に定圧で膨張
V2a = np.array([1.0, 1.0])
p2a = np.array([4.0, 1.0])
V2b = np.array([1.0, 4.0])
p2b = np.array([1.0, 1.0])
axes[1].plot(V, p1, 'b-', linewidth=2, label='経路1(等温)')
axes[1].plot(V2a, p2a, 'r-', linewidth=2, label='経路2(定容→定圧)')
axes[1].plot(V2b, p2b, 'r-', linewidth=2)
axes[1].fill_between(V, p1, alpha=0.15, color='blue')
axes[1].plot([1], [4], 'ko', markersize=8)
axes[1].plot([4], [1], 'ko', markersize=8)
axes[1].annotate('始状態', (1, 4), textcoords="offset points", xytext=(10, 5), fontsize=10)
axes[1].annotate('終状態', (4, 1), textcoords="offset points", xytext=(10, 5), fontsize=10)
axes[1].set_xlabel('体積 $V$')
axes[1].set_ylabel('圧力 $p$')
axes[1].set_title('状態量 vs 過程量($p$-$V$ 図)')
axes[1].legend()
axes[1].grid(True, alpha=0.3)
axes[1].set_xlim(0, 5)
axes[1].set_ylim(0, 5)
# 仕事の計算
W1 = np.trapz(p1, V)
W2 = 0 + 1.0 * (4.0 - 1.0) # 定容: W=0, 定圧: W=p*dV
axes[1].text(2.2, 3.0, f'$W_1 = {W1:.2f}$', color='blue', fontsize=11)
axes[1].text(2.5, 0.5, f'$W_2 = {W2:.2f}$', color='red', fontsize=11)
# --- (3) 可逆過程と自由膨張(不可逆) ---
V_rev = np.linspace(1, 4, 200)
p_rev = 4.0 / V_rev # 準静的等温膨張
axes[2].plot(V_rev, p_rev, 'b-', linewidth=2, label='可逆過程(準静的)')
# 自由膨張(不可逆): 途中の状態が定義されない
axes[2].plot([1], [4], 'ro', markersize=8)
axes[2].plot([4], [1], 'ro', markersize=8)
axes[2].annotate('', xy=(4, 1), xytext=(1, 4),
arrowprops=dict(arrowstyle='->', color='red', lw=2, ls='--'))
axes[2].text(2.0, 3.2, '不可逆過程\n(途中の状態は不定)', color='red', fontsize=10)
axes[2].set_xlabel('体積 $V$')
axes[2].set_ylabel('圧力 $p$')
axes[2].set_title('可逆過程 vs 不可逆過程')
axes[2].legend()
axes[2].grid(True, alpha=0.3)
axes[2].set_xlim(0, 5)
axes[2].set_ylim(0, 5)
plt.tight_layout()
plt.savefig('thermodynamics_basic_concepts.png', dpi=150, bbox_inches='tight')
plt.show()
# 仕事の経路依存性を数値で確認
print("=== 仕事(過程量)の経路依存性 ===")
print(f"経路1(等温膨張): W = {W1:.4f}")
print(f"経路2(定容→定圧): W = {W2:.4f}")
print(f"同じ始状態・終状態でも仕事は異なる → 過程量")
# 状態量の経路非依存性
delta_p = 1.0 - 4.0
delta_V = 4.0 - 1.0
print(f"\n=== 状態量の経路非依存性 ===")
print(f"圧力変化 Δp = {delta_p:.1f}(どの経路でも同じ)")
print(f"体積変化 ΔV = {delta_V:.1f}(どの経路でも同じ)")
まとめ
本記事では、熱力学の基本概念について解説しました。
- 系の分類: 開放系(物質・エネルギー出入り可)、閉鎖系(エネルギーのみ可)、孤立系(出入り不可)
- 状態量と過程量: 状態量は経路によらない(完全微分)。過程量(仕事・熱)は経路に依存する
- 平衡状態: 熱平衡・力学的平衡・化学平衡が同時に成立する状態
- 準静的過程: 常に平衡を保ちながら変化する理想化された過程
- 可逆・不可逆過程: 可逆過程は準静的かつ散逸なし。実際の過程はすべて不可逆
次のステップとして、以下の記事も参考にしてください。