⚠️ LunaSim uses the GoJS Library, which is free for non-commercial, non-production use. For commercial/production use, please obtain a license from them.
System dynamics modeling is the process of graphically outlining various elements and their interactions in a complex system (which often represents real-world mechanisms) and simulating them to get theoretical results on how that system will play out over a period of time. LunaSim allows the user to model using system dynamics (specifically stock- and-flow diagrams) in the browser.
LunaSim includes a graphical editor that facilitates the creation of stock and flow diagrams, incorporates JavaScript-based equations for elements in the simulation, simulates using numerical methods, and facilitates the creation of web-based, user-defined charts and tables that display simulation results.
Try a demo at: www.karthikvedula.com/LunaSim
Check out the UserDocumentation.html
file for information on how to use LunaSim. LunaSim is a static web app, so any static webpage hosting service (such as Github Pages or
an AWS S3 Bucket) can be used for running this application.
The model editor allows the user to create stocks, clouds, variables, flows, and influences. All of these entities and their labels can be easily moved around for visual organization.
Each entity corresponds to an entry in the equation editor table, in which the user can enteri in corresponding equations for each element. Ghosts (visual copies of elements)
are signified by a dollar symbol ($
) being included in front of the element name. These equations are written in JavaScript code (meaning all JS syntax like if-statements and
even Math
library are included).
LunaSim allows custom tables and charts to be created to record and visualize model results. Tables are created through the tabulator.js library and charts are created through the ApexCharts.js library.