From Wiketomica
API Home Participants API Discussion Demos Downloads Documentation Contact Us Acknowledgements

We are using the current Etomica class structure as a starting point for a molecular simulation API, to be implemented by other codebases. Codebases implementing The API could communicate through appropriate calls and a simulation could be constructed from pieces of different codebases. Additionally, the current Etomica GUI elements or the Etomica plugin for Eclipse could be used to wrap a simulation from a different codebase.

We also need a name for the API (currently just called "The API").

Etomica and API Interfaces

Progress in finalizing Etomica interfaces in order to use them as API prototypes is tracked in bugzilla.

The proposed interfaces are listing using IDL syntax. Please refer to the XPIDL Author's Guide when looking at the proposed interfaces.

We have divided the interfaces into three categories. The first category includes interfaces for elements of the simulation. The second category includes interfaces for elements that support the simulation, but do not correspond to any traditional simulation object. The final category includes all interfaces related to events (events, event managers and event listeners).

Interfaces for simulation elements

Etomica element API Interface Notes
IAtom IAtom Nominally corresponds to a physical atom. Holds indexing and type data. discussion
IAtomKinetic IAtomKinetic The basic simulation object used to describe atoms having a velocity. discussion
IAtomType IAtomType Contains information common to all IAtoms of a particular type. brief discussion
IBoundary IBoundary Holds information about the box size, shape and periodicity. discussion
IBox IBox The IBox contains molecules that interact with each other. discussion
IElement IElement
IIntegrator IIntegrator Explores phase space using some algorithm. discussion
IMolecule IMolecule Physically represents a group of atoms (as in a molecule). discussion
IPotential IPotential Describes the interaction between IAtoms.
IPotentialAtomic IPotentialAtomic Describes the interaction between IAtoms.
IPotentialMaster IPotentialMaster Keeps track of the IPotentials and which atoms those IPotentials apply to. discussion
IPotentialMolecular IPotentialMolecular Describes the interaction between IMolecules.
ISimulation ISimulation The top-level object that holds all other elements of the simulation. discussion
ISpecies ISpecies Defines the molecular species contained in a ISimulation. discussion
MCMove IMCMove Proposes moves which are accepted or rejected by an MC IIntegrator.

Interfaces for support elements

Etomica element API Interface Notes
IAtomList IAtomList An interface is needed to pass around lists of IAtoms (atoms in a molecule). discussion
IData IDataInfo IDataSource IData IDataInfo IDataSource Numerical IData is pulled from an IDataSource. discussion
Dimension IDimension IDimension defines the dimension (length, mass, time, etc).
IFunction IFunction
IMoleculeList IMoleculeList An interface is needed to pass around lists of IMolecules. discussion
IRandom IRandom IRandom is needed to ensure all codebases use a common random number generator (RNG), and 1-to-1 correspondence between simulations and RNGs.
IVector IVector IVector would be used for spatial positions and any other quantity one might consider as a vector (x,y,z triplet). discussion
IVectorMutable IVectorMutable

Interfaces for elements related to events

Etomica element API Interface Notes
IBoundaryEvent IBoundaryEvent
IBoundaryEventManager IBoundaryEventManager
IBoundaryListener IBoundaryListener
IBoxAtomEvent IBoxAtomEvent
IBoxAtomLeafIndexChangedEvent IBoxAtomLeafIndexChangedEvent
IBoxEvent IBoxEvent
IBoxEventManager IBoxEventManager
IBoxIndexEvent IBoxIndexEvent
IBoxListener IBoxListener
IBoxMoleculeCountEvent IBoxMoleculeCountEvent
IBoxMoleculeEvent IBoxMoleculeEvent
IBoxMoleculeIndexEvent IBoxMoleculeIndexEvent
IIntegratorEventManager IIntegratorEventManager
IIntegratorListener IIntegratorListener discussion more
IIntegratorListenerMD IIntegratorListenerMD
ISimulationAtomTypeEvent ISimulationAtomTypeEvent
ISimulationAtomTypeIndexEvent ISimulationAtomTypeIndexEvent
ISimulationBoxEvent ISimulationBoxEvent
ISimulationEvent ISimulationEvent
ISimulationEventManager ISimulationEventManager
ISimulationIndexEvent ISimulationIndexEvent
ISimulationListener ISimulationListener
ISimulationSpeciesEvent ISimulationSpeciesEvent
ISimulationSpeciesIndexEvent ISimulationSpeciesIndexEvent