Software Tools for
Nonlinear Physics: Modeling Chaos & Complexity
The following lists existing (non-Python) software simulators
and demo programs for nonlinear dynamics, statistical mechanics,
pattern formation, multiagent systems, 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.
These things are not needed for the course. But might be of some
peripheral interest.
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++ interpreter 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.
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] [Commercial]
- Stella
:
Simulation environment. [Commercial]
[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]