Energy Systems & Sustainability Analytics
EROI & Net Energy Cliff Buffered Grid Formula
Calculate raw and storage-buffered Energy Return on Investment EROI = E_out*(1 - f_curt)/(E_inv + E_stor) and expose Charles Hall’s nonlinear Net Energy Cliff 1 - (1 / EROI).
Visualize the nonlinear Net Energy Cliff: why dropping from EROI 5 to 2 is 7x worse than 20 to 10!
Introduced by systems ecologist Charles Hall, Energy Return on Investment EROI = E_delivered / E_invested measures how many units of usable energy a fuel or power plant returns per unit of lifecycle energy invested in manufacturing, mining, and grid buffering. Crucially, the Net Usable Energy Share available to run the rest of society is nonlinear: Net_Share = (E_out - E_in) / E_out = 1 - (1 / EROI)! Dropping from EROI = 20 to EROI = 10 trims societal net share by just 5 percentage points (95.00% -> 90.00%), whereas dropping across the "Net Energy Cliff" from EROI = 5 (80.00%) to EROI = 1.80 plunges usable energy to 44.44% — and below EROI = 1.00 the technology becomes a net Energy Sink!
Verify on Gross_Generation_MWh = 1,000 (B2), Plant_Embodied_Energy_MWh = 100 (B3 -> Raw EROI = 10.00, Net Share = 90.00%), Grid_Curtailment_fcurt = 0.10 (B4 = 10%), and Storage_Embodied_Energy_MWh = 80 (B5): Grid-Buffered EROI_grid = (1,000 * 0.90) / (100 + 80) = 900 / 180 = 5.0000, delivering Net Energy Share 1 - (1 / 5) = 0.8000 (80.00% = 720 MWh net)! Now test low-yield generation B2 = 360: EROI_grid drops to 324 / 180 = 1.8000 and Net Share plunges across the cliff to 0.4444 (44.44%)!
| Energy System Metric | Formula | Verified Output |
|---|---|---|
| Busbar Raw EROI (Before Grid Buffer) | E_gross / E_plant | 10.0000 (90.00% Net Energy) |
| Grid-Buffered EROI_grid | (E_gross * (1 - f_curt)) / (E_plant + E_stor) | 5.0000 |
| Grid Net Usable Energy Share | 1 - (1 / EROI_grid) | 0.8000 (80.00% Net Energy) |
| Net Energy Cliff Case (E_gross = 360) | EROI_grid = 1.8000 | 0.4444 (44.44% Net Energy!) |
Curtailment- and Storage-Buffered Grid EROI Formula
Validate E_gross > 0, E_plant > 0, 0 <= f_curt < 1, and E_stor >= 0.
=LET(e_gr, B2, e_pl, B3, f_ct, B4, e_st, B5, IF(OR(e_gr <= 0, e_pl <= 0, f_ct < 0, f_ct >= 1, e_st < 0), "Invalid EROI Input", ROUND((e_gr * (1 - f_ct)) / (e_pl + e_st), 4)))Net Societal Energy Share 1 - (1 / EROI_grid) Formula
Flag EROI_grid <= 1 explicitly as "Energy Sink (EROI <= 1)" when embodied + storage inputs consume 100%+ of delivered generation.
=LET(e_gr, B2, e_pl, B3, f_ct, B4, e_st, B5, IF(OR(e_gr <= 0, e_pl <= 0, f_ct < 0, f_ct >= 1, e_st < 0), "Invalid EROI Input", LET(er_g, (e_gr * (1 - f_ct)) / (e_pl + e_st), IF(er_g <= 1, "Energy Sink (EROI <= 1)", ROUND(1 - (1 / er_g), 4)))))Try the example
Use the original values or change them to test your understanding.