EV aggregate solar charging allocation calculator

Calculate solar charging energy and imported charging energy with your own figures.

Your numbers

Use the units shown. Results update as you change valid inputs.

Use solar charging energy and imported charging energy to compare changes to your inputs. The method and limits below explain the scope.

Examples

Examples

Try the starting example

Available slots [PV kW,non-EV site load kW]; enter JSON
[[5,2],[8,3],[2,3]]
Aggregate charge limit (kW)
4
Required grid-side charging energy (kWh)
10
Slot duration (hours)
1
Solar charging energy (kWh)
7
Imported charging energy (kWh)
3
Unfilled charging request (kWh)
0
Slot allocation [charge,solar,grid] (JSON)
[[4,3,1],[4,4,0],[2,0,2]]

Try another scenario

Available slots [PV kW,non-EV site load kW]; enter JSON
[[10,2],[2,1]]
Aggregate charge limit (kW)
6
Required grid-side charging energy (kWh)
15
Slot duration (hours)
1
Solar charging energy (kWh)
7
Imported charging energy (kWh)
5
Unfilled charging request (kWh)
3
Slot allocation [charge,solar,grid] (JSON)
[[6,6,0],[6,1,5]]
Calculation method

Calculation method

Solar charging energy (kWh)

For each slot charge min(remaining,limit×duration); solar=min(charge,max(0,PV−site load)×duration). Sum.

Imported charging energy (kWh)

Sum slot charge minus solar allocation.

Unfilled charging request (kWh)

Required minus sum allocated charging energy.

Slot allocation [charge,solar,grid] (JSON)

Apply earliest-slot greedy algorithm; all energies in kWh.

Symbols and units
a
Available slots [PV kW,non-EV site load kW]; enter JSON
b
Aggregate charge limit (kW)
c
Required grid-side charging energy (kWh)
d
Slot duration (hours)

Use the units shown. A list keeps the order in which you enter its values. The symbol ^ means “raised to the power of”.

Assumptions & limits

Assumptions & limits

  • One aggregate fleet energy request available in every supplied slot. Greedy earliest charging; not a forecast optimizer. Supported limits: All numeric inputs and computed intermediates must remain finite. Supported numeric input magnitude is zero or 1e-12 through 1e12 in absolute value; reject values outside this bounded range. All lists/JSON record tables are limited to 100 records unless a stricter bound is stated; reject malformed record arity and wrong member types. All numeric values must be finite. Lists contain at most 100 records; required lists must be nonempty. Rates, probabilities and fractions are entered as fractions, not percentages; fractions must be between 0 and 1. Use a single consistent user-selected currency for all amounts; no exchange-rate conversion.
Are these inputs private?

These calculations run in your browser. A shared link contains the values you choose to share. Only questions submitted to the separate AI finder are sent to OpenAI.

Share this page
Share this calculator

Leave unchecked to share the page without your entered values.