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

SPARK Overview
Introduction
Describing Problems for SPARK Solution
User Interfaces
Tools for Writing SPARK Classes
Portability
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 interfaces provided with VisualSPARK and WinSPARK
allow 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. Additionally,
there are plans for a Graphical Editor for creating and connecting
objects graphically.
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, SPARK can be installed with symbolic tools, such as a MACSYMA or Maple. With these tools the user need specify only the atomic class equation, from which all necessary inverses and supporting C++ functions are generated automatically through symbolic manipulation. In addition, the provided MACSYMA programs give commands that automatically generate macro classes, and even complete problem specifications. For users without MACSYMA or Maple, SPARK comes with its own symbolic manipulation tool that, while very limited, can find inverses of many equations encountered in simulation practice. For more involved problems, these symbolic tools offer a significant improvement in productivity.
Portability
VisualSPARK is intended to be portable. The basic elements, i.e., the
input
parser, setup program, and fixed elements of the solver, should
compile and run on any platform for which there is a C++ compiler. In
the initial release, executables, necessary libraries, and user
interfaces are provided for the Linux/UNIX and Windows platforms.