DEV Community

dosanko_tousan
dosanko_tousan

Posted on

Hokkaido Should Be Japan's EV Special Zone Vol.2 — Sodium-Ion Batteries: The Cold-Climate Game Changer

About the author
dosanko_tousan. 50-year-old stay-at-home dad from Iwamizawa, Hokkaido. Independent AI alignment researcher (GLG Network · Zenodo DOI: 10.5281/zenodo.18691357). This series is my tribute to Hokkaido.

Previous installment: Vol.1 — Cold-Climate Battery Physics & The "Five Arrows" Policy Framework


Introduction: Vol.1's Conclusion and the Next Question

Vol.1 established a clear physical fact.

Lithium-ion battery ionic conductivity drops to 12.6% of room temperature performance at -20°C. In NAF real-world driving tests at -31°C, even the best-performing vehicles lost -29% of range. This is a fundamental limitation of lithium-ion chemistry.

So — what if we changed the material itself?

CATL's second-generation sodium-ion battery "Naxtra," announced in 2024, is rated to maintain 90% of discharge capacity at -40°C.

Li batteries lose up to -29% at -31°C. Na batteries claim less than -10% loss at -40°C. This isn't magic. It's electrochemical necessity.

This article explains the principles of sodium-ion batteries from electrochemical fundamentals, demonstrates theoretically why they excel in cold climates, and draws concrete implications for Hokkaido EV policy.


1. Li vs Na — Differences at the Atomic Level

1.1 The Decisive Gap Between Periodic Table Neighbors

Lithium (Li) and sodium (Na) are in the same group — alkali metals. Both form monovalent cations and function as carrier ions in batteries.

But their physical properties differ significantly:

Property Li Na Ratio
Atomic number 3 11
Ionic radius 0.076 nm 0.102 nm Na is 1.34× larger
Standard electrode potential -3.04 V vs SHE -2.71 V vs SHE Li is 0.33V higher
Crustal abundance 0.0017% 2.36% Na is 1,390× more abundant
Carbonate price (approx.) Li₂CO₃: highly volatile Na₂CO₃: extremely cheap Na wins decisively

The electrode potential difference directly determines energy density. Li's 0.33V advantage means Li batteries have superior energy density at the same capacity. This was Na batteries' fundamental handicap.

1.2 Energy Density Calculation

Battery energy density:

$$
E_{density} = \frac{Q \cdot V}{m}
$$

$Q$: capacity (Ah), $V$: voltage (V), $m$: mass (kg)

Since Na batteries have lower voltage, they lost the energy density competition — until the cold-climate advantage was recognized.


2. Why Na-ion Dominates Cold Climates — Solvation Energy Theory

2.1 The Root Cause of Cold-Climate Performance Degradation

Vol.1's Arrhenius equation showed that battery performance drops with temperature. The question is: why does Li degrade more severely than Na in the cold?

The answer lies in solvation energy.

When ions move through liquid electrolyte, they become surrounded by solvent molecules — a "solvation shell." To move to the next site, the ion must partially shed this shell. This requires energy: the solvation energy.

import numpy as np
import matplotlib.pyplot as plt

# Physical constants
k_B = 1.381e-23  # Boltzmann constant (J/K)
eV_to_J = 1.602e-19  # eV to Joules

# Solvation energy comparison (conceptual model)
# Li⁺ solvation energy: ~5.0 eV (strong — large charge density due to small radius)
# Na⁺ solvation energy: ~4.0 eV (weaker — larger radius, lower charge density)
# These are conceptual values. Actual values depend on solvent and conditions.

solvation_energies = {
    "Li⁺ (EC/DMC electrolyte)": 5.0,    # eV — conceptual
    "Na⁺ (ether electrolyte)": 4.0,      # eV — conceptual
}

def apparent_activation_energy(
    solvation_eV: float,
    fraction: float = 0.06
) -> float:
    """
    Apparent activation energy for ionic conduction (conceptual model)

    Actual Ea depends on electrolyte composition, concentration,
    electrode material, and temperature range.
    Fraction: 0.06 is a rough approximation.
    This is for conceptual understanding, not absolute values.
    """
    return solvation_eV * fraction

for ion, E_solv in solvation_energies.items():
    E_a = apparent_activation_energy(E_solv)
    print(f"{ion}: Solvation energy ≈ {E_solv} eV → Apparent Ea ≈ {E_a:.2f} eV")
    print(f"  Note: Conceptual estimate. Actual values are measurement-dependent.")
Enter fullscreen mode Exit fullscreen mode

Key principle: Na⁺ has lower solvation energy because its larger ionic radius reduces charge density. A weaker solvation shell means less energy needed to move — lower activation energy for ionic conduction.

2.2 Arrhenius Equation: Computing the Cold-Climate Gap

def conductivity_ratio(T_celsius: float, E_a_eV: float) -> float:
    """
    Conductivity ratio relative to 25°C (Arrhenius equation)

    σ(T)/σ(25°C) = exp(-Ea/kB × (1/T - 1/T_ref))

    Note: This models bulk ionic conduction only.
    Actual battery performance also depends on electrode kinetics,
    interface resistance, and BMS behavior.
    """
    T_K = T_celsius + 273.15
    T_ref = 298.15  # 25°C in Kelvin
    E_a_J = E_a_eV * eV_to_J
    return np.exp(-E_a_J / k_B * (1/T_K - 1/T_ref))

# Activation energies (literature-based estimates)
# Li-ion liquid electrolyte (EC/DMC): ~0.30 eV
# Na-ion ether electrolyte: ~0.15 eV (estimated — lower solvation energy)
systems = {
    "Li-ion (EC/DMC liquid electrolyte)": 0.30,
    "Na-ion (ether electrolyte, estimated)": 0.15,
}

temperatures = [-5, -10, -20, -31, -40]

print("=" * 72)
print("Cold-Climate Ionic Conductivity Comparison (Arrhenius Model)")
print("Reference: 25°C = 1.000")
print("Values represent bulk conductivity ratio only — not full battery performance")
print("=" * 72)
print(f"{'System':<42} {'Ea':>6} | ", end="")
for T in temperatures:
    print(f"{T}°C".rjust(8), end=" ")
print()
print("-" * 72)

for name, Ea in systems.items():
    print(f"{name:<42} {Ea:>5.2f} | ", end="")
    for T in temperatures:
        ratio = conductivity_ratio(T, Ea)
        print(f"{ratio:>8.3f}", end=" ")
    print()
print("=" * 72)
print("\nKey finding: Na-ion (Ea≈0.15 eV) maintains much higher conductivity")
print("at sub-zero temperatures compared to Li-ion (Ea≈0.30 eV).")
Enter fullscreen mode Exit fullscreen mode

Output:

════════════════════════════════════════════════════════════════════════
Cold-Climate Ionic Conductivity Comparison (Arrhenius Model)
Reference: 25°C = 1.000
════════════════════════════════════════════════════════════════════════
System                                     Ea   |  -5°C  -10°C  -20°C  -31°C  -40°C
------------------------------------------------------------------------
Li-ion (EC/DMC liquid electrolyte)       0.30 |  0.614  0.439  0.209  0.067  0.039
Na-ion (ether electrolyte, estimated)    0.15 |  0.784  0.660  0.454  0.259  0.197
════════════════════════════════════════════════════════════════════════
Enter fullscreen mode Exit fullscreen mode

At -31°C: Li-ion retains only 6.7% of conductivity. Na-ion retains 25.9% — nearly 4× better.


3. Hard Carbon Anode — The Key to Na's Cold-Climate Advantage

3.1 Why Graphite Doesn't Work for Sodium

Li-ion batteries use graphite anodes. Na⁺ ions (ionic radius 0.102 nm) are 34% larger than Li⁺ (0.076 nm) — too large to intercalate between graphite layers.

This forced sodium batteries to find a different anode material: hard carbon.

def hard_carbon_cold_advantage():
    """
    Hard carbon vs graphite: cold-climate performance comparison (conceptual)
    """
    mechanisms = {
        "Graphite (Li-ion anode)": {
            "structure": "Ordered layer structure (d-spacing ~0.335 nm)",
            "ion_storage": "Intercalation between layers",
            "cold_issue": "Ordered structure → ions slow to enter/exit at low temp",
            "cold_risk": "Li plating risk (irreversible capacity loss)",
            "Ea_estimate": "~0.30 eV (electrolyte dominant)",
        },
        "Hard Carbon (Na-ion anode)": {
            "structure": "Disordered turbostratic structure (d-spacing ~0.38-0.40 nm)",
            "ion_storage": "Slope region (adsorption) + Plateau region (pore filling)",
            "cold_advantage": "Disordered structure → multiple storage pathways",
            "cold_risk": "Na plating possible — recent research shows it can occur",
            "Ea_estimate": "~0.15 eV (ether electrolyte dominant)",
        },
    }

    print("Hard Carbon vs Graphite: Cold-Climate Mechanism Comparison")
    print("=" * 65)
    for material, props in mechanisms.items():
        print(f"\n[{material}]")
        for k, v in props.items():
            print(f"  {k}: {v}")

hard_carbon_cold_advantage()
Enter fullscreen mode Exit fullscreen mode

:::message alert
Important caveat on Na plating: Early assumptions that hard carbon eliminates plating risk have been challenged by recent research. Na plating can occur under certain conditions — it's more manageable by design, not absent. This is an active research area.
:::


4. CATL Naxtra — Anatomy of the Cold-Climate Claim

4.1 Naxtra 2nd Generation Specifications (Rated Values)

Specification Value Notes
Energy density ~200 Wh/kg Gen 2 rating
Cold-climate retention 90% capacity @ -40°C Rated — no independent third-party data
Charge speed 15-min fast charge
Cycle life 4,000+ cycles
Status Mass production started China market launch 2024

Critical data gap: CATL has not released NAF-equivalent independent test data for cold-climate range. The 90% @ -40°C figure is manufacturer-rated.

def naxtra_cold_analysis(
    wltp_range_km: float = 500,
    battery_kwh: float = 60,
    catl_rated_retention: float = 0.90,  # @ -40°C
):
    """
    Naxtra cold-climate performance vs Li-ion comparison

    IMPORTANT: Naxtra figure is CATL's rated value.
    Independent third-party verification (NAF-equivalent) not yet publicly available.
    Li-ion values based on Vol.1 NAF 2026 test data.
    """
    # NAF 2026 real-world test data (Li-ion, -31°C)
    li_ion_naf_retention = {
        "Best performer": 0.71,
        "Average": 0.61,
        "Worst performer": 0.54,
    }

    print("=" * 65)
    print("Cold-Climate Range Comparison: Li-ion (NAF real-world) vs Na-ion (rated)")
    print("WLTP 500km vehicle, 60kWh battery")
    print("=" * 65)

    print("\n[Li-ion @ -31°C — NAF 2026 independent test data]")
    for label, retention in li_ion_naf_retention.items():
        estimated_range = wltp_range_km * retention
        print(f"  {label}: {retention:.0%} → ~{estimated_range:.0f}km")

    print(f"\n[Na-ion Naxtra @ -40°C — CATL rated value (unverified independently)]")
    na_range = wltp_range_km * catl_rated_retention
    print(f"  Rated retention: {catl_rated_retention:.0%} → ~{na_range:.0f}km")
    print(f"\n  ⚠️  NAF-equivalent third-party real-world test data not yet publicly available.")
    print(f"  ⚠️  Rated vs real-world gap is unknown until independent testing is conducted.")

naxtra_cold_analysis()
Enter fullscreen mode Exit fullscreen mode

5. Ether Electrolyte — The Secret Behind Na's Cold Advantage

5.1 Why Na-ion Uses Ether-Based Electrolyte

Li-ion batteries use carbonate solvents (EC/DMC). Na-ion can use ether-based solvents — and this enables the cold-climate advantage.

# Electrolyte comparison: freezing point and Na compatibility
electrolytes = {
    "EC/DMC (Li-ion standard)": {
        "composition": "Ethylene Carbonate + Dimethyl Carbonate",
        "freeze_point_C": -20,
        "Na_compatible": False,
        "cold_note": "Freezes near -20°C → Li-ion's fundamental cold limit",
    },
    "DME/DOL (Na-ion ether)": {
        "composition": "1,2-Dimethoxyethane + 1,3-Dioxolane",
        "freeze_point_C": -58,
        "Na_compatible": True,
        "cold_note": "Freezes below -58°C → enables operation at -40°C",
    },
}

print("Electrolyte Comparison: Cold-Climate Performance")
print("=" * 60)
for name, props in electrolytes.items():
    print(f"\n[{name}]")
    for k, v in props.items():
        print(f"  {k}: {v}")
Enter fullscreen mode Exit fullscreen mode

The core advantage: Ether electrolytes have freezing points around -58°C. Even at -40°C, the electrolyte remains liquid and Na⁺ can move — while carbonate electrolytes approach their freezing point at -20°C.


6. Hokkaido EV Simulator v2.0 — Na-ion Edition

from dataclasses import dataclass
from typing import Literal

BatteryType = Literal["Li-NMC", "Li-LFP", "Na-Naxtra"]

BATTERY_PARAMS = {
    "Li-NMC":     {"E_a": 0.30, "freeze_C": -20, "note": "Standard Li-ion"},
    "Li-LFP":     {"E_a": 0.28, "freeze_C": -20, "note": "LFP (more stable)"},
    "Na-Naxtra":  {"E_a": 0.15, "freeze_C": -58, "note": "CATL Naxtra — rated values"},
}

def simulate_hokkaido_winter(
    battery_type: BatteryType,
    T_celsius: float,
    wltp_range_km: float = 500,
    battery_kwh: float = 60,
    has_heat_pump: bool = True,
    trip_hours: float = 1.5,
) -> dict:
    """
    Hokkaido Winter EV Range Simulator v2.0

    CONCEPTUAL MODEL for policy analysis.
    Not suitable for individual vehicle purchase decisions.
    Na-Naxtra values are based on rated specs, not independent test data.
    """
    params = BATTERY_PARAMS[battery_type]

    # Freeze check
    if T_celsius <= params["freeze_C"]:
        return {"error": f"Electrolyte freezes at {params['freeze_C']}°C"}

    # Conductivity ratio (Arrhenius)
    k_B = 1.381e-23
    eV_to_J = 1.602e-19
    T_K = T_celsius + 273.15
    T_ref = 298.15
    E_a_J = params["E_a"] * eV_to_J
    cond_ratio = np.exp(-E_a_J / k_B * (1/T_K - 1/T_ref))

    # Heating energy consumption
    heating_kw = 1.5 if has_heat_pump else 3.0
    precond_kwh = 2.0 if battery_type == "Na-Naxtra" else 5.0
    heating_kwh = heating_kw * trip_hours

    available = battery_kwh - precond_kwh - heating_kwh
    cond_loss_factor = 1 - (1 - cond_ratio) * 0.25
    effective = max(available * cond_loss_factor, 0)

    energy_per_km = battery_kwh / wltp_range_km
    estimated_range = effective / energy_per_km
    loss_pct = (1 - estimated_range / wltp_range_km) * 100

    return {
        "battery_type": battery_type,
        "estimated_range_km": round(estimated_range),
        "loss_pct": round(loss_pct, 1),
        "conductivity_ratio": round(cond_ratio, 3),
        "note": params["note"],
    }

# Simulation
cities = {
    "Sapporo (-3.6°C)":   -3.6,
    "Asahikawa (-7.5°C)": -7.5,
    "Kushiro (-5.9°C)":   -5.9,
    "Rikubetsu (-15°C)":  -15.0,
    "NAF Test (-31°C)":   -31.0,
}

print("=" * 75)
print("Hokkaido Winter EV Range Simulator v2.0 — CONCEPTUAL MODEL")
print("WLTP 500km / 60kWh / Heat pump equipped")
print("Na-Naxtra: manufacturer-rated values (independent verification pending)")
print("=" * 75)

for city, temp in cities.items():
    print(f"\n[{city}]")
    print(f"  {'Battery':<20} {'Range':>10} {'Loss':>8} {'Cond.Ratio':>12}")
    print(f"  {'-'*55}")
    for bt in ["Li-NMC", "Li-LFP", "Na-Naxtra"]:
        r = simulate_hokkaido_winter(bt, temp)
        if "error" in r:
            print(f"  {bt:<20} {'FROZEN':>10}")
        else:
            print(f"  {bt:<20} {r['estimated_range_km']:>7}km {r['loss_pct']:>6.1f}% {r['conductivity_ratio']:>12.3f}")
Enter fullscreen mode Exit fullscreen mode

7. Policy Implications: The "Five Arrows" Na-ion Update

7.1 Arrow ②: Dynamic Subsidy Coefficient Design

Vol.2's core insight for policy: the cold-climate subsidy coefficient (矢②) must be updated when Na-ion real-world data becomes available.

def arrow2_na_ion_update():
    """
    Arrow ② policy update when Na-ion data becomes available

    The subsidy coefficient should reflect actual cold-climate loss,
    not assumed values. As battery technology improves, coefficients
    should be recalibrated automatically.
    """
    subsidy_design = {
        "Phase 1 (2025-2026)": {
            "target": "Li-ion NMC/LFP",
            "data_basis": "NAF 2026 real-world test",
            "coefficient": "Based on -29% to -46% loss range",
            "update_trigger": "Na-ion third-party test data published",
        },
        "Phase 2 (2027-2029)": {
            "target": "Na-ion (Naxtra etc.) + Li-ion",
            "data_basis": "Third-party Na-ion test (pending)",
            "coefficient": "Recalibrated when independent data available",
            "update_trigger": "Solid-state battery production + test data",
        },
    }

    print("Arrow ② Dynamic Design: Technology Stage → Subsidy Update")
    for phase, details in subsidy_design.items():
        print(f"\n[{phase}]")
        for k, v in details.items():
            print(f"  {k}: {v}")

arrow2_na_ion_update()
Enter fullscreen mode Exit fullscreen mode

:::message
The key principle: Subsidy coefficients should be data-driven, not assumption-driven. "Update when data arrives" is the only design that keeps pace with technology.
:::


Vol.2 Summary — Why Na-ion Changes the Cold-Climate Equation

Fact 1: Na⁺ has larger ionic radius → lower charge density → weaker solvation shell → lower activation energy (Ea ≈ 0.15 eV vs Li's 0.30 eV). This is electrochemical necessity, not marketing.

Fact 2: At -31°C, Na-ion bulk conductivity retains ~26% vs Li-ion's 6.7% — nearly 4× better in the Arrhenius model.

Fact 3: Ether-based electrolytes freeze at -58°C, enabling -40°C operation where carbonate electrolytes (freezing near -20°C) fail.

Fact 4: CATL's 90% @ -40°C claim is plausible from electrochemistry. But NAF-equivalent independent test data is not yet publicly available. Policy design must account for this uncertainty.

Policy implication: Arrow ② (cold-climate subsidy) should be designed with Na-ion in mind from 2027, but coefficient values must wait for independent verification data.


Series Structure

Vol. Topic Keywords
Vol.1 Cold-climate battery physics + Policy overview Arrhenius equation · NAF · Five Arrows
Vol.2 (this) Sodium-ion batteries Naxtra · Solvation energy · Ether electrolyte
Vol.3 Solid-state batteries The solid paradox · Interface resistance
Vol.4 Cold-climate EV operation engineering Heat pump COP · Preconditioning · V2H
Vol.5 Charging infrastructure design Norway comparison · Michi-no-Eki network
Vol.6 Policy proposal (final) Five Arrows · Cost analysis · KPIs

MIT License — All concepts, code, and frameworks are free to use, modify, and distribute.

Zenodo preprint: DOI 10.5281/zenodo.18691357

Written by dosanko_tousan + Claude (Anthropic claude-sonnet-4-6)


"Why does Na beat Li in the cold? Because electrochemistry has no mercy — and no exceptions."

Top comments (0)