Jump to content

Need help understanding thermal modules


MatterBeam

Recommended Posts

Hi.

I need help understanding what some components of ModuleResourceConverter and ModuleCoreHeat do.

Specifically:

TemperatureModifier
		{
			key = 0 2000000
			key = 750 200000
			key = 1000 20000
			key = 1250 10000	
			key = 2000 200	
			key = 4000 0
		}			

found in ModuleResourceConverter and HeatRadiantMultiplier, CoolingRadiantMultiplier and MaxCoolant found in ModuleCoreHeat:

MODULE
	{
		name = ModuleCoreHeat
		CoreTempGoal = 1000					//Internal temp goal - we don't transfer till we hit this point
		CoreToPartRatio = 0.1				//Scale back cooling if the part is this % of core temp
		CoreTempGoalAdjustment = 0			//Dynamic goal adjustment
		CoreEnergyMultiplier = 0.1			//What percentage of our core energy do we transfer to the part
		HeatRadiantMultiplier = 0.05		//If the core is hotter, how much heat radiates?
		CoolingRadiantMultiplier = 0		//If the core is colder, how much radiates?
		HeatTransferMultiplier = 0			//If the part is hotter, how much heat transfers in?
		CoolantTransferMultiplier = 0.01	//If the part is colder, how much of our energy can we transfer?
		radiatorCoolingFactor = 1			//How much energy we pull from core with an active radiator?  >= 1
		radiatorHeatingFactor = 0.01		//How much energy we push to the active radiator
		MaxCalculationWarp = 1000			//Based on how dramatic the changes are, this is the max rate of change
		CoreShutdownTemp = 4000				//At what core temperature do we shut down all generators on this part?
		MaxCoolant = 400					//Maximum amount of radiator capacity we can consume - 50 = 1 small
	}

How do those parameters affect a part? What does modifying them do? What is the meaning or unitsnof the values used?

Link to comment
Share on other sites

Trawling through the dev threads by Nertea's gang of resident experts, I think that:

-TemperatureModifier is a curve that defines heat output at various current temperatures. In the above example, the part produces 2000000u/s at 0 kelvin, and 0u/s at 4000 kelvin. I have no idea what units 'u' is in. I hope it's watts.

Link to comment
Share on other sites

Here's the best I can do!

Resource converter properties:

TemperatureModifier: kW added per second x50. So to add 10 kW per second, provide 500 in this field

Core heat properties:

CoreTempGoal: Sets a temperature goal, core won't be affected by core heat transferring radiators before this.
CoreToPartRatio : If the part is this fraction of the core temp, reduce the cooling
CoreTempGoalAdjustment: A scalar that adjusts the core temperature goal, eg if it is -200, and the CoreTempGoal is 800, it's 600.
CoreEnergyMultiplier: How much to scale energy transfers between core and part
HeatRadiantMultiplier: If the core is hotter, the fraction of heat to radiate out
CoolingRadiantMultiplier: If the core is cooler, the fraction of heat to radiate out
HeatTransferMultiplier: If the core is hotter than the part's internal, the fraction of heat that transfers to the part from the core
CoolantTransferMultiplier: If the core is cooler than the part's internal, the fraction of heat that transfers to the core from the part
radiatorCoolingFactor: The amount of kJ of energy to "actually" remove from the core per kJ removed by a Core Heat transferring radiator
radiatorHeatingFactor: The amount of kJ of energy to "actually" add to a radiator pulling core heat from the core
MaxCalculationWarp: Things won't be computed at a faster rate than this; ie at 10,000,000x time warp, the core heat analytics will still work like at 1000x
CoreShutdownTemp: Shut down all generators on a part at this core temperature
MaxCoolant: Maximum amount of kW of cooling capacity the core can consume (currently bugged)

Link to comment
Share on other sites

10 minutes ago, Nertea said:

Here's the best I can do!

Resource converter properties:

TemperatureModifier: kW added per second x50. So to add 10 kW per second, provide 500 in this field

Core heat properties:

CoreTempGoal: Sets a temperature goal, core won't be affected by core heat transferring radiators before this.
CoreToPartRatio : If the part is this fraction of the core temp, reduce the cooling
CoreTempGoalAdjustment: A scalar that adjusts the core temperature goal, eg if it is -200, and the CoreTempGoal is 800, it's 600.
CoreEnergyMultiplier: How much to scale energy transfers between core and part
HeatRadiantMultiplier: If the core is hotter, the fraction of heat to radiate out
CoolingRadiantMultiplier: If the core is cooler, the fraction of heat to radiate out
HeatTransferMultiplier: If the core is hotter than the part's internal, the fraction of heat that transfers to the part from the core
CoolantTransferMultiplier: If the core is cooler than the part's internal, the fraction of heat that transfers to the core from the part
radiatorCoolingFactor: The amount of kJ of energy to "actually" remove from the core per kJ removed by a Core Heat transferring radiator
radiatorHeatingFactor: The amount of kJ of energy to "actually" add to a radiator pulling core heat from the core
MaxCalculationWarp: Things won't be computed at a faster rate than this; ie at 10,000,000x time warp, the core heat analytics will still work like at 1000x
CoreShutdownTemp: Shut down all generators on a part at this core temperature
MaxCoolant: Maximum amount of kW of cooling capacity the core can consume (currently bugged)

Someone sticky this somewhere.

Edited by MatterBeam
Link to comment
Share on other sites

  • 2 months later...

(1.0.5)  it actually looks as if without CoreHeat the `TemperatureModifier` in ResourceConverter is ignored? No heat shows up anywhere during conversion regardless of the value.

Using CoreHeat, I was able to build this LH/LOX Fuel Cell (inspired by the Apollo cells) though:

It has an electrical 'Heater' to start it up (bring it up to 470K) - this couldn't be done in flight, the electrolyte was prepared before launch.
at that point the cell will start producing roughly 50% output and continue to rise to 99% efficiency at 500K.

The heater can be modified to prevent the cell from stopping (leave it on, w/temp.modifier cutoff after 470K) - this was the actual operation mode
For testing, it will help push the cell, up to 530K with decreasing efficiency, when the core shuts down - the cell was only to run at 470-500K

setting actual CoreHeat values is still a mystery for me (what factor, what units?? relations to temp debug??), I made it heat up the part by a mild 10kW @ full power

the heater input, cell output and tanks are arbitrary.
LH/LOX/water ratios do reflect the specs.

MODULE
{
    name = ModuleResourceConverter
    ConverterName = Fuel Cell
    StartActionName = Start Fuel Cell
    StopActionName = Stop Fuel Cell
    FillAmount = 0.95
    AutoShutdown = true
    GeneratesHeat = true
    UseSpecializationBonus = false
    DefaultShutoffTemp = 0.9
    INPUT_RESOURCE
    {
        ResourceName = LqdHydrogen
        Ratio = 0.000074405
        FlowMode = STAGE_PRIORITY_FLOW
    }
    INPUT_RESOURCE
    {
        ResourceName = LqdOxygen
        Ratio = 0.000044092
        FlowMode = STAGE_PRIORITY_FLOW
    }
    OUTPUT_RESOURCE
    {
        ResourceName = ElectricCharge
        Ratio = 1.5
        DumpExcess = false // shape cell load with power demand
    }
    OUTPUT_RESOURCE
    {
        ResourceName = Water
        Ratio = 0.0001184
        DumpExcess = true
    }
    TemperatureModifier
    {
            key = 370 0     // 220F - electrolyte solidifies
            key = 420 1
            key = 470 1000  // 385F - critical temperature, cell start
            key = 500 10    // 440F - peak power output temp
            key = 600 0
    }
    ThermalEfficiency
    {
        key = 370 0 0 0
        key = 420 0.01 0 0.005
        key = 470 0.4 0.015 0.01
        key = 500 1 0 0
        key = 600 0 0 0
    }
}
RESOURCE
{
    name = LqdHydrogen
    amount = 50
    maxAmount = 50
}
RESOURCE
{
    name = LqdOxygen
    amount = 32
    maxAmount = 32
}
RESOURCE
{
    name = Water
    amount = 0
    maxAmount = 4
}
MODULE
{
    name = ModuleResourceConverter
    ConverterName = Cell Heater
    StartActionName = Start Heater
    StopActionName = Stop Heater
    AutoShutdown = true
    GeneratesHeat = true
    DefaultShutoffTemp = 0.9
    ThermalEfficiency = 1
    TemperatureModifier
    {
        key = 0 5000 0 0
        key = 300 1000 0 0
        key = 471 1000 0 0
        key = 652 0 -20 0
    }
    INPUT_RESOURCE
    {
        ResourceName = ElectricCharge
        Ratio = 0.1
        FlowMode = STAGE_PRIORITY_FLOW
    }
}
MODULE
{
    name = ModuleOverheatDisplay	// show Core Temp in menu
}
MODULE
{
    name = ModuleCoreHeat
    CoreTempGoal = 480
    CoreToPartRatio = 0.1
    CoreTempGoalAdjustment = 10
    CoreEnergyMultiplier = 0.1
    HeatRadiantMultiplier = 0.01
    CoolingRadiantMultiplier = 0.5
    HeatTransferMultiplier = 0.5
    CoolantTransferMultiplier = 0.01
    radiatorCoolingFactor = 1
    radiatorHeatingFactor = 0.01
    MaxCalculationWarp = 1000
    CoreShutdownTemp = 530
    MaxCoolant = 100
}

 

Insights? Comments? what's wrong with this Heat POC?

Link to comment
Share on other sites

  • 3 weeks later...

Basic question... what's considered a "Part" as far as the core is concerned? A "Core" is a part with ModuleCoreHeat presumably? A "Part" is something directly attached to the "Core"? something attached few pieces away? There's some Part-to-Part heat transfer no? or is it only Core-to-Part?

Link to comment
Share on other sites

4 hours ago, nli2work said:

Basic question... what's considered a "Part" as far as the core is concerned? A "Core" is a part with ModuleCoreHeat presumably? A "Part" is something directly attached to the "Core"? something attached few pieces away? There's some Part-to-Part heat transfer no? or is it only Core-to-Part?

Part refers to the host part.  There is configurable bleed off between core and internal temp.  Core's main purpose is to allow performance based on some very large thermal qualities (nuclear reactors, arc furnaces, etc.) Without exploding the host part :wink:

Link to comment
Share on other sites

ok so just to clarify this to myself... Part is PART{} that contains ModuleCoreHeat... and Core is just referring to the module... which may dump or draw heat from the Part? so a Core could have much much higher temp and the Part temp can remain ambient given the appropriate settings?

Link to comment
Share on other sites

Okay... things are coming into focus... now regarding activeRadiator...

isCoreRadiator  // radiator also draws heat from ModuleCoreHeat in addition to Part's Heat?

parentCoolingOnly  // radiator only cools the part it is directly attached to?

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...