What is Nova?

Nova is a new Java-based modeling platform that naturally supports the creation of models in the system dynamics, spatial and agent-based modeling paradigms in a single desktop application. Nova uses a visual language to express model design, and provides automatic conversion for such models to script form for execution. Nova’s architecture promotes hierarchical design, code reuse, and extensibility through the use of plug-ins.

Nova is fundamentally a dynamic modeling system that is extended through hierarchical design to express spatial and agent-based architectures. A Nova model can be built using the visual language, and then by using its capture function be automatically converted into a runnable script2 for immediate execution, or possible deployment over a network or on a supercomputer. Nova focuses on the creation of a modular unit called a capsule. Each capsule is a complete model that interacts with its environment through an interface consisting of input and output channels. The simplest capsule might contain a stock-and-flow model similar to one built in Stella. However, capsule instances (called chips) may appear in other capsules (as long as there is no circularity), communicating with their hosts through their I/O channels. Each chip introduces into its host the functionality of that chip’s encapsulated model. Capsules may also be exported and reused in other projects.

The chip is one type of container. Spatial and agent-based models are constructed using array-like containers called aggregators. The current implementation provides five aggregator types:

Nova’s computational architecture comprise the semantics of NovaScript, a scripting language embedded in Javascript. The NovaScript runtime environment is an extension of the ECMA 1.7 Javascript standard. All Nova simulations are actually NovaScript programs executing on the NovaScript runtime interpreter.

Features