Arte SheetsLearn. Try. Understand.

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 MetricFormulaVerified Output
Busbar Raw EROI (Before Grid Buffer)E_gross / E_plant10.0000 (90.00% Net Energy)
Grid-Buffered EROI_grid(E_gross * (1 - f_curt)) / (E_plant + E_stor)5.0000
Grid Net Usable Energy Share1 - (1 / EROI_grid)0.8000 (80.00% Net Energy)
Net Energy Cliff Case (E_gross = 360)EROI_grid = 1.80000.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.

Further reading