Package etomica.atom

Provides classes that define and organize atoms and the information related to them.

See:
          Description

Interface Summary
AtomFilter Interface for a class that screens atoms according to some criterion.
AtomFilterCollective Filter that needs to be informed whenever something has changed and the filtered status of atoms should be redetermined.
AtomLeafAgentManager.AgentSource Interface for an object that wants an agent associated with each Atom in a Box.
AtomSource Interface for objects when return atoms (meeting some specification) from a box.
AtomToAtomLeafList Interface for class that determines an AtomArrayList given an atom.
AtomToIndex Interface for class that associates an integer with an atom.
AtomTypeAgentManager.AgentSource Interface for an object that wants an agent associated with each AtomType in a Simulation.
DipoleSource Interface for something that can calculate the dipole of a molecule.
IAtomOriented Interface for a IAtom that includes an IVector that defines the atom's orientation.
IAtomOrientedKinetic Interface for an Atom that has a position, orientation, velocity and angular velocity.
IAtomPositionDefinition Returns a vector given an atom, thereby defining the position of the atom or atom group.
IAtomTypeOriented  
IMoleculeKinetic Interface for an molecule that holds vectors for velocity.
IMoleculeOriented Interface for a IAtom that includes an IVector that defines the atom's position.
IMoleculeOrientedKinetic Interface for an Atom that has a position, orientation, velocity and angular velocity.
IMoleculePositioned  
MoleculeAgentManager.MoleculeAgentSource Interface for an object that wants an agent associated with each IMolecule an IBox.
MoleculeSource Interface for objects when return atoms (meeting some specification) from a box.
MoleculeToIndex Interface for class that associates an integer with an atom.
MoleculeToMoleculeList Interface for class that determines an AtomArrayList given an atom.
OrientationCalc Interface for a class that can calculate the orientation of a molecule or to set the orientation of a molecule.
OrientationCalcQuaternion OrientationCalc interface that handles quaternions (as a a double array) instead of an Orientation object.
SpeciesAgentManager.AgentSource Interface for an object that wants an agent associated with each AtomType in a Simulation.
 

Class Summary
Atom Atom that represents a physical atom with a position.
AtomArrayList  
AtomFilterInShape Filter that accepts atom if it is inside a specified Shape instance.
AtomFilterStatic  
AtomGroupVelocityAverage Calculates the mass average velocity over a set of atoms.
AtomLeafAgentManager AtomAgentManager acts on behalf of client classes (an AgentSource) to manage agents for every leaf Atom in a box.
AtomLeafAgentManager.AgentIterator Iterator that loops over the agents, skipping null elements
AtomLeafDynamic  
AtomListWrapper AtomSet formed by wrapping an AtomArrayList.
AtomOriented  
AtomOrientedDynamic  
AtomPair Data structure that contains two mutable atom instances.
AtomPositionCOM Calculates the center of mass (COM) over a set of atoms.
AtomPositionFirstAtom Returns the position of the first child leaf atom.
AtomPositionGeometricCenter Calculates the geometric center over a set of atoms.
AtomPositionGeometricCenterPBC Calculates the geometric center over a set of atoms.
AtomsetArray AtomSet formed by wrapping an Atom array.
AtomSetSinglet Data structure that contains a single mutable atom instance.
AtomSourceRandomLeaf AtomSource that returns a completely random leaf atom.
AtomToAtomSetFixed  
AtomToIndexChild Defines the index as the Atom's node's index.
AtomToParentChildList  
AtomTypeAgentManager AtomTypeAgentManager acts on behalf of client classes (an AgentSource) to manage agents in every AtomType in a box.
AtomTypeAgentManager.AgentIterator Iterator that loops over the agents, skipping null elements
AtomTypeLeaf Type for an atom that is a leaf in the species hierarchy.
AtomTypeOrientedSphere Atom type for a sphere that has some feature depending upon an orientation coordinate.
AtomTypeSphere Atom type for a simple monatomic atom that has a length scale associated with its size.
AtomTypeWell  
Molecule  
MoleculeAgentManager MoleculeAgentManager acts on behalf of client classes (an AgentSource) to manage agents in every IMolecule in a box.
MoleculeAgentManager.AgentIterator Iterator that loops over the agents, skipping null elements
MoleculeArrayList  
MoleculeListWrapper AtomSet formed by wrapping an AtomArrayList.
MoleculeOriented Molecule class appropriate for a rigid molecule.
MoleculeOrientedDynamic Molecule class appropriate for a rigid molecule in a dynamic context.
MoleculePair Data structure that contains two mutable atom instances.
MoleculesetArray AtomSet formed by wrapping an Atom array.
MoleculeSetSinglet Data structure that contains a single mutable atom instance.
MoleculeSourceRandomMolecule AtomSource that returns a completely random molecule.
MoleculeToMoleculeListSpecies  
OrientationCalcAtom OrientationCalc implementation that handles a monotomic oriented molecule.
SpeciesAgentManager AtomTypeAgentManager acts on behalf of client classes (an AgentSource) to manage agents in every AtomType in a box.
SpeciesAgentManager.AgentIterator Iterator that loops over the agents, skipping null elements
 

Package etomica.atom Description

Provides classes that define and organize atoms and the information related to them. The physical atoms that are manipulated in a simulation are represented by instances of the class Atom. Atom plays a larger role than this, however. Instances of Atom are arranged into a tree structure, through which they organize atoms into molecules, species, and boxs.

This "Atom tree" may be understood as follows:

The tree structure is implemented by the etomica.atom.AtomTreeNode AtomTreeNode class, which is held as a field by each Atom. AtomTreeNode is subclassed into AtomTreeNodeLeaf and AtomTreeNodeGroup, respectively, for Atoms that are leaf atoms in the species hierarchy, and atom groups, which include everything else.

Information about an Atom's position in the atom hierarchy is coded in an integer index, which can be interpreted using the methods of AtomIndexManger. The appropriate instance of AtomIndexManager for this purpose is held by the Atom's AtomType instance (discussed below).

The state of an Atom -- usually its position and perhaps velocity (but more general definitions are possible) -- is held by a Coordinate field (defined in etomica.space) which is made by the governing Space and which is provided to the Atom at construction. The conduct of the simulation primarily entails the manipulation of the fields of the Atom Coordinates.

The AtomType class is used to hold information that is common to many Atom instances. Each Atom has a final AtomType field that is specifed at construction. Atoms that that are group atoms (having AtomTreeNodeGroup as their node field) have types that are (or extend) AtomTypeGroup. Leaf atoms have types that extend AtomTypeLeaf. Instances of AtomType are arranged in a hierarchy that parallels that Atom hierarchy. Important features are as follows:

AtomTypes are very important in defining the interactions between Atoms, as developed in the etomica.potential package.

Each Atom instance at or below the molecule layer is constructed by an AtomFactory. Complicated molecules are constructed by piecing together groups of atoms constructed by subfactories. Thus the AtomFactories can be viewed in a hierarchy that mimicks the AtomType hierarchy; accordingly there is a one-to-one correspondence between the AtomTypes and the AtomFactories. The key AtomFactories are:

This package also defines data structures used to collect Atom instances. These include: AtomSet, and AtomPair in particular, are the expected arguments of Potential classes when calculating interatomic interactions. Iteration over Atoms, AtomPairs and AtomSets is provided by the classes of etomica.atom.iterator.

Atom groups hold their child Atoms in an AtomList. The AtomLinkers used to form this list are referable directly as fields of their corresponding Atoms; access to this linker is needed for iterations that begin with a specific Atom.

The Parameter classes are not carefully developed are subject to substantial change or elimination in the near future.