2#ifndef STORMM_FORCEFIELD_ELEMENT_H
3#define STORMM_FORCEFIELD_ELEMENT_H
7#include "Constants/behavior.h"
8#include "DataTypes/stormm_vector_types.h"
9#include "Topology/atomgraph.h"
10#include "Topology/atomgraph_enumerators.h"
11#include "forcefield_enumerators.h"
16using constants::ExceptionResponse;
17using topology::AtomGraph;
18using topology::TorsionKind;
19using topology::VirtualSiteKind;
59 char4 atom_l_in, TorsionKind tkind_in = TorsionKind::PROPER);
77 const std::vector<double> &surface_in,
const std::vector<int2> &locations_in);
194 void setRho(
double rho_in);
200 void apply(
AtomGraph *ag, ExceptionResponse policy = ExceptionResponse::SILENT)
const;
214 char4 residue_name_i;
216 char4 residue_name_j;
218 char4 residue_name_k;
220 char4 residue_name_l;
222 char4 residue_name_m;
242 TorsionKind torsion_kind;
243 std::vector<double> surface;
244 std::vector<int2> locations;
245 VirtualSiteKind frame_type;
bool testEpsilonModification() const
Test whether the epsilon value of a van-der Waals parameter is being modified.
Definition forcefield_element.cpp:960
void setEquilibrium(double equilbrium_in)
Set the equilibrium property of one of the valence terms.
Definition forcefield_element.cpp:1141
double getCharge() const
Get the charge of an atom with a given atom name and residue nam.
Definition forcefield_element.cpp:604
double getElectrostaticScaling() const
Get the electrostatic scaling factor for an attenuated 1:4 non-bonded interaction.
Definition forcefield_element.cpp:806
bool testStiffnessModification() const
Test whether the stiffness constant of a valence parameter is being modified.
Definition forcefield_element.cpp:1004
double getStiffnessConstant() const
Get the stiffness constant of a bond, angle, Urey-Bradley, or CHARMM improper term.
Definition forcefield_element.cpp:692
double getPhaseAngle() const
Get the phase angle of a cosine-based dihedral or CHARMM improper dihedral term.
Definition forcefield_element.cpp:762
void setEpsilon(double epsilon_in)
Set the epsilon parameter of an atom.
Definition forcefield_element.cpp:1328
ParameterKind getKind() const
Get the force field parameter kind.
Definition forcefield_element.cpp:336
void setSigma(double sigma_in)
Set the sigma parameter of an atom.
Definition forcefield_element.cpp:1305
VirtualSiteKind getVirtualSiteFrameType() const
Get the virtual site frame type.
Definition forcefield_element.cpp:916
std::vector< int2 > getSurfaceIndices() const
Get the locations of point edits on a CMAP term's energy surface.
Definition forcefield_element.cpp:894
void setPhaseAngle(double phase_angle_in)
Set the phase angle property of one of the valence terms.
Definition forcefield_element.cpp:1167
double getVanDerWaalsScaling() const
Get the van-der Waals scaling factor for an attenuated 1:4 non-bonded interaction.
Definition forcefield_element.cpp:828
char4 getNameOfAtom(char atom_rank='I') const
Get the atom name of the I atom in the term.
Definition forcefield_element.cpp:341
char4 getNameOfResidue(char atom_rank='I') const
Get the resiude name of atom I in the term.
Definition forcefield_element.cpp:518
void setChargeScaling(double scaling_in)
Set the electrostatic scaling factor for an attenuated 1:4 interaction.
Definition forcefield_element.cpp:1236
bool testPeriodicityModification() const
Test whether the periodicity of a dihedral parameter is being modified.
Definition forcefield_element.cpp:1096
double getSigma() const
Get the Lennard-Jones sigma parameter of an atom.
Definition forcefield_element.cpp:626
TorsionKind getTorsionKind() const
Get the torsion kind, indicating whether these four atoms describe a proper or improper torsion inter...
Definition forcefield_element.cpp:850
double getRho() const
Get the Lennard-Jones rho parameter of an atom (the third parameter, for 12-6-4 potentials)
Definition forcefield_element.cpp:670
void setRho(double rho_in)
Set the rho parameter of an atom.
Definition forcefield_element.cpp:1351
bool testRhoModification() const
Test whether the rho value of a van-der Waals parameter is being modified.
Definition forcefield_element.cpp:982
void setStiffness(double stiffness_in)
Set the stiffness property of one of the valence terms.
Definition forcefield_element.cpp:1118
double getEquilibriumConstant() const
Get the equilibrium constant of a bond, angle, or Urey-Bradley term.
Definition forcefield_element.cpp:718
void setCharge(double charge_in)
Set the charge parameter of an atom.
Definition forcefield_element.cpp:1282
bool testPhaseAngleModification() const
Test whether the phase angle of a dihedral or improper dihedral is being modified.
Definition forcefield_element.cpp:1074
bool testEquilibriumModification() const
Test whether the equilibrium constant of a valence parameter is being modified.
Definition forcefield_element.cpp:1030
bool testSigmaModification() const
Test whether the sigma value of a van-der Waals parameter is being modified.
Definition forcefield_element.cpp:938
double getPeriodicity() const
Get the periodicity of a cosine-based dihedral term.
Definition forcefield_element.cpp:784
void setAmplitude(double amplitude_in)
Set the amplitude of a cosine-based dihedral term.
Definition forcefield_element.cpp:1190
void setPeriodicity(double periodicity_in)
Set the periodicity of a cosine-based dihedral term.
Definition forcefield_element.cpp:1213
double getEpsilon() const
Get the Lennard-Jones epsilon parameter of an atom.
Definition forcefield_element.cpp:648
ForceFieldElement(ParameterKind kind_in=ParameterKind::NONE)
A variety of constructors can load one or more atoms and their properties.
Definition forcefield_element.cpp:13
void setVanDerWaalsScaling(double scaling_in)
Set the van-der Waals scaling factor for an attenuated 1:4 interaction.
Definition forcefield_element.cpp:1259
double getAmplitude() const
Get the amplitude of a cosine-based dihedral term.
Definition forcefield_element.cpp:740
bool testAmplitudeModification() const
Test whether the amplitude of a dihedral parameter is being modified.
Definition forcefield_element.cpp:1052
char4 getTypeOfAtom(char atom_rank='I') const
Get the atom type of atom I in the term.
Definition forcefield_element.cpp:427
void apply(AtomGraph *ag, ExceptionResponse policy=ExceptionResponse::SILENT) const
Apply these force field parameters to any terms found in a specific topology.
Definition forcefield_element.cpp:1374
std::vector< double > getSurfaceValues() const
Get the surface value edits associated with a CMAP term.
Definition forcefield_element.cpp:872
A struct to hold information relating to an Amber topology. This struct's member functions are limite...
Definition atomgraph.h:50
Definition stormm_vector_types.h:141