Nertea Posted August 23, 2020 Author Share Posted August 23, 2020 Been fixing Waterfall bugs for a while but starting to think about work on this again. I thought a lot about the problem we're discussing and perhaps there is no functional reason for there to be loop temperature modifiers like the compressor at all. There should simply be cross-loop heat transfer 'exchangers'. An Exchanger would subtract heat from one loop and add it to the other (you choose the direction). Then you can have a cold loop and a hot loop. An Exchanger subtracts a configurable amount of heat flux from Loop A and adds it to Loop B An Exchanger adds heat to Loop B at the temperature of Loop A An Exchanger can increase the temperature of its heat output for a power cost. This seems to get at the main use case, which is creating loops that run hotter than they should be allowed based on their members (Loop B can be very hot). Anything i'm missing here? On 8/14/2020 at 10:24 PM, danfarnsy said: Loop IDs bumped enough times get to Loop ID **Not Found**, after which it won't increment to 0 again. Ok, they should 'wrap' to 0 after 10. I suppose fundamentally there's no reason they couldn't go to 2,147,483,647 though. I can change that. On 8/14/2020 at 10:24 PM, danfarnsy said: I don't intend to be argumentative about the sources and radiators balance, since you explained your concern about simulation, but I just wanted to still give the feedback that it feels weird to have a system that is perfectly balanced at 805 K, deactivate a radiator for a moment while the system climbs to 1005 K, then turn that radiator back on, and have the system be in perfect equilibrium at 1005 K as well, even though the radiators are hotter. Should radiators balanced with sources ought to be able to bring temperature back to equilibrium at Loop nominal temp? I mean it's worth thinking about. My main concern isn't weirdness or thermodynamics in this case (the result is the same either way) but user predictability. Quote Link to comment Share on other sites More sharing options...
WarriorSabe Posted August 23, 2020 Share Posted August 23, 2020 2 hours ago, Nertea said: There should simply be cross-loop heat transfer 'exchangers'. An Exchanger would subtract heat from one loop and add it to the other (you choose the direction). Then you can have a cold loop and a hot loop. An Exchanger subtracts a configurable amount of heat flux from Loop A and adds it to Loop B An Exchanger adds heat to Loop B at the temperature of Loop A An Exchanger can increase the temperature of its heat output for a power cost. This seems to get at the main use case, which is creating loops that run hotter than they should be allowed based on their members (Loop B can be very hot). Anything i'm missing here? Yeah, that's probably a better way to do it than the two-temperature thing I mentioned last. I'd add to that two things though: - Call it a heat pump instead of a heat exchanger (the term more accurately represents what you're describing) - In order to not violate the laws of thermodynamics, have the pump always consume power to move heat from cold to hot (this means the pump itself would also necessarily produce a small amount of heat). Quote Link to comment Share on other sites More sharing options...
Nertea Posted August 23, 2020 Author Share Posted August 23, 2020 7 hours ago, WarriorSabe said: Yeah, that's probably a better way to do it than the two-temperature thing I mentioned last. I'd add to that two things though: - Call it a heat pump instead of a heat exchanger (the term more accurately represents what you're describing) - In order to not violate the laws of thermodynamics, have the pump always consume power to move heat from cold to hot (this means the pump itself would also necessarily produce a small amount of heat). I like exchanger mostly because it's quite clear in my mind what it does (exchange heat), but the name is not really important at this stage. The second, yeah that's probably going to happen, but again, needs to be communicated well and not overcomplicated to the player. Quote Link to comment Share on other sites More sharing options...
danfarnsy Posted August 23, 2020 Share Posted August 23, 2020 17 hours ago, Nertea said: Been fixing Waterfall bugs for a while but starting to think about work on this again. I thought a lot about the problem we're discussing and perhaps there is no functional reason for there to be loop temperature modifiers like the compressor at all. There should simply be cross-loop heat transfer 'exchangers'. An Exchanger would subtract heat from one loop and add it to the other (you choose the direction). Then you can have a cold loop and a hot loop. An Exchanger subtracts a configurable amount of heat flux from Loop A and adds it to Loop B An Exchanger adds heat to Loop B at the temperature of Loop A An Exchanger can increase the temperature of its heat output for a power cost. This seems to get at the main use case, which is creating loops that run hotter than they should be allowed based on their members (Loop B can be very hot). Anything i'm missing here? I like the idea. A few things I'm thinking about: Currently, the nominal temperature of a loop is determined by heat source parts, like drills, ISRUs, reactors. Radiators just try to get rid of heat in excess, e.g. you can't use radiators to make an 800 K reactor 650 K (though you could use the current compressor part for that). Since radiators don't determine the preferred nominal temperature of a loop, what happens with a loop that only has radiators on it, with an exchanger pumping to it? Does the exchanger count as a source on Loop B with its own preferred nominal temp? Does the exchanger draw more electrical power to pump as Loop B gets that much hotter than Loop A? And if so, does that cause a reactor on Loop A to increase throttle, providing more heat that needs to be rejected, creating feedback in Loop B? Quote Link to comment Share on other sites More sharing options...
Nertea Posted August 24, 2020 Author Share Posted August 24, 2020 4 hours ago, danfarnsy said: I like the idea. A few things I'm thinking about: Currently, the nominal temperature of a loop is determined by heat source parts, like drills, ISRUs, reactors. Radiators just try to get rid of heat in excess, e.g. you can't use radiators to make an 800 K reactor 650 K (though you could use the current compressor part for that). Since radiators don't determine the preferred nominal temperature of a loop, what happens with a loop that only has radiators on it, with an exchanger pumping to it? Does the exchanger count as a source on Loop B with its own preferred nominal temp? Does the exchanger draw more electrical power to pump as Loop B gets that much hotter than Loop A? And if so, does that cause a reactor on Loop A to increase throttle, providing more heat that needs to be rejected, creating feedback in Loop B? Let's try to firm the definition up a bit in response to these questions. An Exchanger is a part which connects two Loops (A and B). The direction can be changed. An Exchanger subtracts heat flux from Loop A and adds it to Loop B, if Loop B's temperature is below its nominal temperature Example: Loop A has a reactor and no radiators, with an excess heat flux of 200 kW. The Exchanger will subtract 200 kW from Loop A and add 200 KW to Loop B. Loop A is now stable, and Loop B requires another 200 kW of heat rejection capacity An Exchanger has an outlet temperature into Loop B equal to the (nominal?) temperature of Loop A Example: Loop A has a reactor with outlet temperature of 800K. The Exchanger will have an outlet temperature of 800K into Loop B. An Exchanger can change the outlet temperature into Loop B according to the player's demands. This consumes power in proportion to the increase or decrease in temperature, and also adds heat flux in proportion to the change in temperature. Example: Loop A has a reactor with an outlet temperature of 800K. The player wishes to raise the temperature of Loop B to 1200K. They set the temperature adjustment of the Exchanger to +400K. The Exchanger now will have an outlet temperature of 1200K into Loop B. However, the cost of increasing the temperature by 400 K is 800 kW. The Exchanger is now subtracting 200 kW from Loop A, adding this 200 kW to Loop B, and adding 800 kW to Loop B. Loop A is now stable, and Loop B requires another 1000 kW of heat rejection at 1200K. Quote Link to comment Share on other sites More sharing options...
coyotesfrontier Posted August 24, 2020 Share Posted August 24, 2020 With the new code for NTRs, would it be possible to power a NTR with the heat generated from another reactor? It might require a single NTR to be on two loops though, one for power and one for cooling. Quote Link to comment Share on other sites More sharing options...
danfarnsy Posted August 24, 2020 Share Posted August 24, 2020 4 hours ago, Nertea said: Let's try to firm the definition up a bit in response to these questions. This cleared up a lot. Thank you. I'm looking forward to testing when it's available. I'm thinking of a few use cases I expect to backfire. Here's one: ISRU on Loop A operates at 450 K. Reactor and radiators are stable on Loop B at 800 K, and have an extra 200 kW radiative capacity. I add the exchanger between A and B, sending 200 kW of heat to B. The exchanger has an outlet temperature of 450 K on Loop B, so now loop B has a nominal loop temperature of 625 K (average between reactor and exchanger), making the radiators on B less efficient and failing to actually reject the extra heat. The reactor then overheats and shuts down. This sounds like fun. Quote Link to comment Share on other sites More sharing options...
WarriorSabe Posted August 24, 2020 Share Posted August 24, 2020 20 hours ago, Nertea said: I like exchanger mostly because it's quite clear in my mind what it does (exchange heat) I know I'm probably getting pedantic at this point, but I feel like the term Heat Pump is also clear in what it does - it pumps heat from one place to another. The term heat pump is also used irl for things that do what you describe (move heat from cold to hot) while the term heat exchanger does not (it's something that enhances the normal passive flow of heat). Unless you wish to further this particular discussion, that's all I really have to say; terminology is just important to me. Quote Link to comment Share on other sites More sharing options...
Nertea Posted August 24, 2020 Author Share Posted August 24, 2020 (edited) 13 hours ago, danfarnsy said: This cleared up a lot. Thank you. I'm looking forward to testing when it's available. I'm thinking of a few use cases I expect to backfire. Here's one: ISRU on Loop A operates at 450 K. Reactor and radiators are stable on Loop B at 800 K, and have an extra 200 kW radiative capacity. I add the exchanger between A and B, sending 200 kW of heat to B. The exchanger has an outlet temperature of 450 K on Loop B, so now loop B has a nominal loop temperature of 625 K (average between reactor and exchanger), making the radiators on B less efficient and failing to actually reject the extra heat. The reactor then overheats and shuts down. This sounds like fun. Hope it works out - I think cross-loop transfer is definitely an advanced feature that is not needed in most use cases, but does add depth for the expert user. I like that kind of feature. 11 hours ago, WarriorSabe said: I know I'm probably getting pedantic at this point, but I feel like the term Heat Pump is also clear in what it does - it pumps heat from one place to another. The term heat pump is also used irl for things that do what you describe (move heat from cold to hot) while the term heat exchanger does not (it's something that enhances the normal passive flow of heat). Unless you wish to further this particular discussion, that's all I really have to say; terminology is just important to me. It is indeed a bit pedantic. I'd wager you're probably unhappy with a bunch of terminology in my mods then... Edited August 24, 2020 by Nertea Quote Link to comment Share on other sites More sharing options...
0111narwhalz Posted August 25, 2020 Share Posted August 25, 2020 Just make the fiddly terminology a localization string, and then we can change it if we want to. Quote Link to comment Share on other sites More sharing options...
Nertea Posted August 26, 2020 Author Share Posted August 26, 2020 Indeed, I do usually do that. Quote Link to comment Share on other sites More sharing options...
Nertea Posted September 4, 2020 Author Share Posted September 4, 2020 Some new fixes pushed. This will be the last version before 'real' release packages. Some more fixes to loop simulation edge cases It is now possible to change sim rate in the editor (default before was 100x) Removed the old debug overlay (not useful anymore) Removed compressor part and module Added exchanger part and module (as described earlier) More localization updates Quote Link to comment Share on other sites More sharing options...
Nertea Posted October 28, 2020 Author Share Posted October 28, 2020 (edited) The first version controlled release has been uploaded to GitHub. Important changes Some more fixes to loop simulation edge cases Ability to turn on/off individual loops in the UI Loop reporting information in the UI Bugfixes to compatibility patches Quick look at the UI reporting info: Edited October 28, 2020 by Nertea Quote Link to comment Share on other sites More sharing options...
toric5 Posted October 29, 2020 Share Posted October 29, 2020 @Nertea // must be unique moduleID = converter1 Looking through the config files, does this need to be unique across all parts, or only within the part? (Can I have two sizes of ISRU that both have an ID of converter1, for example) Im planning on perhaps submitting a generic patch for ISRU and drills, I think I can base heat output on electric charge consumed, and defaulting to 500K outlet temp, as that is what you chose for all the stock ISRU options. (It would not overwrite systemheat modules, of course). Then, manual patches can be applied where things should be different, such as in high temp 'smelting' processes, like lithium or uranium extraction. Also, it might be a good idea to give nuculear engines Module RadioactiveStorageContainer , in order for them to be refueled by kerbal engineers. Quote Link to comment Share on other sites More sharing options...
Nertea Posted October 29, 2020 Author Share Posted October 29, 2020 2 hours ago, toric5 said: Looking through the config files, does this need to be unique across all parts, or only within the part? (Can I have two sizes of ISRU that both have an ID of converter1, for example) It should be unique within a part, between parts doesn't matter. 2 hours ago, toric5 said: Im planning on perhaps submitting a generic patch for ISRU and drills, I think I can base heat output on electric charge consumed, and defaulting to 500K outlet temp, as that is what you chose for all the stock ISRU options. (It would not overwrite systemheat modules, of course). Then, manual patches can be applied where things should be different, such as in high temp 'smelting' processes, like lithium or uranium extraction. Yes this sounds good. I don't know if I've balanced the patches right yet, so be aware that might change. 2 hours ago, toric5 said: Also, it might be a good idea to give nuculear engines Module RadioactiveStorageContainer , in order for them to be refueled by kerbal engineers. Uh yea good point, that is in the NFe patch but not this. Quote Link to comment Share on other sites More sharing options...
ra4nd0m Posted October 31, 2020 Share Posted October 31, 2020 I've found some really nasty issue. Report is on the github. Quote Link to comment Share on other sites More sharing options...
darthgently Posted November 2, 2020 Share Posted November 2, 2020 How does heat management interrelate with cryo fuels and boiloff rate? Quote Link to comment Share on other sites More sharing options...
Nertea Posted November 2, 2020 Author Share Posted November 2, 2020 Not at all. Quote Link to comment Share on other sites More sharing options...
Nertea Posted November 2, 2020 Author Share Posted November 2, 2020 SystemHeat 0.1.1. Bunch of major issues fixed here. Fixed issue with map vector camera not being reset when entering map view (messing up orbit lines) Fixed some issues with ModuleSystemHeatEngine contributing to loop max temperatures despite being off Fixed global thermal scaling being set to 0.025x what was intended, causing UI confusion Fixed some cases of NREs where parts were destroyed Tweaked behaviour of radiators to allow cooling when nominal temperatures are low but actual temperatures are high Thermal summary in toolbar window now turns orange when a value is bad Turned off PAW debug by default Quote Link to comment Share on other sites More sharing options...
Nertea Posted November 3, 2020 Author Share Posted November 3, 2020 SystemHeat 0.1.3 Worked on localization of things not previously localized (reactor panel, toolbar panel, ModuleHeatSink) Added a UI button to charge fusion reactors in the reactor panel Reactor/Heat toolbar buttons should now hide when looking at a vessel without reactors or heat modules More random bugfixes Quote Link to comment Share on other sites More sharing options...
darthgently Posted November 3, 2020 Share Posted November 3, 2020 On 11/1/2020 at 8:15 PM, Nertea said: Not at all. Ok. I'd guess it would cool the tank to some degree in the real world, but maybe not significantly Quote Link to comment Share on other sites More sharing options...
toric5 Posted November 3, 2020 Share Posted November 3, 2020 There doesnt seem to be a way to change the power output of a reactor post launch. In the VAB, there is the power output slider like there used to be in NFE. However, once launched, reactor power setting seems fixed. Is this intentional? Quote Link to comment Share on other sites More sharing options...
Nertea Posted November 4, 2020 Author Share Posted November 4, 2020 23 hours ago, darthgently said: Ok. I'd guess it would cool the tank to some degree in the real world, but maybe not significantly The way I've modeled the plugin in CryoTanks is that the cryocooler is built into the tank, so it's just an electricity and mass tax on the tank. You could easily write a SystemHeat boilofff module that required maintenance of particular temperatures to prevent boiloff. I don't think I'll be doing it though, can get into details as to why. 19 hours ago, toric5 said: There doesnt seem to be a way to change the power output of a reactor post launch. In the VAB, there is the power output slider like there used to be in NFE. However, once launched, reactor power setting seems fixed. Is this intentional? That's correct, reactors auto-adjust output now (with a minimum rate) Quote Link to comment Share on other sites More sharing options...
TBenz Posted November 4, 2020 Share Posted November 4, 2020 1 hour ago, Nertea said: I don't think I'll be doing it though, can get into details as to why. If you don't mind, I am actually curious as to why. Quote Link to comment Share on other sites More sharing options...
Nertea Posted November 5, 2020 Author Share Posted November 5, 2020 Fundamentally in systemheat model they would be heat generators with an ideal temperature lower than everything else in the game. They'd always be in their own loop. The radiator power needed would be low, and there's nothing interesting to do with those parameters. Every ship would have a single separate loop with one radiator to handle boiloff. All that does is add a small mass and power tax, and needs the overhead of running the heat sim, and another part or two for the ship. Additional complexity for little gain. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.