Modeling and Simulation#
Modeling and simulation are the two main tasks performed by users of SAMSON, and two library groups support these tasks: the Modeling Library Group and the Simulation Library Group.
SAMSON represents nanosystems using five categories of models:
- Structural models describe geometry and topology
- Visual models provide graphical representations
- Dynamical models describe dynamical degrees of freedom
- Interaction models describe energies and forces
- Property models describe properties that do not enter in the first four model categories
Simulators (potentially interactive ones) are used to build physically-based models, and predict properties.
Models and simulators are nodes in SAMSON's data graph. All models derive from the SBMModel
class, while all model nodes (children of models) derive from the SBMModelNode
class. Simulators derive from the SBSSimulator
class. Both SBMModel
and SBSSimulator
derive from the SBDDataGraphNode
class.
Models#
Structural models#
Structural models describe the geometry and topology of nanosystems in SAMSON. Typically, a structural model contains atoms (SBAtom class) and bonds (SBBond class), and might contain nodes representing higher organization levels (e.g. molecules, residues, etc.).
Structural models may send structural events.
Visual models#
Visual models are used to provide graphical representations. A visual model may be e.g. a secondary structure representation of a protein, an isosurface of an electron density, a volumetric representation of an electrostatic field, etc.
SAMSON Extensions provide visual models that derive from the SBMVisualModel
class and implement display functions called by SAMSON's internal renderer. Visual models may send visual events.
Dynamical models#
Dynamical models are used to indicate where degrees of freedom are in structural nodes. For example, a particle system applied to a group of structural particles (atoms or pseudo-atoms) assigns three translational degrees of freedom to each particle. Dynamical models describe the dynamical state and store positions, momenta and masses.
Dynamical models support passive signaling mechanisms through buffers (i.e. they provide a list of updated positions and updated momenta at each time step), and may send dynamical events.
Interaction models#
Interaction models are used to represent energies and forces in a dynamical model. For example, an interaction model may be e.g. a simple Lennard-Jones model to describe unbounded interactions between a group of particles, a spring model, an elastic network model, a universal force field, etc.
An interaction model is in charge of providing forces corresponding to the degrees of freedom in a dynamical model. For example, an interaction model applied to a particle system provides both the total energy of the particle system and the force applied to each particle in the particle system.
SAMSON Extensions provide interaction models that (indirectly) derive from the SBMInteractionModel
class and implement interaction update functions (SBMInteractionModel::updateInteractions
).
Interaction models support passive signaling mechanisms through buffers (i.e. they provide a list of updated forces at each time step), and may send interaction events.
Property models#
Property models are used to represent properties of nanosystems that are not already described by the first four categories of models. For example, property models may be e.g. a simple number describing the gyration radius of a protein, a scalar field (such as an electron density), a vector field (to represent e.g. an electrostatic field), a function, etc.
SAMSON Extensions provide property models that (indirectly) derive from the SBMPropertyModel
class and may implement functions that depend on specific types of property models. For example, a function (SBMPropertyModelFunction
) will implement a getValue function (SBMPropertyModelFunction::getValue
).
Property models may send property events.
State updaters#
State updaters implement methods used to advance states during simulations. State updaters may be e.g. minimization algorithms, Monte Carlo methods, molecular dynamics algorithms, etc.
SAMSON Extensions provide state updaters that (indirectly) derive from the SBSStateUpdater
class and implement state update functions (SBSStateUpdater::updateState
).
Simulators#
Simulators (indirectly) derive from the SBSSimulator
class. A simulator is applied to a dynamical model, an interaction model, and a state updater. When users start interactive simulation, SAMSON goes through all simulators added to the data graph and calls their state updaters to update the state of the attached dynamical models.
Simulators may send simulator events, while state updaters may send state updater events.
Tip
See User guide: Modeling and Simulation for more information on how simulators are used in SAMSON.