Nova Users Manual

From Nova Documentation
Revision as of 18:08, 22 March 2015 by Novaadmin (Talk | contribs) (What is Nova?)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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 script 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:

  • AgentVectors are one dimensional arrays of agents; an agent is a capsule “wrapper” that includes a representation for location and movement within a two dimensional space. Agentvectors also manage dynamic creation and destruction of agents.
  • CellMatrices are two dimensional arrays of capsules. They provide a means for representing cellular automata. Cellmatrices may implement either a cartesian or hexagonal topology.
  • NodeNetworks are an array of graph nodes with weighted directed connections. Click here for an example of using a NodeNetwork.
  • SimWorlds combine Agentvectors with Cellmatrices, so that agent locations correspond to matrix coordinates. The result is a virtual space of interacting agents and cells.
  • NetWorlds are analogous to SimWorlds substituting a NodeNetwork for a CellMatrix as the space in which the agents operate.

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.


  • "Canvas" for visual model design using a component set.
  • "Dashboard" for presentation of controls and visualizing components.
  • Cross-platform: runs on Mac, Windows and Linux.
  • Multi-layer architecture.
  • Component set containing stocks, flows, etc. for constructing dynamic systems models.
  • Container components for construction spatial and agent-based models.
  • "Clocked chips" implementing synchronous timing subdivision.
  • "Code chips" implementing coded extensions to the component set.
  • Script-based runtime using an extension of Javascript.
  • Large set of primitive operators.
  • Implements topologies for cellular and network-based environments that may contain moving agents.
  • Includes cellular topology based on hexagonal neighborhoods.
  • Plug-in framework supporting user-defined components, including an extensive set of initial plugins for visualization and other functions.