Jump to content

Heating and Heating accessories


Recommended Posts

I recently put together a 2.5m ion engine and have been working on a 2.5m "RTG bank" to help alleviate some of the draw. Balance wise, both are more or less linear scale-ups of their smaller counterparts. That said, I'd like the RTG bank to generate a healthy amount of heat as a bank of RTGs would generate a healthy amount of heat. The trouble is, while the resource converter module incorporates heat, the generator module doesn't seem to. Is there a way to set up a part to passively generate heat? I've been trying to make sense of the coreHeat module, but documentation seems scarce. 

On the heating accessories side of things, I designed the bank with inbuilt radiators and built an emissive for them. I'm fairly new to emissives and haven't used moduleAnimateHeat before, but I have had success with moduleAnimateThrottle on the 2.5m ion engine itself. I replicated the process I used for the throttle animation, but I don't seem to be having much luck. It's entirely possible I missed something obvious. Note I am using unity 5 and the 1.1 parttools despite exporting to 1.0.5. This wasn't a problem for the engine, but I suppose it could be compatibility issue with moduleAnimateHeat. I used squad's new Create Color Animation system for both.

Pretty emissive texture:

QRPUALg.png

 

 

Link to comment
Share on other sites

It's looking like use of ModuleResourceConverter is unavoidable for non-engine heat generation. It occurs to me I could configure a foreign resource with the sole purpose of being generated via ModuleGenerator and promptly converted into ElectricCharge via a heat-generating converter. That solution is a bit indirect which wouldn't really be a problem in and of itself, but it also requires a trash resource to sit on the resource drop-down. Preliminary googling suggests there isn't really a way around that though. Seeing how easy resource configuration actually is tempts me to go all the way and make proper reactors, but I figure the last thing we need is another competing reactor model.

 

The stock RTG config includes this block, which I haven't seen elsewhere. By its name I suspect this might be exactly what I'm looking for, but I can't find any documentation on it in particular

PassiveEnergy
		{
			key = 0 	25000
			key = 200 	10000
			key = 250 	50		
			key = 300	25
			key = 350	0
		}

 

Edited by Balto-the-Wolf-Dog
Link to comment
Share on other sites

You are on the right track there with PassiveEnergy. That just specifies the heat that should be generated into the core heat bucket at a given part core temperature; ie. 500 kW is generated at 0K, 1 kW is generated at 250K and 0 kW are generated at 350K (these numbers are in uh... let's call it Heat Space, where you put in the number in kW multiplied by 50, so to generate 10 kW you put 5000).

Link to comment
Share on other sites

49 minutes ago, Nertea said:

You are on the right track there with PassiveEnergy. That just specifies the heat that should be generated into the core heat bucket at a given part core temperature; ie. 500 kW is generated at 0K, 1 kW is generated at 250K and 0 kW are generated at 350K (these numbers are in uh... let's call it Heat Space, where you put in the number in kW multiplied by 50, so to generate 10 kW you put 5000).

Incredible timing. Was just coming to post that I had figured it out. On that note, I also figured out the thermal animation. As it turns out the part has to be heated from within itself. I had been testing by blasting it with engines.

 

Is there a way to disable the orange glow that gathers on the whole of the part, or another factor to base the glow on like amount of heat radiated? Since the round things on my model are ostensibly heat pipes for radiators, I'd rather them glow well before the heat limits are reached. A way to change the glow curvature with heat could also satisfy that, though I suppose I could just create a fresh animation that's weighted towards the cooler side. Can anyone enlighten me as to the function of EmissiveConstant?

Edited by Balto-the-Wolf-Dog
Link to comment
Share on other sites

More config confusion, suppose I'll bump this thread rather than start a new one. Frustratingly I have most of it cooperating save a few elusive details. The whole of the config is as follows:

PART
{
	name = prakGenerator
	module = Part
	author = Balto
	mesh = Generator.mu
	rescaleFactor = 1
	node_stack_top = 0.0, 1.99, 0.0, 0.0, 1.0, 0.0, 0
	node_stack_bottom = 0.0, -1.99, 0.0, 0.0, -1.0, 0.0, 0
	TechRequired = experimentalElectrics
	entryCost = 250000
	cost = 100000
	category = Utility
	subcategory = 0
	title = Inline Thermoelectric Generator
	manufacturer = Prakasa Energy Technology Division
	description = Much like our own RTG, it provides power from radioactive decay. They won't tell us what's actually decaying in there and 

said we probably shouldn't try to open it up and find out. Also useful for cookouts.
	attachRules = 1,0,1,1,0
	mass = 4
	heatConductivity = 0.001
	skinInternalConductionMult = 2000
	emissiveConstant = 0.9
	dragModelType = default
	maximum_drag = 0.2
	minimum_drag = 0.2
	angularDrag = 2
	crashTolerance = 12
	maxTemp = 2500 // = 4000
	bulkheadProfiles = size2
	radiatorHeadroom = 0.75
	thermalMassModifier = 0.05	
	MODULE
	{
		name = ModuleGenerator
		isAlwaysActive = true
		OUTPUT_RESOURCE
		{
			name = ElectricCharge
			rate = 70
		}
	}

	MODULE
	{
		name = ModuleAnimateHeat
		ThermalAnim = Heat5
	}


	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.4			//What percentage of our core energy do we transfer to the part
		HeatRadiantMultiplier = 0.25		//If the core is hotter, how much heat radiates?
		CoolingRadiantMultiplier = 0.4		//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.1		//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 = 5000				//Maximum amount of radiator capacity we can consume - 50 = 1 small
		PassiveEnergy
		{
			key = 0 	100000
			key = 1500 	70000
			key = 2000 	60000
			key = 4000 	55000		
			key = 6500	3000
			key = 7000	0
		}

		//PassiveEnergy
		//{
		//	key = 0 	100000
		//	key = 2000 	70000
		//	key = 3000 	60000
		//	key = 6000 	55000		
		//	key = 6500	3000
		//	key = 7000	0
		//}												
	}
	MODULE
	{
		name = ModuleActiveRadiator
		maxEnergyTransfer = 80000
		overcoolFactor = 0.25
		isCoreRadiator = true
		RESOURCE
		{
			name = ElectricCharge
			rate = 0.8
		}		
	}		
}

I've worked out the above through a few days' experimentation. It's lead me to a few strange values and workarounds, but it functions save for one flaw: a sudden, what appears to be "catch up" heat spike on resuming normal speed after warping at high enough factors for the game to stop actively running heat calculations.

The root of the strangeness lies in a few target qualities I wanted for the part that, as it turns out, don't coexist very naturally. I wanted it to be both a passive heat generator and a radiator, such that it glowed slightly with its own heat but would also heat up and dissipate external loads, glowing brighter until allowed to cool again. After some testing, it seems I have that in order. On a partially separate note, I designed the part with emissive heatpipes as seen earlier in the thread. My intention was for the part to glow mostly in that way (through a black body spectrum up to a faded, brilliant yellow) for aesthetic and to visualize the energy passing in and out of it, with the skin highlight coming only at the highest temperatures. Unfortunately that turned out to interfere with the radiator functionality which seemed to depend on skinInternalConductionMult being a high value, a variable I had been using at low values to isolate the core temperature associated with the heat pipes and the skin temperature associated with the highlight. Eventually I solved that problem by using a high skinInternalConductionMult in tandem with an extremely low thermal mass modifier, allowing the core to heat faster under the passive heater than the skin, and reach "shorter wavelengths" much sooner. Since heat capacity is determined by volume, and presumably the heat pipes would be a small fraction by volume of the entire part, this made sense to me. With some tweaking (namely raising the coreEnergyMultiplier to compensate for the lower thermal mass. No idea how exactly it was compensating, but it was) I've gotten the values above and found they satisfy my intention rather nicely.

Note that without the higher-than-normal coreEnergyMultiplier, the lower-than-normal thermalMassModifier causes the part to require immense internal heating before responding much at all. I have the heat animation weighted distinctly towards the cooler side, and the PassiveEnergy values still had to be several orders of magnitude higher before any noticeable effect took place. That strikes me wholly counterintuitive, as a lower heat capacity part ought to heat faster, but my experimentation has given consistent results. Those values proved very difficult to work with and lay firmly outside KSP's normal operating range, so I was happy to be rid of them when I figured out how.

 

The trouble is, somewhere along the line (I believe in dealing with the second problem), I picked up the problem from below the code. The part always seems to heat up somewhat when coming down from warp, but it heats very dramatically when coming down from warps high enough for the game to stop calculating and for the emissive to dim out in accordance. In that case the heat peaks almost to overheat, and in all cases the temperature then slowly abates over time until the part glows the dull idle red it should. Under normal conditions, and even at fixed warp speeds during which the game still calculates heat, things function as expected. Given that, I'm inclined to believe the actual emission and radiation functions are operating fine. The issue only manifests when exiting warp (during which the part develops sudden surplus heat before dissipating it) and entering warp (during which the part develops a sudden heat deficit that it then regains provided we're not warping too fast for the game to bother)

 

A diagram in lieu of a picture montage, as I'm short on time:

[Normal speed, Warm] - > Warp (of any value) [instantly cold, warming until reaching the normal value] -> Normal speed [Sudden overheat, cooling until reaching the normal value]

Does not seem to apply to physical time warp. 

 

I picked up the problem and lost it a few times in my several days of meddling, but I never worked out where it properly stemmed from and if there were multiple ways of triggering/resolving it.

   

Edited by Balto-the-Wolf-Dog
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...