Introduction
PUPIL,Program for User
Package Interface
and Linking, is a software
environment - the program - that allows developers to link quickly and efficiently
together multiple pieces of software in a fully automated multi-scale simulation. More
specifically, it supports QM/MM MD simulations where the user might choose among
any of the different MD engines and QM engines, which are connected to PUPIL as
external programs through a tiny specific interface. One of the main advantages here is
that the user can use most of the functionalities that may have those external programs
interfaced without the necessity to be implemented again on independent interfaces. In
fact, this simulation interface concentrates all the common code involved in the coupling
terms of the QM/MM approach.
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
RMI (remote method invocation) 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: 4.0 (August 4th, 2022)
- Graphic User Interface to build the main simulation inputfile.
- Simulation Manager to lead the multi-scale simulation between different Calculation Units.
- Long-range electrostatics based in Ewald-summations.
- Multiple active zone QM/MM-MD (maz-QM/MM-MD approach)
- Interface with Amber v10 up to v22
- Interface with DL_CLASS v1.9 and v2.0 (DL_POLY)
- Interface with Gaussian03 and 09
- Interface with deMon2k v4.3.8 and 6.1.1
- Interface with NWChem v6.1.1, v6.3 up to v6.6 and v7.0.2
- Interface with Siesta v4.0 and 4.1.5(Start/Stop and CycleQM behaviors)
- Interface with MOPAC2016
- Interface with ORCA 3.0.3, 4.0.1.2 and 5.0.3
- 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.
Electrostatic Embedding | Start-Stop Behavior | Cyclic Behavior | Tightly Coupled Interface | MPI execution | |
QM codes | |||||
deMon2k | ✔ | ✔ | ✔ | ||
Gaussian | ✔ | ✔ | - a,b | ||
NWChem | ✔ | ✔ | ✔ | ||
Siesta | ✔ | ✔ | ✔ | ✔ | |
Orca | ✔ | ✔ | - a | ||
MOPAC 2016 | ✔ | ✔ | |||
MM codes | |||||
AMBER22 | ✔ | ✔ | |||
DL_CLASSIC | ✔ | ✔ | |||
a Conventional parallel execution using threads. b Parallel execution using LINDA software. |
ChangeLog
New release: version 4.0 (August 4th, 2022)
- PUPIL binaries and libraries build has moved to Cmake tool.
- Communication between distributed PUPIL binaries has moved from CORBA (deprecated within Java vendors releases starting on version 11.0) to RMI, which is native of Java.
- MNDO97 interface has been removed.
- Compatibility check with new versions of external software.
- Added new tests and a new test mechanism through Ctest.
New release: version 3.1 (November 1, 2016)
- Added multiple active zone QM/MM-MD implementation (maz-QM/MM-MD approach).
- Added Load-balancing at runtime among different QM regions in maz-QM/MM-MD approach.
- Feature Request Added: #16. PUPIL-Mopac interface.
- Feature Request Added: #15. PUPIL-Orca interface.
- Feature Request Added: #14. maz-QM/MM-MD.
New release: version 3.0 (December 8, 2014)
- DL_CLASS program incorporate the electrostatic embedding scheme through the PUPIL interface and the new patch version for the source code.
- PUPIL package has been updated to be compatible with Java 1.7 and 1.8.
- PUPIL incorporates an updated and quicker interface with NWChem 6.3 and 6.5 without the use of an external program to calculate forces over point charges.
- Some bottle-neck on the neighbourhood rules has been fixed through the parallelization on the PUPIL core using Java Threads.
- An initial alpha version using Long-range electrostatics on the QM region has been implemented.
- More accurate numerical checks are incorporated when the output files of tests cases are compared.
- Bug Fixed: 16#. Java error when the "new" item is pressed on Jmol application.
- Bug Fixed: 17#. PupilServer stops when QM zone is made with one atom alone and using the Gaussian program.
- Bug Fixed: 18#. PUPIL does not run properly with Java 1.7.
- Bug Fixed: 19#. NWChem 6.3 doesn't work with PUPIL2.0 properly.
New release: version 2.0 (January 12, 2013)
- New user-friendly interface of partitioning rules dialog.
- New Fixed link-pair rule has been added to the partitioning rules.
- "Load/Save" feature in partitioning rules.
- Partitioning rules are reevaluated at each simulation step only when distance-based partitioning rules are required.
- Feature Request Fixed: 3083253. Link atoms.
- Feature Request Fixed: 3026603. For discussion: Location of partitioning rules and charge.
- Feature Request Fixed: 3026602. Default location shown to the user in Open dialogs.
- Feature Request Fixed: 3026601. "Import/Export" feature in partitioning rules.
- Feature Request Fixed: 3026600. "Save" feature in partitioning rules.
- Feature Request Fixed: 3026595. Point of contact.
- Feature Request Fixed: 3026543. Input file names other than data.xml.
New release: version 1.4 (August 4, 2011)
- Added support for Mac OS (Darwin).
- New Pupil installation using Autoconf and Automake.
- Created the mailing list "pupil-users".
- Bug Fixed: 3083240. LocalExecutor not reporting stack traces on Exception.
- Bug Fixed: 3083237. Orphaned semaphore sets left by stubQM or stubDI.
- Bug Fixed: 3037853. Bad assignment of inptraj file in Amber interface.
- Bug Fixed: 3026598. Case sensitive element matching.
- Bug Fixed: 3022646. Semiempirical methods does not run.
- Bug Fixed: 3015029. New inpcrd file reading problem.
- Bug Fixed: 3014870. "Error reading rules" when visiting Gaussian setup twice.
- Bug Fixed: 3000025. Inpcrd file reading problem.
- Bug Fixed: 2987860. Large systems cause a crash in sander.
- Bug Fixed: 2979608. Problem reading terminal glycine residue.
- Bug Fixed: 2979605. Menus invisible on Mac.
- Bug Fixed: 2970814. Error adding object to memory structure.
New release: version 1.3 (December 12, 2009)
- Added deMon2k interface for PUPIL.
- Added NWChem interface for PUPIL.
- Added a parallel MPI shell template to run those programs in parallel execution ($PUPIL_PATH/test/scripts).
- Added PCFORCE program to calculate Forces over Point charges due to electron density from QZ (using Cube file) working for NWChem and deMon2k only.
- Added some additional tests for NWChem and deMon2k.
- New implementation of "quantum zone-point charge" force correction for the PUPIL-Gaussian03 interface. Electrostatic field at the point charges obtainedfrom Gaussian03.
- Added JVM memory management from PUPIL client interface.
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