Research

I work on power system reliability, optimal and security-constrained power flow, and explainable AI for intelligent contingency screening. This page collects the parts of that work you can pick up and use, rather than only read about. More will appear here as it becomes publishable.

Project 01

Does resilience change the investment?

A site that is electrifying its heat and its fleet has to decide which energy assets to buy, solar, a battery, backup, and how to run them. The usual study picks the cheapest mix that meets a carbon target, from annual energy and carbon figures. It rarely asks whether that mix fits the site’s grid connection, survives a power flow on the site’s own network, or keeps essential load running through an outage. This asks whether those questions change the answer, and by how much.

One distribution warehouse, three pathways: the site as it runs today; the cheapest plan that meets the carbon target on energy and carbon alone; and the same plan once it must also fit the connection, pass an AC power flow and carry the cold store and IT through an outage. Change the ride-through requirement, the outage conditions, the connection or the diesel policy, and the page re-plans all three and says what, if anything, changed.

Loading the site model…

What this is, and what it is not

The site is a representative distribution warehouse near Daventry, in the Midlands logistics belt. The warehouse itself is synthetic: its loads follow a short recipe, written down in full in the case file, for operations, a cold store, IT, heat pumps and a thirty-van electric fleet. Everything around it is real. Solar output and temperature are PVGIS hourly data for 2023 at the site; grid carbon intensity is the GB half-hourly actual for the same days; prices, emission factors and costs are the latest published at build time. Because weather, solar and grid carbon come from the same days, any correlation between them is the real one.

It is a sketch of a method, not the method. The planning is a sweep over a few hundred candidate plans on twelve representative weekdays, not a multi-period optimisation, and it chooses what to build but not when. The two outage scenarios are named days, an ordinary one and the hottest weekday of 2023, not a statistical model of compound weather. Those are exactly the parts a full study would replace.

It is not a connection study or a business case. The site network is checked for import, transformer and cable loading and voltage; fault level, protection and the G99 islanding study are not modelled. Costs are indicative, and several are assumptions, listed below with the rest.

Two results come from the physics rather than from anything chosen here. The first is that a battery bought to trade is expensive to hold in reserve: the energy kept back for an outage is energy it cannot sell, so a resilience requirement changes how a battery is run as much as what is bought, and where a new diesel generator is allowed, it is usually the cheaper answer, at the price of new Scope 1 emissions. The second is that a battery shaves kilowatts but not kilovars. Planned against a kilowatt limit, a site can still breach its kVA connection once the reactive power of its compressors and heat pumps is counted, which is why the AC check returns a tighter limit to the plan rather than simply passing or failing it.

Assumptions worth stating

  • Electrification is given, and not costed. Pathways 2 and 3 both run heat pumps and electric vans; neither pays for them, because they are common to both and the question is what energy assets to add. That is why the existing site’s bill is shown but not set against their 20-year cost.
  • The carbon target is assumed. Scope 1 and 2 must fall at least 50 per cent below today. Emissions are for the first operating year, location-based, with DESNZ 2026 factors; market-based Scope 2 needs supply contracts the site does not have.
  • A battery or solar array only helps in an outage if the site can island. Grid-following inverters disconnect when the grid does. Riding through needs a battery built to form its own grid, with transfer switchgear and islanding protection, or a generator; the plan pays for that capability when it chooses it.
  • Essential load is the cold store and IT. Refrigeration rises 3 per cent for each degree of ambient temperature, the midpoint of the 2–4 per cent the Carbon Trust gives per degree of condensing temperature. The outage test starts at every half-hour of the scenario day and must carry essential load for the full duration from each one.
  • The battery runs at unity power factor. It has an 88 per cent round trip, a 15-year life and one replacement inside the 20 years. Each representative day is simulated until it repeats itself, so no day borrows energy from the next.
  • Only weekdays are modelled. Each month is represented by a typical weekday, the one closest to that month’s median solar yield and mean temperature, weighted by the days in the month.
  • Diesel is counted only for testing. A standby generator’s annual Scope 1 here is an hour a month at half load. Any year it actually runs through an outage adds more.
  • Costs are 20-year present values at 7 per cent real. Residual value is credited for assets that outlast the period. The value of lost load, £17,000/MWh, is shown per outage event only: turning it into an annual cost would need an outage frequency this page does not claim to know.

Sources

Project 02

Contingency screening on the IEEE 14-bus system

A power system is planned so that it survives losing any single element, the N‑1 rule. Checking that means re‑solving the network once for every component that could fail, which is why operators screen first: rank the outages cheaply, then study only the worst. This is that idea, running live.

Click any line below to trip it. The AC power flow re-solves in your browser and the diagram redraws: line colour and thickness show loading, bus colour shows voltage. The table underneath ranks all twenty single-line outages by a classical severity index.

Loading the network…

What this is, and what it is not

The network is the IEEE 14-bus test system, the standard small case used for teaching and benchmarking. The power flow is a full Newton–Raphson AC solution, not an approximation: it is checked against the case's own published solution to within 0.0013 pu, and it converges in four iterations from a flat start.

The ranking uses the active-power performance index, the textbook screen: sum each branch's loading raised to a high power, so one badly overloaded circuit outweighs many comfortable ones. It is deliberately the classical method, not my research. My own work replaces an index like this with a learned ranking that also explains why it flagged a case, and this page makes no claim about how that performs.

Watch what happens as you raise demand. Around 110% the index starts getting the order wrong: outages that cause a genuine overload sink below ones that cause none, because a spread of mid-loaded branches out-scores a single overload. That failure has a name, masking, and it is the reason this problem is still worth research.

Assumptions worth stating

  • Line ratings are assumed. The IEEE case lists every thermal limit as zero, so the ratings here are ours: round values set above base-case flow, so the intact network is secure with margin and some single outages are not.
  • The voltage band is 0.94–1.10 pu. The case file states 1.06, but schedules generators at 1.07 and 1.09, so its own published solution breaches that. The band was widened to contain the intact solution, so that a violation you see is caused by the outage rather than by the data.
  • Generation does not re-dispatch. Tripping a line redistributes flow; no optimiser steps in to fix it. A real operator would re-dispatch, and that is the security-constrained OPF problem sitting one layer above this one.
  • Generator VAr limits are not enforced. This matches the default the reference solution was produced under.

Project 03

Where should the battery go?

Putting a battery on a distribution network is not one decision but three: where on the feeder, how big, and what it is told to chase. Those three are usually settled by different people optimising different things, a trader, a carbon target, a network planner, and they do not agree with each other. This is that disagreement, running live.

Pick a distribution licence area, click a bus to put the battery there, set its power and its energy, and choose what the dispatch rule is trying to win. The feeder re-solves for each of the last forty-eight finished half-hours, with and without the battery, ninety-six AC power flows, against GB conditions: the regional carbon intensity for that licence area, GB national demand, and the half-hourly system price. It then says whether the siting keeps the feeder inside its voltage and thermal limits, what it is worth and to whom, and what it does to emissions counted at the regional average intensity.

Loading the feeder…

What this is, and what it is not

The network is the 33-bus radial distribution feeder of Baran and Wu (1989), a 12.66 kV case widely used in the storage siting and sizing literature. It is often called the IEEE 33-bus system because it appeared in IEEE Transactions on Power Delivery, but it is not one of the IEEE distribution test feeders, so it is named here by its authors. Its line impedances and loads are the published values, as MATPOWER distributes them, and it runs in its normal radial configuration with the five tie switches open. With the source held at the published 1.00 pu, the solver reproduces the published solution: 202.7 kW of loss and 0.9131 pu at bus 18, in four iterations from a flat start. The page itself changes the source voltage, the load level and the ratings, each set out under the assumptions below. The power flow is the same Newton–Raphson solver as the 14‑bus project above.

It is not a real UK feeder. That matters enough to say plainly. No GB distribution circuit is published with full impedances under a licence I could verify, so rather than put licence-uncertain network data on a public page I used the benchmark the literature uses. What is British here is everything driving it: the carbon intensity is the National Energy System Operator's regional figure for the licence area you select, which that feed publishes as a forecast rather than a measurement; national demand outturn and the system price come from Elexon. The voltage band is the GB statutory one for high-voltage supplies, ±6 per cent, applied as though this 12.66 kV case were an 11 kV GB circuit. Swapping in a genuine UK feeder later is a change of data, not of method.

It is not a connection study. Voltage, thermal loading, reverse power flow and losses are all here; fault level is not, and in GB fault level is frequently the thing that actually blocks a connection when everything else looks fine. A favourable verdict on this page is not a verdict on connectability.

The three dispatch rules are deliberately simple. Each ranks the half-hours of the window by one signal and charges at the bottom and discharges at the top. Because the window is already over, each rule sees the whole day at once, which no real battery can. None of them is an optimiser, and none is my research. They are transparent on purpose, so that when the answers disagree you can see exactly why rather than take an optimiser's word for it. Making that choice properly, a policy that respects the network, the carbon signal and the revenue at once, is the open problem, not something this page solves.

Two results fall out of the physics rather than out of anything I chose. The first is that location dominates: a battery removes loss mainly from the circuits between it and the substation, so a few hundred kilowatts injected at the end of the main trunk, bus 18, removes around twenty times the loss the same injection removes at the head of the feeder. Location is not simply distance, though. The gap narrows as the battery grows, because a large injection overshoots the load near it and pushes power back up the feeder, and on a lightly loaded spur such as bus 22 a 1 MW injection adds loss rather than removing it. The second is that a battery is a load whenever it charges. Charging at full rated power into a weak point is the same problem the battery was bought to fix, only pointing the other way, and it is why the most profitable dispatch rule can be the one the network cannot accept.

Assumptions worth stating

  • Nodal demand is not measured, because nowhere publishes it. The case's published bus loads, real and reactive, are scaled together by GB national demand (Elexon's initial national demand outturn) against the highest half-hour in the window, so that half-hour runs at exactly the published load. Real feeders do not move in unison like that, and national demand is metered at transmission level, so generation embedded in the distribution networks shows up in it only as lower demand.
  • The primary busbar is held at 1.02 pu, not the 1.00 pu of the published case. At 1.00 pu the far end of the trunk sits at 0.913 pu at full load, and falls below the GB band whenever load is above about 71 per cent of the published case, which on a typical day is most of it. At 1.02 pu it falls below the band only above about 95 per cent, in the busiest half-hours. A GB primary has an on-load tap changer and targets above nominal for precisely this reason. It is worth drawing the obvious conclusion: a tap change is the cheapest lever a network operator has, it lifts the whole feeder at once, by 0.020 to 0.022 pu here, and a battery should be judged against a properly tapped network rather than against a neglected one.
  • Thermal ratings are assumed. The published case has none. Each circuit is given the smallest of a set of plausible ratings, 1.5 to 8 MVA, that leaves at least 35 per cent headroom over its flow at full published load, so the intact feeder is secure at full load and no result on this page is decided by a rating picked to make a point. Loading is apparent power against that rating, the MATPOWER convention; a thermal limit is really a current limit, and at 0.94 pu apparent power understates current by about 6 per cent.
  • The battery runs at unity power factor. GB grid-scale storage normally does unless it is contracted for reactive support. Letting it hold voltage instead would flatter every voltage result here.
  • The window closes on itself. The battery ends the twenty-four hours at the state of charge it began them with. Without that constraint a battery that started half full and ended empty would appear to deliver energy nobody charged, quietly inflating both the trading revenue and the carbon saving. One consequence is worth noticing: when a short-duration battery cannot give back enough to cover every half-hour its rule picked, the rule scales the discharge down evenly across all of them, so it does not reach its rated power even at the peak. A dispatch that concentrated the energy in the peak half-hour would.
  • Losses and revenue are two ledgers, and they are never added. Losses avoided and peak removed accrue to the network operator; trading accrues to whoever owns the battery. In GB those are not the same party, a network operator buys flexibility, it does not trade, so a single total would imply someone who does not exist. The owner figure trades the system price with hindsight, which flatters that one stream, and it leaves out the balancing mechanism and ancillary services, where GB storage earns most of its income. It is an illustration, not a floor and not a business case.
  • Carbon is counted at average intensity, not marginal. Energy charged and discharged, and loss removed, are each valued at the regional average intensity of their half-hour. That is attribution, a way of sharing out emissions that already happened. The change a battery actually causes depends on the marginal plant that responds to it, which can differ from the average and even move the other way, so the carbon figure is not a measured or modelled change in GB emissions.
  • Embodied carbon is shown as a band, not a number. Published estimates for lithium storage spread widely with chemistry, factory grid and system boundary. At some sizes that band is wider than the difference between two options, which is itself the useful thing to see.
  • This is the last twenty-four hours, not tomorrow. The window is the forty-eight most recent finished half-hours, re-solved against the network, and it slides forward as the feeds publish. Demand and the system price are outturn. Regional carbon intensity is the regional feed's own forecast for each half-hour, because it publishes no measured regional figure. A half-hour a feed has not yet published takes its neighbour's value, and a feed that does not answer at all is replaced by a stated stand-in profile, named on the panel.