Design Icons

721

These are the “nuts and bolts” of any system dynamics program. The number of icons will grow over time, but the key ones are implemented now:

Import data
\resizebox{!}{2ex}{\includegraphics{images/importData.eps}} Opens an import CSV file dialog, allowing the creation of a parameter from a CSV data file. See Importing CSV files.

Ravel
See Ravel.

Plot widget
\resizebox{!}{2ex}{\includegraphics{images/plot.eps}} Add plots to the canvas.

Sheet widget
\resizebox{!}{2ex}{\includegraphics{images/sheet.eps}} Add a sheet to the canvas.

Variable
\resizebox{!}{2ex}{\includegraphics{images/var.eps}} .

This is a pull down menu, giving access to creating variables, constants and parameters.

Variables are entities whose value changes as a function of time and its relationship with other entities in your model. Click on it and a variable definition window will appear:

The only essential step here is providing a name for the Variable. You can also enter a value for it (and a rotation in degrees), but these can be omitted. In a dynamic model, the value will be generated by the model itself, provided its input is wired.

When you click on OK (or press Enter), the newly named variable will appear in the top left hand corner of the Canvas. Move the mouse cursor to where you want to place the variable on the Canvas, click, and it will be placed in that location.

Constants are entities whose value is unaffected by the simulation or other entities in the model. Click on it and a constant definition window will appear:

The only essential element here is its value. You can also specify its rotation on the Canvas in degrees. This lets you vary a parameter while a simulation is running--which is useful if you wish to explore a range of policy options while a model is running.

A constant is just a type of variable, which also include parameters (named constants), flow variables, stock variables and integration variables. In fact there is no real conceptual difference between creating a constant or creating a variable, as you can switch the type using the type field.

Like the variable and constant button, the parameter button creates a variable defaulting to the parameter type. Parameters differ from flow variables in not having an input port, and differ from constants in having a name and being controllable by a slider during simulation.

Lock
Lock widgets are used with Ravels.
Notes
Add textual annotations

Time
\resizebox{!}{2ex}{\includegraphics{images/time.eps}} embeds a reference to the simulation time on the Canvas. This is not necessary in most simulations, but can be useful if you want to make a time-dependent process explicit, or control the appearance of a graph.

For example, by default a graph displays the simulation time on the horizontal axis, so that cycles get compressed as a simulation runs for a substantial period:

\resizebox{\textwidth}{!}{\includegraphics{images/NewItem36.eps}}

If a Time block is added to the marker for the x-axis range, you can control the number of years that are displayed. This graph is set up to show a ten year range of the model only:

\resizebox{\textwidth}{!}{\includegraphics{images/NewItem37.eps}}

Unary functions
\resizebox{!}{2ex}{\includegraphics{images/sqrt.eps}} These are a fairly standard complement of mathematical functions.

Binary operations
\resizebox{!}{2ex}{\includegraphics{images/add.eps}} . These execute the stated binary mathematical operations. Each input can take multiple wires as well--so that to add five numbers together, for example you can wire 1 input to one port on the Add block, and the other four to the other port.

Min & Max Functions These take the minimum and maximum values, respectively. These also allow multiple wires per input.

Pow and log. These are binary operations (taking two arguments). In the case of the power operation, the exponent is the top port, and the argument to be raised to that exponent is the bottom port. This is indicated by the $x$ and $y$ labels on the ports. In the case of logarithm, the bottom port (labelled $b$) is the base of the logarithm.

Logical Operators $<$ $\le $, =, $\wedge $ $\vee $ $\neg $ (and, or, not)] These return 0 for false and 1 for true.

Reduction operations
\resizebox{!}{2ex}{\includegraphics{images/sum.eps}} This menu contains operations that reduce a vector to a scalar, or reduce the rank of a tensor. Typically sum, product, any, all etc.

Scans
\resizebox{!}{2ex}{\includegraphics{images/runningSum.eps}} These are running sums and the difference operator

Miscellaneous tensor operations
\resizebox{!}{2ex}{\includegraphics{images/outerProduct.eps}} Any other tensor function not covered elsewhere.

Switch
\resizebox{!}{2ex}{\includegraphics{images/switchIcon.eps}} Add a piecewise-defined function block to the canvas. Also known as a hybrid function.

User defined function
\resizebox{!}{2ex}{\includegraphics{images/userFunction.eps}} You can define your own function using an algebraic expression, such as exp(-x^2y)+.

Godley Table
\resizebox{!}{2ex}{\includegraphics{images/NewItem29.eps}} . This is the fundamental element of Minsky that is not found (yet) in any other system dynamics program.

Clicking on it and placing the resulting Bank Icon on the Canvas enters a Godley table into your model:

\includegraphics{images/NewItem29.eps}

Double-click on the Bank Icon (or right-click and choose “Open Godley Table” from the context menu) and you get a double-entry bookkeeping table we call a Godley Table, which looks like the following onscreen:

\scalebox{0.5}{\includegraphics{images/emptyGodley.eps}}

Use this table to enter the bank accounts and financial flows in your model. We discuss this later in the Tutorial (Monetary).

Integration
\resizebox{!}{2ex}{\includegraphics{images/int.eps}} . This inserts a variable whose value depends on the integral of other variables in the system. This is the essential element for defining a dynamic model. Click on it and the following entity will appear at the top left hand side of the canvas (and move with your mouse until you click to place it somewhere:

\includegraphics{images/NewItem39.eps}

“int1” is just a placeholder for the integration variable, and the first thing you should do after creating one is give it a name. Double-click on the “int1”, or right click and choose Edit. This will bring up the following menu:

Change the name to something appropriate, and give it an initial value. For example, if you were building a model that included America's population, you would enter the following:

The integrated variable block would now look like this:

\includegraphics{images/NewItem42.eps}

To model population, you need to include a growth rate. According to Wikipedia, the current US population growth rate is 0.97 percent per annum. Expressed as an equation, this says that the annual change in population, divided by its current level, equals 0.0097:


\begin{displaymath}
\frac{1}{\mathrm{Population}(t)}\cdot\left(\frac{d}{dt}\mathrm{Population}(t)\right)=0.0097
\end{displaymath}

To express this as an integral equation, firstly we multiply both sides of this equation by Population to get:


\begin{displaymath}
\frac{d}{dt}\mathrm{Population}(t)=0.0097\cdot\mathrm{Population}(t)
\end{displaymath}

Then we integrate both sides to get an equation that estimates what the population will be T years into the future as:


\begin{displaymath}
\mathrm{Population}(T)=315+\int_0^T 0.0097\cdot\mathrm{Population}(t)
dt
\end{displaymath}

Here, 315 (million) equals the current population of the USA, the year zero is today, and $T$ is some number of years from today. The same equation done as a block diagram looks like this:

\resizebox{\textwidth}{!}{\includegraphics{images/NewItem46.eps}}

Or you can make it look more like the mathematical equation by right-clicking on “Population” and choosing “Copy Var”. Then you will get another copy of the Population variable, and you can wire up the equation this way:

\resizebox{\textwidth}{!}{\includegraphics{images/NewItem47.eps}}

Either method can be used. I prefer the latter because it's neater, and it emphasizes the link between the simple formula for a percentage rate of change and a differential equation.

Derivative Operator
\resizebox{!}{2ex}{\includegraphics{images/differentiate.eps}} This operator symbolically differentiates its input, provided the input is differentiable. An error is generated if the input is not differentiable.