STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::topology::BasicValenceTable Class Reference

Unguarded struct to assemble the basic bond, angle, and dihedral indexing from an Amber or other topology file. All Class I force fields will have, or could have, terms like these. All descriptions follow from the eponymous member variables in an AtomGraph. More...

#include <atomgraph_refinement.h>

Public Member Functions

void checkBondAngleRelevance (ApplyConstraints use_shake, ApplyConstraints use_settle, const std::vector< int > &atomic_numbers)
 Detail the relevance of each bond or angle in the system. Bonds involving virtual sites are irrelevant to typical molecular mechanics calculations, as are angles (the virtual sites are set at particular geometries based on their frame atoms), although dihedrals involving virtual sites may have unique potentials that depend on more than just the frame atoms. When geometric constraints are in effect, bonds involving hydrogen atoms are irrelevant to typical molecular mechanics calculations. Angles wherein all three atoms are bonded in a rigid triangle (not, for example, an -NH3 group where the hydrogens can move around and the H-N-H angles can change, but rigid waters where the H-O-H angle is fixed due to an H-H "bond") are also irrelevant.
 
void makeAtomAssignments ()
 Populate the atom assignments for this object. This can only be called once the Atom index arrays have been assigned.
 
 BasicValenceTable ()
 The constructor simply allocates memory, if dimensions are available.
 
 BasicValenceTable (int natom_in, int nbond_in, int nangl_in, int ndihe_in, const std::vector< int > &bond_i_atoms_in={}, const std::vector< int > &bond_j_atoms_in={}, const std::vector< int > &bond_param_idx_in={}, const std::vector< int > &angl_i_atoms_in={}, const std::vector< int > &angl_j_atoms_in={}, const std::vector< int > &angl_k_atoms_in={}, const std::vector< int > &angl_param_idx_in={}, const std::vector< int > &dihe_i_atoms_in={}, const std::vector< int > &dihe_j_atoms_in={}, const std::vector< int > &dihe_k_atoms_in={}, const std::vector< int > &dihe_l_atoms_in={}, const std::vector< int > &dihe_param_idx_in={}, const std::vector< char4 > &bond_mods_in={}, const std::vector< char4 > &angl_mods_in={}, const std::vector< char4 > &dihe_mods_in={})
 

Public Attributes

int total_bonds
 Total number of harmonic bond terms in the topology.
 
int total_angls
 Total number of harmonic angle terms in the topology.
 
int total_dihes
 
std::vector< int > bond_i_atoms
 First atom of each bond term.
 
std::vector< int > bond_j_atoms
 Second atom of each bond term.
 
std::vector< int > bond_param_idx
 Parameter index for each bond term.
 
std::vector< int > angl_i_atoms
 First atom of each harmonic angle term.
 
std::vector< int > angl_j_atoms
 Second atom of each harmonic angle term.
 
std::vector< int > angl_k_atoms
 Third atom of each harmonic angle term.
 
std::vector< int > angl_param_idx
 Parameter index for each harmonic angle term.
 
std::vector< int > dihe_i_atoms
 First atom in each cosine-based torsion term.
 
std::vector< int > dihe_j_atoms
 Second atom in each cosine-based torsion term.
 
std::vector< int > dihe_k_atoms
 Third atom in each cosine-based torsion term.
 
std::vector< int > dihe_l_atoms
 Fourth atom in each cosine-based torsion term.
 
std::vector< int > dihe_param_idx
 Parameter index for each coside-based torsion term.
 
std::vector< char4bond_mods
 
std::vector< char4angl_mods
 Notes on each harmonic angle term.
 
std::vector< char4dihe_mods
 
std::vector< int > bond_assigned_atoms
 
std::vector< int > bond_assigned_index
 Parameter indices relevant to bond assignments.
 
std::vector< int > bond_assigned_terms
 Bond term indices relevant to bond assignments.
 
std::vector< int > bond_assigned_bounds
 
std::vector< int > angl_assigned_atoms
 
std::vector< int > angl_assigned_index
 Parameter indices relevant to angle assignments.
 
std::vector< int > angl_assigned_terms
 Angle term indices relevant to angle assignments.
 
std::vector< int > angl_assigned_bounds
 
std::vector< int > dihe_assigned_atoms
 
std::vector< int > dihe_assigned_index
 Parameter indices relevant to torsion assignments.
 
std::vector< int > dihe_assigned_terms
 Torsion term indices relevant to torsion assignments.
 
std::vector< int > dihe_assigned_bounds
 
std::vector< char4bond_assigned_mods
 
std::vector< char4angl_assigned_mods
 Notes on angles assigned to each atom.
 
std::vector< char4dihe_assigned_mods
 Notes on torsions assigned to each atom.
 
std::vector< uint > bond_relevance
 
std::vector< uint > angl_relevance
 

Detailed Description

Unguarded struct to assemble the basic bond, angle, and dihedral indexing from an Amber or other topology file. All Class I force fields will have, or could have, terms like these. All descriptions follow from the eponymous member variables in an AtomGraph.

Constructor & Destructor Documentation

◆ BasicValenceTable()

stormm::topology::BasicValenceTable::BasicValenceTable ( )

The constructor simply allocates memory, if dimensions are available.

Overloaded:

  • Create an empty object
  • Create an object with pre-allocated memory for each type of basic valence term
Parameters
natom_inThe number of atoms in the system (for bounds arrays)
nbond_inThe number of bonds to prepare for (atom indices will be filled if more information is provided)
nangl_inThe number of angles to prepare for (atom indices will be filled if more information is provided)
ndihe_inThe number of dihedrals to prepare for (atom indices will be filled if more information is provided)

Member Function Documentation

◆ checkBondAngleRelevance()

void stormm::topology::BasicValenceTable::checkBondAngleRelevance ( ApplyConstraints use_shake,
ApplyConstraints use_settle,
const std::vector< int > & atomic_numbers )

Detail the relevance of each bond or angle in the system. Bonds involving virtual sites are irrelevant to typical molecular mechanics calculations, as are angles (the virtual sites are set at particular geometries based on their frame atoms), although dihedrals involving virtual sites may have unique potentials that depend on more than just the frame atoms. When geometric constraints are in effect, bonds involving hydrogen atoms are irrelevant to typical molecular mechanics calculations. Angles wherein all three atoms are bonded in a rigid triangle (not, for example, an -NH3 group where the hydrogens can move around and the H-N-H angles can change, but rigid waters where the H-O-H angle is fixed due to an H-H "bond") are also irrelevant.

Parameters
use_shakeIndicate whether rigid geometry constraints will be put into effect for bonds to individual hydrogen atoms, which can alter how many bond and angle terms the topology evaluates
use_settleIndicate whether the rigid geometry of trigonal water molecules (or other three-atom groups which make an isosceles triangle) will be enforced by the SETTLE algorithm. This is a stronger constraint than merely constraining individual bonds between hydrogens and the one heavy atom.

Member Data Documentation

◆ angl_assigned_atoms

std::vector<int> stormm::topology::BasicValenceTable::angl_assigned_atoms

See the description above for the corresponding member variable about bonds. This array has two entries for every assignment, so multiply the indexing and realize that the relevant atoms for bonds assigned to atom i are contained in entries 2 * angl_assigned_bounds[i] to 2 * angl_assigned_bounds[i + 1].

◆ angl_assigned_bounds

std::vector<int> stormm::topology::BasicValenceTable::angl_assigned_bounds

Bounds array stating the limits of angle terms assigned to each atom

◆ angl_relevance

std::vector<uint> stormm::topology::BasicValenceTable::angl_relevance

Notes on whether to evaluate each angle term. Each angle gets a bit, similar to bond_relevance, above.

◆ bond_assigned_atoms

std::vector<int> stormm::topology::BasicValenceTable::bond_assigned_atoms

Each bond term is assigned to an atom, and details of the bond assignments for the ith atom are held between indices bond_assigned_bounds[i] and bond_assigned_bounds[i + 1] of the atoms, index, and terms arrays. The atoms array holds the topological indices of atoms in the bond, other than the obivous atom i to which the bond is assigned.

◆ bond_assigned_bounds

std::vector<int> stormm::topology::BasicValenceTable::bond_assigned_bounds

Bounds array stating the limits of bond terms assigned to each atom (see the longer explanation above)

◆ bond_assigned_mods

std::vector<char4> stormm::topology::BasicValenceTable::bond_assigned_mods

Notes on bonds assigned to each atom (follows the ordering set forth in bond_assigned_bounds)

◆ bond_mods

std::vector<char4> stormm::topology::BasicValenceTable::bond_mods

Notes on each harmonic bond term, i.e. "contains hydrogen"

◆ bond_relevance

std::vector<uint> stormm::topology::BasicValenceTable::bond_relevance

Notes on whether to evaluate each bond term. Each bond gets a bit in one of the unsigned integer elements, 1 for "yes, evaluate the bond" and 0 for "no, do not evaluate the bond by the standard MM evaluation functions."

◆ dihe_assigned_atoms

std::vector<int> stormm::topology::BasicValenceTable::dihe_assigned_atoms

See the descriptions about for other atoms relevant to bond and angle terms. There are three atoms per assignment in this array.

◆ dihe_assigned_bounds

std::vector<int> stormm::topology::BasicValenceTable::dihe_assigned_bounds

Bounds array for the limits of torsion assignments to each atom

◆ dihe_mods

std::vector<char4> stormm::topology::BasicValenceTable::dihe_mods

Notes on each cosine-based torsion term, i.e. "is improper, has no associated 1-4 interaction"

◆ total_dihes

int stormm::topology::BasicValenceTable::total_dihes

Total number of cosine-based proper and improper torsions in the topology


The documentation for this class was generated from the following files: