.BusinessSimulation.CausalLoop

Agile system dynamics modeling with quantitative causal loop diagrams (CLD+)

Information

This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.

This package contains high-level classes (i.e., wrappers) that allow to quickly set up dynamic models in a Causal Loop Diagram (CLD) fashion. Unlike conventional CLD such models can immediately be simulated and analyzed.

A typical workflow in an "Agile Dynamic Modeling" setup would be to quickly establish a first working model using the most relevant variables as starting points and consider them to be stocks/levels. Exogenous processes of change and/or control next to simplified relations between the variables—defined by elasticities or proportionalities—will then give rise to dynamic behavior.

Such a preliminary model can be made more expressive by introducing lookups to modify constant coefficients (e.g., factors of proportionality) thus making the models more nonlinear. As van Zijderveld [24] has shown, such models may even suffice in situations of tight budgets or lower stakes.

True to the Agile paradigm, we may start out with a preliminary, working model and replace any of its parts by more elaborate models as needed. Such a gradual approach to modeling is the sweet spot of object-oriented modeling in Modelica.

Notes

Since not all component names are visible in the diagram display for CausalLoop classes the following table shows the defaultComponentName for the main classes of the package:

defaultComponentName Explicit Name Classes
s Stocks (aka states) SimpleInformationLevel,
SimpleMaterialStock
p Processes (exogenous change ~) ExponentialChange,
LinearChange,
LogisticGrowth
r Relations (aka links) Elasticity,
Proportionality
d Delays ExponentialDelay,
PipelineDelay
c Controls InputControl,
SimpleControl,
PID_Control,
ForceToStockValue,
ForceToInputValue
b Blocks (i.e., information processing) Lookup_type,
Aggregation,
StockInformation,
RateInformation,
AggregationInfo,
Total,
Product
f Flows UnidirectionalFlow,
ComplexInteraction,
SplitFlow
L Loop indicators LoopIndicator_CW,
LoopIndicator_CCW
lab Labels (i.e., flow indicators) MatFlowIndicator,
InfoFlowIndicator

See also

To see the components of this package at work, have a look at these example models:

A short video presentation (12 min) introducing quantitative causal loop diagramming can be found here.



Copyright © 2021 Guido Wolf Reichert
Licensed under the EUPL-1.2 or later

Contents

NameDescription
SimpleInformationLevelInformation level for CLD-like modeling
SimpleMaterialStockInformation level for CLD-mapping
PerformanceEvaluation of a stock on a [0,1] scale
InputControlDirectly set information using a ramp input profile
SimpleControlDirectly influencing a stock to keep it at setpoint value
PID_ControlDirectly influencing a stock to keep it at setpoint value
ExponentialChangeExponential growth or decline process
LinearChangeProcess of growth or decline at given rate
LogisticGrowthS-shaped logistic growth process
ElasticityFractional rate of change is proportional to that of the influencing stock
ElasticityDelayedProcess driven by elasticity and additional exponential delay
ProportionalityRate of change is proportional to that of the influencing stock
ProportionalityDelayedProcess driven by proportionality with additional exponential delay
ForceToInputValueFlow is obtained as closing the gap to input value
ForceToStockValueFlow is obtained as closing the gap to input stock value
ExponentialDelayExponential delay of input flow
PipelineDelayFixed or pure delay of input flow
ComplexInteractionInteraction with linear and nonlinear terms
UnidirectionalFlowInteraction with linear and nonlinear terms
SplitFlowSplitting a flow into n flows
Lookup_JPositivePositively sloping s-shaped lookup
Lookup_JNegativeNegatively sloping s-shaped lookup
Lookup_SPositivePositively sloping s-shaped lookup (centered at origin)
Lookup_SNegativeNegatively sloping s-shaped lookup (centered at origin)
Lookup_TableTable-based lookup with manual input of the interpolation table
Lookup_TableOnFileTable-based lookup given on file
AggregationGeneralized mean function for multiple stock information inputs
StockInformationProvide amount in stock information
RateInformationProvide rate of net flow information
Aggregation_InfoGeneralized mean function for multiple information inputs
TotalSum all inputs
ProductMultiply all inputs
LoopIndicator_CWLoopindicator for clockwise feedback loop
LoopIndicator_CCWLoopindicator for counter clockwise feedback loop
MatFlowIndicatorDirectional indicator for material flows in a diagram
InfoFlowIndicatorDirectional indicator for information flows in a diagram
SketchVariableClass to be used for comments or sketch variables

Revisions


Generated at 2025-12-09T19:14:04Z by OpenModelicaOpenModelica 1.25.7 using GenerateDoc.mos