STORMM Source Documentation
|
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< char4 > | bond_mods |
std::vector< char4 > | angl_mods |
Notes on each harmonic angle term. | |
std::vector< char4 > | dihe_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< char4 > | bond_assigned_mods |
std::vector< char4 > | angl_assigned_mods |
Notes on angles assigned to each atom. | |
std::vector< char4 > | dihe_assigned_mods |
Notes on torsions assigned to each atom. | |
std::vector< uint > | bond_relevance |
std::vector< uint > | angl_relevance |
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.
stormm::topology::BasicValenceTable::BasicValenceTable | ( | ) |
The constructor simply allocates memory, if dimensions are available.
Overloaded:
natom_in | The number of atoms in the system (for bounds arrays) |
nbond_in | The number of bonds to prepare for (atom indices will be filled if more information is provided) |
nangl_in | The number of angles to prepare for (atom indices will be filled if more information is provided) |
ndihe_in | The number of dihedrals to prepare for (atom indices will be filled if more information is provided) |
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.
use_shake | Indicate 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_settle | Indicate 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. |
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].
std::vector<int> stormm::topology::BasicValenceTable::angl_assigned_bounds |
Bounds array stating the limits of angle terms assigned to each atom
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.
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.
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)
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)
std::vector<char4> stormm::topology::BasicValenceTable::bond_mods |
Notes on each harmonic bond term, i.e. "contains hydrogen"
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."
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.
std::vector<int> stormm::topology::BasicValenceTable::dihe_assigned_bounds |
Bounds array for the limits of torsion assignments to each atom
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"
int stormm::topology::BasicValenceTable::total_dihes |
Total number of cosine-based proper and improper torsions in the topology