DotNet.Ships.Class.Heat - Elite-Dangerous-Almanac/Almanac-Core GitHub Wiki

EliteDangerousAlmanac / Ships / Heat

Class: Heat

Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:159

What a build runs at, and whether firing everything cooks it.

Remarks

A ship's heat is a balance. The power plant turns the draw of everything it feeds into waste heat, the thrusters and the frame shift drive add their own, and the weapons add theirs while they fire. The hull sheds heat as it gets hotter, in proportion to the square of its heat level, and stops shedding any more at heat level one.

Two consequences follow, and they are what the figures mean. A build whose thermal load stays under the hull's dissipation always settles below heat level one and never overheats, however long it holds the trigger. One whose load goes over it never settles: heat climbs until the ship cooks, and the only question is how long that takes. The heat capacity decides that timing and nothing else. It is thermal inertia, not a budget.

Two heat sources stand outside the scenarios reported here, both momentary rather than sustained. A shield cell bank states its heat per activation rather than per second: divide it by the bank's spin-up to get a load these members accept. A heat sink removes heat rather than making it, and every load here is zero or more, so nothing here models a sink. The level a sink drops the ship to is the starting level of whatever comes after it.

Reference implementation: EDSY, edsy.js, which cites the Frontier-forum research thread the model was reverse-engineered in. Frontier publishes no heat formula and shows a player no dissipation figure, so both the model and the per-hull dissipation it reads are community measurements of the game rather than stats the game states. See data/ships/SOURCES.md and ATTRIBUTIONS.md.

Fields

OverheatHeatLevel

const OverheatHeatLevel: double = 1.5

Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:166

The heat level the cockpit gauge shows as a full gauge, where a ship starts to cook.

Remarks

Heat level one is where the hull's dissipation stops rising, and the gauge reads two thirds there.

Methods

EffectiveWeaponThermalLoad()

static EffectiveWeaponThermalLoad(thermalLoad, distributorDraw, weaponsCapacity, capacitorLevel): double

Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:207

A weapon's thermal load once the weapons capacitor's state is folded in.

Parameters

thermalLoad

double

The weapon's thermal load, in the game's units.

distributorDraw

double

The weapons-capacitor draw of one discharge, in megajoules.

weaponsCapacity

double

The distributor's weapons-capacitor capacity, in megajoules.

capacitorLevel

double

How full the capacitor is, from empty at zero through full at one.

Returns

double

The effective thermal load, between the stated load and five times it.

Remarks

A shot the capacitor cannot pay for in full generates up to five times its listed thermal load. This is why a build that never overheats in a duel can cook itself in a wing fight, firing the same guns on an empty capacitor.

Exceptions

ArgumentOutOfRangeException

An argument is not a finite number of zero or more, or the capacitor level is above one.

EquilibriumLevel()

static EquilibriumLevel(dissipation, thermalLoad): double

Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:185

The heat level a thermal load settles at.

Parameters

dissipation

double

The hull's largest heat dissipation, per second.

thermalLoad

double

The load being shed, per second.

Returns

double

The settled heat level, in model units. A load above the dissipation answers a level above one, which the ship never actually reaches as a resting point: it passes through and keeps climbing.

Exceptions

ArgumentOutOfRangeException

An argument is not a finite number of zero or more.

LevelAtTime()

static LevelAtTime(heatCapacity, heatDissipation, thermalLoad, startLevel, seconds): double

Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:241

The heat level a build reaches after holding a thermal load for a while.

Parameters

heatCapacity

double

The hull's heat capacity, which must be above zero.

heatDissipation

double

The hull's largest heat dissipation, per second.

thermalLoad

double

The thermal load being generated, per second.

startLevel

double

The heat level the ship starts at.

seconds

double

How long the load is held, in seconds.

Returns

double

The heat level after the time, in model units.

Exceptions

ArgumentOutOfRangeException

A figure is not a finite number of zero or more, or the heat capacity is zero.

Metrics()

static Metrics(input): HeatMetrics

Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:347

Everything an outfitting screen shows about a build's heat: what it idles at, what it runs at flying and jumping, and whether firing everything cooks it.

Parameters

input

HeatInput

The hull's two heat stats, the plant's efficiency and the build's draw.

Returns

HeatMetrics

The build's heat metrics.

Exceptions

ArgumentNullException

input is null.

ArgumentOutOfRangeException

A figure is not a finite number of zero or more, or the heat capacity is zero.

SecondsToLevel()

static SecondsToLevel(heatCapacity, heatDissipation, thermalLoad, startLevel, targetLevel): double

Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:291

How long a build takes to move from one heat level to another under a given load, heating or cooling.

Parameters

heatCapacity

double

The hull's heat capacity, which must be above zero.

heatDissipation

double

The hull's largest heat dissipation, per second.

thermalLoad

double

The thermal load being generated, per second.

startLevel

double

The heat level the ship starts at.

targetLevel

double

The heat level being asked about.

Returns

double

The seconds it takes, or infinity when the load never carries the ship there: heating towards a level at or beyond where it settles, or cooling towards one below it.

Exceptions

ArgumentOutOfRangeException

A figure is not a finite number of zero or more, or the heat capacity is zero.

⚠️ **GitHub.com Fallback** ⚠️