Skip to content

ModuleSystemHeatRadiator

JadeOfMaar edited this page Apr 9, 2025 · 2 revisions

The module to use for radiators. It inherits from stock ModuleDeployableRadiator and adds its own properties. Everything above // optional is mandatory. Everything under // inherited is legacy/stock functionality and may not be important.

MODULE
{
	name = ModuleSystemHeatRadiator
	moduleID = radiator
	systemHeatModuleID = default
	temperatureCurve
	{
		key = 0 0
		key = 350 150
	}
	
	// optional
	scalarModuleID = heat
	maxTempAnimation = 500
	maxRadiatorTemperature = 350
	emissivity = 0.9
	convectiveArea = 1.35
	
	// inherited but legacy, not required
	maxEnergyTransfer = 7500 // 150 * 50
	overcoolFactor = 0.25 // if capable of refrigeration, this radiator can cool to this fraction of its acive temp.
	isCoreRadiator = true // whether it can cool something that produces core heat vs only helping vital parts to not melt
	parentCoolingOnly = true // whether it will only cool the part it's attached to
	
	RESOURCE // consumed as a cost to the module's operation
	{
		name = ElectricCharge
		rate = 0.075
	}
}
  • moduleID: The unique ID of this ModuleSystemHeatRadiator.
  • systemHeatModuleID: The ID of the ModuleSystemHeat to link to. If multiple exist and none is named the first one is used.
  • maxTempAnimation: The peak temperature that the emissive animates toward.
  • maxRadiatorTemperature: The max temperature the radiator will function on.
  • emissivity: The rating of the surface material. Reflective and absorptive surfaces rate poorly.
  • convectiveArea: The radiative area in square meters. Contributes to cooling capacity when flying within the air speed range associated with its loop temperature.
  • temperatureCurve {}: Maps the current loop temperature to radiative effectiveness. X is kelvin. Y is kilowatts.

Stefan-Boltzmann Curve

The Stefan-Boltzmann Law states that the energy radiated by a surface at a given time is proportional to the 4th power of the surface temperature. The following sample patch allows a radiator to be properly exponentially better (or worse) depending on its temperature and prevents the observed case of any high temperature radiator being better at low temperature than a low temperature radiator.

@PART[thisRadiator]
{
	VarLoopTemp = 1100
	VarPeakPower = 7273
	
	@MODULE[ModuleSystemHeatRadiator]
	{
		@temperatureCurve
		{
			!key,* = nope
			key = 0 0
			key = 0.2 0.0016
			key = 0.4 0.0256
			key = 0.6 0.1296
			key = 0.8 0.4096
			key = 1 1
			@key,*[0, ] *= #$/VarLoopTemp$
			@key,*[1, ] *= #$/VarPeakPower$
		}
	}
}

What the curve would look like:

temperatureCurve
{
	key = 0 0
	key = 220 11.6
	key = 440 186.2
	key = 660 942.6
	key = 880 2979
	key = 1100 7273
}

curve comparison A sample radiator set is tuned for 350, 650 and 1100 K. [Left] is using basic linear curves, showing that a high temp radiator is better at low temp than a low temp radiator. [Right] is that set using a Stefan-Boltzmann curve. The low temp radiator remains the best for low temp.

Clone this wiki locally