Introduction
PUPIL,Program for User
Package Interface
and Linking, is a software environment,-
the program,- to allow developers to quickly and efficiently link
together multiple pieces of software,- the user packages,- that have
been and are actively being developed by researchers. The program is
general and can be used to link user packages from any scientific or
engineering domain. However, we developed it with multi-scale
simulation in the field of material science in mind, and the interfaces
included in this first release show that bias.
The design philosophy of PUPIL was to provide an environment for the
software developer of user packages for simulation in material science
and engineering in which it is possible to pass control and data from
one user package to another in a straightforward manner. A requirement
of the design is that the changes any developer must make to any of the
user packages must be small. To make such changes, it is obviously
required to understand the user package, but we wanted to avoid the
need to have a complete and exhaustive understanding such as would be
required when one wants to create a combined user package from to
independently developed user packages.
The architecture of PUPIL is that of a supervisor program that
coordinates the execution and communication between the user packages,
which are called calculation units (CU). The supervisor is implemented
as a distributed program with one manager and several workers, one for
each calculation unit. The manager and the workers communicate via the
CORBA (common object request broker) protocol. The worker code is part
of the calculation unit executable and the communication with the
calculation unit and its worker is by subroutine calls. The manager and
the worker code are written in Java. The worker’s Java code calls
C-code in the calculation unit through the JNI (Java Native Interface).
The calculation code, often written in Fortran or C, calls C-code in
the PUPIL library to.
Capabilities
Current version: 1.2-1
- Graphic User Interface to build the main simulation input file.
- Simulation Manager to lead the multi-scale simulation between different Calculation Units.
- Interface with Amber v10
- Interface with DLPOLY v2.18
- Interface with Gaussian03
- Interface with Siesta v2.0 (Start/Stop and CycleQM behaviors)
- Interface with mndo97 (Start/Stop QM role behaviors)
- stubMD. Stub program for interface sample and testing playing a Molecular Dynamics Calculation Unit role.
- stubQM. Stub program for interface sample and testing, playing a Cycle Quantum Mechanics Calculation Unit role.
- stubDI. Stub program for interface sample and testing, playing an external Domain Identifier Calculation Unit role.
New documentation release (May 10, 2009)
- New revised manual v2.3
- New PUPIL Tutorial: "Using PUPIL to postprocess a MD trajectory obtained by Amber with a QM method from Gaussian03"
New bugfix release: Version 1.2-1 (March 15, 2009)
- Fixed a bug when killing PUPIL-workers
- Fixed a bug in generating forces over MM atoms from interaction with electronic density from cube file
- Implemented a "Terminating status" in libPUPIL.so
- Revised manual
- General language revision
