SBMDynamicalModelParticleSystem Class Reference

This class describes a dynamical particle system. More...

Constructors and destructors

 SBMDynamicalModelParticleSystem ()
 Builds an empty particle system. More...
 
 SBMDynamicalModelParticleSystem (const SBNodeIndexer &nodeIndexer)
 Builds a particle system associated to a set of nodes.
 
virtual ~SBMDynamicalModelParticleSystem ()
 Deletes the particle system. More...
 

Identity

virtual SBDDataGraphNode::Type getType () const
 Returns the type of the data graph node (returns SBDDataGraphNode::DynamicalModelParticleSystem)
 
virtual SBDDataGraphNode::Type getDynamicalModelType () const
 Returns the dynamical model type (returns SBDDataGraphNode::DynamicalModelParticleSystem)
 

Simulation

virtual void updateStructuralNodes ()
 Updates the structural nodes based on the state of the particle system.
 
virtual bool enforcePeriodicBoundaryConditions ()
 Enforces the periodic boundary conditions.
 
int roundForPBC (const SBQuantity::position &d)
 
void correctDistanceWithPBC (SBLength3 &distance)
 

Particles

SBPointerIndexer< SBStructuralParticle > const * getStructuralParticleIndexer () const
 Returns the particle index of the particle system.
 
unsigned int addParticle (SBStructuralParticle *particle)
 Adds a particle to the particle system.
 
void addParticles (const SBNodeIndexer &nodeIndexer)
 Adds particles from a node indexer.
 
void removeParticle (SBStructuralParticle *particle)
 Removes a particle from the particle system.
 
void removeParticle (unsigned int particleIndex)
 Removes a particle from the particle system.
 
void removeParticles (const SBNodeIndexer &nodeIndexer)
 Removes particles from a node indexer.
 
bool getActivityFlag (SBStructuralParticle *particle) const
 Returns the activity flag of a particle.
 
bool getActivityFlag (unsigned int particleIndex) const
 Returns the activity flag of a particle.
 
void setActivityFlag (SBStructuralParticle *particle, bool flag)
 Sets the activity flag of a particle.
 
void setActivityFlag (unsigned int particleIndex, bool flag)
 Sets the activity flag of a particle.
 
SBQuantity::mass getMass (SBStructuralParticle *particle) const
 Returns the mass of a particle.
 
SBQuantity::mass getMass (unsigned int particleIndex) const
 Returns the mass of a particle.
 
void setMass (SBStructuralParticle *particle, SBQuantity::mass mass)
 Sets the mass of a particle.
 
void setMass (unsigned int particleIndex, SBQuantity::mass mass)
 Sets the mass of a particle.
 
SBQuantity::inverseMass getInverseMass (SBStructuralParticle *particle) const
 Returns the inverse mass of a particle.
 
SBQuantity::inverseMass getInverseMass (unsigned int particleIndex) const
 Returns the inverse mass of a particle.
 

Position buffer

virtual SBPosition3 const & getPosition (unsigned int i) const
 Returns the position of a particle.
 
virtual unsigned int getNumberOfChangedPositions () const
 Returns the number of changed positions.
 
virtual unsigned int getChangedPositionIndex (unsigned int i) const
 Returns the index of an changed position.
 
virtual bool getPositionChanged (unsigned int i) const
 Returns whether position i has been changed since the last flush.
 
virtual void setPosition (unsigned int i, const SBPosition3 &newPosition)
 Updates the position of a particle.
 
virtual void flushPositionBuffer ()
 Flushes the position buffer.
 

Momentum buffer

virtual SBMomentum3 const & getMomentum (unsigned int i) const
 Returns the momentum of a particle.
 
virtual unsigned int getNumberOfChangedMomentums () const
 Returns the number of changed momentums. More...
 
virtual unsigned int getChangedMomentumIndex (unsigned int i) const
 Returns the index of an changed momentum. More...
 
virtual void setMomentum (unsigned int i, const SBMomentum3 &newMomentum)
 Updates the momentum of a particle.
 
virtual void flushMomentumBuffer ()
 Flushes the momentum buffer.
 

Debugging

virtual void print (unsigned int offset=0) const
 Prints debugging information.
 

Additional Inherited Members

- Public Types inherited from SBDDataGraphNode
enum  Type {
  Undefined,
  StructuralModel,
  StructuralModelNode,
  StructuralModelConformation,
  Conformation,
  StructuralModelPath,
  Path,
  StructuralModelNodeGroup,
  StructuralGroup,
  StructuralModelNodeRoot,
  Root,
  StructuralModelNodeParticle,
  StructuralParticle,
  StructuralModelNodeAtom,
  Atom,
  StructuralModelNodePseudoAtom,
  PseudoAtom,
  StructuralModelNodeBond,
  Bond,
  StructuralModelNodeResidue,
  Residue,
  StructuralModelNodeSegment,
  Segment,
  StructuralModelNodeProtein,
  Protein,
  StructuralModelNodeChain,
  Chain,
  StructuralModelNodeMolecule,
  Molecule,
  StructuralModelNodeBackbone,
  Backbone,
  StructuralModelNodeSideChain,
  SideChain,
  VisualModel,
  DynamicalModel,
  DynamicalModelParticleSystem,
  ParticleSystem,
  DynamicalModelRigidBodySystem,
  RigidBodySystem,
  DynamicalModelArticulatedBodySystem,
  ArticulatedBodySystem,
  DynamicalModelNode,
  DynamicalNode,
  DynamicalModelNodeGroup,
  DynamicalGroup,
  DynamicalModelNodeRoot,
  DynamicalRoot,
  DynamicalModelNodeParticle,
  DynamicalParticle,
  DynamicalModelNodeRigidBody,
  RigidBody,
  DynamicalModelNodeArticulatedBody,
  ArticulatedBody,
  InteractionModel,
  InteractionModelParticleSystem,
  InteractionModelRigidBodySystem,
  InteractionModelArticulatedBodySystem,
  PropertyModel,
  PropertyModelFunction,
  Simulator,
  SimulatorParticleSystem,
  SimulatorRigidBodySystem,
  SimulatorArticulatedBodySystem,
  StateUpdater,
  StateUpdaterParticleSystem,
  StateUpdaterRigidBodySystem,
  StateUpdaterArticulatedBodySystem,
  DocumentManager,
  Document,
  Folder,
  Camera,
  Label,
  DataGraphNodeGroup,
  NodeGroup,
  Controller,
  ControllerNode
}
 The type of the data graph node. More...
 
- Public Member Functions inherited from SBMDynamicalModel
bool isSerializable () const
 Returns true when the class is serializable.
 
virtual void serialize (SBCSerializer *serializer, const SBNodeIndexer &nodeIndexer, const SBVersionNumber &sdkVersionNumber=SB_SDK_VERSION_NUMBER, const SBVersionNumber &classVersionNumber=SBVersionNumber(1, 0, 0)) const
 Serializes the node.
 
virtual void unserialize (SBCSerializer *serializer, const SBNodeIndexer &nodeIndexer, const SBVersionNumber &sdkVersionNumber=SB_SDK_VERSION_NUMBER, const SBVersionNumber &classVersionNumber=SBVersionNumber(1, 0, 0))
 Unserializes the node.
 
SBMDynamicalModelNodeRootgetDynamicalRoot () const
 Returns the root of the dynamical model.
 
virtual SBMDynamicalModelclone ()
 Returns a copy of the node and its descendants.
 
virtual SBDDataGraphNode::Type getModelType () const
 Returns the model type.
 
SBIAPosition3 const & getPeriodicBoundaryConditions () const
 Returns the periodic boundary conditions.
 
void setPeriodicBoundaryConditions (SBIAPosition3 const &box)
 Sets the periodic boundary conditions.
 
bool getPeriodicBoundaryConditionsFlag () const
 Returns the periodic boundary conditions flag.
 
void setPeriodicBoundaryConditionsFlag (bool flag)
 Sets the periodic boundary conditions flag.
 
void connectDynamicalSignalToSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBDynamicalEvent *), SBCReferenceTarget *nextReferenceTarget=0, void(SBCReferenceTarget::*nextFunctionPointer)(SBDynamicalEvent *)=0)
 Connects the dynamical signal to a slot.
 
bool dynamicalSignalIsConnectedToSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBDynamicalEvent *)) const
 Returns true if and only if the dynamical signal is connected to a given slot.
 
void disconnectDynamicalSignalFromSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBDynamicalEvent *))
 Disconnects the dynamical signal from a slot.
 
virtual void getNodes (SBNodeIndexer &nodeIndexer, const SBNodePredicate &selectionPredicate=SBDDataGraphNode::All(), const SBNodePredicate &visitPredicate=SBDDataGraphNode::All(), bool includeDependencies=false)
 Returns some nodes.
 
virtual void forEachNodeDepthFirst (void(*action)(SBDDataGraphNode *node))
 Performs an action on each node.
 
virtual void forEachNodeDepthFirst (SBCClass *object, void(SBCClass::*action)(SBDDataGraphNode *node))
 Performs an action on each node.
 
- Public Member Functions inherited from SBMModel
virtual ~SBMModel ()
 Delete the model.
 
bool isSerializable () const
 Returns true.
 
SBMModelgetNextModel () const
 Returns the next model in the parent.
 
SBMModelgetPreviousModel () const
 Returns the previous model in the parent.
 
std::string const & getName () const
 Returns the name of the model.
 
void setName (const std::string &name)
 Sets the name of the model.
 
- Public Member Functions inherited from SBDDataGraphNode
SBDDataGraphNodegetParent () const
 Returns the parent of the node. More...
 
SBDDataGraphNodegetThisNode () const
 Returns the pointer to this node. More...
 
SBDDataGraphNodegetNextNode () const
 Returns the pointer to the next node in the children of the node's parent. More...
 
SBDDataGraphNodegetPreviousNode () const
 Returns the pointer to the previous node in the children of the node's parent. More...
 
SBDDataGraphNodegetNextNode (SBDDataGraphNode::Type nodeType) const
 Returns the pointer to the next node with type nodeType in the children of the node's parent. More...
 
SBDDataGraphNodegetPreviousNode (SBDDataGraphNode::Type nodeType) const
 Returns the pointer to the previous node with type nodeType in the children of the node's parent. More...
 
SBDDocumentgetDocument () const
 Returns the document the node belongs to. More...
 
virtual bool canAddChild (SBDDataGraphNode *node, SBDDataGraphNode *nextNode=0) const
 Returns whether this node can add node as a child. More...
 
virtual bool canAddChildType (SBDDataGraphNode::Type nodeType) const
 Returns whether this node can add a node with type nodeType as a child. More...
 
virtual bool addChild (SBDDataGraphNode *node, SBDDataGraphNode *nextNode=0)
 Adds a child to the node. More...
 
virtual bool removeChild (SBDDataGraphNode *node)
 Removes a child from the node. More...
 
bool hasOneOf (const SBNodeIndexer &nodeIndexer) const
 Returns true if and only if this node is one of the nodes of the nodeIndexer, or is the ancestor of one of them. More...
 
bool isIn (SBDDataGraphNode *node) const
 Returns true if and only if this node is node, or descends from it. More...
 
bool isIn (const SBNodeIndexer &nodeIndexer) const
 Returns true if and only if this node is one of the nodes of the nodeIndexer, or descends from one of them. More...
 
bool isIn (SBPointerIndexer< SBDDataGraphNode > *nodePointerIndexer) const
 Returns true if and only if this node is one of the nodes of the nodePointerIndexer, or descends from one of them. More...
 
bool isOneOf (const SBNodeIndexer &nodeIndexer) const
 Returns true if and only if this node is one of the nodes of the nodeIndexer. More...
 
bool isOneOf (SBPointerIndexer< SBDDataGraphNode > *nodePointerIndexer) const
 Returns true if and only if this node is one of the nodes of the nodePointerIndexer. More...
 
SBDDataGraphNodegetRoot () const
 Returns the root of the hierarchy the node belongs to. More...
 
unsigned int getNodeIndex () const
 Returns the node index (unique in the whole data graph, but non-persistent) More...
 
bool isType (Type type) const
 Returns true when the type of the node corresponds to type.
 
bool isModel () const
 Returns true when the node is a model.
 
bool isStructuralModel () const
 Returns true when the node is a structural model.
 
bool isVisualModel () const
 Returns true when the node is a visual model.
 
bool isDynamicalModel () const
 Returns true when the node is a dynamical model.
 
bool isInteractionModel () const
 Returns true when the node is a interaction model.
 
bool isPropertyModel () const
 Returns true when the node is a property model.
 
bool isSimulator () const
 Returns true when the node is a simulator.
 
bool isStructuralParticle () const
 Returns true when the node is a structural particle (an atom or a pseudo-atom)
 
bool isCreated () const
 Returns true if and only if the node is created. More...
 
void create ()
 Creates the node. More...
 
bool isErased () const
 Returns true if and only if the node is erased. More...
 
void erase ()
 Erases the node. More...
 
unsigned int getFlags () const
 Returns the flags. More...
 
unsigned int getInheritedFlags () const
 Returns the inherited flags. More...
 
bool isSelected () const
 Returns whether the node is selected. More...
 
bool getSelected () const
 Returns whether the node is visible.
 
bool getSelectionFlag () const
 Returns the selection flag. More...
 
void setSelectionFlag (bool flag)
 Sets the selection flag. More...
 
bool isVisible () const
 Returns whether the node is visible. More...
 
bool getVisible () const
 Returns whether the node is visible.
 
bool getVisibilityFlag () const
 Returns the visibility flag. More...
 
void setVisibilityFlag (bool flag)
 Sets the visibility flag. More...
 
bool isHighlighted () const
 Returns whether the node is highlighted. More...
 
bool getHighlightingFlag () const
 Returns the highlighting flag. More...
 
void setHighlightingFlag (bool flag)
 Sets the highlighting flag. More...
 
void connectBaseSignalToSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBBaseEvent *), SBCReferenceTarget *nextReferenceTarget=0, void(SBCReferenceTarget::*nextFunctionPointer)(SBBaseEvent *)=0)
 Connects the base signal to a slot. More...
 
bool baseSignalIsConnectedToSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBBaseEvent *)) const
 Returns true when the base signal is connected to a slot.
 
void disconnectBaseSignalFromSlot (SBCReferenceTarget *referenceTarget, void(SBCReferenceTarget::*functionPointer)(SBBaseEvent *))
 Disconnects the base signal from a slot.
 
unsigned int countNodes (const SBNodePredicate &selectionPredicate=SBDDataGraphNode::All(), const SBNodePredicate &visitPredicate=SBDDataGraphNode::All(), bool includeDependencies=false)
 Collects nodes into nodeIndexer, based on a selectionPredicate and a visitPredicate, with our without dependencies. More...
 
bool addMaterial (SBDDataGraphNodeMaterial *material)
 Adds a material. More...
 
bool removeMaterial ()
 Removes the material. More...
 
SBDDataGraphNodeMaterialgetMaterial () const
 Returns the material. More...
 
SBDDataGraphNodegetMaterialOwner () const
 Returns the node whose material is inherited. More...
 
- Public Member Functions inherited from SBCReferenceTarget
 SBCReferenceTarget ()
 
virtual ~SBCReferenceTarget ()
 
unsigned int getMemoryFootprint () const
 
void printReferencesToOwners () const
 
- Static Public Member Functions inherited from SBDDataGraphNode
static SBDDataGraphNodegetNode (unsigned int nodeIndex)
 Returns the unique node corresponding to the node index nodeIndex. More...
 
static std::string getTypeString (Type type)
 Returns a string describing the type of the data graph node. More...
 
static void forEachNodeInSelection (SBNodeIndexer &nodeIndexer, void(*action)(SBDDataGraphNode *node))
 Performs an action for each node in a selection.
 
static void forEachNodeInSelection (SBNodeIndexer &nodeIndexer, SBCClass *object, void(SBCClass::*action)(SBDDataGraphNode *node))
 Performs an action for each node in a selection.
 
- Protected Member Functions inherited from SBMDynamicalModel
 SBMDynamicalModel ()
 Builds a dynamical model.
 
 SBMDynamicalModel (SBMDynamicalModelData *dataPointer)
 Builds a dynamical model.
 
virtual ~SBMDynamicalModel ()
 Deletes the dynamical model.
 
- Protected Member Functions inherited from SBMModel
 SBMModel ()
 Builds a model.
 
 SBMModel (SBMModelData *dataPointer)
 Builds a model.
 
- Protected Member Functions inherited from SBDDataGraphNode
 SBDDataGraphNode ()
 Builds a data graph node. More...
 
 SBDDataGraphNode (SBDDataGraphNodeData *dataPointer)
 Builds a data graph node.
 
virtual ~SBDDataGraphNode ()
 Destroys the node. More...
 

Detailed Description

The class SBMDynamicalModelParticleSystem describes a particle system in SAMSON, i.e. a dynamical system composed of particles. A particle system has two buffers - a position buffer and a momentum buffer - which may be used to write adaptive simulation algorithms.

Short name: SBParticleSystem

See also
SBCContainerBuffer

Constructor & Destructor Documentation

◆ SBMDynamicalModelParticleSystem()

SBMDynamicalModelParticleSystem::SBMDynamicalModelParticleSystem ( )

The default constructor builds an empty particle system

See also
addParticle

◆ ~SBMDynamicalModelParticleSystem()

SBMDynamicalModelParticleSystem::~SBMDynamicalModelParticleSystem ( )
virtual

Deletes the model.

Member Function Documentation

◆ getChangedMomentumIndex()

unsigned int SBMDynamicalModelParticleSystem::getChangedMomentumIndex ( unsigned int  i) const
virtual

This function returns the index of the i-th changed momentum. This may be used by adaptive simulation algorithms, ir order to know which momenta have been changed at a given time step.

Assume for example that particle 17, 32, and 529 have had their momentum changed since the last flush of the momentum buffer. Then the following code:

unsigned int nChangedMomenta=particleSystem->getNumberOfChangedMomentums();
for (unsigned int i=0;i<nChangedMomenta;i++) {
// changedMomentumIndex is the index of the i-th changed momentum
unsigned int changedMomentumIndex=particleSystem->getChangedMomentumIndex(i);
std::cout << changedMomentumIndex << std::endl;
}

outputs

17
32
529
Parameters
iThe index of the changed momentum.
See also
getMomentum, getChangedMomentumIndex, flushMomentumBuffer

◆ getNumberOfChangedMomentums()

unsigned int SBMDynamicalModelParticleSystem::getNumberOfChangedMomentums ( ) const
virtual

This function returns the number of changed momenta since the last flush of the momentum buffer.

See also
getMomentum, getChangedMomentumIndex, flushMomentumBuffer