Java PHASER Project

A Universal Simulator for Dynamical Systems


Authors/Architects: Jason Glick, Huseyin Kocak, and Burton Rosenberg
With contributions by: Craig Kolthoff and Johannes Gudmundsson

We are redeveloping from the ground up, in 100% pure Java, the original Phaser C program for DOS authored by Dr. Kocak at Brown University in the mid 1980's. Java Phaser is not a port; rather, it is a completely new version which sports radically new GUI features, analytical tools, and algorithms. Furthermore, it has been rendered platform independent, thanx to Java technology!


Phaser is an intuitive program for graphically and numerically analyzing dynamical systems on a computer. Such systems include multi- dimensional Difference Equations, Iterated Function Systems, and Ordinary Differential Equations exhibiting bifurcation, periodic, equilibria, chaotic, and strange attraction behaviors. Phaser captures and manifests these dynamical phenomena with its powerful Views:

Phaser Views:
  • Phase Portrait
  • Xi vs. Time
  • Bifurcation Diagram
  • 1-D Stair Step Diagram
  • Xi Values

Each View is capable of simultaneously solving multiple initial conditions on a given system. Morever, each view runs in its own thread space, thereby allowing any combination of views to run concurrently. All Views, including their respective graphical and numerical environments wherein runs the dynamic system under inspection, are fine-tunably configurable by the user via Phaser's vital co-primary application, the Numerics Editor.

The Phase Portrait View is especially enhanced by robust 3-D graphics functionality and presentation, including static and real-time 3-D rotations and animations of system solutions, with user-defined Cut-Plane and Poincare Map visual aids integration.

In addition to its diverse stock library of fascinating equations, Phaser is equipped with an easy-to-use, yet sophisticated Equation Editor, Parser and Evaluator. Parsed-evaluated equations perform more-or-less at 55% speed of their executed bytecode counterparts. Such equations are known as Custom Equations.

Custom Equations may be collected in Phaser's Custom Equation Library, and may be added, removed, modifed, and used at any time. Custom Equations may be exported and imported as Phaser Projects.

Phaser's prowess is contributable in part to its extensive library of classical and state-of-the-art algorithms* - the following methods for numerical analysis of first-order differential equations are employed by Phaser:

Classical Algorithms:
    Explicit Implicit
    Euler (1) Implicit Euler (1)
    Improved Euler (2) Implicit Midpoint (2)
    Heun (2) Implicit Trapezoid (2)
    Nystrom (3) Implicit SDIRK (3)
    Runge-Kutta (4) Implicit Gauss (4)
    Runge-Kutta 3/8 (4) Implicit Lobatto (4)
    Implicit Radau IA (5)
    Implicit Gauss (6)
State-of-the-Art Algorithms:
    Explicit Implicit
    Dormand-Prince 5(4) * RADAU IIA *
    Dormand-Prince 8(5,3) *
    ODEX * SEULEX *
* [ Our Java ports of modern algorithms in FORTRAN code developed by Hairer and Wanner. ]

Using Newton's method, Phaser is capable of numerically and graphically locating periodic points in MAPs and equilibrium points in ODEs.


Phaser includes a very unique co-primary application called the Gallery. The Phaser Gallery showcases projects created in Phaser. Projects are sent from Phaser to the Gallery. On the surface, projects in the Gallery are represented as seemingly static snapshot images. However, behind the scenes, living in limbo, are the intact objects that define the projects. Thus, any one project in the Gallery may be rejuvenated at any time by sending it back to Phaser where further experimentation and exploration may be performed. As well as being a showcase, the Gallery serves as a practical temporary repository for multiple in-progress or finished projects while another one is being worked on in the main application of Phaser.

Excerpt from Phaser Help: It is often necessary to save a current Phaser simulation for a multitude of reasons. For example, you might like to share your findings with a colleague, continue investigation at a later time, or create demonstrations for students. For such tasks, Phaser provides the following facilities:

  • Save Phaser Project: You can save the fruits of your labor by simply using Save Current Project menuitem on the File menu of the Main Application Window. This action enables you to save the current state of Phaser in its entirety, including the complete graphical and numerical environments, to a compressed user-specified file.
  • Load Phaser Project: A previously saved Phaser Project file can be reloaded into Phaser using Load Phaser Project menuitem on the File menu of the Main Application Window. This action enables you to restore the current state of Phaser to that of the saved project.
  • Load Phaser Project URL: Previously saved Phaser Project files can also be loaded over the Net using Load Phaser Project URL menuitem on the File menu of the Main Application Window. This action enables you to Fetch the desired Phaser Project file by specifying its URL, using either FTP or HTTP protocols.
Current development plans for Phaser, 1st release:
  • Algorithms designed for stiff equations
  • Algorithms tailored for Hamiltonian Systems
  • Printed manual, including tutorials
  • Online help facility
Future development plans for Phaser, 2nd release:
  • Basins of Attraction
  • 3-D View of Bifurcation Diagram
  • Context-sensitve online help facility

Phaser is designed as a professional educational and research tool. It is being class tested (in beginning and advanced courses in differential equations) within a network environment in our department; it has proven to be very robust and successful. Finally, the Phaser project symbolizes an investigation into Java technology as a promising development platform for serious mathematical and scientific computing.

Acknowledgements: Dr. Alan Zame, The Chairman of our Department of Math and Computer Science, for his material and spiritual support. Main contributor to the Phaser Project is Craig Kolthoff, for impeccable quality assurance, FORTRAN fluency, and perpetual enthusiastic support. Johannes Gudmundsson, for implementation of the classic implicit algorithms.

Phaser is being developed entirely in Java, using Sun's JDK 1.5.0/1.6.0 JavaHelp 2.0 on various platforms (in particular, Microsoft Windows XP, Redhat Linux, and Mac OS X) and written as a stand-alone application.

Partial support for this work was provided by the National Science Foundation's Course, Curriculum, and Laboratory Improvement Program under grant DUE-0230612.

Phaser 2.1 was released on December 1st, 2003!
Phaser 3.0 was released on April 14th, 2007!


Phaser Links:

For current and more information or to get a copy of Phaser,
please visit the Phaser Scientific Software website.


Related Links:

The goals of the Numerics Working Group, chartered by the Java Grande Forum, are
  1. to assess the suitability of Java for numerical computation,
  2. to work towards community consensus on actions which can be taken to overcome deficiencies of the language and its run-time environment, and
  3. to encourage the development of APIs for core mathematical operations

Last updated: Mon Apr 14 00:00:00 EST 2007
Jason Glick, jason@math.miami.edu