Falgun Associates · MSc Energy Systems Hilary 2026 · what it costs to decarbonise Bangladesh, and what the system actually looks like.
Central case: Case_NetZero2050_NDC · myopic foresight 2030 → 2035 → 2050 · brownfield BPDB fleet preserved · CO₂ cap 247 / 225 / 0 Mt
Solar dominates new-build (108 GW @ ~14% CF → 130 TWh). Nuclear (Rooppur expansion to 25 GW) provides round-the-clock baseload. Gas-with-CCS handles industrial residual emissions; DAC closes the loop.
10× growth from 2030 to 2050 (25 → 108 GW). Generates 130 TWh annually — enough to cover ~35 % of total demand. Coupled with 230 GWh battery storage to bridge night demand peaks.
From 4.1 GW (Rooppur 1+2 brownfield) to 25.2 GW by 2050 — that's ~6 additional Rooppur-sized reactors. Provides 205 TWh of carbon-free baseload, anchoring the system through monsoon and night.
For true net-zero: 21 GW of gas-for-industry-CC + 7.8 GW coal-for-industry-CC + 5.4 GW process-emissions CC + 3.1 GW DAC for residuals. BECCS (1.2 GW) provides negative emissions to offset hardest-to-abate sectors.
NZ Myopic at €37.3 B/yr vs BAU Myopic at €26.7 B/yr. Cost gap of €10.5 B/yr is the deep-decarb premium — driven by CCS infrastructure (gas-CC 21 GW, DAC 3 GW) and 6× nuclear expansion.
€39.6 B (NZ Greenfield) vs €37.3 B (NZ Myopic). Brownfield BPDB fleet provides ~€2 B/yr of "free" already-paid-for capacity. Argues for keeping retiring fossil online to DateOut rather than pre-emptive shutdown.
BAU: 140 GW solar by 2050 (CO₂ cap loose at 970 Mt, but solar is just cheap). NZ Myopic: 108 GW. Greenfield NZ: 73 GW (uses more nuclear instead). Solar is the workhorse for variable supply.
Net-zero scenarios build 6–7× new Rooppur-class reactors. BAU keeps just 4.1 GW (existing). Strong policy implication: hitting net-zero requires a major nuclear program.
Caveats: "load shedding" (~66 GW) is a soft-constraint pseudo-generator (very high marginal cost; only used in extreme peaks; ignore as installed capacity). "gas" / "coal" / "oil" Generator capacities are fuel-supply pseudo-generators on the fuel buses — actual electricity-generating capacity is in the Links section (CCGT, OCGT, gas CHP CC, coal CHP).
Pick a scenario to see capacity, generation, brownfield, capacity factors, and storage across all available horizons.
How does each scenario balance demand at 3-hour resolution? Battery for sub-day, H2 for inter-week / seasonal, water tanks for heat-side flex.
Battery scales dramatically by 2050 — from ~5 GWh in 2030 to 170+ GWh. Used to shift solar from midday to evening peak. Average duration ~4–6 hours.
H2 storage is the seasonal buffer. NZ Myopic uses CCS-with-fossil to handle long-duration variability rather than building TWh-scale H2. BAU Greenfield (free-er CO2) actually uses MORE H2 because it builds out hydrogen-based industry feedstock.
| Metric | 2030 | 2035 | 2050 |
|---|---|---|---|
| System cost (€ B/yr) | 13.93 | 15.68 | 37.28 |
| CO₂ cap (Mt/yr) | 247 | 225 | 0 |
| Total final-energy load (TWh) | 264 | 282 | 373 |
| Solar capacity (GW) | 25.4 | 36.3 | 107.9 |
| Nuclear (GW) | 4.1 | 4.1 | 25.2 |
| Coal (fuel-supply, GW) | 110.1 | 44.1 | 38.7 |
| Battery (GWh) | 4.8 | 13.4 | 171.2 |
| H2 storage (TWh) | 4.0 | 0.3 | 2.2 |
2030 cap is loose enough that the system runs on existing fleet (110 GW coal fuel-supply, 25 GW solar, 4 GW nuclear) — €13.9 B. By 2035 coal halves and gas-CCS infrastructure is built. By 2050 with zero CO₂: solar quadruples, nuclear builds 21 GW of new Rooppur-class reactors, plus 21 GW of gas-for-industry-CC and 3 GW of DAC. €37.3 B/yr is structural deep-decarb cost.
For Bangladesh to hit true net-zero in 2050, residual emissions from industry, transport, and buildings need to be captured at source or scrubbed from the atmosphere. The model selects this mix:
| gas for industry CC | 21,222 MW |
| coal for industry CC | 7,799 MW |
| process emissions CC | 5,379 MW |
| oil for industry CC | ~0 MW |
Industry (cement, steel, fertilizer, chemicals) is hardest to abate — model picks point-source CCS rather than full electrification for the residual 5–8 % of industrial demand.
| urban central gas CHP CC | 5,383 MW |
| urban central solid biomass CHP CC (BECCS) | 1,205 MW |
Gas-CHP-CC provides flexible firm capacity; BECCS provides ~negative emissions. BECCS is bounded by 105 TWh/yr biomass cap.
DAC closes the loop on whatever CO₂ can't be captured at source. Expensive (~€280/tCO2 in 2050) but unavoidable for true net-zero given the residual emissions in the system. ~25 Mt CO₂/yr removed.
Earlier sensitivity at 1h res (with biomass artefact bug, now superseded) had the model's "no-CCS" scenario fail with Gurobi numerical infeasibility — strong indication that BD cannot reach 0 Mt by 2050 without industrial CCS + DAC.
Per inter-divisional AC corridor (sum across redundant lines). Existing capacity is BD's current grid; optimised is what the model chooses to build.
Same corridor table, all 4 scenarios at 2050 side-by-side. Reveals which corridors are robust to scenario choice.
The Dhaka ↔ Khulna corridor expansion is the model's signal that solar PV will go to the southwest (Khulna, Barishal — flatter land, lower population density, away from existing fossil sites) and needs new transmission to reach Dhaka's load center. Existing gas plants are clustered near Dhaka so BAU doesn't need this.
NZ 2050 needs €84 M/yr in transmission investment; BAU needs €2 M/yr — 40× more. Often missing from "cost of decarbonisation" narratives. Even so, transmission is small relative to generation/CCS capex (~€84M vs €37 B total system cost = 0.2 %).
NZ Greenfield (no brownfield bias) builds +19.5 GW of transmission vs +14.4 GW for myopic NZ. The brownfield fossil fleet provides "free" transmission via its existing connection points — losing this costs €119 M/yr in transmission alone.
8-node GADM-1 transmission only. Distribution (33/11 kV, the actual feeders to homes/factories) is assumed lossless within each division. Cross-border interconnects to India / Myanmar are excluded — could meaningfully change the optimal mix if BD imports cheap renewable power. HVDC point-to-point is technically supported but not utilised.
Click to expand: every line, every scenario × year. Length and per-MW capital cost included where available.
Stacked sectoral allocation. Industry shifts from being a small sliver to ~40% of total demand by 2050.
Custom industry_demand_AB_<year>.csv files added to PyPSA-Earth-Sec — replaces the model's default UN-derived BD industry totals (which were essentially empty: 0.5 TWh biomass only).
Annual TWh totals are profiled to 8,760 hourly demands by sector-specific load shapes:
DEFAULT row applies to BD (no BD-specific override). Combined with negative efficiency-gains CAGR, the NET demand pathway gives the trajectory above.
The model treats demand as exogenous — both scenarios optimise SUPPLY mix subject to identical demand. This isolates the "cost of decarbonisation" cleanly. Demand reduction (energy efficiency, behavioural change, "negawatts") is a separate policy lever not modelled here. Implication: our cost numbers are upper bounds — aggressive efficiency policy could reduce 2050 cost meaningfully below €37 B/yr.
Everything that feeds the model. Download as Excel for the complete tabular version (16 tabs).
Baseline 97 MtCO₂ (IEA 2020 BD electricity sector). Fractions × baseline = annual cap.
Sourced from NREL ATB 2024, IRENA WETO 2023, BNEF 2024, DEA Tech Cat. 2024, IEA WEO 2024 (currency year 2024). BD-specific overrides on top of PyPSA-Earth's costs.csv baseline.
From data/custom_powerplants_pypsa_bd.csv. ~29 GW total operational; pipeline plants with DateIn > 2025 excluded from the model.
agg_p_nom_minmax.csv)Per-(country, carrier) capacity limits. Critically: biomass-to-power capped at 7,822 MW via Paul's add_carrier_capacity_envelope_constraints() in solve_network.py — sums BOTH the elec-side biomass Generator AND the sector-coupled biomass EOP Link p_noms.
agg_p_nom_minmax.csv + new add_carrier_capacity_envelope_constraints() in solve_network.py — sums BOTH the elec-side biomass Generator AND the sector-coupled biomass EOP Link.keep_existing_capacities: true + myopic, prepare_sector_network AND add_existing_baseyear both added existing fleet (lump + vintaged shells = 2× duplication). Fix: scenario configs set keep_existing_capacities: false.add_existing_baseyear.py:338 skipped CCGT/OCGT because spatial only has fuel keys. Fix: use carrier[generator] for spatial lookup.add_brownfield.py set extendable=False for carry-forward Links, preventing post-2030 retirement. Fix: keep pre-existing brownfield extendable with p_nom_max ratcheted to previous-horizon p_nom_opt.add_CCL_constraints only constrains Generator-p_nom, missing the sector-coupled biomass EOP Link path. New add_carrier_capacity_envelope_constraints() in solve_network.py sums both paths.
Posting on tab: 2050 Headline