2#ifndef STORMM_AG_REFINEMENT_H
3#define STORMM_AG_REFINEMENT_H
8#include "Constants/behavior.h"
9#include "DataTypes/stormm_vector_types.h"
10#include "Math/series_ops.h"
11#include "Math/vector_ops.h"
12#include "Parsing/parse.h"
13#include "Structure/structure_enumerators.h"
14#include "atomgraph_enumerators.h"
19using constants::ExceptionResponse;
20using parse::WildCardKind;
21using stmath::minValue;
22using stmath::incrementingSeries;
23using structure::ApplyConstraints;
48 explicit ParameterUnion(
const T* comp_xa,
const T* comp_ya,
const T* comp_za,
const T* comp_wa,
49 const T* comp_va,
int aparam_count,
const T* comp_xb,
const T* comp_yb,
50 const T* comp_zb,
const T* comp_wb,
const T* comp_vb,
int bparam_count,
51 double match_tol = constants::small);
53 explicit ParameterUnion(
const T* comp_xa,
const T* comp_ya,
const T* comp_za,
54 int aparam_count_in,
const T* comp_xb,
const T* comp_yb,
55 const T* comp_zb,
int bparam_count_in,
56 double match_tol = constants::small);
58 explicit ParameterUnion(
const T* comp_xa,
const T* comp_ya,
int aparam_count_in,
59 const T* comp_xb,
const T* comp_yb,
int bparam_count_in,
60 double match_tol = constants::small);
62 explicit ParameterUnion(
const T* comp_xa,
int aparam_count_in,
const T* comp_xb,
63 int bparam_count_in,
double match_tol = constants::small);
65 explicit ParameterUnion(
const T* comp_xa,
const T* comp_ya,
const T* comp_za,
const T* comp_wa,
66 const T* comp_va,
int aparam_count_in);
68 explicit ParameterUnion(
const T* comp_xa,
const T* comp_ya,
const T* comp_za,
71 explicit ParameterUnion(
const T* comp_xa,
const T* comp_ya,
int aparam_count_in);
75 explicit ParameterUnion(
const std::vector<T> &comp_xa,
const std::vector<T> &comp_ya,
76 const std::vector<T> &comp_za,
const std::vector<T> &comp_wa,
77 const std::vector<T> &comp_va,
const std::vector<T> &comp_xb,
78 const std::vector<T> &comp_yb,
const std::vector<T> &comp_zb,
79 const std::vector<T> &comp_wb,
const std::vector<T> &comp_vb,
80 double match_tol = constants::small);
82 explicit ParameterUnion(
const std::vector<T> &comp_xa,
const std::vector<T> &comp_ya,
83 const std::vector<T> &comp_za,
const std::vector<T> &comp_xb,
84 const std::vector<T> &comp_yb,
const std::vector<T> &comp_zb,
85 double match_tol = constants::small);
87 explicit ParameterUnion(
const std::vector<T> &comp_xa,
const std::vector<T> &comp_ya,
88 const std::vector<T> &comp_xb,
const std::vector<T> &comp_yb,
89 double match_tol = constants::small);
91 explicit ParameterUnion(
const std::vector<T> &comp_xa,
const std::vector<T> &comp_ya,
94 explicit ParameterUnion(
const std::vector<T> &comp_xa,
const std::vector<T> &comp_ya,
95 const std::vector<T> &comp_za,
const std::vector<T> &comp_wa,
96 const std::vector<T> &comp_va);
98 explicit ParameterUnion(
const std::vector<T> &comp_xa,
const std::vector<T> &comp_ya,
99 const std::vector<T> &comp_za);
101 explicit ParameterUnion(
const std::vector<T> &comp_xa,
const std::vector<T> &comp_ya);
163 void addSet(
const T* comp_x,
const T* comp_y,
const T* comp_z,
const T* comp_w,
const T* comp_v,
164 int nparm,
double tol = constants::small);
166 void addSet(
const T* comp_x,
const T* comp_y,
const T* comp_z,
int nparm,
167 double tol = constants::small);
169 void addSet(
const T* comp_x,
const T* comp_y,
int nparm,
double tol = constants::small);
171 void addSet(
const T* comp_x,
int nparm,
double tol = constants::small);
173 void addSet(
const std::vector<T> &comp_x,
const std::vector<T> &comp_y,
174 const std::vector<T> &comp_z,
const std::vector<T> &comp_w,
175 const std::vector<T> &comp_v,
double tol = constants::small);
177 void addSet(
const std::vector<T> &comp_x,
const std::vector<T> &comp_y,
178 const std::vector<T> &comp_z,
double tol = constants::small);
180 void addSet(
const std::vector<T> &comp_x,
const std::vector<T> &comp_y,
181 double tol = constants::small);
185 int total_parameters;
188 std::vector<T> union_parameter_x;
189 std::vector<T> union_parameter_y;
190 std::vector<T> union_parameter_z;
192 std::vector<T> union_parameter_w;
194 std::vector<T> union_parameter_v;
200 std::vector<std::vector<int>> set_to_consensus_map;
206 void validateSetIndex(
int set_index,
const char* caller =
nullptr)
const;
241 CmapSurfaceUnion(
const double* surf_a,
const int* dim_a,
int nmap_a,
const double* surf_b,
242 const int* dim_b,
int nmap_b,
double match_tol = constants::small);
246 CmapSurfaceUnion(
const std::vector<double> &surf_a,
const std::vector<int> &dim_a,
247 const std::vector<double> &surf_b,
const std::vector<int> &dim_b,
248 double match_tol = constants::small);
250 CmapSurfaceUnion(
const std::vector<double> &surf_a,
const std::vector<int> &dim_a);
316 void addSet(
const double* surf_v,
const int* dim_v,
int nmap,
double tol = constants::small);
322 std::vector<double> surface_values;
324 std::vector<int> surface_dims;
326 std::vector<int> surface_bounds;
334 std::vector<std::vector<int>> set_to_consensus_map;
343 void populateByOneSet(
const double* surf_v,
const int* dim_v,
int nmap);
349 void validateParameterIndex(
int surf_index,
const char* caller)
const;
355 void validateSetIndex(
int set_index,
const char* caller)
const;
380 const std::vector<int> &bond_i_atoms_in = {},
381 const std::vector<int> &bond_j_atoms_in = {},
382 const std::vector<int> &bond_param_idx_in = {},
383 const std::vector<int> &angl_i_atoms_in = {},
384 const std::vector<int> &angl_j_atoms_in = {},
385 const std::vector<int> &angl_k_atoms_in = {},
386 const std::vector<int> &angl_param_idx_in = {},
387 const std::vector<int> &dihe_i_atoms_in = {},
388 const std::vector<int> &dihe_j_atoms_in = {},
389 const std::vector<int> &dihe_k_atoms_in = {},
390 const std::vector<int> &dihe_l_atoms_in = {},
391 const std::vector<int> &dihe_param_idx_in = {},
392 const std::vector<char4> &bond_mods_in = {},
393 const std::vector<char4> &angl_mods_in = {},
394 const std::vector<char4> &dihe_mods_in = {});
415 const std::vector<int> &atomic_numbers);
511 const std::vector<int> &ubrd_i_atoms_in = {},
512 const std::vector<int> &ubrd_k_atoms_in = {},
513 const std::vector<int> &ubrd_param_idx_in = {},
514 const std::vector<int> &impr_i_atoms_in = {},
515 const std::vector<int> &impr_j_atoms_in = {},
516 const std::vector<int> &impr_k_atoms_in = {},
517 const std::vector<int> &impr_l_atoms_in = {},
518 const std::vector<int> &impr_param_idx_in = {},
519 const std::vector<int> &cmap_i_atoms_in = {},
520 const std::vector<int> &cmap_j_atoms_in = {},
521 const std::vector<int> &cmap_k_atoms_in = {},
522 const std::vector<int> &cmap_l_atoms_in = {},
523 const std::vector<int> &cmap_m_atoms_in = {},
524 const std::vector<int> &cmap_param_idx_in = {});
535 std::vector<int> ubrd_i_atoms;
536 std::vector<int> ubrd_k_atoms;
537 std::vector<int> ubrd_param_idx;
538 std::vector<int> impr_i_atoms;
539 std::vector<int> impr_j_atoms;
540 std::vector<int> impr_k_atoms;
541 std::vector<int> impr_l_atoms;
542 std::vector<int> impr_param_idx;
543 std::vector<int> cmap_i_atoms;
544 std::vector<int> cmap_j_atoms;
545 std::vector<int> cmap_k_atoms;
546 std::vector<int> cmap_l_atoms;
547 std::vector<int> cmap_m_atoms;
548 std::vector<int> cmap_param_idx;
549 std::vector<int> ubrd_assigned_atoms;
550 std::vector<int> ubrd_assigned_index;
551 std::vector<int> ubrd_assigned_terms;
552 std::vector<int> ubrd_assigned_bounds;
553 std::vector<int> impr_assigned_atoms;
554 std::vector<int> impr_assigned_index;
555 std::vector<int> impr_assigned_terms;
556 std::vector<int> impr_assigned_bounds;
557 std::vector<int> cmap_assigned_atoms;
558 std::vector<int> cmap_assigned_index;
559 std::vector<int> cmap_assigned_terms;
560 std::vector<int> cmap_assigned_bounds;
610 int total_exclusions;
611 std::vector<int> atom_excl_bounds;
612 std::vector<int> atom_excl_list;
633 const std::vector<int> &frame_types_in,
const std::vector<int> &frame1_atoms_in,
634 const std::vector<int> &frame2_atoms_in,
635 const std::vector<int> &frame3_atoms_in,
636 const std::vector<int> &frame4_atoms_in,
const std::vector<int> ¶m_idx_in,
637 const std::vector<double> &frame_dim1_in,
638 const std::vector<double> &frame_dim2_in,
639 const std::vector<double> &frame_dim3_in);
686 Map1234(
int natom_in,
int nb11_count_in,
int nb12_count_in,
int nb13_count_in,
705 ExceptionResponse policy = ExceptionResponse::DIE);
708 ExceptionResponse policy = ExceptionResponse::DIE);
718 ExceptionResponse policy = ExceptionResponse::DIE);
721 ExceptionResponse policy = ExceptionResponse::DIE);
807 ConstraintTable(
const std::vector<int> &atomic_numbers,
const std::vector<double> &atomic_masses,
808 const std::vector<int> &mol_limits,
const std::vector<int> &mol_contents,
810 const Map1234 &all_nb_excl,
const std::vector<double> &bond_equilibria,
811 const std::vector<double> &angl_equilibria);
854 std::vector<SettleParm> settle_measurements;
890void smoothCharges(std::vector<double> *q, std::vector<double> *tmp_charge_parameters,
891 std::vector<int> *tmp_charge_indices,
int *charge_parameter_count,
892 double rounding_tol,
double precision,
893 const std::string &filename = std::string(
""));
912void expandLennardJonesTables(std::vector<double> *lj_a_values, std::vector<double> *lj_b_values,
913 std::vector<double> *lj_c_values,
914 std::vector<double> *lj_14_a_values,
915 std::vector<double> *lj_14_b_values,
916 std::vector<double> *lj_14_c_values,
917 std::vector<double> *hb_a_values, std::vector<double> *hb_b_values,
918 std::vector<double> *hb_c_values,
int n_lj_types,
919 const std::vector<int> &nb_param_index);
930 const std::vector<int> &raw_exclusions,
931 const std::string &file_name);
947int countPrmtopZeroExclusions(
const Map1234 nb_excl);
965BasicValenceTable basicValenceIndexing(
int atom_count,
const std::vector<int> &tmp_bond_atoms_h,
966 const std::vector<int> &tmp_bond_atoms_noh,
967 const std::vector<int> &tmp_angl_atoms_h,
968 const std::vector<int> &tmp_angl_atoms_noh,
969 const std::vector<int> &tmp_dihe_atoms_h,
970 const std::vector<int> &tmp_dihe_atoms_noh);
979CharmmValenceTable charmmValenceIndexing(
int atom_count,
const std::vector<int> &tmp_ub_atoms,
980 const std::vector<int> &tmp_charmm_impr_atoms,
981 const std::vector<int> &tmp_cmap_atoms);
997 const std::vector<double> &dihe_elec_screenings,
998 const std::vector<double> &dihe_vdw_screenings,
999 const double default_elec14_screening,
1000 const double default_vdw14_screening);
1022VirtualSiteTable listVirtualSites(
int expected_vsite_count,
const std::string &file_name,
1023 const std::vector<double> &tmp_masses,
1025 const std::vector<double> &tmp_bond_equilibria,
1026 const std::vector<double> &tmp_angl_equilibria,
1027 const std::vector<char4> &tmp_atom_types,
1028 const std::vector<char4> &tmp_atom_names,
1029 const std::vector<int> &vsite_custom_frames,
1030 const std::vector<double> &vsite_custom_details);
1040void accumulateExclusionBounds(std::vector<int> *current_bounds,
const int atom_a,
1041 const int atom_b,
const std::vector<int> &vsite_child_bounds,
1042 const std::vector<int> &vsite_child_list);
1051void markPairExclusion(std::vector<int> *excl_list, std::vector<int> *counters,
1052 const std::vector<int> &bounds,
const int atom_i,
const int atom_j);
1066void markExclusions(std::vector<int> *excl_list, std::vector<int> *excl_counters,
1067 const std::vector<int> &excl_bounds,
const int atom_a,
const int atom_b,
1068 const std::vector<int> &vsite_child_bounds,
1069 const std::vector<int> &vsite_child_list);
1076void cullDuplicateExclusions(std::vector<int> *excl_list, std::vector<int> *excl_bounds);
1086void cullPriorExclusions(std::vector<int> *excl_list, std::vector<int> *excl_bounds,
1087 const std::vector<int> &prior_list,
1088 const std::vector<int> &prior_bounds);
1112Map1234 mapExclusions(
int atom_count,
const std::vector<int> &vs_particles,
1113 const std::vector<int> &vs_parent_atoms,
1114 const std::vector<int> &bond_i_atoms,
const std::vector<int> &bond_j_atoms);
1128void exclusionSearchLoop(std::vector<int> &coverage,
const std::vector<int> &bounds,
1139 const std::string &file_name);
1160std::vector<int> atomicNumbersFromMasses(
const std::vector<double> &masses,
1161 const std::vector<char4> &atom_names,
1162 const std::vector<int> &nb12_list,
1163 const std::vector<int> &nb12_bounds,
1164 const std::string &source,
1165 const ExceptionResponse policy);
1174std::vector<int> traceBondedPatterns(
const Map1234 &all_nb_excl);
1198void mapMolecules(
const int atom_count,
int *molecule_count,
int *residue_count,
1199 const Map1234 &all_nb_excl, std::vector<int> *molecule_membership,
1200 std::vector<int> *molecule_limits, std::vector<int> *molecule_contents,
1201 std::vector<int> *residue_limits, std::vector<char4> *residue_names);
1210std::vector<double> cubicSplineDerivativeStencil(
const int npts);
1222 const std::vector<int> tmp_cmap_surf_dims,
1223 const std::vector<int> tmp_cmap_surf_bounds,
1224 const std::vector<double> tmp_cmap_surfaces);
1241std::vector<int3> checkDihedral14Coverage(
int atom_count,
const std::vector<int> &atomic_numbers,
1245 ExceptionResponse policy);
1254int reviewLargestResidue(
const std::vector<int> residue_limits,
int current_lr_size,
1255 ExceptionResponse policy);
1270std::vector<int> matchExtendedName(
const char4* overflow_names,
int n_overflow,
1271 const std::string &query,
1272 const std::vector<WildCardKind> &wildcards = {});
1291SettleParm getSettleParameters(
int ox_idx,
int h1_idx,
int h2_idx,
1292 const std::vector<double> &atomic_masses,
1293 const BasicValenceTable &bvt,
1294 const std::vector<double> &bond_equilibria,
1295 const std::vector<double> &angl_equilibria);
1300#include "atomgraph_refinement.tpp"
Unguarded struct to assemble the basic bond, angle, and dihedral indexing from an Amber or other topo...
Definition atomgraph_refinement.h:361
std::vector< int > angl_assigned_atoms
Definition atomgraph_refinement.h:456
std::vector< int > dihe_i_atoms
First atom in each cosine-based torsion term.
Definition atomgraph_refinement.h:433
std::vector< int > dihe_param_idx
Parameter index for each coside-based torsion term.
Definition atomgraph_refinement.h:437
std::vector< char4 > bond_mods
Definition atomgraph_refinement.h:438
std::vector< int > bond_j_atoms
Second atom of each bond term.
Definition atomgraph_refinement.h:427
std::vector< int > dihe_l_atoms
Fourth atom in each cosine-based torsion term.
Definition atomgraph_refinement.h:436
int total_dihes
Definition atomgraph_refinement.h:424
std::vector< char4 > dihe_mods
Definition atomgraph_refinement.h:441
int total_angls
Total number of harmonic angle terms in the topology.
Definition atomgraph_refinement.h:423
std::vector< int > dihe_assigned_index
Parameter indices relevant to torsion assignments.
Definition atomgraph_refinement.h:470
std::vector< int > bond_assigned_terms
Bond term indices relevant to bond assignments.
Definition atomgraph_refinement.h:452
std::vector< int > dihe_j_atoms
Second atom in each cosine-based torsion term.
Definition atomgraph_refinement.h:434
std::vector< char4 > angl_mods
Notes on each harmonic angle term.
Definition atomgraph_refinement.h:440
int total_bonds
Total number of harmonic bond terms in the topology.
Definition atomgraph_refinement.h:422
std::vector< int > angl_k_atoms
Third atom of each harmonic angle term.
Definition atomgraph_refinement.h:431
std::vector< char4 > dihe_assigned_mods
Notes on torsions assigned to each atom.
Definition atomgraph_refinement.h:477
std::vector< int > dihe_assigned_bounds
Definition atomgraph_refinement.h:472
std::vector< int > dihe_assigned_atoms
Definition atomgraph_refinement.h:467
std::vector< int > bond_assigned_index
Parameter indices relevant to bond assignments.
Definition atomgraph_refinement.h:451
std::vector< int > bond_i_atoms
First atom of each bond term.
Definition atomgraph_refinement.h:426
BasicValenceTable()
The constructor simply allocates memory, if dimensions are available.
Definition atomgraph_refinement.cpp:252
std::vector< int > angl_j_atoms
Second atom of each harmonic angle term.
Definition atomgraph_refinement.h:430
std::vector< int > bond_assigned_atoms
Definition atomgraph_refinement.h:443
std::vector< int > angl_assigned_bounds
Definition atomgraph_refinement.h:465
void makeAtomAssignments()
Populate the atom assignments for this object. This can only be called once the Atom index arrays hav...
Definition atomgraph_refinement.cpp:428
std::vector< uint > bond_relevance
Definition atomgraph_refinement.h:478
std::vector< char4 > angl_assigned_mods
Notes on angles assigned to each atom.
Definition atomgraph_refinement.h:476
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 irrelevan...
Definition atomgraph_refinement.cpp:362
std::vector< int > angl_assigned_terms
Angle term indices relevant to angle assignments.
Definition atomgraph_refinement.h:464
std::vector< int > angl_assigned_index
Parameter indices relevant to angle assignments.
Definition atomgraph_refinement.h:463
std::vector< char4 > bond_assigned_mods
Definition atomgraph_refinement.h:474
std::vector< int > dihe_assigned_terms
Torsion term indices relevant to torsion assignments.
Definition atomgraph_refinement.h:471
std::vector< int > angl_i_atoms
First atom of each harmonic angle term.
Definition atomgraph_refinement.h:429
std::vector< uint > angl_relevance
Definition atomgraph_refinement.h:483
std::vector< int > bond_assigned_bounds
Definition atomgraph_refinement.h:453
std::vector< int > dihe_k_atoms
Third atom in each cosine-based torsion term.
Definition atomgraph_refinement.h:435
std::vector< int > bond_param_idx
Parameter index for each bond term.
Definition atomgraph_refinement.h:428
std::vector< int > angl_param_idx
Parameter index for each harmonic angle term.
Definition atomgraph_refinement.h:432
Unguarded struct to assemble special "CHARMM" force field terms read from an Amber or other topology ...
Definition atomgraph_refinement.h:492
void makeAtomAssignments()
Populate the atom assignments for this object. This can only be called once the Atom index arrays hav...
Definition atomgraph_refinement.cpp:595
CharmmValenceTable()
The constructor simply allocates memory, if dimensions are available.
Definition atomgraph_refinement.cpp:492
const std::vector< double > & getAllSurfaces() const
Get a vector of all surfaces in the union.
Definition atomgraph_refinement.cpp:115
const std::vector< int > & getSurfaceDimensions() const
Get the dimension of one or all surfaces in the consensus parameter set. Each CMAP surface is assumed...
Definition atomgraph_refinement.cpp:120
int getContributingTopologyCount() const
Get the number of contributing topologies.
Definition atomgraph_refinement.cpp:98
int getUniqueSurfaceCount() const
Get the number of unique CMAP surfaces.
Definition atomgraph_refinement.cpp:93
CmapSurfaceUnion()
Rather than take ValenceKit abstracts and introduce a dependency on atomgraph_abstracts....
Definition atomgraph_refinement.cpp:42
CmapSurfaceUnion(const CmapSurfaceUnion &orig)=default
With only Standard Template Library elements for arrays and scalar member variables otherwise,...
void addSet(const double *surf_v, const int *dim_v, int nmap, double tol=constants::small)
Add another set of CMAP terms to the union.
Definition atomgraph_refinement.cpp:149
std::vector< double > getCmapSurface(int surf_index) const
Get a CMAP surface based on its index in the consensus parameter set.
Definition atomgraph_refinement.cpp:103
const std::vector< int > & getCorrespondence(int set_index) const
Access the CMAP surface parameter index correspondence for a particular input set (input sets will,...
Definition atomgraph_refinement.cpp:131
Another unguarded class to help in the construction of an AtomGraph's categorized non-bonded exclusio...
Definition atomgraph_refinement.h:670
std::vector< int > nb11_excl_bounds
Definition atomgraph_refinement.h:724
std::vector< int > nb12_excl_bounds
Bond exclusion bounds list for each atom.
Definition atomgraph_refinement.h:727
std::vector< int > nb13_excl_list
Bond angle exclusions (double-counts all exclusions)
Definition atomgraph_refinement.h:730
void addExclusions(const std::vector< int3 > &plus_excl, ExceptionResponse policy=ExceptionResponse::DIE)
A means to add exclusions to the object post-hoc, after construction.
Definition atomgraph_refinement.cpp:750
std::vector< int > nb14_excl_bounds
1:4 exclusions bounds list for each atom
Definition atomgraph_refinement.h:731
Map1234()
The constructor simply allocates memory, if dimensions are available.
Definition atomgraph_refinement.cpp:729
std::vector< int > nb11_excl_list
1:1 exclusions list (double-counts all exclusions)
Definition atomgraph_refinement.h:726
void removeExclusions(const std::vector< int3 > &minus_excl, ExceptionResponse policy=ExceptionResponse::DIE)
A means to remove exclusions from the object post-hoc, after construction. Overloading and descriptio...
Definition atomgraph_refinement.cpp:991
std::vector< int > nb12_excl_list
Bonded exclusions (double-counts all exclusions)
Definition atomgraph_refinement.h:728
std::vector< int > nb13_excl_bounds
Bond angle exclusion bounds list for each atom.
Definition atomgraph_refinement.h:729
std::vector< int > nb14_excl_list
1:4 exclusions (double-counts all exclusions)
Definition atomgraph_refinement.h:732
int getInputSetParameterCount(int set_index) const
Get the number of parameters in one of the input sets.
int getUniqueParameterCount() const
Get the number of unique parameter sets.
void addSet(const T *comp_x, const T *comp_y, const T *comp_z, const T *comp_w, const T *comp_v, int nparm, double tol=constants::small)
Add a set of parameters to the existing union.
const std::vector< int > & getCorrespondence(int set_index) const
Get the correspondence between the input parameter sets and the consensus tables within the object.
std::vector< T > getUnion(int comp_idx) const
Get the union of one of the parameter components.
ParameterUnion(const ParameterUnion &original)=default
The default copy and move constructors as well as assignment operators are all valid,...
ParameterUnion(const T *comp_xa, const T *comp_ya, const T *comp_za, const T *comp_wa, const T *comp_va, int aparam_count, const T *comp_xb, const T *comp_yb, const T *comp_zb, const T *comp_wb, const T *comp_vb, int bparam_count, double match_tol=constants::small)
The constructor takes the parameters for each of two parameter sets one array at a time.
Definition stormm_vector_types.h:141
CmapAccessories()
The constructor simply allocates memory, if dimensions are available.
Definition atomgraph_refinement.cpp:1213
Unguarded struct to handle 1:4 attenuated interactions that are not explicitly handled by the short-r...
Definition atomgraph_refinement.h:860
int atom_j
The first atom in the pair (could have been atom L in some dihedral)
Definition atomgraph_refinement.h:862
double lj_scaling
Scaling factor for van-der Waals interactions.
Definition atomgraph_refinement.h:863
int atom_i
The first atom in the pair (could have been atom I in some dihedral)
Definition atomgraph_refinement.h:861
double elec_scaling
Scaling factor for electrostatic interactions.
Definition atomgraph_refinement.h:864
Unguarded struct to stage 1:4 exclusion screening terms. This will translate a series of unique dihed...
Definition atomgraph_refinement.h:572
std::vector< double > elec_screening_factors
Condensed 1:4 electrostatic attenuation factors.
Definition atomgraph_refinement.h:586
std::vector< double > vdw_screening_factors
Condensed 1:4 van-der Waals attenuation factors.
Definition atomgraph_refinement.h:587
AttenuationParameterSet(int set_count_in=0)
The constructor simply allocates memory, if dimensions are available.
Definition atomgraph_refinement.cpp:657
int total_14_sets
Total number of unique 1:4 scaling factor pairs.
Definition atomgraph_refinement.h:579
std::vector< int > dihe14_parameter_indices
Definition atomgraph_refinement.h:580
Unguarded struct to hold refined quantities associated with CMAP objects.
Definition atomgraph_refinement.h:736
std::vector< double > phi_psi_derivatives
Cross derivatives at all grid points.
Definition atomgraph_refinement.h:752
std::vector< double > psi_derivatives
First derivatives along the CMAP's second axis.
Definition atomgraph_refinement.h:751
CmapAccessories()
The constructor simply allocates memory, if dimensions are available.
Definition atomgraph_refinement.cpp:1213
std::vector< double > phi_derivatives
First derivatives along the CMAP's first axis.
Definition atomgraph_refinement.h:750
std::vector< double > patch_matrix_form
Definition atomgraph_refinement.h:755
std::vector< int > patch_matrix_bounds
Definition atomgraph_refinement.h:753
Unguarded struct to condense the atom exclusion lists read from an Amber topology....
Definition atomgraph_refinement.h:595
CondensedExclusions()
The constructor simply allocates memory, if dimensions are available.
Definition atomgraph_refinement.cpp:667
std::vector< int > cnst_group_bounds
Bounds array for cnst_group_list.
Definition atomgraph_refinement.h:828
std::vector< int > cnst_group_list
Concatenated list of atoms in all constraint groups.
Definition atomgraph_refinement.h:827
std::vector< int > settle_h2_atoms
Definition atomgraph_refinement.h:837
int settle_group_count
Number of SETTLE-suitable fast rigid waters found.
Definition atomgraph_refinement.h:814
std::vector< int > settle_h1_atoms
Definition atomgraph_refinement.h:835
std::vector< int > settle_ox_atoms
Definition atomgraph_refinement.h:831
int cnst_parameter_count
Definition atomgraph_refinement.h:815
std::vector< int > cnst_group_param_idx
Definition atomgraph_refinement.h:829
int settle_parameter_count
Definition atomgraph_refinement.h:823
std::vector< int > cnst_parameter_bounds
Bounds array for constraint_group_parameters.
Definition atomgraph_refinement.h:851
std::vector< int > settle_param_idx
Definition atomgraph_refinement.h:839
ConstraintTable(const std::vector< int > &atomic_numbers, const std::vector< double > &atomic_masses, const std::vector< int > &mol_limits, const std::vector< int > &mol_contents, const std::vector< int > &mol_home, const BasicValenceTable &bvt, const Map1234 &all_nb_excl, const std::vector< double > &bond_equilibria, const std::vector< double > &angl_equilibria)
The constructor handles all allocations based on its input arguments.
Definition atomgraph_refinement.cpp:1235
std::vector< double2 > cnst_parameter_list
Definition atomgraph_refinement.h:848
int cnst_group_count
Number of constraint groups found.
Definition atomgraph_refinement.h:813
Encapsulate the six derived parameters for SETTLE computations. A vector of these structs will be acc...
Definition atomgraph_refinement.h:774
double mormt
Proportional mass of the "oxygen" atoms in a SETTLE group.
Definition atomgraph_refinement.h:778
double mh
Mass of the light "hydrogen" atoms in a SETTLE group.
Definition atomgraph_refinement.h:776
double moh
Combined mass of the heavy and one of the light atoms in a SETTLE group.
Definition atomgraph_refinement.h:777
double rc
Definition atomgraph_refinement.h:783
double mhrmt
Proportional mass of "hydrogen" atoms in a SETTLE group.
Definition atomgraph_refinement.h:779
double rb
Definition atomgraph_refinement.h:781
double mo
Mass of the heavy "oxygen" atoms in a SETTLE group.
Definition atomgraph_refinement.h:775
double ra
Internal distance measurement (heavy atom - center of mass) of a SETTLE group.
Definition atomgraph_refinement.h:780
Unguarded struct to collect information about virtual sites in the topology.
Definition atomgraph_refinement.h:616
std::vector< double > frame_dim2
Second frame dimension.
Definition atomgraph_refinement.h:664
VirtualSiteTable()
The constructor simply allocates memory, if dimensions are available.
Definition atomgraph_refinement.cpp:681
std::vector< int > vs_numbers
Definition atomgraph_refinement.h:643
std::vector< int > frame4_atoms
Fourth frame atoms (for the most complex frame type)
Definition atomgraph_refinement.h:658
std::vector< int > frame1_atoms
Parent atoms.
Definition atomgraph_refinement.h:655
std::vector< int > frame_types
Frame types for each virtual site.
Definition atomgraph_refinement.h:654
std::vector< double > frame_dim3
Third frame dimension.
Definition atomgraph_refinement.h:665
int vs_count
Number of virtual sites found, a check on the topology.
Definition atomgraph_refinement.h:642
std::vector< int > frame2_atoms
Second frame atoms.
Definition atomgraph_refinement.h:656
std::vector< int > frame3_atoms
Third frame atoms (for some sites)
Definition atomgraph_refinement.h:657
std::vector< int > vs_atoms
Definition atomgraph_refinement.h:650
std::vector< double > frame_dim1
First frame dimension, i.e. distance from VS to parent.
Definition atomgraph_refinement.h:663
std::vector< int > param_idx
Definition atomgraph_refinement.h:659