2#ifndef STORMM_TOPOLOGY_H
3#define STORMM_TOPOLOGY_H
10#include "Constants/behavior.h"
11#include "Constants/hpc_bounds.h"
12#include "Constants/symbol_values.h"
13#include "Accelerator/hybrid.h"
14#include "DataTypes/common_types.h"
15#include "DataTypes/stormm_vector_types.h"
16#include "FileManagement/file_enumerators.h"
17#include "Parsing/citation.h"
18#include "Parsing/parsing_enumerators.h"
19#include "Structure/structure_enumerators.h"
20#include "atomgraph_abstracts.h"
21#include "atomgraph_constants.h"
22#include "atomgraph_enumerators.h"
23#include "atomgraph_refinement.h"
24#include "topology_limits.h"
29using constants::ExceptionResponse;
30using constants::PrecisionModel;
32using card::HybridTargetLevel;
33using diskutil::PrintSituation;
35using parse::NumberFormat;
36using parse::PolyNumeric;
37using structure::ApplyConstraints;
38using symbols::amber_ancient_bioq;
83 AtomGraph(
const std::string &file_name, ExceptionResponse policy = ExceptionResponse::WARN,
84 TopologyKind engine_format = TopologyKind::AMBER);
86 AtomGraph(
const std::string &file_name, ExceptionResponse policy, TopologyKind engine_format,
87 double coulomb_constant_in,
double default_elec14_screening,
88 double default_vdw14_screening,
double charge_rounding_tol,
89 double charge_discretization,
90 ApplyConstraints use_bond_constraints_in = ApplyConstraints::NO,
91 ApplyConstraints use_settle_in = ApplyConstraints::NO);
93 AtomGraph(
const std::vector<AtomGraph*> &agv,
const std::vector<int> &counts,
94 MoleculeOrdering arrangement = MoleculeOrdering::REORDER_ALL,
95 ExceptionResponse policy = ExceptionResponse::DIE);
98 MoleculeOrdering arrangement = MoleculeOrdering::REORDER_ALL,
99 ExceptionResponse policy = ExceptionResponse::DIE);
102 MoleculeOrdering arrangement = MoleculeOrdering::REORDER_ALL,
103 ExceptionResponse policy = ExceptionResponse::DIE);
106 MoleculeOrdering arrangement = MoleculeOrdering::REORDER_ALL,
107 ExceptionResponse policy = ExceptionResponse::DIE);
110 ExceptionResponse policy = ExceptionResponse::DIE,
111 double charge_rounding_tol = default_charge_rounding_tol,
112 double charge_discretization = default_charge_precision_inc,
113 ApplyConstraints use_bond_constraints_in = ApplyConstraints::NO,
114 ApplyConstraints use_settle_in = ApplyConstraints::NO);
117 ExceptionResponse policy = ExceptionResponse::DIE,
118 double charge_rounding_tol = default_charge_rounding_tol,
119 double charge_discretization = default_charge_precision_inc,
120 ApplyConstraints use_bond_constraints_in = ApplyConstraints::NO,
121 ApplyConstraints use_settle_in = ApplyConstraints::NO);
157 const ExceptionResponse policy = ExceptionResponse::WARN,
158 double coulomb_constant_in = amber_ancient_bioq,
159 double default_elec14_screening = amber_default_elec14_screen,
160 double default_vdw14_screening = amber_default_vdw14_screen,
161 double charge_rounding_tol = default_charge_rounding_tol,
162 double charge_discretization = default_charge_precision_inc);
366 std::vector<bool>
getAtomMobility(
int low_index,
int high_index)
const;
442 template <
typename T> std::vector<T>
getPartialCharge(
int low_index,
int high_index)
const;
460 template <
typename T> std::vector<T>
getAtomicMass(MassForm rep = MassForm::ORDINARY)
const;
461 template <
typename T> std::vector<T>
getAtomicMass(
int low_index,
int high_index,
462 MassForm rep = MassForm::ORDINARY)
const;
463 template <
typename T> T
getAtomicMass(
int index, MassForm rep = MassForm::ORDINARY)
const;
478 std::vector<char4>
getAtomName(
int low_index,
int high_index)
const;
494 std::vector<char4>
getAtomType(
int low_index,
int high_index)
const;
639 int getVirtualSiteIndex(
int atom_index, ExceptionResponse policy = ExceptionResponse::DIE)
const;
747 std::vector<int>
getChargeIndex(
int low_index,
int high_index)
const;
849 template <
typename T> std::vector<T>
getAtomPBRadius(
int low_index,
int high_index)
const;
959# ifdef STORMM_USE_CUDA
1016#ifdef STORMM_USE_HPC
1027 void setSource(
const std::string &new_source);
1051 void setBondParameters(
double new_keq,
double new_leq,
bool set_keq,
bool set_leq,
int parm_idx,
1052 ExceptionResponse policy = ExceptionResponse::SILENT);
1055 char4 type_b, ExceptionResponse policy = ExceptionResponse::SILENT);
1081 void setAngleParameters(
double new_keq,
double new_teq,
bool set_keq,
bool set_teq,
int parm_idx,
1082 ExceptionResponse policy = ExceptionResponse::SILENT);
1086 ExceptionResponse policy = ExceptionResponse::SILENT);
1117 bool set_phase_angle,
int parm_idx,
1118 ExceptionResponse policy = ExceptionResponse::SILENT);
1122 char4 type_d,
double periodicity,
1123 ExceptionResponse policy = ExceptionResponse::SILENT);
1147 ExceptionResponse policy = ExceptionResponse::SILENT);
1151 ExceptionResponse policy = ExceptionResponse::SILENT);
1177 bool set_phase_angle,
int parm_idx,
1178 ExceptionResponse policy = ExceptionResponse::SILENT);
1182 char4 type_d, ExceptionResponse policy = ExceptionResponse::SILENT);
1198 double saltcon_in = 0.0,
1199 AtomicRadiusSet radii_set = AtomicRadiusSet::NONE,
1200 ExceptionResponse policy = ExceptionResponse::WARN);
1224 void printToFile(
const std::string &output_file = {},
1225 TopologyKind output_style = TopologyKind::AMBER,
1226 PrintSituation expectation = PrintSituation::OPEN_NEW,
1227 ExceptionResponse pr_policy = ExceptionResponse::DIE)
const;
1232 PrintSituation expectation = PrintSituation::OPEN_NEW,
1233 ExceptionResponse pr_policy = ExceptionResponse::DIE)
const;
1238 char version_stamp[16];
1244 std::vector<Citation> force_fields;
1250 int largest_residue_size;
1251 int last_solute_residue;
1252 int last_solute_atom;
1253 int first_solvent_molecule;
1254 int last_atom_before_cap;
1255 int implicit_copy_count;
1258 int largest_molecule_size;
1259 int water_residue_size;
1260 int water_residue_count;
1261 int unconstrained_dof;
1263 int constrained_dof;
1303 int urey_bradley_term_count;
1304 int charmm_impr_term_count;
1305 int cmap_term_count;
1306 int urey_bradley_parameter_count;
1307 int charmm_impr_parameter_count;
1308 int cmap_surface_count;
1309 int urey_bradley_pert_term_count;
1311 int charmm_impr_pert_term_count;
1313 int cmap_pert_term_count;
1314 int urey_bradleys_in_perturbed_group;
1315 int charmm_imprs_in_perturbed_group;
1317 int cmaps_in_perturbed_group;
1423 int bond_term_with_hydrogen;
1424 int angl_term_with_hydrogen;
1425 int dihe_term_with_hydrogen;
1426 int bond_term_without_hydrogen;
1427 int angl_term_without_hydrogen;
1428 int dihe_term_without_hydrogen;
1429 int bond_term_count;
1430 int angl_term_count;
1431 int dihe_term_count;
1432 int bond_parameter_count;
1433 int angl_parameter_count;
1434 int dihe_parameter_count;
1435 int bond_perturbation_term_count;
1436 int angl_perturbation_term_count;
1437 int dihe_perturbation_term_count;
1438 int bonds_in_perturbed_group;
1439 int angls_in_perturbed_group;
1440 int dihes_in_perturbed_group;
1441 int bonded_group_count;
1525 int virtual_site_count;
1526 int virtual_site_parameter_set_count;
1551 int charge_type_count;
1553 bool has_14_lennard_jones_data;
1556 int total_exclusions;
1557 int attenuated_14_type_count;
1558 int inferred_14_attenuations;
1569 UnitCellType periodic_box_class;
1571 ImplicitSolventModel gb_style;
1576 double dielectric_constant;
1578 double salt_concentration;
1580 double coulomb_constant;
1583 double elec14_screening_factor;
1586 double vdw14_screening_factor;
1588 std::string pb_radii_set;
1663 ApplyConstraints use_shake;
1664 ApplyConstraints use_settle;
1665 PerturbationSetting use_perturbation_info;
1666 SolventCapSetting use_solvent_cap_option;
1667 PolarizationSetting use_polarization;
1668 char4 water_residue_name;
1670 std::string bond_constraint_mask;
1671 std::string bond_constraint_omit_mask;
1673 int bond_constraint_count;
1678 int nonrigid_particle_count;
1681 int settle_group_count;
1684 int settle_parameter_count;
1689 int constraint_group_count;
1690 int constraint_parameter_count;
1762 int hbond_10_12_parameter_count;
1763 int heavy_bonds_plus_constraints;
1764 int heavy_angls_plus_constraints;
1765 int heavy_dihes_plus_constraints;
1798 void loadHybridArrays(
const std::vector<int> &tmp_desc,
1799 const std::vector<int> &tmp_residue_limits,
1800 const std::vector<int> &tmp_atom_struc_numbers,
1801 const std::vector<int> &tmp_residue_numbers,
1802 const std::vector<int> &tmp_molecule_limits,
1803 const std::vector<int> &tmp_atomic_numbers,
1804 const std::vector<int> &tmp_molecule_membership,
1805 const std::vector<int> &tmp_mobile_atoms,
1806 const std::vector<int> &tmp_molecule_contents,
1807 const std::vector<int> &tmp_cmap_surf_dims,
1808 const std::vector<int> &tmp_cmap_surf_bounds,
1809 const std::vector<int> &tmp_charge_indices,
1810 const std::vector<int> &tmp_lennard_jones_indices,
1811 const std::vector<int> &tmp_inferred_14_i_atoms,
1812 const std::vector<int> &tmp_inferred_14_j_atoms,
1813 const std::vector<int> &tmp_inferred_14_param_idx,
1814 const std::vector<int> &tmp_neck_gb_indices,
1815 const std::vector<int> &tmp_tree_joining_info,
1816 const std::vector<int> &tmp_last_rotator_info,
1817 const std::vector<double> &tmp_charges,
1818 const std::vector<double> &tmp_masses,
1819 const std::vector<double> &tmp_ub_stiffnesses,
1820 const std::vector<double> &tmp_ub_equilibria,
1821 const std::vector<double> &tmp_charmm_impr_stiffnesses,
1822 const std::vector<double> &tmp_charmm_impr_phase_angles,
1823 const std::vector<double> &tmp_cmap_surfaces,
1824 const std::vector<double> &tmp_bond_stiffnesses,
1825 const std::vector<double> &tmp_bond_equilibria,
1826 const std::vector<double> &tmp_angl_stiffnesses,
1827 const std::vector<double> &tmp_angl_equilibria,
1828 const std::vector<double> &tmp_dihe_amplitudes,
1829 const std::vector<double> &tmp_dihe_periodicities,
1830 const std::vector<double> &tmp_dihe_phase_angles,
1831 const std::vector<double> &tmp_charge_parameters,
1832 const std::vector<double> &tmp_lj_a_values,
1833 const std::vector<double> &tmp_lj_b_values,
1834 const std::vector<double> &tmp_lj_c_values,
1835 const std::vector<double> &tmp_lj_14_a_values,
1836 const std::vector<double> &tmp_lj_14_b_values,
1837 const std::vector<double> &tmp_lj_14_c_values,
1838 const std::vector<double> &tmp_atomic_pb_radii,
1839 const std::vector<double> &tmp_gb_screening_factors,
1840 const std::vector<double> &tmp_gb_coef,
1841 const std::vector<double> &tmp_solty_info,
1842 const std::vector<double> &tmp_hbond_a_values,
1843 const std::vector<double> &tmp_hbond_b_values,
1844 const std::vector<double> &tmp_hbond_cutoffs,
1845 const std::vector<double> &tmp_atpol,
1846 const std::vector<char4> &tmp_atom_names,
1847 const std::vector<char4> &tmp_atom_types,
1848 const std::vector<char4> &tmp_residue_names,
1849 const std::vector<char4> &tmp_tree_symbols,
1850 const CmapAccessories &cmap_table,
1851 const CondensedExclusions &cond_excl,
1852 const BasicValenceTable &basic_vtable,
1853 const CharmmValenceTable &charmm_vtable,
1854 const AttenuationParameterSet &attn_parm,
1855 const VirtualSiteTable &vsite_table,
1856 const Map1234 &all_nb_excl,
const ConstraintTable &cnst_table);
1860 void rebasePointers();
1866 void characterizeWaterResidue();
1871 void printAmberSection(std::ofstream *foutp,
const std::string §ion_name,
1872 const std::vector<PolyNumeric> &values,
int values_per_line,
1873 int value_width,
int decimal_places, NumberFormat fmt,
1874 const std::string &task)
const;
1889std::vector<int2> findMoleculeOrder(
const std::vector<AtomGraph*> &agv,
1890 const std::vector<int> &counts,
1891 std::vector<int2> *origins =
nullptr,
1892 MoleculeOrdering arrangement = MoleculeOrdering::REORDER_ALL);
1902bool scanForExclusion(
const std::vector<int> &list,
int llim,
int hlim,
int partner);
1913void cullPriorExclusions(std::vector<int3> *proposals,
const std::vector<int3> &priors);
1918#include "atomgraph.tpp"
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
AtomGraph()
The blank constructor makes a blank AtomGraph, which is used by the general- purpose file-based const...
Definition atomgraph_constructors.cpp:25
void modifyAtomMobility(MobilitySetting movement)
Change an atom's mobility in the topology.
Definition atomgraph_setters.cpp:28
std::vector< T > getAtomPBRadius() const
Get the Poisson-Boltzmann radius of a particular atom.
int getBondTermCount() const
Get the number of bond stretching terms in the system.
Definition atomgraph_getters.cpp:599
int getVirtualSiteParameterSetCount() const
Get the number of unique virtual site frames in the system. For example, a system of 1024 TIP-4P wate...
Definition atomgraph_getters.cpp:634
DihedralTerm< T > getDihedralTerm(int index) const
Collect the atom indices and actual parameters for implement one of the system's cosine-based dihedra...
std::vector< int > getConstraintGroupAtoms(int index) const
Get the atoms of a single constraint group.
Definition atomgraph_getters.cpp:820
UreyBradleyTerm< T > getUreyBradleyTerm(int index) const
Collect the atom indices and actual parameters to implement one of the system's Urey-Bradley terms....
BondTerm< T > getBondTerm(int index) const
Collect the atom indices and actual parameters for implement one of the system's harmonic bond stretc...
int getDihedralParameterCount() const
Return the number of unique dihedral parameter sets.
Definition atomgraph_getters.cpp:624
VirtualSiteKind getVirtualSiteFrameType(int index) const
Get the frame type of a particular virtual site.
Definition atomgraph_getters.cpp:686
std::vector< int > getChargeIndex() const
Get the charge type index of atoms in the system.
Definition atomgraph_getters.cpp:845
ValenceKit< float > getSinglePrecisionValenceKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a single-precision abstract for calculating valence terms.
Definition atomgraph_getters.cpp:995
int getChargeTypeCount() const
Get the number of charge types in the system.
Definition atomgraph_getters.cpp:710
int getDescriptor(TopologyDescriptor choice) const
Get a descriptor from within the array of topology descriptors. If this topology were read from an Am...
Definition atomgraph_getters.cpp:259
void setSource(const std::string &new_source)
Set the source file for the topology. Primary use is to impart a destination file for a topology to b...
Definition atomgraph_setters.cpp:93
int getCharmmImprParameterCount() const
Return the number of unique CHARMM improper parameter sets.
Definition atomgraph_getters.cpp:584
const Hybrid< char4 > & getAtomType() const
Get the types of atoms in the system.
Definition atomgraph_getters.cpp:482
ConstraintKit< double > getDoublePrecisionConstraintKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get an abstract for managing constraints based on double-precision parameters.
Definition atomgraph_getters.cpp:1151
int getLastSoluteResidue() const
Get the final solute residue, indexed according to C/C++ array indexing conventions.
Definition atomgraph_getters.cpp:208
std::string getPBRadiiSet() const
Get the PB Radii set.
Definition atomgraph_getters.cpp:760
NonbondedKit< double > getDoublePrecisionNonbondedKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a double-precision abstract for calculating non-bonded energy and forces.
Definition atomgraph_getters.cpp:1053
std::vector< int > getNonbonded14Exclusions(int index) const
Get all 1:4 exclusions for a particular atom.
Definition atomgraph_getters.cpp:927
int getAngleParameterCount() const
Return the number of unique bond angle bending parameter sets.
Definition atomgraph_getters.cpp:619
MoleculeKind getMoleculeKind(int mol_index) const
Get the kind of a specific molecule wihtin the topology.
Definition atomgraph_getters.cpp:49
T getLennardJonesEpsilon(int index_a, int index_b) const
Get the Lennard-Jones interaction epsilon value. The quantity is derived from tables at the specified...
void setAngleParameters(double new_keq, double new_teq, bool set_keq, bool set_teq, int parm_idx, ExceptionResponse policy=ExceptionResponse::SILENT)
Alter the parameters for an angle parameter set. This will alter the parameters in the topology and a...
Definition atomgraph_setters.cpp:188
std::vector< char4 > matchOverflowAtomType(const std::string &query) const
Match a long atom type and return its key in the standard list of char4 atom types.
Definition atomgraph_miscellaneous.cpp:23
CharmmImprTerm< T > getCharmmImprTerm(int index) const
Collect the atom indices and actual parameters to implement one of the system's CHARMM improper terms...
std::string getWaterResidueName() const
Get the water residue name.
Definition atomgraph_getters.cpp:787
std::vector< char4 > matchOverflowAtomName(const std::string &query) const
Match a long atom name and return its key in the standard list of char4 atom names.
Definition atomgraph_miscellaneous.cpp:11
bool usesShake() const
Get the status of SHAKE and RATTLE constraints in the system.
Definition atomgraph_getters.cpp:765
int getResidueCount() const
Get the number of residues.
Definition atomgraph_getters.cpp:39
void setDihedralParameters(double new_amplitude, double new_phase_angle, bool set_amplitude, bool set_phase_angle, int parm_idx, ExceptionResponse policy=ExceptionResponse::SILENT)
Alter the parameters for a cosine-based dihedral angle parameter set. This will alter the parameters ...
Definition atomgraph_setters.cpp:282
std::vector< uint > getAtomMobilityMask() const
Get the raw mobility bitmask over a particular range.
Definition atomgraph_getters.cpp:407
const Hybrid< char4 > & getAtomName() const
Get the names of atoms in the system.
Definition atomgraph_getters.cpp:466
int getSettleGroupCount() const
Get the number of SETTLE groups in the system.
Definition atomgraph_getters.cpp:805
T getChargeParameter(int index) const
Get the charge parameter for a specific atom. The quantity is derived from tables at the specified le...
ConstraintKit< float > getSinglePrecisionConstraintKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get an abstract for managing constraints based on single-precision parameters. While the overall impl...
Definition atomgraph_getters.cpp:1169
std::vector< T > getGBScreeningFactor() const
Get GB screening factors for one or more atoms.
std::vector< int > getResidueNumber() const
Get the residue numbers for atoms in the system.
Definition atomgraph_getters.cpp:320
friend class AtomGraphStage
Definition atomgraph.h:1878
int getRigidWaterCount() const
Get the number of rigid waters in the system. This will check through the SETTLE groups and confirm t...
Definition atomgraph_getters.cpp:792
CmapTerm< T > getCmapTerm(int index) const
Collect the atom indices and a pointer to the surface to implement one of the system's CMAP terms....
int getTotalExclusions() const
Get the number of exclusions in the entire topology.
Definition atomgraph_getters.cpp:720
void setImplicitSolventModel(ImplicitSolventModel igb_in, double dielectric_in=80.0, double saltcon_in=0.0, AtomicRadiusSet radii_set=AtomicRadiusSet::NONE, ExceptionResponse policy=ExceptionResponse::WARN)
Set the implicit solvent model. This will leverage a lot of hard-coded constants to fill out some all...
Definition atomgraph_setters.cpp:593
double getVanDerWaals14Screening() const
Get the general 1:4 screening factor on van-der Waals interactions.
Definition atomgraph_getters.cpp:755
int getUreyBradleyTermCount() const
Get the number of Urey-Bradley terms in the system.
Definition atomgraph_getters.cpp:564
double getTotalMass() const
Get the total mass of all atoms in the topology (this is a computation, not a stored value).
Definition atomgraph_getters.cpp:239
VirtualSiteKit< float > getSinglePrecisionVirtualSiteKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a single-precision abstract for placing virtual sites and transmitting their forces to frame atom...
Definition atomgraph_getters.cpp:1135
void printAmberFormat(const std::string &output_file={}, PrintSituation expectation=PrintSituation::OPEN_NEW, ExceptionResponse pr_policy=ExceptionResponse::DIE) const
Print the contents of the topology in the AMBER file format. Descriptions of input parameters follow ...
Definition atomgraph_writing.cpp:79
double getCoulombConstant() const
Get the fundamental coulomb constant that this system uses in electrostatic calculations.
Definition atomgraph_getters.cpp:745
int getBondConstraintCount() const
Get the number of bond constraints.
Definition atomgraph_getters.cpp:810
int getConstraintGroupTotalSize() const
Get the total size of the constrained group atoms list.
Definition atomgraph_getters.cpp:835
int getUreyBradleyParameterCount() const
Return the number of unique Urey-Bradley parameter sets.
Definition atomgraph_getters.cpp:579
int getNonrigidParticleCount() const
Get the number of non-rigid particles in the system.
Definition atomgraph_getters.cpp:840
std::vector< int > getNonbonded13Exclusions(int index) const
Get all 1:3 exclusions for a particular atom.
Definition atomgraph_getters.cpp:915
int getVirtualSiteCount() const
Get the number of virtual sites in the system.
Definition atomgraph_getters.cpp:629
void setWaterResidueName(const char4 new_name)
Set the name of the water residue.
Definition atomgraph_setters.cpp:1098
double getElectrostatic14Screening() const
Get the general 1:4 screening factor on electrostatic interactions.
Definition atomgraph_getters.cpp:750
T getVirtualSiteFrameDimension(int index, int ndim)
Get the dimensions (could be length in A, could be scaling factor for a distance or cross product) of...
int getLJTypeCount() const
Get the number of atom types in the system.
Definition atomgraph_getters.cpp:715
int getOrganicMoleculeCount() const
Get the number of organic molecules in the system, based on the criteria of greater than or equal to ...
Definition atomgraph_getters.cpp:141
double getSaltConcentration() const
Get the salt concentration (part of the implicit solvent setup)
Definition atomgraph_getters.cpp:740
AngleTerm< T > getAngleTerm(int index) const
Collect the atom indices and actual parameters for implement one of the system's harmonic bond angle ...
std::vector< int > getLennardJonesIndex() const
Get the Lennard-Jones type index of atoms in the system.
Definition atomgraph_getters.cpp:861
std::vector< int > getAtomicNumber() const
Get the atomic numbers for atoms in the system.
Definition atomgraph_getters.cpp:362
void setUreyBradleyParameters(double new_keq, double new_leq, bool set_keq, bool set_leq, int parm_idx, ExceptionResponse policy=ExceptionResponse::SILENT)
Alter the parameters for a Urey-Bradley parameter set.
Definition atomgraph_setters.cpp:385
NonbondedKit< float > getSinglePrecisionNonbondedKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a single-precision abstract for calculating non-bonded energy and forces.
Definition atomgraph_getters.cpp:1069
const Hybrid< char4 > & getResidueName() const
Get the names of residues in the system.
Definition atomgraph_getters.cpp:554
~AtomGraph()=default
The default destructor is adequate.
int getVirtualSiteFrameAtom(int index, int nfrm) const
Get the general topology index of one of a virtual site's frame atoms.
Definition atomgraph_getters.cpp:692
int getAngleTermCount() const
Get the number of angle bending terms in the system.
Definition atomgraph_getters.cpp:604
ImplicitSolventKit< double > getDoublePrecisionImplicitSolventKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a double-precision abstract for calculating implicit solvent energy and forces.
Definition atomgraph_getters.cpp:1086
std::vector< char4 > matchOverflowResidueName(const std::string &query) const
Match a long residue name and return its key among the standard char4 residue names.
Definition atomgraph_miscellaneous.cpp:36
int getFirstSolventAtom() const
Get the first solvent atom, indexed according to C/C++ array indexing conventions.
Definition atomgraph_getters.cpp:223
double getDielectricConstant() const
Get the dielectric constant (part of the implicit solvent setup)
Definition atomgraph_getters.cpp:735
int getVirtualSiteIndex(int atom_index, ExceptionResponse policy=ExceptionResponse::DIE) const
Get the virtual site index of an atom index. If the atom index is not a virtual site,...
Definition atomgraph_getters.cpp:663
std::vector< int > getParticlesPerMolecule() const
Get the sizes of all molecules in the system. Rather redundant with the molecule limits being accessi...
Definition atomgraph_getters.cpp:347
int getLastSoluteAtom() const
Get the final solute atom, indexed according to C/C++ array indexing conventions.
Definition atomgraph_getters.cpp:213
int getWaterResidueCount() const
Get the number of water residues in the system.
Definition atomgraph_getters.cpp:198
std::vector< int > getStructuralAtomNumber() const
Get the (arbitrarily defined) atom numbers for atoms in the system. For example, a PDB file could ahv...
Definition atomgraph_getters.cpp:303
int getCmapDimension(int index) const
Return the dimension of a particular CMAP surface (all CMAPs are assumed to be square)
Definition atomgraph_getters.cpp:594
int getFirstSolventMolecule() const
Get the first solvent molecule, indexed according to C/C++ array indexing conventions.
Definition atomgraph_getters.cpp:218
T getLennardJonesSigma(int index_a, int index_b) const
Get the Lennard-Jones interaction sigma. The quantity is derived from tables at the specified level o...
ValenceKit< double > getDoublePrecisionValenceKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get an abstract for calculating valence terms in double precision.
Definition atomgraph_getters.cpp:939
void buildFromPrmtop(const std::string &file_name, const ExceptionResponse policy=ExceptionResponse::WARN, double coulomb_constant_in=amber_ancient_bioq, double default_elec14_screening=amber_default_elec14_screen, double default_vdw14_screening=amber_default_vdw14_screen, double charge_rounding_tol=default_charge_rounding_tol, double charge_discretization=default_charge_precision_inc)
Build an AtomGraph form a file. This is called by the general-purpose constructor or also by the deve...
Definition atomgraph_detailers.cpp:607
std::vector< int > getNonbonded11Exclusions(int index) const
Get the 1:1 exclusions for a particular atom. This list will only be populated if the atom is a virtu...
Definition atomgraph_getters.cpp:891
ChemicalDetailsKit getChemicalDetailsKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get an abstract of the chemical details of the system, such as atom name and type or residue names an...
Definition atomgraph_getters.cpp:1106
int getRigidWaterAtomCount() const
Get the number of atoms in a rigid water molecule of the system, if the system has rigid waters....
void printToFile(const std::string &output_file={}, TopologyKind output_style=TopologyKind::AMBER, PrintSituation expectation=PrintSituation::OPEN_NEW, ExceptionResponse pr_policy=ExceptionResponse::DIE) const
Print out a topology in the specified format.
Definition atomgraph_writing.cpp:22
std::vector< int > getMoleculeMembership() const
Get molecule membership for atoms within the system.
Definition atomgraph_getters.cpp:438
std::vector< T > getAtomicMass(MassForm rep=MassForm::ORDINARY) const
Get the masses of atoms in the system. The developer may also choose to take the pre-computed inverse...
int getOrganicAtomCount() const
Get the number of organic atoms in the system, based on the criteria of greater than or equal to eigh...
Definition atomgraph_getters.cpp:168
UnitCellType getUnitCellType() const
Get the simulation cell type (isolated boundary conditions, rectilinear, triclinic)
Definition atomgraph_getters.cpp:725
AtomGraph & operator=(const AtomGraph &other)
Copy constructor.
Definition atomgraph_constructors.cpp:945
int getCmapTermCount() const
Get the number of CMAP terms (the number of CMAP parameter surfaces is different)
Definition atomgraph_getters.cpp:574
int getMoleculeCount() const
Get the number of separate molecules in the system.
Definition atomgraph_getters.cpp:44
std::vector< int > getResidueIndex() const
Get the index (topology index, not natural / structure-informed residue number) of a particular resid...
Definition atomgraph_getters.cpp:280
void setBondParameters(double new_keq, double new_leq, bool set_keq, bool set_leq, int parm_idx, ExceptionResponse policy=ExceptionResponse::SILENT)
Alter the parameters for a bond parameter set. This will alter the parameters in the topology and all...
Definition atomgraph_setters.cpp:98
std::vector< std::vector< char4 > > getAtomTypeNameTable() const
Get a table with the names of all unique atom types, arranged according to their Lennard-Jones indice...
Definition atomgraph_getters.cpp:507
void setCharmmImprParameters(double new_stiffness, double new_phase_angle, bool set_stiffness, bool set_phase_angle, int parm_idx, ExceptionResponse policy=ExceptionResponse::SILENT)
Alter the characteristics of a CHARMM improper dihedral parameter set.
Definition atomgraph_setters.cpp:493
int getBondParameterCount() const
Return the number of unique bond stretching parameter sets.
Definition atomgraph_getters.cpp:614
int getCmapSurfaceCount() const
Return the number of unique CMAP surfaces.
Definition atomgraph_getters.cpp:589
int getConstrainedDegreesOfFreedom() const
Get the number of degrees of freedom after geometric constraints have been applied.
Definition atomgraph_getters.cpp:254
std::vector< int > getMoleculeContents() const
Get the contents of a one or more molecules in the system.
Definition atomgraph_getters.cpp:455
int getConstraintGroupCount() const
Get the total number of constrained groups.
Definition atomgraph_getters.cpp:815
std::string getFileName() const
Get the file name where a topology originated (may be blank, indicating that the topology was produce...
Definition atomgraph_getters.cpp:29
bool usesSettle() const
Get the status of SETTLE rigid water constraints in the system.
Definition atomgraph_getters.cpp:776
std::vector< T > getPartialCharge() const
Get the atomic partial charges of atoms in the system.
int getWaterResidueSize() const
Get the number of particles (which may include virtual sites) in a single water molecule within the s...
Definition atomgraph_getters.cpp:193
int getDegreesOfFreedom() const
Get the number of degrees of freedom, without consideration to geometric constraints.
Definition atomgraph_getters.cpp:249
std::vector< int > getMoleculeLimits() const
Get the molecule limits, indices into molecule_contents, for every molecule in the system....
Definition atomgraph_getters.cpp:336
std::string getFullAtomName(int index) const
Get the full name (including the residue and structural residue number) of an atom,...
Definition atomgraph_getters.cpp:498
std::vector< int > getAtomExclusions(int index) const
Get the exclusion list for a particular atom. This will concatenate 1:1, 1:2, 1:3,...
Definition atomgraph_getters.cpp:877
std::vector< int > getNonbonded12Exclusions(int index) const
Get all 1:2 exclusions for a particular atom.
Definition atomgraph_getters.cpp:903
const Hybrid< int > & getResidueLimits() const
Get residue limits for the beginning and ends of up to N residues.
Definition atomgraph_getters.cpp:269
int getAtomCount() const
Get the number of atoms, using the topology's dedicated private variable rather than a list of input ...
Definition atomgraph_getters.cpp:34
AtomGraph()
The blank constructor makes a blank AtomGraph, which is used by the general- purpose file-based const...
Definition atomgraph_constructors.cpp:25
int getDihedralTermCount() const
Get the number of dihedral torsion terms in the system.
Definition atomgraph_getters.cpp:609
std::vector< int > findVirtualSites() const
Get a list of the general topological indices of one or more virtual sites.
Definition atomgraph_getters.cpp:639
std::vector< bool > getAtomMobility() const
Get the mobile atom mask for the system, as a boolean vector translated from the bitmask stored inter...
Definition atomgraph_getters.cpp:378
int getCharmmImprTermCount() const
Get the number of CHARMM improper terms.
Definition atomgraph_getters.cpp:569
int getLargestMoleculeSize() const
Get the largest molecule's size.
Definition atomgraph_getters.cpp:234
ImplicitSolventModel getImplicitSolventModel() const
Get the implicit solvent model type, i.e. some flavor of GB or NONE.
Definition atomgraph_getters.cpp:730
const AtomGraph * getSelfPointer() const
Get a pointer to the object itself.
Definition atomgraph_getters.cpp:1552
VirtualSiteKit< double > getDoublePrecisionVirtualSiteKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a double-precision abstract for placing virtual sites and transmitting their forces to frame atom...
Definition atomgraph_getters.cpp:1119
std::string getTitle() const
Get the title of the topology (may be blank).
Definition atomgraph_getters.cpp:24
int getLargestResidueSize() const
Get the number of separate molecules in the system.
Definition atomgraph_getters.cpp:203
ImplicitSolventKit< float > getSinglePrecisionImplicitSolventKit(HybridTargetLevel tier=HybridTargetLevel::HOST) const
Get a single-precision abstract for calculating implicit solvent energy and forces.
Definition atomgraph_getters.cpp:1096
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202
Definition stormm_vector_types.h:141
Definition stormm_vector_types.h:22
Unguarded struct to store the ingredients of a single bond angle interaction.
Definition atomgraph_abstracts.h:54
Unguarded struct to store the ingredients of a single bond stretching interaction.
Definition atomgraph_abstracts.h:45
Unguarded struct to store the ingredients of a single CHARMM improper dihedral.
Definition atomgraph_abstracts.h:21
Information on atoms and residues which may be useful for applying atom masks or identifying specific...
Definition atomgraph_abstracts.h:382
Unguarded struct to store the ingredients of a single CMAP interaction.
Definition atomgraph_abstracts.h:32
Information needed to manage constraint groups. This additional abstract is needed due to the way tha...
Definition atomgraph_abstracts.h:466
Unguarded struct to store the ingredients of a single dihedral (proper or improper) torsion interacti...
Definition atomgraph_abstracts.h:67
Information needed for Generalized Born (and perhaps other) implicit solvent methods....
Definition atomgraph_abstracts.h:352
Information needed for non-bonded real-space calculations. Templating is used as above,...
Definition atomgraph_abstracts.h:287
Unguarded struct to store the ingredients of a single Urey-Bradley interaction.
Definition atomgraph_abstracts.h:12
Information need for bonded calculations. Templating is used to serve either of two levels of precisi...
Definition atomgraph_abstracts.h:88
Information needed for the placement of virtual sites and transmission of forces on these sites to th...
Definition atomgraph_abstracts.h:430