Equipment sizingCostingEnergy mass balanceStorage
Molten-salt two-tank thermal storage
Sizes a two-tank solar-salt heat store from its usable temperature swing: salt inventory, tank geometry, standing loss per day, freeze protection and the levelised cost of the heat it delivers.
Levelised cost
Levelised cost of stored heat
Annualised CAPEX, fixed O&M and charging energy, divided by the heat actually delivered
Storage service cost
The levelised cost with free charging heat: what a directly solar-charged store would cost
Delivered price of the electricity that charges the store. 38.94 EUR/MWh is IRENA's 2023 global utility-scale PV LCOE (44 USD/MWh). Set it low to approach a directly solar-charged store, whose floor is the storage service cost output.
Real after-tax WACC used for the capital recovery factor. IRENA 2023 uses 5 % for the OECD and China, 7.5 % elsewhere.
Cost recovery period. NREL ATB uses 30 years for all technologies; PNNL gives a 35-year calendar life for conventional thermal storage.
Capital recovery factor
Annualisation factor at the chosen rate and lifetime
Total annual cost
Annualised CAPEX, fixed O&M and charging energy
Annualised CAPEX
Installed cost multiplied by the capital recovery factor
Fixed O&M
2 % of direct CAPEX per year
Log in to view this sensitivity chart.
Sizing
Thermal power the store delivers to the downstream user while discharging. With the storage duration it fixes the usable thermal capacity.
Hours of discharge at rated thermal power. 10 h is the SAM molten-salt power-tower baseline (NREL Turchi et al., Table 3).
Usable thermal capacity
Rated discharge power multiplied by storage duration
Total solar-salt inventory
Thermodynamic mass plus a 14 % margin for heel, sumps and unusable volume
Thermodynamically useful salt mass
The mass that actually swings between hot and cold temperature
Salt volume
Inventory at the hot-tank density, 1 710 kg/m3
Volume of each tank
Salt volume plus 8.4 % freeboard; both tanks carry the full inventory
Total tankage volume
Two tanks, hot and cold
Tank diameter
API 650 field-erected cylinder at H/D = 0.724
Tank height
Diameter multiplied by the 0.724 height-to-diameter ratio
Heat-loss surface per tank
Shell, roof and floor
Volumetric energy density of the salt
Compared with IRENA's 70-200 kWh/m3 for molten salts
Volumetric energy density of the tankage
Capacity over the two tanks' combined volume
Log in to view this sensitivity chart.
Temperatures and losses
Salt temperature in the hot tank. Capped at 580 C: solar salt decomposes above 585 C. Above 600 C the hot tank needs an IN625-class alloy (out of scope here).
Salt temperature returning to the cold tank. Kept above the 246.3 C measured liquidus of solar salt; 290 C is the SAM baseline.
Usable temperature swing
Hot minus cold tank temperature: the parameter that sets both mass and cost
Freeze margin on the cold tank
Cold tank temperature above the measured liquidus of solar salt
Standing heat loss
Both tanks held at temperature, 24 hours a day
Standing loss per day
The efficiency indicator of a heat store: it falls as the cube root of size
Standing loss per year
The daily loss over 365 days
Hot tank cool-down rate
How fast a full hot tank loses temperature when nothing is drawn
Cycle thermal efficiency
Heat out over heat in, driven by the standing loss and the number of cycles
Charge-to-discharge penalty
Inverse of the cycle thermal efficiency
Salt thickness equal to the tank envelope
How deep stagnant salt would have to be to insulate as well as the tank wall
Log in to view this sensitivity chart.
Duty and charging
How many times the full capacity is turned over in a year. ANL gives 200-700 for two-tank molten-salt TES, with reference cases at 120-230 days per year.
Share of the year the store is offline (outage, seasonal shutdown). Only then do the electric heaters pay for the standing loss: in mature operation Solar Two's tank heaters drew ~0 kWh/day because the charging source made the loss up.
Equivalent full-power discharge hours
Storage duration multiplied by cycles per year
Capacity factor
Discharge hours as a share of 8 760
Heat charged per year
Capacity multiplied by the number of full cycles
Heat delivered per year
Charged heat net of the standing loss
Electricity drawn per year
Charging power plus freeze-protection trace heating
Specific electricity consumption
Electricity in per MWh of heat delivered
Freeze-protection installed power
Immersion heaters that keep the salt above its 238 C freezing point
Trace heating as a share of output
Guardrail: Solar Tres expected under 1.5 % of gross production
Log in to view this sensitivity chart.
Capital cost build-up
Delivered price of 60-40 NaNO3-KNO3 solar salt. 708 EUR/t is NREL/Mehos 800 USD/t at the ECB 2025 average rate; PNNL quotes 950-1000 USD/t (841-885 EUR/t).
Installed storage island cost
Salt inventory plus tankage, foundations, piping, insulation, I&C and heaters
Salt media cost
Inventory multiplied by the delivered salt price
Tankage and balance-of-plant cost
Tanks, foundations, piping, insulation, I&C and freeze protection
Storage CAPEX per kWh of thermal capacity
Salt inventory plus tankage, divided by usable capacity; varies as 1/deltaT
Storage CAPEX per kWh, in USD
For direct comparison with the published NREL, PNNL and IRENA figures
Position in the published cost band
0 = at the 20 USD/kWh_th floor, 1 = at the 30 USD/kWh_th ceiling; outside [0,1] = outside the band
Salt cost at the PNNL upper price
The same inventory at 1 000 USD/t instead of 800
CAPEX if the hot tank were re-rated above 600 C
IN625-class alloy on the hot tank only
Log in to view this sensitivity chart.
About
Calculator context
About
Calculator context
What it does. Sizes a two-tank sensible heat store in solar salt (60-40 wt% NaNO3-KNO3) from the duty you give it - rated discharge thermal power, storage duration, hot and cold tank temperatures - and prices the storage island that results. The scope is the bare store: salt inventory, two API 650 field-erected tanks with foundations, piping, insulation, instrumentation and freeze protection. There is no solar receiver, no power block and no steam generator in here. The useful output is HEAT, so no electrical round-trip efficiency appears anywhere: the efficiency of this asset is read as a standing heat loss per day.
Nominal case (100 MW_th for 10 h, 574/290 C, 200 cycles/year, salt at 708 EUR/t, charging energy at 38.94 EUR/MWh, 5 % real over 30 years). Usable capacity 1 000 MWh_th. Salt inventory 9 323 t, occupying 5 452 m3 at the hot density; each of the two tanks is 5 910 m3, 21.8 m across and 15.8 m high. Standing loss 12.7 MWh_th/day, or 1.27 %/day, which over a year is 2.3 % of the charged energy at this duty - a cycle thermal efficiency of 97.7 %. Freeze protection is 1 140 kWe of installed immersion heaters. CAPEX 21.30 MEUR, that is 21.30 EUR/kWh_th or 24.07 USD/kWh_th. Levelised cost of stored heat 49.58 EUR/MWh_th, of which 9.27 is the storage service (annualised CAPEX plus O&M) and 40.31 is the charging energy.
Why storage duration is not the sizing parameter here. Both cost terms are linear in inventory - the salt follows mass, the tankage follows volume - so the specific CAPEX is flat with size and varies only as 1/deltaT: 21.30 EUR/kWh_th at 284 K of swing, 28.80 at 210 K. What does change with size is the standing loss, which follows the surface-to-volume ratio and therefore the cube root of capacity: 2.67 %/day at 107 MWh_th, 1.27 at 1 000, 0.91 at 2 700. Between the two ends of the power slider the levelised cost moves by 1.7 %. That is the model's claim, and it is what separates a heat store from a battery, where duration drives the cost.
What was calibrated and what was tested. Two parameters are fits, each on a single published anchor, and they are declared as such: the 1.14 inventory margin and the 1 405 USD/m3 tankage rate, both from NREL Table 6 at 2 700 MWh_th and 284 K. Reproducing 25 172 t against 25 100 t published, and 24.07 against 24.00 USD/kWh_th, is therefore the fit closing on itself - an identity, not a validation. Three checks are genuinely independent of that calibration. First, a second NREL cost point: at 180 K of swing the model returns 37.97 USD/kWh_th against 35 published, +8.5 %, and the miss is published here rather than hidden. Second, IRENA's 70-200 kWh/m3 volumetric density band for molten salts, which nothing in the sizing touches: the model gives 183 kWh/m3 of salt and 85 kWh/m3 of tankage. Third, Solar Two's heat-trace guardrail of 1.5 % of gross output: the worst freeze-protection load anywhere inside the declared input ranges is 1.11 % of delivered heat. The tank U-value of 0.35 W/m2-K is itself back-calculated from Solar Two's measured hot and cold tank losses, so the fact that the model cools a full hot tank at 4.5 K/day where the plant measured 4 C/day is a consistency check, not a fourth independent test.
Domain and guards. The declared input box was swept at all 1 024 of its corners: the five headline outputs stay inside their grounded bounds everywhere, the lowest cycle efficiency reached is 93.1 % - so the 5 % efficiency floor never binds inside the domain - and the freeze-protection guardrail holds at every corner. The hot tank is capped at 580 C, below the 585 C decomposition limit of nitrate salts; the cold tank floor of 250 C sits above the 246.3 C liquidus DLR measured on commercial SS60. A design below 50 K of usable swing, or a duty so thin that standing losses would swallow the throughput, is refused rather than priced.
Limitations, stated plainly. No heat-exchanger pinch and no steam generation - the store hands over heat at the hot tank and the downstream calculator owns the pinch. No salt degradation and no corrosion allowance. Tanks are assumed 347SS hot and A516-70 carbon-steel cold, as in the reference case; above 600 C an IN625-class hot tank costs 2.44x more, and that regime is outside this calculator, quoted only as a what-if output. The model has no economy of scale on tankage: a flat rate per cubic metre is what the source supports, and inventing a size exponent would be a fit with nothing behind it. The cost basis mixes 2017-2022 USD sources converted at the ECB 2025 average rate with no CEPCI escalation.
Model
138 variables — inputs, calculations and outputs, with their dependencies.
Model
138 variables — inputs, calculations and outputs, with their dependencies.
| Variable | Value | Unit | Depends on |
|---|---|---|---|
| 100 | MW_th | — | |
| 10 | h | — | |
| 574 | C | — | |
| 290 | C | — | |
| 200 | cycles/year | — | |
| 708 | EUR/t | — | |
| 38.94 | EUR/MWh | — | |
| 0.05 | ratio | — | |
| 30 | years | — | |
| 0.05 | ratio | — |
| Variable | Formula | Unit | Depends on |
|---|---|---|---|
if((<=)+(<=)+(<=)+(>=)+(-<=)+(<=)+(<)+(<)+(<)+(<=)+(<)+(>)>,,) | bool | ||
- | K | ||
/max(,) | ratio | ||
**(-)/ | kW | ||
**(-)/ | kW | ||
(+)/ | ratio | ||
/max(,) | ratio | ||
* | MWh/year | ||
/max(,) | MWh/year | ||
if(<=,,) | flag | ||
(+)/ | kWh/m3 | ||
/max(,) | ratio | ||
/max(,) | EUR/m3 | ||
/max(*,) | EUR/kWh_th | ||
/max(*,) | EUR/kWh_th | ||
/max(,) | ratio | ||
min(,) | USD/kWh_th | ||
max(,) | USD/kWh_th | ||
/max(,) | EUR/t | ||
/max(,) | ratio | ||
/max(,) | EUR/t | ||
(*(+)^)/max((+)^-,) | 1/year | ||
/max(,) | ratio | ||
max(-,) | years | ||
/max(,) | ratio | ||
/max(,) | EUR/MWh | ||
/max(,) | ratio | ||
* | EUR/year |
| Variable | Formula | Unit | Depends on |
|---|---|---|---|
* | MWh_th | ||
- | K | ||
- | K | ||
*/max(*,)/ | t | ||
* | t | ||
*/max(,) | m3 | ||
* | m3 | ||
* | m3 | ||
(*/max(*,))^(/) | m | ||
* | m | ||
**+*(^)/ | m2 | ||
(+)*/ | MWh_th/day | ||
*/max(,) | %/day | ||
**/max(**,) | K/day | ||
* | MWh_th/year | ||
* | h/year | ||
* | MWh_th/year | ||
if(-<=,,clamp(-/max(,),,)) | ratio | ||
/max(,) | ratio | ||
* | MWh_th/year | ||
* | kWe | ||
+ | MWh/year | ||
/max(,) | MWh/MWh_th | ||
*/max(,) | % | ||
*/max(,) | kWh/m3 | ||
*/max(,) | kWh/m3 | ||
/max(,) | m | ||
* | EUR | ||
* | EUR | ||
+ | EUR | ||
+ | EUR/kWh_th | ||
* | USD/kWh_th | ||
(-)/max(-,) | ratio | ||
* | EUR | ||
+*(*+(-)) | EUR | ||
if(<,/max(,),(*(+)^)/max((+)^-,)) | 1/year | ||
* | EUR/year | ||
** | EUR/year | ||
++ | EUR/year | ||
(+)/max(,) | EUR/MWh_th | ||
/max(,) | EUR/MWh_th | ||
*/ | % |
Assumptions
58 assumptions used in the calculations
Assumptions
58 assumptions used in the calculations
Prevents division by zero in the guarded denominators.
Market range Not applicable (numerical parameter).
0.000001Numerical stability constant.The DSL forbids inline numeric literals, so 1 is named.
Market range Exact.
1Unit literal.Named zero for the guard expressions and the boolean flags.
Market range Exact.
0Unit literal.Used for the two tank end closures and for band midpoints.
Market range Exact.
2Unit literal.Cube-root exponent when a tank diameter is recovered from a volume.
Market range Exact.
3Unit literal.Cylinder volume V = pi D2 H / 4, inverted for the diameter.
Market range Exact.
4Unit literal.Fraction-to-percent conversion for the reported percentages.
Market range Exact.
100Unit literal.Cylindrical tank geometry.
Market range Exact.
3.141593Mathematical constant.Capacity-factor annualisation.
Market range 8760 (non-leap); 8784 (leap).
8760h/yearCalendar-year hours convention.The standing loss is integrated over a full day.
Market range Exact.
24h/dayTime conversion.Annualises the daily standing loss.
Market range 365 (non-leap); 366 (leap).
365day/yearTime conversion.Converts a kW loss into kJ per day for the cool-down rate.
Market range Exact.
3600s/hTime conversion.Specific costs are quoted per kWh_th, capacities in MWh_th.
Market range Exact.
1000kWh/MWhUnit conversion.The salt inventory is reported in tonnes, the physics is in kilograms.
Market range Exact.
1000kg/tUnit conversion.The U-value is in W/m2-K, the losses are reported in kW.
Market range Exact.
1000W/kWUnit conversion.Salt cp is in kJ/kg-K, capacity in MWh_th.
Market range Exact.
3600000kJ/MWhUnit conversion.The O&M rate is declared in percent per year and consumed as a fraction.
Market range Exact.
0.01Unit conversion.Sets the sensible heat stored per kilogram and per kelvin of swing.
Market range1.55kJ/kg-KPublished property table for 60-40 NaNO3-KNO3.Converts the inventory into the volume the tanks must hold.
Market range 1 710-1 905 kg/m3 between hot and cold conditions; the hot value is the sizing case.
1710kg/m3Published property table.Hard physical guard: below it the salt freezes in the cold tank and the plant is lost.
Market range238CPublished melting point.The conservative operating floor the reported freeze margin is taken against.
Market range246.3CLaboratory measurement on 60-40 wt% NaNO3-KNO3.Hard physical guard: above it the nitrates decompose.
Market range585CPublished stability limit.Shows the store is envelope-limited rather than salt-limited.
Market range0.5501W/m-KLaboratory measurement.Reference point the chosen swing is compared against.
Market range574CSAM baseline case.Reference point the chosen swing is compared against.
Market range290CSAM baseline case.Covers the tank heel, sumps and the volume that cannot be drawn down.
Market range1.14Back-calculated from a single published inventory.Vapour space and thermal expansion allowance above the salt level.
Market range1.084Back-calculated from published tank geometry and salt mass.Fixes the surface-to-volume ratio, and therefore the standing loss, once the volume is known.
Market range0.724Published tank dimensions.Sets the standing loss, which is the efficiency indicator of a heat store.
Market range0.35W/m2-KBack-calculated from measured tank heat losses.Sets the driving temperature difference of the standing loss.
Market range Site ambient varies 0-40 C; the loss moves by about 4 % over that span, since the driving difference is 500-550 K.
20CAIThe tankage cost and the standing loss are both charged on two tanks.
Market range Exactly 2 by definition; single-tank thermocline designs are a different technology.
2Definition of the two-tank concept.Charges the alloy multiplier of the 600 C re-rate on the hot tank only.
Market range0.5Geometric split of the tankage cost.Reference price the user's own salt price is compared against.
Market range800USD/tAIStates the salt-price exposure of the project at the top of the published range.
Market range1000USD/tPublished cost assessment.Carries tanks, foundations, piping, insulation, instrumentation and freeze protection, charged on tankage volume.
Market range 1 100-1 700 USD/m3 implied by the 20-30 USD/kWh_th published band at commercial swings.
1405USD/m3Back-calculated residual of a published TES system cost.The anchor the tankage rate is calibrated on and the benchmark the result is read against.
Market range24USD/kWh_thPublished system cost.Lower bound of the IRENA published band.
Market range25USD/kWh_thPublished technology outlook.Upper bound of the published cost band.
Market range30USD/kWh_thPublished technology outlook.Lower bound of the published cost band.
Market range20USD/kWh_thPublished cost assessment.Upper bound of the PNNL published band.
Market range25USD/kWh_thPublished cost assessment.Fixed O&M of the storage island.
Market range2%/yearPublished cost assessment.Converts the published USD cost basis into the euro basis of the calculator.
Market range1.12998USD/EUROfficial reference rate.Prices the hot tank of a next-generation store, outside this calculator's 580 C cap.
Market range2.44Published alloy cost analysis.Benchmark the modelled cycle efficiency is read against.
Market range Above 98 % daily for well-insulated tanks.
0.98Measured plant performance.Upper benchmark of the efficiency band.
Market range0.99Published expectation for a commercial plant.Sizes the connected electrical load that keeps the salt above its freezing point.
Market range1.14kWe/MWh_thBack-calculated from a published auxiliary load list.Guardrail the modelled trace-heating energy is checked against.
Market range Below 1.5 % of gross output.
1.5%Published parasitic-load projection.Lower bound of the published volumetric density band.
Market range70kWh/m3Published technology outlook.Upper bound of the published volumetric density band.
Market range200kWh/m3Published technology outlook.Converts charged heat into the electricity that must be bought.
Market range0.99Engineering assumption on a resistive charging path.Reference horizon the chosen lifetime is compared against.
Market range30yearsPublished financial convention.Says how many years of asset life the chosen amortisation leaves unused.
Market range35yearsPublished performance parameter.Reference financing the chosen discount rate is compared against.
Market range 5 % OECD and China, 7.5 % elsewhere.
0.05Published financial assumption.Reference duty the chosen cycle count is compared against.
Market range200cycles/yearPublished cost model.Reference charging price the user's own price is compared against.
Market range44USD/MWhPublished cost benchmark.Keeps the levelised cost finite if the calculator is called outside its declared input ranges.
Market range Not applicable (guard).
0.05Numerical guard, not a physical parameter.Refuses a duty so low that the store would lose more heat than it delivers, which would make the levelised cost meaningless.
Market range Not applicable (guard).
12Corner sweep of the standing-loss law.Refuses a degenerate design before the cost model is asked to price it.
Market range Commercial swings are 180-310 K.
50KEngineering screening floor.
Sources
8 external sources
Sources
8 external sources
- NREL / US DOE - Turchi, Vidal & Bauer, Molten Salt Power Towers Operating at 600C to 650C (salt properties, 574/290 C baseline, 24 USD/kWh_th TES cost, 2.51e7 kg inventory, alloy multiplier)
- Sandia SAND2002-0120 - Final Test and Evaluation Results from the Solar Two Project (measured tank losses, tank geometry, immersion heaters, heat-trace guardrail)
- DLR / SQM - Solar Salt Thermal Property Analysis Report (measured liquidus 246.3 C, conductivity 0.5501 W/m-K)
- PNNL-33283 - Energy Storage Grand Challenge Cost and Performance Assessment 2022 (20-25 USD/kWh_th, 2 %/year O&M, 35-year calendar life, salt at 950-1000 USD/t)
- IRENA - Innovation Outlook: Thermal Energy Storage 2020 (25-30 USD/kWh sensible TES, 70-200 kWh/m3 energy density)
- IRENA - Renewable Power Generation Costs in 2023 (5 % real OECD WACC, 44 USD/MWh utility-scale PV LCOE)
- ANL/NSE-21/13 - Development of Energy Storage: Cost models (200-700 cycles per year, 15.5-35.5 USD/kWh CAPEX)
- European Central Bank - USD/EUR reference exchange rate, 2025 annual average 1.12998