VisualSPARK 
The Simulation Problem Analysis and Research Kernel (SPARK) is an
equationbased, objectoriented simulation
environment for constructing and running models of complex systems.

Software
Download VisualSPARK 2.01 (EndUser License Required)
Documentation
New Features, bug fixes and changes
VisualSPARK Users Guide
SPARK Reference Manual
SPARK Atomic Class API pdf
html
SPARK Problem Driver API
pdf
html
Frequently Asked Questions (FAQ)
How to port atomic classes from SPARK 1.x to SPARK 2.x
All Technical Reports
SPARK Overview
Introduction
Describing Problems for SPARK Solution
User Interfaces
Tools for Writing SPARK Classes
Introduction
Simulation of a physical system requires development of a mathematical
model, usually composed of differential and/or algebraic equations.
These equations then must be solved at each point in time over some
interval of interest. The Simulation Problem Analysis and Research
Kernel (SPARK) is an objectoriented software system to perform such
simulations. By "objectoriented" we mean that components and
subsystems
are modeled as objects that can be interconnected to specify the model
of the entire system. Often the same component and subsystem models
can be used in many different system models, saving the work of
redevelopment.
SPARK may be thought of as a general differential/algebraic equation solver. This means that it can be used to solve any kind of mathematical problem described in terms of a set of differential and algebraic equations. The term continuous systems is often used to describe this class of problems. Typical examples include building heating and cooling systems, heat transfer analysis, and biological processes. Models are expressed as systems of interconnected objects, either created by the user or selected from a library. An HVAC tool kit library comes with SPARK.
Since SPARK objects are equationbased rather than algorithmic, they are input/output free. That is, there is no assumed directionality, so that a single model can be used to solve problems with various specified inputs. SPARK is unique in its ability to apply graph theory to automatically determine efficient solution strategies, often resulting in significant speed advantages as well as modeling convenience.
User Interfaces
The user interface provided by VisualSPARK
allows for the creation of textbased classes and problems using the
SPARK language directly, as well as for problem execution. Post
processing for visualization of results is supported.
Tools for Writing SPARK Classes
While specifying problems in the SPARK language using existing classes
is relatively easy, writing SPARK class models can be tedious. One
necessary task is deriving the inverses for the class equation, i.e.,
closedform solutions for several or all variables that occur in the
equation. The labor of this task is multiplied in certain kinds of
problems, such as those described in terms of partial differential
equations. Such equations have to first be expressed as sets of
ordinary differential equations, replicated many times with slight
variations.
To simplify these tasks, VisualSPARK comes with a symbolic manipulation tool called SPARKSYM. With this tool the user need specify only the atomic class equation, from which all necessary inverses and supporting C++ functions are generated automatically through symbolic manipulation.