Modeling systems with Stella software.

As discussed in the main page, a distinction is made between code-oriented programming vs. object-oriented programming. With the advent of greater computing power and in order to develop more user-friendly software object-oriented programing languages developed. Visual Basic is a prime example. In such an approach the programmer inserts objects, such as a click-button, in a window programming environment and then writes code for that object. When a user clicks on the click-button that code is executed. Stella is very much object oriented, with a very limited host of objects that can be combined to develop fairly sophisticated models.

Objects in Stella environment:

• stocks, reserves (reservoirs): often this is the entity of interest, the component of the system that is being modeled (the dependent variable).
• spigots, inflow and outflow regulators.
• circles - represent controlling variables. These need not be constant, but can be a function of other components.
• arrows indicating links. Links are directional (one-way). When you make a link then the attribute associated with the source object is a variable that helps determine the value of the attribute associated with the receiving object

The code in Stella is very limited, and consists mainly of establishing mathematical relationships between the various components. However, it is the critical aspect. These are the rules of a system diagram. In addition, to mathematical relationships in the form of equations, one can also input graphical relationships between variables. You can think of it as a free form rule. This greatly extends the utility of Stella, and allows exploration of intuitive models.

The best way to understand is to go through some examples. The example here is of the volume of an eroding mountain. The idea trying to be captured is very simple. The amount of erosion is related to high the mountains are. As relief diminishes so does the rate of erosion. If we think of relief being represented in aggregate by mountain volume (as measured by the portion above sea level), then the erosion rate is a function of the mountain volume at any one time. In this particular case erosion rate = constant * (Mountain volume/initial mountain volume). The simple result is the simple curve below. Here it is the form of the response that is important. Obviously, mountain belts do not erode in 1000 years and this model does not capture much (it is mainly a starting point here). You might imagine the x axis units as millennia instead of years, and this might be more realistic. The model needs to be refined.

What would you add to this model to make it more realistic? It is natural to think of a list of components that would make it better. It can be argued that it is more fruitful to add a component at a time and to a produce a series of working models of increasing sophistication. For one, this approach will allow you to better understand the influence of each component on the system behavior.

Exploring the Dynamics of Earth Systems a guide to constructing and experimenting with computer models of Earth systems using STELLA by Dave Bice, Dept. of Geology, Carleton College, Northfield, MN 55057. There is just a wealth of material here - a very good site.

In class exercise:

First, take the example for the eroding mountain belt above, and make a list of components to add that would more realistically model erosion of topography. Then decide on which component would be the best to add on next, and draw a diagram of what the object configuration might look like in Stella.

Stella is particularly good at exploring feedback loops. Think of one of the classic possibilities - how local snow/ice cover influences local temperatures which in turn influence local snow/ice cover. Here is one kernel for understanding glaciation and global climate change. In class, using Stella objects, model this phenomena. On one sheet of paper depict the object relationships. On the other describe the the relationship between the variables and inflows and outflows.