Atmospheric Simulator

Animated image with a temperature map

The Story

This project started when I first tried my hand at making some Java code for manipulating a hexagonal map. I was going to try out some stuff for a turn-based strategy game (I'm a big Civilization fan!). It didn't take many hours to get the hex map, and it needed some reasonable content.

So I created a generator for generating a surface with real continents.
And then a model for the rainfall and water flow.
And then a model for the temperatures and the seasonal variation.
And then the ocean currents.
And then the vegetation types.

At that time I was running at the edge of how much it was reasonable for me to study climatology and meteorology and that kind of stuff. My plan was not to become a meteorologist. I think that with some further development this could be made an interesting learning environment for high school geography classes. I was considering using this program somehow for my master's thesis, investigating data visualization and mental models or something. However, I became involved in another topic for my master's thesis, so I dropped this project.

Features

  • Hexagonal map with configurable size and horizontal wrapping.
  • Generator with configurable parameters for roughness of surface, land/sea ratio and amount of rainfall.
  • Model that takes into account:
    • Height
    • Water on surface
    • Below-surface water reservoir
    • Flow of water across land
    • Water vapor in air
    • Water vapor transfer across adjacent cells
    • Temperature
    • Effect of height on temperature
    • Effect of temperature on air's capacity to absorb water
    • Transfer of heat by ocean currents
    • (Attempt at modeling air pressure, but that part always sucked...)
  • Self-made algorithm for placing the ocean currents on the map. It's not a trivial problem to fit those rings to the randomly generated ocean shapes. The ring shape is not necessary for realism, but without a definite shape, placing just some currents somewhere in the oceans becomes even more of an ill-defined problem.
  • A logic to determine vegetation type based on yearly temperature and rainfall distributions. I actually bought a high school geography book to read up on this stuff (I wasn't much interested in the stuff when I actually was at high school...).
  • UI to inspect the distributions graphically.
  • UI both in Finnish and in English, switchable on the fly.

See a slideshow of screenshots.
If you're interested in trying out the program or developing it further, please contact me!