API
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. |
| IAtomPositioned | IAtomPositioned | An IAtom that has a real (i.e., off-lattice) position as a Vector. |
| IAtomType | IAtomType | Contains information common to all IAtoms of a particular type. |
| IAtomTypeSphere | IAtomTypeSphere | Contains information common to all IAtoms of a particular type that have a diameter. |
| 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 bewteen IAtoms. |
| IPotentialAtomic | IPotentialAtomic | Describes the interaction bewteen IAtoms. |
| IPotentialMaster | IPotentialMaster | Keeps track of the IPotentials and which atoms those IPotentials apply to. discussion |
| IPotentialMolecular | IPotentialMolecular | Describes the interaction bewteen IMolecules. |
| ISimulation | ISimulation | The top-level object that holds all other elements of the simulation. |
| ISpecies | ISpecies | Defines the molecular species contained in a ISimulation. discussion |
| ISpeciesManager | ISpeciesManager | Performs species-related tasks on behalf of the ISimulation (addition or removal of species). |
| 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 |
