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.

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 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 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 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 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.

**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.

See User guide: Applying simulators for more information on how simulators are used in SAMSON.