This section provides an overview of all the building blocks we use in our system dynamics models and how they may be connected to each other. We do so using a so-called “metamodel”.
Metamodels are models that define the structure of another model, in this case, the structure of SD models.
System dynamics does not have a standardized metamodel for validating the structure of causal loop diagrams or stock and flow diagrams, in fact, there is no standardizing body that exists for system dynamics. The de facto standard is defined by Jay Forrester’s book “Principles of Systems” (1968), but each system dynamics tool implements this standard in slightly different ways using slightly different notations. The metamodel introduced below defines the set of constructs we use in the system dynamics models and diagrams that you can find on this website.
A simple metamodel for system dynamics is shown in the following figure, using UML notation:
The metamodel has the following constructs:
Converters are used to disaggregate the complex functions that define flows into their constituent parts. Converters may be influenced by stocks and can influence other converters. In general, they convert inputs into output. Unlike flows (which are special kinds of converters), they cannot directly influence a stock.
Based on this metamodel, the equations that form the heart of the simulation model can now be defined as follows:
Stock(t) = Stock(t-dt) + dt × (∑ Stock.Inflow(t-dt) − ∑ Stock.Outflow(t-dt))
Converter(t) = Converter.Function(Converter.Input(t))
Flow(t) = Flow.Function(Flow.Input(t))
These equations assume that we use Euler Integration.