There's a really interesting but very complex model of global heat (global temperatures). I'd like us to build it together.
Let's first look at the factors we'd like to include in our model. These are all the things we think affect global heat:
In addition, heat moves around:
Here's a web page describing and defining these terms. We will only do a simplified form of the STELLA model.
Take some time to read over that web site. It's pretty interesting. Of course, it illustrates that with simulation, you not only need to understand simulation, but you need a pretty good understanding of the dynamics of the system that you are simulating. In this case, you need to know a lot about geology and the physics of heat flows. Still, I think that's pretty interesting.
Let's first build a block diagram and a qualitative model. By "qualitative," I mean that we're just interested in general directions of things, not numbers. In other words, if cloud cover goes up, does the amount of heat to the surface go down or up? How about the amount of heat to the atmosphere?
Let's look at the following major flows of heat:
What will flow around our system? We'd like to model heat energy flowing around. We can, but heat isn't measured by temperature, it's measured in different units (Joules, which is a unit of energy). (For example, a pound of water can absorb a lot more heat than a pound of sand, say, for the same increase in temperature.)
In this simulation, we'll use made-up units of heat. (The more complex simulation could use Joules but instead converts everything to a ratio relative to how much energy the earth gets every day.)
The albedo and cloud cover determines how much of the solar energy is immediately reflected. The difference is how much solar energy comes to the planet.
Some fraction is absorbed by the atmosphere. The rest hits the surface.
Depending on the albedo of the surface, some fraction is then absorbed. The rest is immediately reflected.
Let's work on these equations together.
When water evaporates, it moves heat from the surface to the atmosphere. 30 units at the initial heat level
Cool air over a warm surface will warm due to convection. 6 units at the initial heat level.
There's no way you should know this, but it turns out that bodies in space radiate heat depending on their temperature and a few constants that depend on the emissivity of the material (e), the surface area (A), and so forth.
F = e s A T4
For this model, we're not going to use temperature at all, but only relative temperature. That is, the function will have the form:
F = C (T/T0)4
The constant C is chosen so that the resulting value is the same, namely
C=e s A T4
This works because if, say, the temperature of the radiating body increases by 10 percent, the outflow will increase by a factor of 1.14, as it should.
This trick also avoids worrying about what value to use for the surface area (the A value). Instead, we just "know" that the function has the value 102, and the only issue is how it changes with changing temperature. Each material has its own value, as follows:
Be careful of that last one; remember to include convection and evaporation
Let's put it together and see what we get. I hope we get something like this:
Notice that this model is a "steady state" model. It describes the current world, so there shouldn't be any big change over the simulation.
(This is the same as experiment 1 from the Carleton web site.)
solar_input = f(time)
One general way to do this is to use an equation block and a system variable block.
If there's time, try experiment 2 from the Carleton site:
| surface temp | cloud cover |
|---|---|
| 258 | 0.015 |
| 268 | 0.110 |
| 278 | 0.360 |
| 288 | 0.600 |
| 298 | 0.840 |
| 308 | 0.920 |
| 318 | 0.950 |
This simulation has no randomness. Where would it be appropriate to add randomness?
In the summer of 2003, Robbie Berg's research lab used laser cooling to bring a cloud of rubidium atoms down to thousandths of a degree above absolute zero. How could they measure the temperature they'd achived? They couldn't just stick a thermometer in there!
Their idea was to turn off the lasers supporting the cloud (it's essentially in a vacuum) and let them fall. They could measure when the cloud fell through a detector. The speed of their fall is determined by two things: gravity and the average speed of the atoms. Since average speed is the same thing as temperature, they could indirectly measure temperature.
The situation is somewhat complicated because the atoms are moving in all directions and so there's no one moment when they all fall through the detector. If they could get an understanding of how the energy was related to the time that they fell through the detector, they could figure out how to indirectly measure the temperature.
Seila Selimovic ('04) took on this task. She build a simulation in StarLogo that modeled the atoms as a bunch of turtles with random position and velocity (each in 2D). The randomness is a 2D Gaussian distribution.
Download the following StarLogo simulation and try it out. Note how the number of atoms crossing the red line (the detector) changes over time, but there is a clear central tendency (the mode of the distribution of crossings) and a clear variance around it. Try different values for the sliders and see if you can figure out, qualitatively at least, determines the central tendency and the variance. For example, if you increase the temperature, does the mode increase, decrease or stay the same? How about the variance?
Together, we'll build an M/M/1 queue. We'll need to open the "Discrete Event" library. We'll the following blocks:
We'll also use a variant of "Plotter, I/O" called "Plotter, DE" (for Discrete Event). We'll build this together, but we're aiming for the following:
This work is licensed under a Creative Commons
License |
|
|
|