# A Simple Model of Thermal Transfer in Air

1. Dec 18, 2012

### Schilcote

I'm making a Minecraft mod, and I need a bit of help. Quite simply, it simulates heat transfer.

Unfortunately, I don't know enough about the subject to construct a good model. Here's what I have so far:

Looking back, I can see that simulating heat in terms of watts is probably a really silly way to do it. Wikipedia is being obtuse, Wolfram Alpha thinks I'm a lunatic, and my teachers don't know either. I need some guidance on how best to simulate what I want to simulate.

The parameters of the simulation are:

1. The simulation will only be run on the air and players, and only encompasses temperature, not humidity. All objects that are not air or a player are assumed to have exactly zero thermal conductivity.
2. Air is divided into blocks one cubic meter in volume.
3. Certain objects dump heat into the air.
4. Certain objects remove heat from the air.
5. A player (human being) simulates heat transfer in the same way as the air.
6. Players can put on insulative/heat-removing clothing to change the rate at which heat transfers to/from them.
7. A player contains a "heat pump" that tries to force his internal temperature to 37 degrees Celsius by generating heat or forcing it into the environment.
8. A player whose temperature goes below 35 °C or above 39 °C will enter a state of hypo/hyperthermia and become ill. Severity of effects will increase as the temperature moves further from the ideal.

Anyone have any ideas? I'm also not great with academic math, so I'm not going to be able to understand anything past the algebra II level without a little bit of help. Thanks.

2. Dec 18, 2012

### gsal

Interesting and looks do-able, but not simple. Needless to say, you are dealing simultaneous equations...this looks very much like finite elements where your elements are 1 cubic meter in size, though.

Even if it may be more (CPU) time consuming than a simple "IF" statement, I think you need to automate your equations so that they just work...instead of this thing where you say "If this block is higher than that one"...

...Instead, I think you may need to introduce the height of a block and its neighbor into the equation so that depending on its own height and the others, the equation yields the correct delta of temperature for each block...maybe instead of a single term, you can have two terms or something...of course, the final units of each term needs to be celcius...the heights are simply there to produce an additional term of a certain magnitude and a certain sign (positive or negative).

also, the summation of all heats coming into and leaving a block need to add up to zero for conservation of energy...this looks very much like nodal analysis (looks very much like Kirchhoff's law

I do this sometimes, but solve for final steady state results under non-changing boundary conditions.

It seems that you would need to apply your temperatures deltas every time step.

...I am just rambling now...

3. Dec 18, 2012

### AlephZero

Your idea could make a realstic mode for heat conduction in a solid, if you get the right balance beteen the size of each block and the time step of the simulation. But it won't work very well for the atmosphere, because the main way heat is moved around is by convection. In other words, the air in one block moves into a different block, and takes its heat along with it.

The same thing happens in liquids. If you heat a pan of water on a stove, the heat doesn't conduct up through the water. The hot water at the bottom rises to the top, and some cold water sinks to the bottom to take its place. You can see this in a pan of water, especially if you put some sort of powder that doesn't disolve in the water so it's easier to see the movement.

Trying to model the "real" air motion would be much too expensive to do in "real time" in a game, but you might be able to think of a simple way to get the right sort of effect. For example if a block at 20 degrees has blocks at 10 degrees all around it, most of the heat should move upwards, rather than sideways or down.

4. Dec 19, 2012

### gsal

AlephZero: I thought his implicit *1.0 in the first equation and the explicit *2.0 and *0.2 were intended to simulate such behavior where hot air rather move up than down or to the side. That's what I thought, anyway.

5. Dec 19, 2012

### AlephZero

That seems to imply that heat is only exchanged "symmetrically" between adjacent blocks. It is equivalent to a solid that conducts heat better in one direction (vertical) than the others. Or alternatively, it's equivalent to having blocks that are not cubes, but the height is smaller than the other two dimensions.

A convection current can carry heat around a "loop" of blocks, where the loop can be any size.

The simulation needs to have something equivalent to "conservation of energy" on a global scale, but not on the local scale between every pair of adjacent blocks.