SimSoup Layered Architecture
|
The Kernel Layer
This includes the SimSoup Kernel, which is the heart of the model. It is responsible for representing Molecules and the Interactions that take place between them. The Kernel is also responsible for ensuring that the simulation is setup and run according to the user's requirements (as specified in 'Action Requests').
The Kernel Layer includes two areas of functionality outside the Kernel: utilities (eg for random number sequence handling), and a subsystem for storing and retrieving simulation statistics.
The User Interface Management Layer
This manages the processing of user inputs, and the display of data to be presented on the user interface. It does not control the user interface directly; instead it manages an abstraction of the user interface. This ensures that it is isolated from the details of the graphics toolset used for presentation.
The User Interface Presentation Layer
This is responsible for presentation of the user interface, including screen display and handling of user inputs; it uses the GTK+ graphics toolset. This usage is shown on the diagram by extending the User Interface Presentation Layer into the GTK+ box. GTK+ also plays a role in the overall operation of the system, by running the simulation when there is no user interface activity required.
Communication Between Layers
There are three categories of 'downward' communication:-
- Run Requests: Requests to the Kernel Layer to run the simulation.
- Kernel Control Requests: User inputs that will cause the state of the Kernel to change (eg enable / disable simulation processing)
- Kernel Visibility Requests: Requests for visibility of Kernel information (eg for the Reactants associated with a particular Interaction Type)
There are two kinds of 'upward' communication:-
- Simulation Scheduler Registration: The Kernel registers an address for GTK to call when issuing a Run Request
- Simulation Display Requests: Requests for the display of Kernel Layer information on the user interface (eg display of time-series statistics showing the numbers of various species of Molecule).