Skip to content

Reactor Temperature Calculation

Mikayla edited this page May 4, 2024 · 13 revisions

Finding a Better Reactor Temperature High Threshold

Note

See the conclusion if you are just here for the equations!

Before this was completed, the reactor temperature high threshold was always 1150K, which was not great for anyone running max size reactors at just under 1200K. In order to solve this, I utilized my simulator tool and associated new Mekanism knowledge determined to find an equation to approximate the temperature that would accurately indicate that the reactor is hotter than it should be with the given coolant and maximum safe burn rate.

Here is the Excel spreadsheet used throughout this page: burn temp by capacity.xlsx

Simulator Heat Modeling

Below is a screenshot of the LabVIEW code that simulates the heat in the Mekanism fission reactor multiblock. The important things here are what creates heat (energyPerFissionFuel * burn rate) and what dissipates heat (environmental loss and coolant).

image

Heat Capacitors

The objective here is to model reactor heat without needing to iteratively compute it (e.g. simulate it). The center of all heat management is the heat capacitor, shown below.

image

Maximum Safe Burn Rate vs Heat Capacity

Step one here was to just try a bunch of things to find trends and relationships. Ideally, I want to calculate temperature by burn rate with as few variables as possible. For starters, I ran a few reactors through my simulator to see what burn rates I could achieve with water and sodium before hitting damaging temperatures of 1200K.

image

That R^2 value of 1 was a great thing to see. This shows that the maximum safe burn rate has a linear relationship to the heat capacity. That's cool and all, but what I need is to find the temperature at the reactor's maximum burn rate.

How Hot Is a Given Burn Rate?

If I can find out the temperature from a given burn rate, I can see how hot the maximum burn rate would make the reactor. I ran a lot of simulations for different rounds of data collection, most of which is in the attached spreadsheet. Below is when I decided to just run sodium cooled reactors at a list of burn rates. I went through a set of different simulated reactors (18x18x18 is a max size reactor, LxWxH) at somewhat arbitrarily selected burn rates (if they were big enough to run a particular burn rate) and recorded temperatures.

image

That's a lot of perfect linear fits! The variable here is that scaling factor on the burn rate. Time to find out how that relates to the heat capacity.

image

A power scale function! Nice! That 999842 that Excel computed seems a little off though. I tried 1000000, and it looks perfect.

image

I initially wondered if the 999842 was due to environmental loss, but computing with 999842 is simply a worse fit to the data than 1000000, so 1000000 it is then.

Environmental Loss

Throughout testing, environmental loss and ambient temperature have minimal effect (<0.1K) on temperatures. This is important, since I can't access this information easily, especially while the reactor is off. Mekanism does expose lastEnvironmentalLoss, but that would require some back calculation and only work while the reactor is running. I would then also need to simulate the whole thing.

Conclusion

The approximate conversion function from mB to temperature when water cooled is burn_rate * 2 * (1000000 * (heat_capacity ^ -1)) + 373.15:

image

and sodium cooled is burn_rate * (1000000 * (heat_capacity ^ -1)) + 373.15:

image

I am deducing the 1,000,000 is energyPerFissionFuel from the Mekanism config, and I know for sure that 373.15 is HeatUtils.BASE_BOIL_TEMP from Mekanism. The 2 vs 1 for sodium vs water is due to water having a thermal efficiency of 0.5 while sodium has an efficiency of 1.

The final value cc-mek-scada uses to report high temp on the annunciator is the maximum burn rates temperature + 5K for a tolerance on minor coolant transients. For the high temperature alarm it uses that value, but limits it to between 1100K and 1199.995K.

Note

I ran all my later tests with a maximum heat ambient temperature, as my intention was to make sure high temp calculations were on the safe side. However, this didn't end up mattering much, since the constants in the final equation map to values independent of ambient temperatures.

Clone this wiki locally