Software Tools for Natural Computation and Self-Organization
This page lists existing software simulators and demo programs for nonlinear
dynamics, statistical mechanics, pattern formation, multiagent sytsems, and
other areas. The list is woefully incomplete and makes no representation that
the items are the
best that exist. Some are free, some shareware, some commercial products.
There are so many and in such various states of usability, that it would
be a good idea to web search for tools that match your needs and
to test them out. That is, use the list as a starting point.
Rolling your own: You get the most flexibility, of course, if
you write your own simulator. In fact, it's often the case that
writing the simulator is easy—10%-20% of the code on a
project. It's the analysis programming, 80%-90% of the code, that
is more difficult, subtle, and time consuming (both programming
and to run). Most of the simulators listed below do not
allow one to add on or write analysis code. In this case, you have
to write your own simulator and provide the hooks for the analysis
routines. There are several strategies:
- Use an existing numerically oriented language:
MatLab,
Octave its open source cousin,
Maple,
Mathematica,
Scilab,
and so on, are
fine for this. For example, they provide numerical integrators for
an ODE simulator and decent graphical output.
- With enough interest expressed in writing your own programs in
C and using X Windows, an interactive graphics package and example
simulation programs can be posted. This approach will get you the
fastest code, both for simulation and for interactive display. See the
supplemental
reading lists for books on programming.
-
Here's a sample of a Lorenz system simulator:
lorenz.c.
You will not be able to run this, until you replace the graphics
commands there with those from a library that is suitable to your
own system. Nonetheless, the code gives you a sense of how simple
it is to simulate ODEs. The code contains, for example, a standard
4th order Runge-Kutta ODE integrator.
- One reasonable compromise between these two alternatives is to
use Ch, which is a C/C++ interpretter by
www.softintegration.com,
a local Davis firm. It's free for academic use and has numerical integrators
for ODEs and graphics plotting built in. Here's an example, written by
Karoline Wiesner, of a simulator for the Lorenz systems:
LorenzXZ.c.
- My current favorite is to use Python, which is expressive, free,
and on many platforms. You might want to look at my undergraduate
computational science course Nonlinear Physics.
It teaches elementary Python and how to use it to build simulators.
There are tutorials under the Python Programming link.
Platforms:
- [Java] = Platform independent Java program; runs in
Java-enabled browser, for example.
- [Unix] = Runs on Unix or Linux and uses X Windows
- [Mac] = OS X natively or under X Windows
- [PC] = Windows
Nonlinear Dynamics:
- Visions of Chaos:
Differential equations, cellular automata, fractals.
[PC]
- Gerry's
Attraction: 3D Lorenz and Rossler simulation.
[Mac]
- Phaser: Universal Simulator for
Dynamical Systems. [Commercial]
[Java]
- Berkeley Madonna:
Ordinary Differential Equation Solver.
[PC] [Mac] [Commericial]
- Stella
:
Simulation environment. [Commericial]
[PC] [Mac]
Statistical Mechanics:
- Xtoys: X
Windows-based simulators of cellular automata, Ising and Potts models,
and Schrodinger equation.
[Unix] [Mac]
-
Billiards.
[Java]
Pattern Formation:
- Resources:
- Tools:
- Xtoys: X
Windows-based simulators of cellular automata, Ising and Potts models,
and Schrodinger equation.
[Unix] [Mac]
- Mirek's
Cellebration in Java: 1D and 2D Cellular Automata explorer.
[PC] [Java]
- Visions of Chaos:
Differential equations, cellular automata, fractals.
[PC]
Multiagent Systems:
- Breve: 3D simulations
of decentralized systems and artificial life. [Unix] [Mac] [PC]
- Repast:
Agent modeling toolkit. [Java]
- Swarm:
Multi-agent simulation of complex systems. [Java]