← All research topicsGitHub
Research topic

Energy supply and dense energy storage

How densely, cheaply and durably energy can be stored, and what mix of supply and storage meets demand at least cost: the physical limits first, then devices, costs and grids, in open code.

39 projects, each with its own page, code and tests. See them on the full research index.

How big should a home's solar array and battery be, and at what installed price does the battery pay?

research/energy-home · 10 tests

How big should a home's solar array and battery be, and at what price does the battery pay? Hourly model on synthetic weather (assumed inputs): a 6 kW array meets 35% of an 8,000 kWh/yr load, a 10 kWh battery lifts it to 59%, and the battery pays only below about $451/kWh installed at $0.05 export (assumed price $800).

Abstract

An hourly simulation of rooftop solar plus a battery on an 8,000 kWh/yr home, over 20 seeded synthetic weather years (Haurwitz clear sky, a three-state cloud chain, an invented load) with assumed round-number prices. A 6 kW array alone meets 35% of the load; 5, 10 and 15 kWh of battery lift that to 49%, 59% and 62%, then returns diminish fast. With import at $0.30 and export at $0.05 per kWh a 10 kWh battery pays only below about $451/kWh installed (assumed $800), $143 at $0.20 export, and never when export is paid at the import price. Stylised: synthetic weather, flat tariff, no incentives or degradation; not installation advice.

Does time-of-use pricing make a home battery pay, and which size?

research/energy-tou · 8 tests

Does time-of-use pricing make a home battery pay, and which size? On an assumed tariff with the flat tariff's average, a 10 kWh battery behind 6 kW PV breaks even at $641/kWh installed against $444 flat (assumed price $800); only 2.5 to 5 kWh clears $800, and the peak price steers the answer (energy-home with hourly prices).

Abstract

Adds an hourly time-of-use import price to energy-home's solar-plus-battery model (10 seeded synthetic weather years, assumed three-band tariff with the same $0.296 average as a flat $0.30). A 10 kWh battery behind 6 kW of PV breaks even at $641/kWh installed with peak-only discharge and off-peak grid charging, against $444 on the flat tariff, still under the assumed $800. Only small batteries clear $800 ($856 at 2.5 kWh, $847 at 5 kWh); 15 and 20 kWh fall to $427 and $320. Half-filling from the grid ($674) beats a full fill ($641). Break-even tracks the peak price ($307, $641, $1,208 at $0.28, $0.45, $0.70). Stylised: assumed tariff, synthetic weather, fixed dispatch rule, no degradation.

What is the cheapest mix of solar, wind, gas and storage that cuts a power system's emissions, and what does the last 5% cost?

research/energy-mix · 6 tests

What is the cheapest mix of solar, wind, gas and storage that cuts emissions, and what does the last 5% cost? PyPSA on 2019 German hourly demand (assumed costs): $79/MWh all-gas, $113 at an 80% cut, $177 at zero emissions with 10.6 TWh of hydrogen storage; abatement cost $30/t to $1,765/t for the last 5%. Stylised.

Abstract

A single-node PyPSA model of Germany's 2019 hourly demand (ENTSO-E data via Open Power System Data) with solar, wind, gas, a battery and hydrogen storage sized together under an emissions cap. Gas alone costs $79/MWh; a 50% cut adds $5.6 using wind only; 80%, 90%, 95% and 100% cuts cost $113, $131, $144 and $177/MWh, the last needing 10.6 TWh of hydrogen storage. Implied abatement cost rises from $30/t to $1,765/t for the last 5%. At zero emissions the hydrogen tank price moves the answer from $152 to $254/MWh; without hydrogen, batteries alone give $287. Stylised: assumed costs, one weather year, one node, no grid.

How much energy can each storage technology hold per kilogram, at the most?

research/energy-density · 10 tests

How much energy can each storage technology hold per kilogram, at the most? First-principles ceilings that reproduce five published values within 0.3% (Li-S 2,567, Li-O2 3,458 Wh/kg). No battery couple exceeds 1.65 eV per reactant atom, so light atoms set the winners (Wh/kg = 26,801 × eV/atom ÷ g/mol); flywheels top out near 0.3 eV/atom, heat and pumped hydro far lower. Active material only. First project of track 16.

Abstract

Theoretical ceilings from first principles for batteries, hydrogen, flywheels, pumped hydro and heat, reproducing five published values to within 0.3% (lead-acid 170, Zn-air 1,086, Li-S 2,567, Li-O2 3,458 Wh/kg; Al-air 8,100 on Al). No battery couple releases more than 1.65 eV per reactant atom, so the spread comes from atomic mass: Wh/kg = 26,801 × eV per atom / mean g/mol. A carbon-fibre flywheel holds at most 756 Wh/kg (0.34 eV per atom), sand at 500 °C 107 Wh/kg of heat (41% recoverable as electricity) and water lifted 300 m 0.82 Wh/kg. Ceilings for the active material only, with some voltages and material properties assumed.

How much energy can each storage chemistry hold per litre, and does the ranking by weight survive?

research/energy-volumetric · 7 tests

How much energy can each storage chemistry hold per litre, and does the ranking by weight survive? Volumetric ceilings from reactant densities: zinc-air 9,659 Wh/L with air, Li-ion 1,382, lead-acid 724, hydrogen 1,314 at 700 bar.

Abstract

Volumetric ceilings (Wh/L) for the couples of energy-density, from the sum of reactant mass over assumed handbook density. With oxygen taken from air, zinc-air reaches 9,659 Wh/L, lithium-oxygen 6,104 and aluminium-air 5,887, against 1,382 for graphite/LiCoO2 and 724 for lead-acid. The ranking changes with the basis: lithium-sulfur beats graphite/LiCoO2 by 6.8 times per kg but only 2.1 times per litre (lithium is light and bulky), while zinc-air beats lead-acid by 6.4 times per kg and 13 times per litre. Hydrogen holds 1,314 Wh/L at 700 bar and 2,314 as a 20 K liquid. Sand at 500 °C holds 171 Wh/L as heat. Active material only; densities are assumed, not checked.

How close do real batteries, flow cells and hydrogen tanks get to their first-principles ceilings?

research/energy-practical · 6 tests

How close do real batteries, flow cells and hydrogen tanks get to their first-principles ceilings? A Panasonic NCR18650B cell reaches 0.64 of the Li-ion reactant ceiling (243 of 380 Wh/kg), LiFePO4 0.25–0.45, lead-acid 0.21–0.24; DOE's projected 700 bar H2 system is 5.1% hydrogen by mass against 24–41% ideal. Small sourced dataset, primary and secondary rows marked. Second project of track 16.

Abstract

A small sourced dataset set beside the ceilings of energy-density. A Panasonic NCR18650B cell (data sheet) stores 243 Wh/kg, 0.64 of the 380 Wh/kg graphite/LiCoO2 reactants could release; commercial LiFePO4 reaches 0.25–0.45 and lead-acid 0.21–0.24. DOE’s projected 700 bar hydrogen system (1.71 kWh/kg) is 5.1% hydrogen by mass against 23.8–41.3% for an ideal carbon-fibre sphere. Round-trip efficiency runs from 50% (compressed air) to 85% (advanced lead-acid). Limited: five families, five of seven data rows read through secondary pages, gap not split into causes.

Can a house-sized sand heat store carry summer heat into winter, and how does its electricity use compare with a heat pump?

research/energy-thermal · 9 tests

Can a house-sized sand heat store carry summer heat into winter? A transient model: 10 MWh after 120 days needs 222 m³ (70 if lossless) and returns 26% of the electricity as heat, so a COP-4 heat pump wins unless its electricity is 15× dearer; a days-scale store at house size. Stylised.

Abstract

A transient finite-volume model of a spherical sand store in mineral wool (a hot-water tank run through the same code), checked against analytic cases. A store sized to still give 10 MWh after 120 days needs 222 m3 (against 70 if lossless) and returns only 26% of the electricity put in as heat, so a COP-4 heat pump wins unless its electricity costs 15× more, before capital cost. After a day or a week the same store returns 79% and 73%: a days-scale store at house size, seasonal only near 1,000 m3 (43% left after 180 days). Stylised: assumed properties, a sphere, instant uniform charging, no pipes or ground.

Which energy-storage technology is cheapest per MWh delivered at 1 hour, 1 day and 3 weeks?

research/energy-lcos · 9 tests

Which storage technology is cheapest per MWh delivered, by duration? Li-ion wins to about 4 h ($116/MWh), cavern stores beyond ($109 vs Li-ion $337 at 24 h), cavern hydrogen only past ~300 h. All inputs assumed. Stylised.

Abstract

Levelised cost of storage for lithium-ion, vanadium flow, pumped hydro, cavern compressed air and cavern hydrogen, from capital cost, round-trip efficiency, life, fade and charging power. With round assumed inputs Li-ion is cheapest to about 4 hours ($116/MWh at 4 h) and costs about 3× a cavern store at 24 hours ($337 vs $109); cavern hydrogen beats Li-ion above 11 hours but cavern compressed air only above 308 hours. Li-ion would need an energy cost of $43/kWh instead of $200 to win at 24 hours. The 8–10 hour winner flips with the discount rate and charging price. Stylised: every input is assumed and unsourced, caverns need geology, one fixed use pattern.

How much better can a lithium-ion cell get by redesigning its electrodes, and does a smarter search help?

research/energy-cell · 6 tests

How much better can a Li-ion cell get by redesigning its electrodes, and does a smarter search help? In a PyBaMM model, thicker, more porous electrodes with more negative capacity lift energy after 100 cycles from 109 to ~143 Wh/kg (+30%); random, Bayesian and session-agent proposers end within 3% of each other. One aggressively ageing parameter set. Stylised.

Abstract

A PyBaMM single-particle model with electrolyte of an NMC811 / graphite-SiOx cell, scored on discharge energy per kilogram of electrode stack after 100 cycles at a fixed current. Four design numbers (positive thickness, two porosities, negative-to-positive capacity ratio) are searched with 30 evaluations by random search, Gaussian-process Bayesian optimisation (5 seeds each) and the session agent proposing by hand (one run). The reference cell scores 109 Wh/kg; all three reach 141–143 (+30%) with a thicker, more porous positive electrode and about 30% more negative capacity, and their seed ranges overlap, so no proposer is shown to be better. Limits: one aggressively ageing parameter set, constant-current charge only, stack not finished cell, optimum at the search bounds. Stylised and simulated, not a tested cell.

How robust is the cheapest energy-storage technology at each duration when costs are uncertain?

research/energy-lcos-mc · 6 tests

How robust is the cheapest storage technology by duration to uncertain costs? Monte Carlo over energy-lcos: Li-ion wins 96% of scenarios at 2 h but 18% at 8 h; no technology wins over 48% between 6 and 12 h; caverns win most from 24 h. Ranges assumed. Stylised.

Abstract

A Monte Carlo over the energy-lcos model: 4,000 scenarios draw each technology's energy cost, power cost and efficiency from assumed ranges, plus the discount rate (3–10%) and charging price ($10–100/MWh), and count how often each is cheapest. Lithium-ion wins 96% of scenarios at 2 hours, 64% at 4 and 18% at 8; between 6 and 12 hours no technology wins more than 48%, so the point-estimate winner is a coin toss there. Caverns win most scenarios from 24 hours (compressed air 61% at 24 h, 81% at 100 h) and hydrogen 69% at 500 hours. Charging price is the largest single swing in cost. Stylised: every range is assumed, draws are independent and uniform, and the use pattern is fixed.

Do the lithium-ion cell designs found with a fast model still win under the full porous-electrode model?

research/energy-cell-dfn · 4 tests

Re-scoring 49 designs from energy-cell under PyBaMM's full DFN model instead of SPMe: rank correlation 0.86 at cycle 100, the SPMe winner is 3rd of 45 and still +38% over the reference cell (+31% under SPMe), DFN reports about 19 Wh/kg more on average, and SPMe fails to cycle 3 designs DFN handles (modelled, stack level)

Abstract

Takes the first next step of energy-cell: the 49 designs it logged (baseline, each search run's best, 36 spread over the SPMe ranking, 3 SPMe failures) are re-scored with the same parameters, protocol and mass model under the full Doyle-Fuller-Newman model. Over the 45 designs both models cycled, the cycle-100 Wh/kg rank correlation is 0.86 (0.93 at beginning of life); the SPMe winner (143.4 Wh/kg) is 3rd of 45 under DFN (160.9 vs 163.0 for the DFN best) and beats the reference cell by 38% under DFN against 31% under SPMe. DFN gives more energy for nearly every design (mean +18.6 Wh/kg), with gaps up to 127 Wh/kg, and the SPMe plateau is not flat under DFN. Limits: one cell, one parameter set, 49 designs chosen to spread over the SPMe ranking; both models share the same degradation parameters and neither is validated against measured data; stack-level mass only. Every input comes from energy-cell and PyBaMM's OKane2022 set.

How hard does a least-cost zero-emission German grid cycle its storage, and does the levelised-cost map survive that use?

research/energy-lcos-realised · 4 tests

How hard does a least-cost zero-emission German grid cycle its storage? Batteries about 1,700–1,900 h a year (near the assumed 2,000), cavern hydrogen only 719 h, which more than doubles its LCOS to $864/MWh.

Abstract

Reads the actual dispatch of the sourced one-node PyPSA German system (energy-mix-sourced, 2030 costs, 2019 weather) and re-prices storage at that use instead of the assumed 2,000 discharge hours and $10–100/MWh charging. Li-ion is used close to the assumption (10–14 h long, 122–180 cycles, 1,717–1,865 h a year, EUR 31–38/MWh charging), so its LCOS rises only 9–19% ($197 to $231/MWh at 14 h). The cavern hydrogen store runs 719 h a year (2.6 cycles, 280 h long), so its LCOS is $864/MWh against $383 at 2,000 h; LCOS falls about tenfold between 300 and 4,000 h a year. The ranking of technologies at each store's duration is unchanged. Limitations: one weather year, one node, planner shadow prices rather than market prices, cycle life and fade still the assumed energy-lcos values.

Which storage technology is cheapest at each duration once costs come from NREL ATB and PyPSA technology-data, not from round numbers?

research/energy-lcos-sourced · 9 tests

Which storage technology is cheapest at each duration once costs are sourced (NREL ATB 2024, PyPSA technology-data)? Li-ion to 4 h, cavern compressed air from 6 h; at 8 h pumped hydro 52%, air 27%, Li-ion 22% of scenarios; hydrogen's assumed 500 h win does not survive.

Abstract

Re-runs energy-lcos and energy-lcos-mc with every cost, efficiency and lifetime read from PyPSA technology-data (Danish Energy Agency; Viswanathan et al. 2022) and NREL ATB 2024, converted at the ECB 2025 rate. Point estimates keep the assumed map's order (Li-ion up to 4 h at $121/MWh, cavern compressed air from 6 h up) except at 500 h, where hydrogen no longer wins ($425 against $258). Over the sourced spread (ATB scenarios, pumped-hydro site classes, cost years 2020 to 2050, rate 3–10%, charging $10–100/MWh) 8 h is a three-way contest: pumped hydro 52%, compressed air 27%, Li-ion 22%; cavern air wins at least 95% from 48 h. Cavern air has a single sourced value, so the cost multiple that would cost it the win is reported (1.33 at 8 h, 2.2 at 24 h). Limitations: cycle life, fade, discount rate and charging price are not sourced; the spread is the range of two sources, not a probability.

How much of the cost of a zero-emission German power system is the storage assumption, once costs are sourced?

research/energy-mix-sourced · 7 tests

What does a zero-emission German power system cost once energy-mix's assumed costs are replaced by sourced ones? PyPSA on 2019 hourly demand with PyPSA technology-data costs (Danish Energy Agency et al.): EUR 222/MWh with a steel hydrogen tank, EUR 144 with caverns, EUR 75 unconstrained; the storage type moves the answer more than the cost year.

Abstract

Re-runs energy-mix (one-node PyPSA model of Germany's 2019 hourly load with solar, onshore wind, gas, Li-ion and hydrogen storage under an emissions cap) with every cost, lifetime, O&M, efficiency, fuel price and CO2 intensity read from PyPSA technology-data at pinned revisions (Danish Energy Agency and other primary sources named per row). On 2030 costs in 2025 euros the unconstrained optimum costs EUR 75/MWh and zero emissions EUR 222/MWh with a steel hydrogen tank (1.3 TWh of hydrogen, 1.4 TWh of batteries) or EUR 144/MWh with underground storage (24.9 TWh); the last 5% of emissions costs about EUR 6,100/t with the tank and EUR 1,700/t with caverns. With caverns, technology-data's older 2030 and 2050 sets give EUR 114.5 and 85.5/MWh. Without batteries zero emissions costs EUR 254 (tank) or 162 (cavern); a discount rate of 3% or 10% gives EUR 152 or 282 (tank). Not from a source: the 7% discount rate (swept). Limitations: cavern storage is a geological resource that the model does not site or limit, one weather year, one node, no imports, central cost values only, and no check against a published whole-system figure.

Which weather year sets the hydrogen store of a zero-emission German power system, and how much does the cost depend on it?

research/energy-mix-years · 4 tests

Which weather year sets the hydrogen store of a zero-emission German power system? The same sourced-cost PyPSA model on 2015 to 2019: EUR 203 to 271/MWh with a steel tank, EUR 141 to 155 with caverns, and a cavern store of 24 to 36 TWh depending on the year.

Abstract

Re-solves energy-mix-sourced (one-node PyPSA model, solar, onshore wind, gas, Li-ion and hydrogen storage, PyPSA technology-data 2030 costs in 2025 euros) on five weather and demand years of Open Power System Data / ENTSO-E (2015 to 2019) instead of only 2019; 20 deterministic LPs. At zero emissions the cost ranges EUR 203 to 271/MWh with a steel hydrogen tank (2018 cheapest, 2017 and 2015 dearest) and EUR 141 to 155 with caverns, so the tank case moves by about EUR 68 between years and the cavern case by about EUR 14. The hydrogen store is set by the year: 1.1 to 5.6 TWh with a tank (2015 largest) and 23.7 to 35.9 TWh with caverns (2016 largest), against 24.9 TWh in 2019 alone; the tank case needs 1.0 to 1.7 TWh of batteries. At a 95% cut the tank case buys no hydrogen in any year and costs EUR 118 to 133. The 2019 results reproduce the sibling project (EUR 222 and 144). Limitations: five years, each solved separately with perfect foresight (a store sized for all five years together was not solved), one node, no imports or offshore wind, capacity factors from actual generation so they include curtailment, caverns not sited or limited, and the 7% discount rate is not from a source.

Does residual load explain German day-ahead electricity prices on a year the model never saw, and how wrong was the flat merit-order price?

research/energy-price-residual · 5 tests

Does residual load explain German day-ahead prices on a year the model never saw? Yes: correlation 0.87 and RMSE 9.6 EUR/MWh on 2019 against 23.0 for the flat merit-order price; the cheap-quarter mean is within EUR 4–9/MWh; the rest is the fuel-price level.

Abstract

Fits price as a non-decreasing function of residual load (load minus solar minus onshore wind) by isotonic regression on hourly German day-ahead prices 2015–2019 (OPSD/ENTSO-E), and scores it on a held-out year. Trained on 2015–2018 and tested on 2019: correlation 0.87 and RMSE 9.6 EUR/MWh, against 14.5 for an hour-of-day mean, 15.7 for the training mean and 23.0 for the flat EUR 54.6/MWh merit-order price of energy-thermal-hourly. Leave-one-year-out over all five years gives correlation 0.78–0.90 and beats every non-residual baseline in every year; the flat model is worse than the training mean in four of five. The predicted cheapest-quarter mean, which is what a storage buyer pays, is within EUR 3.7–9.2/MWh of the actual one. Most of the remaining error is the yearly price level (fuel and carbon), not shape: an oracle level cuts RMSE to 6.2–11.2. No data after 2019 (hosts unreachable from the run container); one held-out year per score, no confidence interval; realised rather than forecast load and renewables; onshore wind and solar only. All inputs are from sources.

Does a weather-dependent heat-pump COP change the sand-store versus heat-pump verdict?

research/energy-store-cop · 7 tests

Does a weather-dependent heat-pump COP change the sand-store verdict? The table's 3.6 equals a 35 C floor-heating sink; at 45 to 55 C the store's weekly flip multiplier rises 8 to 46%, and 2018 still favours the pump.

Abstract

The earlier cost comparisons charge the air-source heat pump a flat November–March price divided by one table COP of 3.6. Here the pump's electricity cost is the heat-weighted mean of price / COP(T) over every hour, with hourly temperatures from the ERA5 reanalysis (five German cities, population-weighted, 2015–2019) and the Staffell et al. (2012) COP fit used by when2heat and PyPSA-Eur. The table's 3.6 is what a 35 °C floor-heating sink gives (seasonal COP 3.52–3.67); a 45 °C sink gives 2.79–2.91 and a 55 °C radiator sink 2.18–2.28. The store's weekly-cycling flip multiplier rises from 1.16/1.20/1.20/0.59/1.02 (table) to 1.25/1.29/1.33/0.71/1.15 at 45 °C and 1.37/1.40/1.48/0.86/1.30 at 55 °C, so a realistic COP widens the store's margin in four years but 2018 still favours the pump. Daily cycling stays robust (flip 2.4–4.1×). The heating base temperature (12–18 °C) moves the flip by at most 0.06. Inputs not from a source: the 15 °C base, city weights and the sink temperatures, which are swept; the COP fit is a published regression, not a measurement of a specific unit.

How far must capital costs move to flip the sand-store versus heat-pump verdict, and is that more than the price year moves it?

research/energy-store-flip · 6 tests

How far must capex move to flip the sand-store vs heat-pump verdict? Weekly cycling flips on a 2 to 40% store-capex change (the cost table's own vintage step is 26%); daily cycling holds to 2 to 3.5 times.

Abstract

Scales the PyPSA technology-data capital costs in the cost model of energy-thermal-real and bisects for the multiplier at which a house-sized sand store and an air-source heat pump cost the same, on real German day-ahead prices 2015–2019. Weekly cycling flips at 1.16, 1.20, 1.20, 0.59 and 1.02 times the store’s table capex, so the table’s own vintage step (1.257×) alone flips four of five years; daily cycling holds to 2.1–3.5×, monthly and seasonal never come close. With capex drawn uniformly within ±h (assumed, swept 0.10–0.50), the spread across price years (sd 0.0063 EUR/kWh) exceeds the cost spread at h = 0.10 (0.0039) and falls below it at h = 0.25 (0.0098). Five years, capex only, wholesale prices; h is an assumption, labelled; all other inputs are sourced.

How much can the sand store's heat exchanger cost before a heat pump wins again?

research/energy-store-hx · 6 tests

How much can the sand store's heat exchanger cost? Weekly cycling survives about 120 to 270 EUR per kW in four of five price years; daily cycling survives 460 to 900; 2018 never wins.

Abstract

The sand-store versus heat-pump comparisons leave out the equipment that takes heat out of the sand. No sourced sand-to-water exchanger price is in the cost table, so the price (EUR per kW of peak discharge) is solved for rather than assumed: the break-even at which the store stops beating the air-source pump on German prices and ERA5 weather 2015–2019, house scale, 45 °C sink. Weekly cycling survives an exchanger of 211, 241 and 274 EUR/kW in 2015–2017 and 123 in 2019; 2018 loses even with a free exchanger. Daily cycling survives 460–901 EUR/kW. At 100 EUR/kW the exchanger adds 0.0032 EUR/kWh. The break-even halves if the house is sized for 1,000 full-load hours. Not from a source: the exchanger price (swept), the 2000-hour peak rule, and the exchanger's lifetime and O&M, borrowed from the sand charger row; the sand-side discharge limit is not modelled.

Does the sand-store versus heat-pump verdict survive a modelled electricity price instead of the real one?

research/energy-store-modelprice · 6 tests

Does the sand-store vs heat-pump verdict survive a modelled price? Mostly: 32 of 40 cells agree with real prices (21 for the flat merit-order price), but weekly cycling, whose margin is under EUR 0.011/kWh, is wrong in sign in 5 of 5 years; as a charge scheduler the model costs under EUR 0.0011/kWh.

Abstract

Feeds the residual-load price model of energy-price-residual (isotonic fit, leave-one-year-out) into the cost model of energy-thermal-real for German day-ahead prices 2015–2019 and compares the house- and district-scale verdicts, sand store against air-source heat pump, with the real-price verdict. The model gives the same verdict as real prices in 32 of 40 scale×cycle×year cells, against 21 of 40 for the flat merit-order price. Daily cycling and monthly and seasonal storage are right in every house-scale cell; weekly cycling, whose real margin is only −0.005 to +0.011 EUR/kWh, is right in 0 of 5 years because the fit misstates each year’s price level (an oracle level restores 4 of 5). Using the model only to pick charge hours while paying the real price costs EUR 0.0004–0.0011/kWh over perfect foresight, against 0.003–0.020 for the flat price. Five years only, realised not forecast inputs, wholesale prices, no data after 2019; the tie band and the charge fraction are assumptions, labelled. All other inputs are from sources.

How much cheaper must a store's electricity be than a heat pump's for a sand heat store to deliver heat for less?

research/energy-thermal-cost · 10 tests

How much cheaper must electricity be for a sand heat store to beat a heat pump? Sourced costs (PyPSA technology-data) on the energy-thermal model: a daily-cycled store needs the pump's electricity about 2 times dearer, weekly 5, monthly 16, seasonal 120 (house); the heat lost in standby, not the sand, rules out seasonal storage.

Abstract

Costs the sand store of energy-thermal with every capital cost, lifetime, O&M and efficiency read from PyPSA technology-data (Danish Energy Agency; Viswanathan et al. 2022, PNNL-33283) at pinned revisions, sizing it with the transient model and comparing levelised cost of heat against an air-source heat pump. A sand store charged at EUR 0.05/kWh beats a heat pump when the pump's electricity costs about 2 times as much if the store cycles daily, 5 times weekly, 16 times monthly and 120 times seasonally (house, 10 MWh a year; 222 m3 and EUR 1.53 of capital per kWh for the seasonal store); at district size (5 GWh a year) 2.2, 2.8, 5.3 and 38 times. At 3 times the store can stand 2 days (house) or 7 (district); at 10 times, 14 or 60. A district hot-water tank beats sand for monthly and seasonal storage. Not from a source: electricity prices (swept), 2,000 full-load hours, 0.5 m insulation, cycle counts. Limitations: the sand-store cost is a utility-scale figure, no heat exchanger is costed (favours the store), flat prices, constant COP, instant discharge.

If a sand heat store buys electricity only in the cheap hours of a German price series, when does it beat a heat pump?

research/energy-thermal-hourly · 4 tests

When does a sand heat store beat a heat pump on hourly prices? With 189 GW solar and 137 GW wind and a modelled German price series, a daily or weekly store wins in all 5 years (EUR 0.027/kWh against 0.071); a levy of 0.10/kWh or a surplus-hour price above about 20–35 EUR/MWh removes the win.

Abstract

Replaces the flat electricity price of energy-thermal-cost with a modelled hourly price built from real German hourly load, solar and wind (OPSD/ENTSO-E, 2015–2019) and a one-fuel merit order (gas at EUR 54.6/MWh from PyPSA technology-data; surplus hours at a floor of 0, swept to 40). The store buys the cheapest quarter of each cycle; the heat pump pays the November–March mean. With the 189 GW solar and 137 GW wind of the 80%-emissions-cut optimum of energy-mix-sourced, a house-sized sand store cycled daily or weekly beats the pump in all five years (EUR 0.027 and 0.032 against 0.071 per kWh of heat in 2019); monthly and seasonal storage lose. With a fleet like today's there are no surplus hours and the store loses; a levy of EUR 0.10/kWh on both prices makes it lose in every case; a surplus-hour price above about EUR 20–35/MWh ends the advantage. Not from a source: the surplus-hour floor (swept), no storage or grid in the price model, flat winter heat demand, the quarter-cycle charge window. The price is modelled, not a market price, and no taxes or network charges are included in the base case.

On real German day-ahead prices, does a sand heat store beat a heat pump, and was the modelled price right?

research/energy-thermal-real · 4 tests

On real German day-ahead prices, does a sand heat store beat a heat pump? Yes at wholesale: daily cycling wins in all 5 years (EUR 0.045–0.062/kWh against 0.070–0.074) and weekly in 4; the earlier merit-order model was flat at EUR 54.6/MWh and wrong; a EUR 0.10/kWh levy removes the win.

Abstract

Re-runs energy-thermal-hourly on the actual hourly German day-ahead price, 2015–2019 (OPSD/ENTSO-E; annual means 29–44 EUR/MWh, 66–211 negative-price hours a year), with the store and heat-pump costs of energy-thermal-cost unchanged. At wholesale prices a house-sized sand store cycled daily beats an air-source heat pump in all five years (EUR 0.045–0.062 against 0.070–0.074 per kWh of heat) and weekly in four of five; monthly and seasonal storage lose even at a negative break-even price. The earlier one-fuel merit-order model, rebuilt with each year's installed solar and wind, has no surplus hour and prices every hour at EUR 54.6/MWh, so its conclusion that the store loses with today's fleet came from the model, not the market. A levy of EUR 0.10/kWh on both prices removes the win in every case. Not from a source: the charge window (a quarter of each cycle, swept), flat winter heat demand, the levy (swept), perfect foresight within each cycle. Wholesale prices only; no taxes, network charges or retail margin.

How much is a home battery worth on a time-of-use tariff if it is dispatched optimally?

research/energy-tou-lp · 8 tests

How much is a home battery worth on a time-of-use tariff with optimal dispatch? An LP breaks even at $867/kWh for 10 kWh behind 6 kW PV, against $674 for the best fixed rule ($742 with a 4,000-cycle life); a rolling 36 h plan matches the year optimum (energy-tou with an optimiser).

Abstract

Replaces the fixed dispatch rule of energy-tou with a linear program (HiGHS) over 10 seeded synthetic weather years and the same assumed three-band tariff. A 10 kWh battery behind 6 kW of PV breaks even at $867/kWh installed under optimal dispatch with perfect foresight, against $674 for the best fixed rule and $444 on a flat tariff; with life limited to 4,000 full cycles it is $742, 10% above the rule and still under the assumed $800. A rolling 36 h plan with a perfect forecast matches the whole-year optimum to $1. The optimiser adds $33 to $108/kWh across 2.5–20 kWh, and a wear-aware optimiser adds $43–58 when cycle life binds. Stylised: perfect foresight, assumed tariff, synthetic weather, crude cycle-count degradation.

How much of an optimal home-battery controller's gain survives a realistic forecast?

research/energy-tou-lp-forecast · 5 tests

How much of an optimal home-battery controller's gain survives a realistic forecast? With yesterday's weather or a 7-day mean as the forecast, a rolling LP saves $726 or $691 a year against the fixed rule's $694 (perfect forecast: $892); 84–101% of the gain is lost (energy-tou-lp with forecasts).

Abstract

Re-runs the rolling 36 h linear program of energy-tou-lp with forecasts built only from hours already observed (yesterday's weather, or the mean of the last seven days) and executes the plan on the actual PV and load, over 10 seeded synthetic weather years and the same assumed tariff. For 10 kWh behind 6 kW PV the perfect-forecast optimiser saves $892 a year against the best fixed rule's $694; with yesterday's weather it saves $726 and with a seven-day mean $691, so 84–101% of the optimiser's gain over the rule is lost. Life-limited break-even is $667 and $663/kWh against the rule's $674 and the perfect $733. Forecasts of the truth with 10% and 25% multiplicative noise keep 75% and 39% of the gain; at 100% noise the optimiser is worse than the rule. Stylised: assumed tariff, synthetic weather and load, forecast methods naive, noise abstract, crude cycle-count life.

How much of the home-battery optimiser's forecast loss does re-planning every few hours recover?

research/energy-tou-lp-replan · 6 tests

How much of the home-battery optimiser's forecast loss does re-planning every few hours recover? On PVGIS typical-year data for three US sites, re-planning the LP every 3–12 h instead of daily adds $10–36 a year and closes at most 17 points of the gap to a perfect forecast (10 kWh, assumed tariff); energy-tou-lp-tmy with receding-horizon re-planning.

Abstract

Reruns the rolling linear program of energy-tou-lp-tmy on PVGIS typical-year irradiance (Golden CO, Phoenix AZ, Seattle WA) but re-plans every 24, 12, 6, 3 or 1 hours from the actual state of charge, with a nowcast forecast added. For 10 kWh behind 6 kW PV, re-planning every 3–12 h adds $10–36 a year to the realistic controllers (Golden clear-sky-index forecast $725 → $754; Seattle $678 → $713; Phoenix $780 → $797) against perfect-forecast savings of $930, $881 and $853, so it closes at most 17 percentage points of the gap between the best fixed rule and the perfect forecast. Most of the loss is forecast loss, not execution loss. A three-hour nowcast does not beat the plain clear-sky index and hourly re-planning is no better than every 3 h; it adds 20–30 cycles a year and lowers life-limited break-even price. Differences under about $10 are inside the noise of three load seeds and one typical year. Not from a source: the tariff, synthetic load, battery cost and 4,000-cycle life (inherited, assumed), the nowcast time constant (3 h, swept at one site) and the sunlit threshold.

Does a clear-sky-index forecast rescue the optimal home-battery controller on real weather?

research/energy-tou-lp-tmy · 8 tests

Does a clear-sky-index forecast rescue the optimal home-battery controller on real weather? On PVGIS typical-year data for three US sites, a rolling LP fed yesterday's weather or a clear-sky-index forecast keeps 25–55% of the perfect-forecast gain over the fixed rule at Phoenix and Seattle and none of it at Golden (10 kWh, assumed tariff); energy-tou-lp-forecast on measured-derived irradiance.

Abstract

Replaces the synthetic weather of energy-tou-lp-forecast with hourly irradiance from PVGIS typical-meteorological-year files (ERA5-based) for Golden CO, Phoenix AZ and Seattle WA, and adds the standard cheap PV forecast: yesterday's clear-sky index applied to the known clear-sky curve (“smart persistence”). The same rolling 36 h linear program, tariff and execution rule are used. The clear-sky forecast cuts hourly day-ahead nRMSE by 4–13% against yesterday's weather (0.63→0.55 at Golden, 0.68→0.60 at Seattle) but changes the annual saving by at most $5 in dispatch: for 10 kWh behind 6 kW PV the perfect-forecast optimiser saves $929, $880 and $852 a year at Golden, Phoenix and Seattle against the best fixed rule's $734, $668 and $618, while the realistic forecasts save $722–733, $779–785 and $677–691. They keep −6% to −1% of the gain at Golden (the fixed rule wins), 52–55% at sunny Phoenix and 25–31% at cloudy Seattle, and on life-limited break-even price they sit below the rule at Golden ($672–677/kWh against $713). So the forecast, not the optimiser, sets the value, and a better PV forecast alone does not buy it: a perfect load forecast adds only $15–18 a year. Real daily clear-sky index has lag-1 autocorrelation 0.29–0.36 against 0.50 for the synthetic chain. Not from a source: the tariff, load shape, battery cost and the 4,000-cycle life (inherited, assumed); the typical year stitches months from different years, and its irradiance is a reanalysis estimate, not a pyranometer record.

How wrong is the DC approximation of optimal power flow on the IEEE 30-, 39- and 118-bus cases?

research/infra-dcopf · 8 tests

DC against AC optimal power flow in pandapower on the IEEE 30-, 39- and 118-bus cases: the DC model's cost is 1 to 3 % below the AC optimum (it ignores losses); on the 118-bus case its dispatch is feasible but costs 0.7 to 1.7 % more than the AC optimum once losses are paid, and on the 39-bus case it breaks voltage limits (15 buses at 0.6 of load) at almost no cost difference (modelled benchmark, not a measured system; tightened-limit runs often had no solution). Feeding the AC losses back into the DC model (a loss-adjusted DC) brings the 118-bus cost estimate to within 0.6 to 1.2 % of the AC optimum, but repairs only 13 to 32 % of the dispatch's excess cost and none of case39's voltage violations.

Abstract

The DC optimal power flow is the workhorse of dispatch and price studies; how much does it lose against the AC OPF? On pandapower's MATPOWER cases with their own quadratic costs, load scaled 0.6 to 1.1, both OPFs are solved and the DC set-points are run through an AC power flow (slack pays the losses). IEEE 118-bus (no branch limit binds): DC cost is 1.9–2.9 % below the AC optimum and its dispatch costs 0.7–1.7 % above it, with no violations. IEEE 39-bus: DC cost 1.0–1.5 % below, dispatch within 0.06 % of the optimum but 15, 5 and 1 buses out of voltage limits at 0.6, 0.8 and 1.0 of load. IEEE 30-bus: DC 1.3–2.3 % below; at full load the DC dispatch overloads a branch to 111 % and is 0.31 % cheaper than the AC optimum, i.e. a violated constraint. Checks: a two-bus closed form and agreement of the cost function with pandapower. Limits: tightened-limit sweeps frequently returned no solution from the solver and non-convergence is not separated from infeasibility; 118-bus branch limits never bind so it is a losses-only comparison; no prices (LMPs), unit commitment or N-1; costs are the cases' own, not market prices. Modelled benchmark cases, not measured systems. Loss-adjusted DC (AC losses spread uniformly over loads, iterated 2–4 passes): the 118-bus cost estimate falls within 0.6–1.2 % of the AC optimum, but the AC cost of its dispatch is still 0.58–1.18 % above it (13–32 % of plain DC's excess recovered) and case39's voltage violations are unchanged; a uniform loss share fixes the price level, not the merit order.

How much grinding energy does a classifier loop save at the same product size, and does a ball-mill population balance agree with Bond's law?

research/infra-grind · 13 tests

Ball-mill population balance (Austin form): at the same 100 um P80 a closed circuit at 278% circulating load uses 0.47 of the open-circuit energy, 1.8 to 3.7 times better across the swept mill and classifier inputs, far above Bond's 1.2 open-circuit factor and a vendor's ~10% for cement; the model's size exponent matches Bond's only at a selection exponent near 0.5.

Abstract

A size-by-size ball-mill model (selection function Si = S1(xi/1 mm)α, Austin breakage function, three perfectly mixed tanks in series) with a Whiten classifier loop, solved by forward substitution and fixed-point iteration in the standard library. At the same 100 µm P80 from a 1500 µm feed, a closed circuit with the cut at P80 and 278 % circulating load uses 0.47 of the open-circuit energy (53 % saving); a coarser cut saves less (0.78 at cut = 2×P80, 35 % load). The saving is 1.8 to 3.7 times in energy ratio over tank number 1 to 10, classifier sharpness 2 to 8, bypass 0 to 0.3 and the breakage parameters; it does not collapse to the published figures: Bond’s open-circuit factor EF2 is 1.2 at 80 % passing and a vendor guide gives about 10 % for cement mills. That is reported as a discrepancy, with likely causes (slowing of fines, tested, does not close it; a mill flow limit of 1.5 to 2 times the open circuit’s feed, with that limit assumed rather than sourced, brings the fixed-power capacity advantage to 1.2 to 1.4; auxiliary power) rather than tuned away. The local size exponent of energy (E ∝ P80−m, 50 to 200 µm) runs from 0.60 to 1.27 over α 0.4 to 1.2 against Bond’s 0.68, so Bond’s law corresponds to α near 0.5 in this model. Absolute kWh/t is in model units (S1 was not fitted to a mill); every shape parameter is a typical value from memory of the Austin literature, swept, not measured.

How much rooftop PV can the IEEE 13-node feeder take before voltage binds, and which cheap measure adds the most?

research/infra-hosting · 9 tests

Stochastic PV hosting capacity of the IEEE 13-node feeder in OpenDSS on 300 random placements: median 1,015 kW at midday minimum load, voltage binds first in 75% of placements; a 2 V lower regulator set-point adds +310 kW, while inverter fixed power factor and volt-var add about nothing once the regulators respond (modelled, not a measured feeder).

Abstract

OpenDSS on the IEEE 13-node test feeder (3,466 kW peak): total PV is ramped from zero over 300 random placements (1–8 customer nodes, seed 1) until the first service voltage above 1.05 pu, line above its ampacity or transformer above its kVA rating, with every measure scored on the same placements. At 30 % of peak load the median placement takes 1,015 kW (10th–90th percentile 510–1,893) and voltage binds first in 224 of 300. Lowering the regulator set-point by 2 V adds the most (+310 kW median, better on 74 % of placements, worse on 10 %, at 0.007 pu less margin at peak). A fixed power factor of 0.95 changes the median by −60 kW and the IEEE 1547-2018 Category B volt-var curve by 0, because the regulators’ line-drop compensation holds the voltage up; with taps frozen they add +110 and +60 kW, and with line-drop compensation off +50 and +10. Midday EV charging adds +10 kW because the load lands on the same 500 kVA transformer. The unmodified feeder reproduces the published IEEE voltages to 0.003 pu. Limits: one small feeder, snapshots not a day, conductor ampacities and the 1547 curve points recalled and not verified, EV load a rounded estimate, utility regulator settings not known.

Does regulator set-point still beat inverter volt-var for PV hosting on the IEEE 34- and 123-node feeders?

research/infra-hosting-feeders · 12 tests

PV hosting capacity of the IEEE 34- and 123-node feeders in OpenDSS (200 random placements): on the 123-node feeder a 2 V lower regulator set-point adds +790 kW to a 1,160 kW median (every placement better), inverter volt-var +100 kW and fixed power factor +180 kW; the published 34-node case has no headroom at all because its source is set to 1.05 pu (modelled, not measured feeders); over a one-minute day the set-point trades overvoltage for undervoltage while inverter reactive power cuts tap operations about 30 %.

Abstract

Does the 13-node result of infra-hosting (a lower regulator set-point beats inverter reactive power) survive on larger feeders? The same OpenDSS ramp (PV added at 1–8 random customer loads until the first service voltage above 1.05 pu or transformer above its kVA rating; 200 placements, seed 1, every measure on identical placements) is run on the IEEE 123-node feeder (3,490 kW) and the 34-node feeder (1,769 kW). 123-node, load 0.3 of peak: baseline median 1,160 kW (10th–90th percentile 380–2,440); a 2 V lower set-point on all regulators +790 kW (better on 100 % of placements), fixed power factor 0.95 +180 kW (better 64 %, worse 34 %), the IEEE 1547-2018 Category B volt-var curve +100 kW (64 % / 28 %); the lowest service voltage at peak with no PV stays 0.960 pu at −2 V and falls to 0.940 at −4 V. The ranking holds, but inverter reactive power does help here, unlike on the 13-node feeder. The published 34-node case sets its source to 1.05 pu, so a regulated bus is already above 1.05 with no PV and hosting capacity is 0 for every placement and measure; with the source at 1.00 (an edit) the median is 590 kW and fixed power factor (+180) edges out the set-point (+140). Limits: snapshots, not a day; no conductor ampacities (the cases give none; worst line current at capacity is reported instead); the volt-var curve points are recalled, and the 34-node source edit is mine. Quasi-static day (added): the 123-node feeder run for a day at one-minute steps with the PV and load shapes shipped with the OpenDSS case (40 placements, 2,000 kW of PV, peak-load day): the baseline spends a median 247 min above 1.05 pu and 401 regulator tap operations; a 2 V lower set-point removes the overvoltage (0 min) but adds 193 min below 0.95 pu (baseline 11) and no fewer tap operations (412); fixed power factor 0.95 and volt-var cut overvoltage to 145 and 134 min and tap operations by about 30 % (292, 280) with no undervoltage. So the snapshot ranking reverses once undervoltage is counted. Limits: one PV shape (a cloudy day of unstated origin), regulators settle fully each minute, and some volt-var runs at 3,000 kW did not converge.

How much does model-predictive heating and cooling save over a thermostat on a time-of-use tariff, when the model and forecast are wrong?

research/infra-hvacmpc · 9 tests

Does MPC beat a thermostat for a heat pump on a time-of-use tariff? On real TMY3 weather with a deliberately wrong model and yesterday's weather as the forecast it pays 10.7% less in Greensboro (4.1% in cold Sand Point), saves more with more thermal mass (6.5% to 25%), and loses the gain at an 8 K forecast error; the envelope is from published values, not a fit to measured data.

Abstract

A two-state RC house (ASHRAE 140 Case 600 style envelope, recalled and not checked) with a heat pump (Staffell et al. 2012 COP fit) on NREL TMY3 hourly weather for Greensboro NC and Sand Point AK, a PI thermostat, and a receding-horizon LP controller (HiGHS, 24 h) on an assumed three-band tariff. The controller's model is wrong by a stated amount (true loss +15 to 30%, lighter, sunnier) and its forecast is yesterday's weather. Greensboro: $783 a year against $877 for a 20/24 thermostat (−10.7%), with 2,383 against 7,621 K h outside the 20–24 °C band; a thermostat tuned to 2,839 K h pays $1,300. Flat tariff 4.8%; Sand Point 4.1% and 2.4%. The saving grows with peak/off-peak ratio (4.9% to 14.7%) and thermal mass (6.5% to 25%), and vanishes at 8 K forecast error. Not sourced: heat capacities (swept), cooling COP, solar factor, tariff and 6 kW capacity (assumed); no measured building data was reachable, so nothing is fitted. Simulation only.

Does a DC screen find the N-1 outages an AC power flow flags?

research/infra-n1screen · 7 tests

DC against AC N-1 screening on IEEE 14-, 30-, 39-, 57- and 118-bus cases (every line and transformer outage, modelled, ratings swept): at 25 % rating headroom the DC screen misses 13 to 40 % of the outages an AC power flow calls insecure; flagging at 0.8 of rating misses none, at the cost of 102 false alarms on case118 (186 outages).

Abstract

Operators screen N-1 security with a linear DC power flow. On pandapower's MATPOWER cases 14, 30, 39, 57 and 118, every line and transformer outage is solved as an AC power flow (truth: any other branch over its rating, a bus newly out of the 0.94–1.06 band, or non-convergence) and as a DC flow (screen). Ratings are a swept headroom over base-case flow, not taken from the cases. At 25 % headroom the DC screen misses 25, 17, 13, 40 and 14 % of insecure outages with almost no false alarms; flagging at 0.8 of rating misses none on any case but flags all 186 outages on case118 (84 truly insecure). Judging AC on MW alone cuts the miss rate (e.g. 14 to 12 % on case118, 40 to 20 % on case57), so reactive flow and voltage explain part. Checks: a closed-form 3-bus LODF case. Limits: base dispatch only (no redispatch), single outages, swept ratings (assumed), non-converged AC solves count as insecure, 20–186 outages per case. Modelled benchmark cases, not measured systems.

Do nodal loss penalty factors repair the DC OPF's merit order on the IEEE 30-, 39- and 118-bus cases?

research/infra-plf · 3 tests

Nodal loss penalty factors (AC loss sensitivities) in a DC OPF on the IEEE 30-, 39- and 118-bus cases: on the 118-bus case they recover 23 to 38 % of plain DC's excess cost at 0.6 to 1.0 of load, but the iteration does not converge at 0.8 and above and at 1.1 of load the dispatch is worse than plain DC (modelled benchmark, not a measured system).

Abstract

A lossless DC OPF orders generators by raw marginal cost; the classical fix scales each generator's cost by a penalty factor 1/(1−∂Loss/∂Pi). Sensitivities come from an AC power flow by finite difference, the DC OPF is re-solved with scaled costs and losses added to load, and the dispatch is scored by AC power flow at the original costs against the AC OPF (pandapower, MATPOWER cases, load 0.6–1.1). IEEE 118-bus: excess cost over the AC optimum falls from 0.73, 0.75, 1.48 % (plain DC) to 0.56, 0.46, 0.97 % at 0.6, 0.8, 1.0 of load, versus 0.64, 0.58, 1.18 % for a uniform loss share; at 1.1 it is 2.45 %, worse than both. The damped fixed-point iteration hit its 20-pass cap at 0.8, 1.0 and 1.1 (dispatch still moving 2.5–75 MW per pass), so those rows are not fixed points. Case30 and case39 differences are within 0.1 % and change sign; voltage violations are identical to plain DC. Checks: a three-bus case and two case118 inequalities. Limits: non-converged rows, no AC OPF solution at 1.1 of load on case30/39, no binding branch limits, no prices. Modelled benchmark cases, not measured systems.

Which freight modes can run on batteries or hydrogen, and what does it cost in payload?

research/infra-propulsion · 9 tests

Freight energy per tonne-km from first principles for truck, unit train, bulk carrier and 747 freighter, then diesel swapped for batteries or hydrogen at the same gross mass and range: at 250 Wh/kg a truck keeps 79% of its payload, a train 93%, a ship 55% and the freighter cannot fly the route; 90% needs ~510, 180, 990 and 5,600 Wh/kg (most inputs assumed and swept).

Abstract

A force-balance model of four freight modes (truck rolling plus air drag, Davis train resistance, Admiralty-law ship, aircraft at L/D) gives the cruise-only floor of 0.50, 0.10, 0.035 and 4.4 MJ of fuel per net tonne-km. Swapping the store at fixed gross mass and range: a 250 Wh/kg pack leaves a truck (800 km) 79 % of its diesel payload, a unit train (1,500 km) 93 %, a Panamax bulk carrier (20,000 km) 55 %, and a 747-400F cannot reach 8,250 km (669 km at zero payload). Keeping 90 % of the payload needs about 510, 180, 990 and 5,600 Wh/kg; 700-bar hydrogen keeps 95, 98 and 90 % on the first three, liquid hydrogen 90 % on the aircraft. Checks: a Semi-like truck gives 1.76 against a rated 1.7 kWh/mile (+4 %, assumed inputs); the diesel truck floor is 7.6 mpg against 5.5–6.5 for fleets; the train model reaches 0.46–0.61 of the FHWA rail figure because grades, stops and idling are not modelled. Limits: most drag, efficiency and tank-fraction inputs are assumed and only partly swept; vehicle structure mass is held fixed; no reserves, volume limits, cost or charging.

How much of a pump-scheduling saving survives when one hot day sets the month's demand charge?

research/infra-pumpdays · 5 tests

Net3 pump schedules billed on PG&E B-19 over a month of varying days: with every day the same the best schedule saves 56 to 67 %, but the lowest feasible peak jumps from 63 kW to the 310 kW booster at only 1.5 % more demand, and one day at +20 % cuts the saving to 44 % (summer) and 19 % (winter, spring) (simulated; one network, list prices).

Abstract

infra-pumpdemand billed Net3 pump schedules on PG&E Schedule B-19 with every day identical and found that schedules idling the 310 kW booster cut the bill 56–67 %. A demand charge is set by the highest 15-minute kW of the month, so this project re-simulates all 21,806 schedules with at most two daily on-runs at a 900 s step on days with every Net3 demand scaled by 0.8, 1.0, 1.2, 1.4 and 1.6, and bills 30-day months of ordinary days plus 1, 3 or 10 hot days. With demand 1.5 % above Net3’s shipped level the lowest feasible peak among one-run schedules (tanks above minimum, 20 psi, tanks back to within 0.1 % of the day’s demand) jumps from 63 kW to 310 kW, the booster; at +20 % it is 372 kW, the same as the shipped schedule. A month with three days at +20 % saves 43.5 % (summer) and 18.7–19.2 % (winter, spring) against the shipped schedule on the same month, against 56, 66 and 67 % with identical days; at +40 % 1at +40 % 3–14 %ndash;15 %; at +60 % no schedule meets the periodic tank test. Choosing a different schedule for the hot days than for ordinary days adds at most 4.2 points (summer; under 1 point in winter and spring) over one schedule feasible on every day. The day multiplier is a sweep, not a measured demand distribution; each day is simulated as periodic (tanks return to where they started), so a hot day cannot borrow from its neighbours; the threshold is for one-run schedules and a 0.1 % tolerance; B-19 is not the tariff a utility of Net3’s size is on, and it is one teaching network.

Does a real demand charge change when a water utility should run its pumps?

research/infra-pumpdemand · 7 tests

Net3 pump scheduling billed on PG&E's published B-19 tariff with demand charges at a 15-minute step: the lake-pump schedules that idle the 310 kW booster cut the monthly bill 56 to 67 % (peak 373 to 63 kW), and the demand charge, 60 to 64 % of the shipped bill, does not move the optimal schedule at any size from 0 to 20 times (simulated; one network, list prices).

Abstract

The 21,806 pump-10 schedules with at most two daily on-runs are simulated on EPANET’s Net3 (WNTR) at a 900 s step and billed on PG&E Schedule B-19 (secondary voltage, published rates effective March 2026): seasonal energy prices plus the peak, part-peak and any-time demand charges on the highest 15-minute kW. The shipped schedule peaks at 373 kW because booster pump 335 (about 310 kW) runs when tank 1 is low; its demand charges are 60–64 % of the shipped bill. Long lake-pump runs idle the booster and cut the peak to 63 kW, so the bill falls 56 % (summer), 66 % (winter) and 67 % (spring) with the tanks returned to within 0.1 % of daily demand (63–65 % with a 1 % tolerance), 62.5 % over a year. Pricing demand changes nothing about which schedule wins: the energy-only and full-bill optima are the same schedule, and stay so with demand rates scaled from 0 to 20 times. Time-of-use energy prices add under 1.5 points beyond the flat-energy optimum. The tariff is a real list price but not a tariff Net3’s size would be on (B-19 is mandatory above 499 kW), Net3’s demand is not seasonal, riders and taxes are left out, and it is one teaching network with a gravity river source.

When should a water utility run its lake pump, and how much of the saving is the tariff?

research/infra-pumpsched · 14 tests

Pump scheduling on EPANET's Net3 (WNTR): running the lake pump 21 h from 01:00 cuts pumping energy 52 % at a flat tariff because it idles the booster pump; the time-of-use tariff adds 3 to 16 % of cost at a ratio of 3 or less, and hourly on/off schedules (21,806 simulated, plus a GA) add almost nothing beyond one window once tank drawdown is priced (simulated, assumed tariff shapes).

Abstract

WNTR simulates Net3 for three days with pump 10 (the lake source) on a repeating 24-hour schedule, scoring the last day on pump energy (Net3’s 75 % efficiency) and time-of-use cost under three assumed tariff shapes with the peak/off-peak ratio swept 1.5–10. Feasible schedules keep the tanks in range and the daily balance within 1 %; pressure and tank range never bind. At a flat tariff the best window (01:00, 21 h) uses 1,307 kWh a day against 2,728 as shipped, 52 % less, because Net3’s river supply is mostly gravity and the booster pump 335 only runs when tank 1 is low, so more lake pumping idles it: a saving that needs no tariff. Beyond that, knowing the tariff adds 3.3 % of shipped cost at ratio 1.5, 15.8 % at 3 and 95 % at 10 for a 16:00–21:00 peak, and 3.1/12.1/39.2 % for a daytime peak. An exhaustive search of all 21,806 schedules with at most two on-runs a day finds a second window worth 0–0.02 % of cost for 8 of 10 tariffs (9.5 % and 1.2 % for the other two); a genetic algorithm and a local search over all 224 hourly schedules beat that by up to 4 points, but most of it is tank drawdown within the 1 % tolerance, and priced it falls to about 0–1.3 points. A first version mis-simulated windows that cross midnight; corrected here. One network, assumed tariffs (none sourced), no demand charge, a 1 % mass-balance gap not traced.

How much heat-pump and EV load growth wears out a distribution transformer, and how much does smart charging buy back?

research/infra-transformer · 8 tests

Distribution transformer ageing under heat-pump and EV growth: an IEEE C57.91-form thermal model on TMY weather and a standard load profile; loss of life stays under 0.01%/yr until ~50% of homes electrify, then 5.6%/yr at 100% with uncoordinated charging against 1.07%/yr with valley-filled charging (constants swept, not verified).

Abstract

An hourly IEEE C57.91-form top-oil and hot-spot model (ageing factor exp(15000/383 − 15000/(θH+273)), 180,000 h normal life) driven by 10 homes: the BDEW H0 profile at 10,800 kWh/yr each, NREL TMY ambient, a heat pump with a temperature-dependent COP, and EV charging either on arrival or valley-filled overnight. On a transformer sized at 0.5 per unit of baseline peak in Greensboro weather, loss of life is 0.0019 %/yr at baseline, 0.0075 at 50 % of homes with a heat pump and an EV, and 5.6 %/yr at 100 % with uncoordinated charging (about 18 years to end of life) against 1.07 %/yr with smart charging. Smart charging removes an EV-only load entirely (0.035 to 0.0026 %/yr) but not coincident heat-pump cold-snap peaks; at 0.7 per unit every heat-pump case fails. Uniform growth of 1.16–1.28× doubles loss of life but 2.2–3.1× is needed to reach the rated-life rate. Limits: the standard’s constants (55 K top-oil rise, R 3.2, n=m=0.8, τ 3 h) are recalled, not verified, and are swept; heat pumps are fully coincident with no setback; TMY weather rather than extremes; a German load shape on US weather; smart charging has perfect foresight.

Other research topics

Proper scoring & elicitation28Effort & peer prediction9Verification games & slashing19Detection & tolerances14Markets as routers13Prediction-market design9Paying contributors8Decentralised training systems23Digital twins & sim-to-real164LLM chip design loops40Robot manufacturing loops53Ambient AI assistant46Self-replicating manufacturing34Simulation-first design64Engineered clothing45Task-specific AI accelerators40Algorithmic chip-design loops42Open-source purpose-built robots44The software-engineering loop43Adversarial human imitation41Open-source residential construction41Autonomous multi-angle capture34Sensing, imaging and 3D31Energy supply and dense energy storage39Robot societies among people31Agentic co-design of low-cost robots27Laundry-hanging robots25Machine learning on qualitative data23Robots on the building site27Civilizations & group psychology1History & human sciences1

Produced with AI assistance (Claude). Results are from the code in this repository and are simulated or stylised unless the abstract says otherwise; nothing here implies affiliation with or endorsement by any lab, researcher or company cited. MIT licensed.