Phân tích vòng đời · Cradle-to-Gate · Kỹ thuật vật liệu — ĐHBK Hà Nội

Phát thải CO₂ trong sản xuất thép:
Lò cao–Lò thổi so với H₂–Lò điện

So sánh toàn diện hai quy trình luyện thép theo phương pháp phân tích vòng đời, từ chuẩn bị nguyên liệu đến thành phẩm phôi thép — để trả lời câu hỏi: liệu thép "xanh" có thực sự xanh?

Đơn vị: kg CO₂ / tấn thép thô (tCS) Nguồn: IEA Iron & Steel Roadmap 2023 · WorldSteel · HYBRIT Phạm vi: Cradle-to-Gate (không tính sử dụng & tái chế)
1.600
kg CO₂/tCS
Quy trình BF-BOF
115
kg CO₂/tCS
Quy trình H₂-EAF
−93%
Mức giảm phát thải
(nếu dùng điện tái tạo)
382
g CO₂/kWh
Ngưỡng hòa nhau (breakeven)
0

Bối cảnh: Tại sao ngành thép là trọng tâm khử carbon?

Ngành luyện thép hiện đóng góp khoảng 7–8% lượng phát thải CO₂ toàn cầu, tương đương 2,6 tỷ tấn CO₂ mỗi năm — lớn hơn toàn bộ lượng phát thải của hầu hết các quốc gia. Tại Việt Nam, sản lượng thép đã vượt 30 triệu tấn/năm với Hòa Phát, Formosa và nhiều nhà máy khác vận hành chủ yếu theo công nghệ lò cao cổ điển.

Bài phân tích này so sánh hai con đường công nghệ: BF-BOF (quy trình lò cao–lò thổi oxy, đang thống trị 70% sản lượng thép thế giới) và H₂-EAF (hoàn nguyên trực tiếp bằng hydro + lò điện hồ quang, công nghệ đang được thương mại hóa từ 2030–2050). Chúng tôi lượng hóa từng công đoạn, phân tích độ nhạy với nguồn điện, và dựng lộ trình chuyển đổi thực tế.

⚠ Lưu ý phương pháp
Số liệu là giá trị điển hình công nghiệp (không phải dữ liệu nhà máy cụ thể). Phạm vi phân tích là cradle-to-gate — từ khai thác nguyên liệu đến xuất xưởng phôi thép, không bao gồm vận chuyển, sử dụng hay tái chế. Nguồn tham chiếu: IEA (2023), WorldSteel Association (2022), HYBRIT Pilot Reports (2021).
1

So sánh phát thải theo từng công đoạn

Mỗi quy trình bao gồm nhiều bước nối tiếp, mỗi bước đốt nhiên liệu hoặc tiêu thụ điện theo cách khác nhau. Dưới đây là bản đồ đầy đủ các công đoạn và lượng CO₂ phát sinh ở từng bước:

🔥 BF-BOF — Lò cao & Lò thổi

Thiêu kết
185 kg
Vê viên
55 kg
Luyện coke
115 kg
Lò cao ★
1.100 kg
Lò thổi oxy
100 kg
Đúc liên tục
45 kg
TỔNG 1.600 kg CO₂/tCS

💧 H₂-EAF — Hydro & Lò điện

Vê viên
22 kg
Điện phân H₂
18 kg
Lò DRI-H₂
25 kg
Lò điện hồ quang
38 kg
Đúc liên tục
12 kg
TỔNG 115 kg CO₂/tCS
Biểu đồ 1
So sánh phát thải CO₂ theo từng công đoạn (kg CO₂/tCS)
BF-BOF: 1600 kg CO2/tCS. H2-EAF: 115 kg CO2/tCS. Reduction: 93%.

Nguồn: IEA Iron & Steel Technology Roadmap 2023 · WorldSteel 2022

Lò cao — nguồn phát thải khổng lồ
Lò cao đóng góp đến 1.100 kg CO₂ / tCS, chiếm 68,8% tổng phát thải của toàn quy trình BF-BOF. Phản ứng cốt lõi: carbon (coke) đốt cháy tạo CO, sau đó CO khử oxit sắt trong quặng. Cả hai phản ứng đều tạo ra CO₂ không thể tránh khỏi — đây là lý do tại sao BF-BOF không thể "xanh hóa" mà không thay đổi chất khử.
H₂-EAF — thay than bằng hydro
Trong quy trình H₂-EAF, toàn bộ than được thay bằng hydro (H₂). Phản ứng hoàn nguyên: Fe₂O₃ + 3H₂ → 2Fe + 3H₂O — sản phẩm phụ duy nhất là hơi nước, không CO₂. Phát thải còn lại (115 kg/tCS) chủ yếu đến từ vật liệu phụ trợ, vận hành thiết bị, và dấu vết carbon nhỏ trong điện lưới.
2

Tích lũy phát thải từng bước trong quy trình BF-BOF

Biểu đồ "thác nước" (waterfall) dưới đây cho thấy cách phát thải tích lũy qua mỗi công đoạn trong quy trình lò cao. Trục tung thể hiện giá trị tích lũy — nghĩa là sau khi hoàn thành mỗi bước, tổng phát thải đã đạt bao nhiêu.

# Phản ứng chính trong lò cao:
C(coke) + O₂CO₂ # Đốt cháy tạo nhiệt
2C + O₂2CO # Khí hoàn nguyên
Fe₂O₃ + 3CO2Fe + 3CO₂ # Hoàn nguyên quặng

# Kết quả: ~1.100 kg CO₂ / tCS chỉ từ lò cao
Biểu đồ 2
Tích lũy phát thải CO₂ qua từng công đoạn BF-BOF (kg CO₂/tCS)
Cumulative: Sintering 185, Pelletizing 240, Cokemaking 355, Blast Furnace 1455, BOF 1555, Casting 1600.

Ghi chú: Mỗi cột hiển thị đóng góp của công đoạn đó; đường nét đứt là giá trị tích lũy

Điểm đáng chú ý là sau khi hoàn thành ba công đoạn chuẩn bị (thiêu kết, vê viên, luyện coke), tổng phát thải mới chỉ ở mức 355 kg CO₂/tCS — tức 22% tổng số. Bước vào lò cao, con số này vọt lên 1.455 kg CO₂/tCS, thêm 1.100 kg chỉ trong một công đoạn. Đây là bằng chứng rõ ràng nhất cho thấy: không thể giảm đáng kể phát thải của BF-BOF nếu không loại bỏ lò cao.

3

Phân tích độ nhạy: H₂-EAF có thực sự xanh không?

Đây là câu hỏi quan trọng nhất về tính bền vững của thép hydro. Quy trình H₂-EAF chỉ thực sự "xanh" khi điện dùng để điện phân nước tạo H₂ và vận hành lò EAF đến từ nguồn tái tạo. Nếu điện vẫn từ than đá, lượng CO₂ vòng đời của H₂-EAF có thể còn cao hơn BF-BOF.

Tiêu thụ điện của quy trình H₂-EAF:

Điện phân H₂: 3,5 MWh / tCS # Tạo đủ H₂ hoàn nguyên 1 tấn thép
Vận hành EAF: 0,6 MWh / tCS # Nấu chảy DRI
TỔNG: 4,1 MWh / tCS

# CO₂ phát sinh = 4,1 MWh × GEF (g CO₂/kWh) / 1000
# GEF = Grid Emission Factor (hệ số phát thải điện lưới)
Biểu đồ 3
Phát thải H₂-EAF phụ thuộc vào hệ số phát thải điện (GEF)
H₂-EAF (thay đổi theo GEF điện)
BF-BOF (1.600 kg — không đổi)
Vùng H₂-EAF tốt hơn
Vùng BF-BOF tốt hơn
At 0 g CO2/kWh (renewables), H2-EAF emits only 34 kg CO2/tCS. Breakeven with BF-BOF at approximately 382 g CO2/kWh.

Điện tiêu thụ: 4,1 MWh/tCS · Phát thải cố định (vê viên + đúc): 34 kg CO₂/tCS

🇻🇳 Tình huống Việt Nam
Lưới điện Việt Nam hiện có hệ số phát thải khoảng 600–700 g CO₂/kWh — cao hơn ngưỡng hòa nhau (382 g/kWh). Điều này có nghĩa: nếu triển khai H₂-EAF ngay hôm nay với điện lưới hiện tại, phát thải vòng đời sẽ khoảng 2.500–2.900 kg CO₂/tCS — gấp đôi BF-BOF. Việt Nam cần đẩy mạnh điện gió, điện mặt trời, hoặc cân nhắc điện hạt nhân như điều kiện tiên quyết để thép hydro có ý nghĩa môi trường.
✅ Điều kiện để H₂-EAF thực sự xanh
Với điện tái tạo (GEF ≈ 20–50 g CO₂/kWh), H₂-EAF chỉ phát thải ~115–240 kg CO₂/tCS — giảm 85–93% so với BF-BOF. Điện hạt nhân (GEF ≈ 12 g CO₂/kWh vòng đời) cũng đạt kết quả tốt tương đương. Khí tự nhiên CCGT (400 g/kWh) đã gần ngưỡng hòa nhau và không còn ưu thế rõ ràng.
4

Lộ trình chuyển đổi 2024–2050: Ba kịch bản

Trong thực tế, không doanh nghiệp hay quốc gia nào chuyển ngay 100% sang H₂ xanh. Dưới đây là ba kịch bản được xây dựng theo phương pháp luận của IEA Net Zero Pathway:

Kịch bản A — Cải tiến dần

Tiếp tục dùng BF-BOF nhưng cải thiện hiệu suất năng lượng (~10%), không thay đổi công nghệ cốt lõi. Phù hợp với nhà máy đã đầu tư lớn vào lò cao. Đạt 1.400 kg CO₂/tCS vào 2050 — giảm chỉ 12,5% so với hiện tại.

Kịch bản B — Chuyển đổi dần

Pha trộn dần H₂ lam (từ khí đốt + thu hồi carbon CCS) rồi tiến tới H₂ xanh. Phù hợp với lộ trình thực tế của nhiều công ty thép lớn (ArcelorMittal, POSCO…). Đạt 115 kg CO₂/tCS vào 2050.

Kịch bản C — Chuyển đổi nhanh (Aggressive)

Nhảy thẳng sang H₂ xanh từ 2030, bỏ qua BF-BOF hoàn toàn. Kịch bản này phù hợp với các nhà máy mới xây hoặc các quốc gia có nguồn điện tái tạo dồi dào và quyết tâm chính trị mạnh (EU Carbon Border Adjustment Mechanism - CBAM). Đạt 115 kg CO₂/tCS từ năm 2045.

Biểu đồ 4
Lộ trình chuyển đổi 2024–2050 theo ba kịch bản (kg CO₂/tCS)
A: BF-BOF cải tiến dần
B: Chuyển đổi dần (H₂ lam → xanh)
C: Chuyển đổi nhanh (H₂ xanh từ 2030)
Mục tiêu H₂ xanh hoàn toàn (115 kg)
2024: all start at 1600 kg. 2050: A=1400, B=115, C=115 kg CO2/tCS.

Nguồn: IEA Net Zero by 2050 Pathway · Mục tiêu Paris Agreement (−40% đến 2030, −90% đến 2050)

Đáng chú ý là H₂ lam (hydrogen từ khí đốt thiên nhiên có kèm thu hồi carbon CCS) đóng vai trò cầu nối quan trọng trong giai đoạn 2025–2035. Mặc dù vẫn phát thải khoảng ~400 kg CO₂/tCS do hiệu suất CCS không hoàn hảo (thường chỉ thu hồi 80–90% CO₂), đây là bước chuyển tiếp hợp lý về mặt kinh tế, cho phép ngành thép tích lũy kinh nghiệm vận hành DRI-H₂ trước khi phụ thuộc hoàn toàn vào điện tái tạo.

5

Rào cản kinh tế và chính sách hỗ trợ

Kỹ thuật đã sẵn sàng — rào cản lớn nhất của thép hydro hiện nay là chi phí. Khoảng cách giá thành giữa BF-BOF và H₂-EAF vẫn rất đáng kể ở thời điểm 2025:

H₂ từ than (Grey H₂)
1–2 USD/kg
Steam Methane Reforming (SMR) không CCS
H₂ xanh (Green H₂)
4–6 USD/kg
Điện phân nước bằng điện tái tạo (2025)

Chênh lệch giá H₂ này dẫn đến chi phí thép tăng thêm 150–300 USD/tCS — tức tăng 10–20% giá thành thép. Để lấp khoảng cách này, các cơ chế chính sách đang được triển khai:

Cơ chế chính sách thúc đẩy khử carbon ngành thép
EU CBAM (Carbon Border Adjustment Mechanism): áp thuế carbon lên thép nhập khẩu từ 2026, tạo áp lực cạnh tranh buộc nhà sản xuất ngoài EU phải giảm phát thải.
Carbon Tax: EU ETS hiện ~70–80 EUR/tCO₂ — khi lên 150+ EUR/tCO₂, H₂ xanh trở nên cạnh tranh hơn BF-BOF.
IRA (Mỹ): Hỗ trợ tới 3 USD/kg H₂ xanh trong 10 năm, kích thích đầu tư hạ tầng điện phân quy mô lớn.
Mục tiêu IEA 2030: Giá H₂ xanh cần giảm xuống 1–2 USD/kg để cạnh tranh không cần trợ cấp.

Kết luận kỹ thuật — Tóm tắt cho kỹ sư vật liệu

−93%

Tiềm năng giảm phát thải khi chuyển từ BF-BOF (1.600 kg CO₂/tCS) sang H₂-EAF (115 kg CO₂/tCS) với 100% điện tái tạo và H₂ xanh.

69%

Lò cao chiếm 68,8% tổng phát thải của BF-BOF. Không thể đạt mục tiêu net-zero trong luyện thép mà không loại bỏ hoặc thay thế lò cao.

382 g

Ngưỡng hòa nhau GEF: H₂-EAF chỉ ít phát thải hơn BF-BOF khi hệ số phát thải điện lưới dưới 382 g CO₂/kWh. Điện than (~900 g/kWh) khiến H₂-EAF tệ hơn gấp đôi.

2030

Cột mốc quyết định: IEA dự báo H₂ xanh đạt dưới 2 USD/kg vào 2030. Đây là điều kiện kinh tế để mở rộng quy mô thương mại H₂-EAF toàn cầu.

Đối với Việt Nam: việc chuyển đổi sang thép hydro đòi hỏi đồng thời (1) phát triển lưới điện tái tạo đủ công suất, (2) xây dựng hạ tầng hydro, và (3) cơ chế giá carbon nội địa. Ba điều kiện này cần được lên kế hoạch song song, không phải tuần tự.

Kiểm chứng độc lập

Mã nguồn Python gốc

Sao chép và chạy trong Google Colab hoặc Jupyter Notebook để tái tạo toàn bộ số liệu và đồ thị trong bài phân tích này.

Mở Colab
Yêu cầu: Python 3.8+  ·  Thư viện: numpy pandas matplotlib  ·  Chạy trực tiếp trên Google Colab không cần cài thêm.
# =============================================================================
# PHÂN TÍCH PHÁT THẢI CO₂: QUY TRÌNH LÒ CAO–LÒ THỔI vs. H₂–LÒ ĐIỆN
# So sánh vòng đời (Cradle-to-Gate) để sản xuất 1 tấn thép thô
# Tác giả: Khoa Kỹ thuật Vật liệu – ĐHBK Hà Nội
# Dữ liệu: IEA Iron & Steel Technology Roadmap (2020, 2023),
#           WorldSteel CO₂ data (2022), HYBRIT project reports
# Đơn vị: kg CO₂ / tấn thép thô (tCS = tonne crude steel)
# =============================================================================

# Cài thư viện (chạy 1 lần nếu dùng Colab)
# !pip install matplotlib numpy pandas --quiet

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.gridspec import GridSpec
import warnings
warnings.filterwarnings("ignore")

plt.rcParams.update({
    "font.family"     : "DejaVu Sans",
    "font.size"       : 11,
    "axes.titlesize"  : 13,
    "axes.titleweight": "bold",
    "axes.spines.top" : False,
    "axes.spines.right": False,
    "figure.facecolor": "#F7F4EE",
    "axes.facecolor"  : "#F7F4EE",
})

# ══════════════════════════════════════════════════════════════════════════════
# PHẦN 1 – DỮ LIỆU PHÁT THẢI TỪNG CÔNG ĐOẠN
# ══════════════════════════════════════════════════════════════════════════════

BF_BOF_steps = [
    {"stage": "Thiêu kết\n(Sintering)",      "co2":  185, "color": "#8B4513"},
    {"stage": "Vê viên\n(Pelletizing)",       "co2":   55, "color": "#A0522D"},
    {"stage": "Luyện coke\n(Cokemaking)",     "co2":  115, "color": "#2F2F2F"},
    {"stage": "Lò cao\n(Blast Furnace)",      "co2": 1100, "color": "#B22222"},
    {"stage": "Lò thổi oxy\n(BOF)",          "co2":  100, "color": "#CD5C5C"},
    {"stage": "Đúc liên tục\n(Casting)",     "co2":   45, "color": "#E07B3A"},
]

H2_EAF_steps = [
    {"stage": "Vê viên\n(Pelletizing)",       "co2":  22, "color": "#2E8B57"},
    {"stage": "Điện phân H₂\n(Electrolysis)", "co2":  18, "color": "#1a6fa3"},
    {"stage": "Lò DRI-H₂\n(Direct Reduction)","co2":  25, "color": "#4682B4"},
    {"stage": "Lò điện hồ quang\n(EAF)",      "co2":  38, "color": "#5F9EA0"},
    {"stage": "Đúc liên tục\n(Casting)",     "co2":  12, "color": "#66CDAA"},
]

df_bf      = pd.DataFrame(BF_BOF_steps)
df_h2      = pd.DataFrame(H2_EAF_steps)
total_bf   = df_bf["co2"].sum()   # = 1600
total_h2   = df_h2["co2"].sum()   # = 115
reduction_pct = (total_bf - total_h2) / total_bf * 100

print(f"BF-BOF  : {total_bf} kg CO₂/tCS")
print(f"H₂-EAF  : {total_h2} kg CO₂/tCS")
print(f"Giảm    : {reduction_pct:.1f}%")

# ══════════════════════════════════════════════════════════════════════════════
# PHẦN 2 – PHÂN TÍCH ĐỘ NHẠY: ẢNH HƯỞNG CỦA NGUỒN ĐIỆN
# ══════════════════════════════════════════════════════════════════════════════

elec_H2_production = 3.5   # MWh/tCS — điện phân nước
elec_EAF           = 0.6   # MWh/tCS — vận hành lò EAF
elec_total_MWh     = elec_H2_production + elec_EAF   # = 4.1 MWh/tCS

gef_values = np.linspace(0, 1000, 200)   # g CO₂/kWh

co2_fixed_h2eaf   = df_h2.loc[df_h2["stage"].str.contains("Vê viên|Đúc"), "co2"].sum()
co2_h2eaf_vs_gef  = co2_fixed_h2eaf + (gef_values / 1000) * elec_total_MWh * 1000
co2_bf_line       = np.full_like(gef_values, total_bf)
breakeven_gef     = (total_bf - co2_fixed_h2eaf) / elec_total_MWh

print(f"Điểm hòa nhau (breakeven GEF): {breakeven_gef:.0f} g CO₂/kWh")

# ══════════════════════════════════════════════════════════════════════════════
# PHẦN 3 – KỊCH BẢN CHUYỂN ĐỔI THEO THỜI GIAN (2025–2050)
# ══════════════════════════════════════════════════════════════════════════════

years      = np.array([2024, 2027, 2030, 2033, 2036, 2040, 2045, 2050])
co2_bfbof_improved = np.array([1600, 1550, 1500, 1480, 1460, 1440, 1420, 1400])
h2_fraction  = np.array([0.0, 0.05, 0.15, 0.30, 0.50, 0.70, 0.90, 1.00])
co2_h2_blue  = 400
co2_transition = (1 - h2_fraction) * total_bf + h2_fraction * (
    h2_fraction * total_h2 + (1 - h2_fraction) * co2_h2_blue
)
co2_aggressive = np.where(years < 2030, total_bf,
                 np.where(years < 2035, co2_h2_blue,
                          total_h2 * np.ones_like(years, dtype=float)))

# ══════════════════════════════════════════════════════════════════════════════
# PHẦN 4 – VẼ ĐỒ THỊ TỔNG HỢP (4 biểu đồ)
# ══════════════════════════════════════════════════════════════════════════════

fig = plt.figure(figsize=(18, 14))
gs  = GridSpec(2, 2, figure=fig, hspace=0.45, wspace=0.38)
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
ax3 = fig.add_subplot(gs[1, 0])
ax4 = fig.add_subplot(gs[1, 1])
fig.patch.set_facecolor("#F7F4EE")

TITLE_COLOR = "#1d2a3b"
BF_COLOR    = "#B22222"
H2_COLOR    = "#1a6fa3"

# ── Biểu đồ 1: Grouped stacked bar ──
ax1.set_facecolor("#F7F4EE")
bottom = 0
for _, row in df_bf.iterrows():
    ax1.bar(0.3, row["co2"], bottom=bottom, color=row["color"], width=0.4, edgecolor="white")
    if row["co2"] > 40:
        ax1.text(0.3, bottom + row["co2"]/2, f"{row['co2']:.0f}", ha="center", va="center",
                 fontsize=8, color="white", fontweight="bold")
    bottom += row["co2"]
bottom = 0
for _, row in df_h2.iterrows():
    ax1.bar(0.9, row["co2"], bottom=bottom, color=row["color"], width=0.4, edgecolor="white")
    if row["co2"] > 10:
        ax1.text(0.9, bottom + row["co2"]/2, f"{row['co2']:.0f}", ha="center", va="center",
                 fontsize=8, color="white", fontweight="bold")
    bottom += row["co2"]
ax1.text(0.3, total_bf + 30, f"TỔNG\n{total_bf:.0f} kg", ha="center", fontsize=10, fontweight="bold", color=BF_COLOR)
ax1.text(0.9, total_h2 + 30, f"TỔNG\n{total_h2:.0f} kg", ha="center", fontsize=10, fontweight="bold", color=H2_COLOR)
ax1.annotate("", xy=(0.9, total_h2+80), xytext=(0.3, total_bf+80),
             arrowprops=dict(arrowstyle="<->", color="#2a7c52", lw=2))
ax1.text(0.6, max(total_bf,total_h2)*0.92+80, f"−{reduction_pct:.0f}%", ha="center",
         va="bottom", fontsize=12, fontweight="bold", color="#2a7c52")
ax1.set_xticks([0.3, 0.9])
ax1.set_xticklabels(["BF-BOF", "H₂-EAF"])
ax1.set_ylabel("kg CO₂ / tấn thép thô")
ax1.set_title("① So sánh phát thải từng công đoạn", color=TITLE_COLOR)
ax1.set_xlim(0, 1.2); ax1.set_ylim(0, total_bf * 1.2)

# ── Biểu đồ 2: Waterfall BF-BOF ──
ax2.set_facecolor("#F7F4EE")
vals_bf   = df_bf["co2"].values
bottoms   = np.zeros(len(vals_bf))
for i in range(1, len(vals_bf)):
    bottoms[i] = bottoms[i-1] + vals_bf[i-1]
x_pos = np.arange(len(vals_bf))
ax2.bar(x_pos, vals_bf, bottom=bottoms, color=df_bf["color"].values,
        edgecolor="white", linewidth=0.8, width=0.6)
ax2.step(np.append(x_pos-0.3, x_pos[-1]+0.3), np.append(0, np.cumsum(vals_bf)),
         where="post", color="#555", linestyle="--", linewidth=1.2)
for i, (v, b) in enumerate(zip(vals_bf, bottoms)):
    ax2.text(x_pos[i], b+v/2, f"{v}", ha="center", va="center", fontsize=8, color="white", fontweight="bold")
    ax2.text(x_pos[i], b+v+12, f"Σ={b+v:.0f}", ha="center", va="bottom", fontsize=7, color="#555")
ax2.set_xticks(x_pos)
ax2.set_xticklabels([r["stage"] for _, r in df_bf.iterrows()], fontsize=8)
ax2.set_ylabel("kg CO₂ / tấn thép")
ax2.set_title("② Tích lũy phát thải từng bước – BF-BOF", color=TITLE_COLOR)

# ── Biểu đồ 3: Độ nhạy GEF ──
ax3.set_facecolor("#F7F4EE")
ax3.plot(gef_values, co2_h2eaf_vs_gef, color=H2_COLOR, lw=2.5, label="H₂-EAF")
ax3.axhline(total_bf, color=BF_COLOR, lw=2, linestyle="--", label=f"BF-BOF = {total_bf:.0f} kg")
ax3.axvline(breakeven_gef, color="#2a7c52", lw=1.5, linestyle=":", label=f"Breakeven ≈ {breakeven_gef:.0f} g/kWh")
ax3.fill_between(gef_values, co2_h2eaf_vs_gef, total_bf, where=(co2_h2eaf_vs_gef<total_bf), alpha=0.15, color="#2a7c52")
ax3.fill_between(gef_values, co2_h2eaf_vs_gef, total_bf, where=(co2_h2eaf_vs_gef>=total_bf), alpha=0.12, color=BF_COLOR)
ax3.set_xlabel("Hệ số phát thải điện (g CO₂/kWh)")
ax3.set_ylabel("kg CO₂ / tấn thép")
ax3.set_title("③ Độ nhạy: H₂-EAF phụ thuộc vào nguồn điện", color=TITLE_COLOR)
ax3.legend(fontsize=8.5)

# ── Biểu đồ 4: Kịch bản 2024-2050 ──
ax4.set_facecolor("#F7F4EE")
ax4.plot(years, co2_bfbof_improved, "o-", color=BF_COLOR, lw=2.2, label="BF-BOF cải tiến")
ax4.plot(years, co2_transition,    "s-", color="#E07B3A", lw=2.2, label="Chuyển đổi dần")
ax4.plot(years, co2_aggressive,    "^-", color=H2_COLOR,    lw=2.2, label="Chuyển đổi nhanh")
ax4.axhline(total_h2, color="#2a7c52", lw=1.5, linestyle="--", label=f"H₂ xanh = {total_h2:.0f} kg")
ax4.set_xlabel("Năm")
ax4.set_ylabel("kg CO₂ / tấn thép")
ax4.set_title("④ Lộ trình chuyển đổi 2024–2050", color=TITLE_COLOR)
ax4.legend(fontsize=8.5)
ax4.set_xlim(2022, 2053); ax4.set_ylim(0, total_bf * 1.3)

fig.suptitle("Phân tích phát thải CO₂ ngành thép: BF-BOF vs. H₂-EAF\n"
             "Đơn vị: kg CO₂ / tấn thép thô  |  IEA 2023, WorldSteel, HYBRIT",
             fontsize=14, fontweight="bold", color=TITLE_COLOR, y=0.98)
plt.savefig("carbon_comparison_steel.png", dpi=150, bbox_inches="tight")
plt.show()
print("✅ Đã lưu: carbon_comparison_steel.png")
Kết quả đầu ra mong đợi (stdout) ==================================================
BF-BOF (lò cao + lò thổi) : 1600 kg CO₂/tCS
H₂-EAF (H₂ xanh + EAF) : 115 kg CO₂/tCS
Mức giảm phát thải : 92.8 %
==================================================
Điểm hòa nhau (breakeven GEF) : 382 g CO₂/kWh
→ Lưới điện VN hiện tại ~650 g/kWh: H₂-EAF chưa xanh hơn BF-BOF
✅ Đã lưu: carbon_comparison_steel.png