An interactive GUI, flexible programmability, a simple and
efficient method of linking to existing C/C++ code, and
data graphing/plotting capabilities are required for
accelerator modeling and simulation. Dr. Hiroshi Nishimura and
colleagues at Lawrence Berkeley National Laboratory (LBNL),
implemented TracyM which is built on top of O-Matrix
to achieve these goals. The TracyM system uses
to present numeric results, graphs, provide matrix calculations, and
to enable programmability of their existing C++ class library, Goemon.
The TracyM User Interface in O-Matrix
The interactive, matrix-based scripting in O-Matrix
makes it quick and easy for accelerator physicists to prototype tests
and simulations. The following O-Matrix script
calculates the ALS booster ring properties and plots the results.
A key requirement of the system was the ability to
link to existing, tested C++ functions. In the following
O-Matrix script which calculates the dynamic aperture
of the ALS storage ring, the function
is a C++ function in the Goemon class library. All of the Goemon functions
can be integrated into O-Matrix with a single DLL
which provides a simple and efficient method of leveraging this library.
Calling a C++ function from O-Matrix
The O-Matrix ability to link end user created DLL files enables us to
maintain compatibility with the code we already have, and enables accessibility
to external hardware devices. This approach proved to be significantly
easier than the Matlab MEX facilities.
- Hiroshi Nishimura, LBNL, ICAP'98 paper
The TracyM system includes several external GUI programs
that communicate data and commands with O-Matrix
through inter-process communication and Win32 shared memory.
The following architecture diagram illustrates the two external
program TableView and GraphView communicating with
TracyM Architecture Diagram
Another external tool is CommandView that manipulates
a standard set of knobs of the virtual machine using a GUI.
In this mode TracyM becomes a server for the CommandView
panel and communicates with it through a Win32 pipe.
This user story was condensed from the article,
Matlab-like Environment for Accelerator Modeling and Simulation,
International Computational Accelerator Physics Conference 1998, (ICAP'98)