Chemical Data Processing Library Python API - Version 1.2.0
Classes | Functions
CDPL.ForceField Package Reference

Contains classes and functions related to molecular force fields. More...

Classes

class  AtomProperty
 Provides keys for built-in Chem.Atom properties. More...
 
class  BondProperty
 Provides keys for built-in Chem.Bond properties. More...
 
class  ElasticPotential
 
class  ElasticPotentialList
 
class  Error
 
class  InteractionFilterFunction2
 
class  InteractionFilterFunction3
 
class  InteractionFilterFunction4
 
class  InteractionType
 Provides flags for the specification of a set of force field interaction types. More...
 
class  MMFF94AngleBendingInteraction
 
class  MMFF94AngleBendingInteractionList
 
class  MMFF94AngleBendingInteractionParameterizer
 
class  MMFF94AngleBendingParameterTable
 
class  MMFF94AromaticAtomTypeDefinitionTable
 
class  MMFF94AromaticSSSRSubset
 Implements the extraction of all rings in the SSSR of a molecular graph that are aromatic according to MMFF94 conventions. More...
 
class  MMFF94AtomChargeFunction
 A generic wrapper class used to store a user-defined MMFF94 partial atom charge function. More...
 
class  MMFF94AtomTypePropertyTable
 
class  MMFF94AtomTyper
 
class  MMFF94BondChargeIncrementTable
 
class  MMFF94BondStretchingInteraction
 
class  MMFF94BondStretchingInteractionList
 
class  MMFF94BondStretchingInteractionParameterizer
 
class  MMFF94BondStretchingParameterTable
 
class  MMFF94BondStretchingRuleParameterTable
 
class  MMFF94BondTypeIndexFunction
 A generic wrapper class used to store a user-defined MMFF94 bond type index function. More...
 
class  MMFF94BondTyper
 
class  MMFF94ChargeCalculator
 
class  MMFF94DefaultStretchBendParameterTable
 
class  MMFF94ElectrostaticInteraction
 
class  MMFF94ElectrostaticInteractionList
 
class  MMFF94ElectrostaticInteractionParameterizer
 
class  MMFF94EnergyCalculator
 
class  MMFF94FormalAtomChargeDefinitionTable
 
class  MMFF94GradientCalculator
 
class  MMFF94HeavyToHydrogenAtomTypeMap
 
class  MMFF94InteractionData
 
class  MMFF94InteractionParameterizer
 
class  MMFF94NumericAtomTypeFunction
 A generic wrapper class used to store a user-defined numeric MMFF94 atom type function. More...
 
class  MMFF94OutOfPlaneBendingInteraction
 
class  MMFF94OutOfPlaneBendingInteractionList
 
class  MMFF94OutOfPlaneBendingInteractionParameterizer
 
class  MMFF94OutOfPlaneBendingParameterTable
 
class  MMFF94ParameterSet
 Provides flags for the specification of the MMFF94 parameter set to use. More...
 
class  MMFF94PartialBondChargeIncrementTable
 
class  MMFF94PrimaryToParameterAtomTypeMap
 
class  MMFF94RingSetFunction
 A generic wrapper class used to store a user-defined MMFF94 ring set function. More...
 
class  MMFF94StretchBendInteraction
 
class  MMFF94StretchBendInteractionList
 
class  MMFF94StretchBendInteractionParameterizer
 
class  MMFF94StretchBendParameterTable
 
class  MMFF94SymbolicAtomTypeFunction
 A generic wrapper class used to store a user-defined symbolic MMFF94 atom type function. More...
 
class  MMFF94SymbolicAtomTypePatternTable
 
class  MMFF94SymbolicToNumericAtomTypeMap
 
class  MMFF94TorsionInteraction
 
class  MMFF94TorsionInteractionList
 
class  MMFF94TorsionInteractionParameterizer
 
class  MMFF94TorsionParameterTable
 
class  MMFF94VanDerWaalsAtomParameters
 
class  MMFF94VanDerWaalsInteraction
 
class  MMFF94VanDerWaalsInteractionList
 
class  MMFF94VanDerWaalsInteractionParameterizer
 
class  MMFF94VanDerWaalsParameterTable
 
class  MolecularGraphProperty
 Provides keys for built-in Chem.MolecularGraph properties. More...
 
class  ParameterizationFailed
 
class  TopologicalAtomDistanceFunction
 A generic wrapper class used to store a user-defined topological atom-pair distance function. More...
 
class  UFFAtomType
 Provides constants for the specification of Universal Force Field (UFF) atom types. More...
 
class  UFFAtomTypePropertyTable
 

Functions

None clearMMFF94Charge (Chem.Atom atom)
 
bool hasMMFF94Charge (Chem.Atom atom)
 
float getMMFF94Charge (Chem.Atom atom)
 
None setMMFF94Charge (Chem.Atom atom, float charge)
 
int perceiveUFFType (Chem.Atom atom, Chem.MolecularGraph molgraph)
 
None clearUFFType (Chem.Atom atom)
 
bool hasUFFType (Chem.Atom atom)
 
int getUFFType (Chem.Atom atom)
 
None setUFFType (Chem.Atom atom, int type)
 
None clearMMFF94SymbolicType (Chem.Atom atom)
 
bool hasMMFF94SymbolicType (Chem.Atom atom)
 
str getMMFF94SymbolicType (Chem.Atom atom)
 
None setMMFF94SymbolicType (Chem.Atom atom, str type)
 
None clearMMFF94NumericType (Chem.Atom atom)
 
bool hasMMFF94NumericType (Chem.Atom atom)
 
int getMMFF94NumericType (Chem.Atom atom)
 
None setMMFF94NumericType (Chem.Atom atom, int type)
 
None clearMMFF94TypeIndex (Chem.Bond bond)
 
bool hasMMFF94TypeIndex (Chem.Bond bond)
 
int getMMFF94TypeIndex (Chem.Bond bond)
 
None setMMFF94TypeIndex (Chem.Bond bond, int type_idx)
 
float calcElasticPotentialGradient (ElasticPotentialList list, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcElasticPotentialEnergy (ElasticPotentialList list, Math.Vector3DArray coords)
 
float calcElasticPotentialGradient (ElasticPotential pot, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcElasticPotentialEnergy (ElasticPotential pot, Math.Vector3DArray coords)
 
float calcMMFF94AngleBendingGradient (MMFF94AngleBendingInteractionList ia_list, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94AngleBendingEnergy (MMFF94AngleBendingInteractionList ia_list, Math.Vector3DArray coords)
 
float calcMMFF94AngleBendingGradient (MMFF94AngleBendingInteraction iaction, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94AngleBendingEnergy (MMFF94AngleBendingInteraction iaction, Math.Vector3DArray coords)
 
float calcMMFF94BondStretchingGradient (MMFF94BondStretchingInteractionList ia_list, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94BondStretchingEnergy (MMFF94BondStretchingInteractionList ia_list, Math.Vector3DArray coords)
 
float calcMMFF94BondStretchingGradient (MMFF94BondStretchingInteraction iaction, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94BondStretchingEnergy (MMFF94BondStretchingInteraction iaction, Math.Vector3DArray coords)
 
float calcMMFF94ElectrostaticGradient (MMFF94ElectrostaticInteractionList ia_list, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94ElectrostaticEnergy (MMFF94ElectrostaticInteractionList ia_list, Math.Vector3DArray coords)
 
float calcMMFF94ElectrostaticGradient (MMFF94ElectrostaticInteraction iaction, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94ElectrostaticEnergy (MMFF94ElectrostaticInteraction iaction, Math.Vector3DArray coords)
 
None filterInteractions (MMFF94InteractionData ia_data, MMFF94InteractionData filtered_ia_data, Util.BitSet inc_atom_mask)
 
float calcMMFF94OutOfPlaneBendingGradient (MMFF94OutOfPlaneBendingInteractionList ia_list, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94OutOfPlaneBendingEnergy (MMFF94OutOfPlaneBendingInteractionList ia_list, Math.Vector3DArray coords)
 
float calcMMFF94OutOfPlaneBendingGradient (MMFF94OutOfPlaneBendingInteraction iaction, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94OutOfPlaneBendingEnergy (MMFF94OutOfPlaneBendingInteraction iaction, Math.Vector3DArray coords)
 
float calcMMFF94StretchBendGradient (MMFF94StretchBendInteractionList ia_list, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94StretchBendEnergy (MMFF94StretchBendInteractionList ia_list, Math.Vector3DArray coords)
 
float calcMMFF94StretchBendGradient (MMFF94StretchBendInteraction iaction, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94StretchBendEnergy (MMFF94StretchBendInteraction iaction, Math.Vector3DArray coords)
 
float calcMMFF94TorsionGradient (MMFF94TorsionInteractionList ia_list, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94TorsionEnergy (MMFF94TorsionInteractionList ia_list, Math.Vector3DArray coords)
 
float calcMMFF94TorsionGradient (MMFF94TorsionInteraction iaction, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94TorsionEnergy (MMFF94TorsionInteraction iaction, Math.Vector3DArray coords)
 
float calcMMFF94VanDerWaalsGradient (MMFF94VanDerWaalsInteractionList ia_list, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94VanDerWaalsEnergy (MMFF94VanDerWaalsInteractionList ia_list, Math.Vector3DArray coords)
 
float calcMMFF94VanDerWaalsGradient (MMFF94VanDerWaalsInteraction iaction, Math.Vector3DArray coords, Math.Vector3DArray grad)
 
float calcMMFF94VanDerWaalsEnergy (MMFF94VanDerWaalsInteraction iaction, Math.Vector3DArray coords)
 
None assignMMFF94BondTypeIndices (Chem.MolecularGraph molgraph, bool strict, bool overwrite)
 
None calcMMFF94AtomCharges (Chem.MolecularGraph molgraph, bool strict, bool overwrite)
 
None assignMMFF94AtomTypes (Chem.MolecularGraph molgraph, bool strict, bool overwrite)
 
None assignUFFAtomTypes (Chem.MolecularGraph molgraph, bool overwrite)
 
Chem.FragmentList perceiveMMFF94AromaticRings (Chem.MolecularGraph molgraph)
 
Chem.FragmentList perceiveMMFF94AromaticRings (Chem.MolecularGraph molgraph, bool overwrite)
 
None clearMMFF94AromaticRings (Chem.MolecularGraph molgraph)
 
bool hasMMFF94AromaticRings (Chem.MolecularGraph molgraph)
 
Chem.FragmentList getMMFF94AromaticRings (Chem.MolecularGraph molgraph)
 
None setMMFF94AromaticRings (Chem.MolecularGraph molgraph, Chem.FragmentList rings)
 
float calcDistance (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos)
 Calculates the distance \( r_{ij} \) between two atoms i and j. More...
 
float calcSquaredDistance (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos)
 Calculates the squared distance \( r_{ij}^2 \) between two atoms i and j. More...
 
tuple calcBondLengthsAndAngle (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos)
 
float calcBondAngle (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, float r_ij, float r_jk)
 Calculates the bond angle \( \vartheta_{ijk} \) between the two bonds i-j and j-k. More...
 
float calcBondAngle (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos)
 Calculates the bond angle \( \vartheta_{ijk} \) between the two bonds i-j and j-k. More...
 
float calcOutOfPlaneAngle (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, Math.Vector3D oop_atom_pos, float r_jl)
 Calculates the out-of-plane angle \( \chi_{ijk;l} \) between the bond j-l and the plane defined by the atoms i-j-k. More...
 
float calcDistanceDerivatives (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos, Math.Vector3D atom1_deriv, Math.Vector3D atom2_deriv)
 Calculates the partial derivatives \( \frac{\partial r_{ij}}{\partial \vec{p_x}} \) of the distance \( r_{ij} \) between two atoms i and j. More...
 
float calcBondAngleCosDerivatives (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, Math.Vector3D term_atom1_deriv, Math.Vector3D ctr_atom_deriv, Math.Vector3D term_atom2_deriv)
 Calculates the partial derivatives \( \frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_x}} \) of the of the cosine of the angle \( \vartheta_{ijk} \) between the bonds i-j and j-k. More...
 
float calcOutOfPlaneAngleCosDerivatives (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, Math.Vector3D oop_atom_pos, Math.Vector3D term_atom1_deriv, Math.Vector3D ctr_atom_deriv, Math.Vector3D term_atom2_deriv, Math.Vector3D oop_atom_deriv)
 Calculates the partial derivatives \( \frac{\partial \cos(\omega_{ijk;l})}{\partial \vec{p_x}} \) of the cosine of the angle \( \omega_{ijk;l} \) between the bond j-l and the normal of the plane defined by the atoms i-j-k. More...
 
float calcDihedralAngleCosDerivatives (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom1_pos, Math.Vector3D ctr_atom2_pos, Math.Vector3D term_atom2_pos, Math.Vector3D term_atom1_deriv, Math.Vector3D ctr_atom1_deriv, Math.Vector3D ctr_atom2_deriv, Math.Vector3D term_atom2_deriv)
 Calculates the partial derivatives \( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_x}} \) of the cosine of the angle \( \Phi_{ijkl} \) between the planes defined by the atom triplets i-j-k and j-k-l. More...
 
tuple calcBondLengthsAndAngleCos (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos)
 
float calcBondAngleCos (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, float r_ij, float r_jk)
 Calculates the cosine of the bond angle \( \vartheta_{ijk} \) between the two bonds i-j and j-k. More...
 
float calcBondAngleCos (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos)
 Calculates the cosine of the bond angle \( \vartheta_{ijk} \) between the two bonds i-j and j-k. More...
 
float calcDihedralAngleCos (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom1_pos, Math.Vector3D ctr_atom2_pos, Math.Vector3D term_atom2_pos)
 Calculates the cosine of the dihedral angle \( \Phi_{ijkl} \) between the planes defined by the atom triplets i-j-k and j-k-l. More...
 
float calcMMFF94ElectrostaticGradient (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos, Math.Vector3D atom1_grad, Math.Vector3D atom2_grad, float atom1_chg, float atom2_chg, float scale_fact, float de_const, float dist_expo)
 Calculates the electrostatic interaction energy gradient \( \nabla EQ_{ij} \) for the atom pair i-j. More...
 
float calcMMFF94StretchBendGradient (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, Math.Vector3D term_atom1_grad, Math.Vector3D ctr_atom_grad, Math.Vector3D term_atom2_grad, float ijk_force_const, float kji_force_const, float ref_angle, float ref_length1, float ref_length2)
 Calculates the stretch-bend interaction energy gradient \( \nabla EBA_{ijk} \) for two bonds i-j and j-k. More...
 
float calcMMFF94AngleBendingGradient (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, Math.Vector3D term_atom1_grad, Math.Vector3D ctr_atom_grad, Math.Vector3D term_atom2_grad, bool linear, float force_const, float ref_angle)
 Calculates the angle bending interaction energy gradient \( \nabla EA_{ijk} \) for two bonds i-j and j-k. More...
 
float calcMMFF94OutOfPlaneBendingGradient (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, Math.Vector3D oop_atom_pos, Math.Vector3D term_atom1_grad, Math.Vector3D ctr_atom_grad, Math.Vector3D term_atom2_grad, Math.Vector3D oop_atom_grad, float force_const)
 Calculates the out-of-plane bending interaction energy gradient \( \nabla EOOP_{ijk;l} \) for the bond j-l and the plane i-j-k. More...
 
float calcMMFF94BondStretchingGradient (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos, Math.Vector3D atom1_grad, Math.Vector3D atom2_grad, float force_const, float ref_length)
 Calculates the bond stretching interaction energy gradient \( \nabla EB_{ij} \) for the bond i-j. More...
 
float calcElasticPotentialGradient (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos, Math.Vector3D atom1_grad, Math.Vector3D atom2_grad, float force_const, float ref_length)
 Calculates the elastic potential energy gradient \( \nabla E_{ij} \) for a pair of atoms i-j. More...
 
float calcMMFF94TorsionGradient (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom1_pos, Math.Vector3D ctr_atom2_pos, Math.Vector3D term_atom2_pos, Math.Vector3D term_atom1_grad, Math.Vector3D ctr_atom1_grad, Math.Vector3D ctr_atom2_grad, Math.Vector3D term_atom2_grad, float tor_param1, float tor_param2, float tor_param3)
 Calculates the torsion interaction energy gradient \( \nabla ET_{ijkl} \) for the central bond j-k and the connected bonds i-j and k-l. More...
 
float calcMMFF94VanDerWaalsGradient (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos, Math.Vector3D atom1_grad, Math.Vector3D atom2_grad, float e_IJ, float r_IJ, float r_IJ_7)
 Calculates the van der Waals interaction energy gradient \( \nabla E_{vdW_{ij}} \) for the atom pair i-j. More...
 
float calcMMFF94ElectrostaticEnergy (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos, float atom1_chg, float atom2_chg, float scale_fact, float de_const, float dist_expo)
 Calculates the electrostatic interaction energy \( EQ_{ij} \) for the atom pair i-j. More...
 
float calcMMFF94StretchBendEnergy (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, float ijk_force_const, float kji_force_const, float ref_angle, float ref_length1, float ref_length2)
 Calculates the stretch-bend interaction energy \( EBA_{ijk} \) for two bonds i-j and j-k. More...
 
float calcMMFF94StretchBendEnergy (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, float r_ij, float r_jk, float ijk_force_const, float kji_force_const, float ref_angle, float ref_length1, float ref_length2)
 Calculates the stretch-bend interaction energy \( EBA_{ijk} \) for two bonds i-j and j-k. More...
 
float calcMMFF94AngleBendingEnergy (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, bool linear, float force_const, float ref_angle)
 Calculates the angle bending interaction energy \( EA_{ijk} \) for two bonds i-j and j-k. More...
 
float calcMMFF94AngleBendingEnergy (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, float r_ij, float r_jk, bool linear, float force_const, float ref_angle)
 Calculates the angle bending interaction energy \( EA_{ijk} \) for two bonds i-j and j-k. More...
 
float calcMMFF94OutOfPlaneBendingEnergy (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, Math.Vector3D oop_atom_pos, float force_const)
 Calculates the out-of-plane bending interaction energy \( EOOP_{ijk;l} \) for the bond j-l and the plane i-j-k. More...
 
float calcMMFF94OutOfPlaneBendingEnergy (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom_pos, Math.Vector3D term_atom2_pos, Math.Vector3D oop_atom_pos, float r_jl, float force_const)
 Calculates the out-of-plane bending interaction energy \( EOOP_{ijk;l} \) for the bond j-l and the plane i-j-k. More...
 
float calcMMFF94BondStretchingEnergy (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos, float force_const, float ref_length)
 Calculates the bond stretching interaction energy \( EB_{ij} \) for the bond i-j. More...
 
float calcElasticPotentialEnergy (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos, float force_const, float ref_length)
 Calculates the energy \( E_{ij} \) of an elastic potential applied on a pair of atoms i-j. More...
 
float calcMMFF94TorsionEnergy (Math.Vector3D term_atom1_pos, Math.Vector3D ctr_atom1_pos, Math.Vector3D ctr_atom2_pos, Math.Vector3D term_atom2_pos, float tor_param1, float tor_param2, float tor_param3)
 Calculates the torsion interaction energy \( ET_{ijkl} \) for the central bond j-k and the connected bonds i-j and k-l. More...
 
float calcMMFF94VanDerWaalsEnergy (Math.Vector3D atom1_pos, Math.Vector3D atom2_pos, float e_IJ, float r_IJ, float r_IJ_7)
 Calculates the van der Waals interaction energy \( E_{vdW_{ij}} \) for the atom pair i-j. More...
 
float calcMMFF94ElectrostaticEnergy (float r_ij, float atom1_chg, float atom2_chg, float scale_fact, float de_const, float dist_expo)
 Calculates the electrostatic interaction energy \( EQ_{ij} \) for the atom pair i-j. More...
 
float calcMMFF94BondStretchingEnergy (float r_ij, float force_const, float ref_length)
 Calculates the bond stretching interaction energy \( EB_{ij} \) for the bond i-j. More...
 
float calcMMFF94VanDerWaalsEnergy (float r_ij, float e_IJ, float r_IJ, float r_IJ_7)
 Calculates the van der Waals interaction energy \( E_{vdW_{ij}} \) for the atom pair i-j. More...
 

Detailed Description

Contains classes and functions related to molecular force fields.

Function Documentation

◆ clearMMFF94Charge()

None CDPL.ForceField.clearMMFF94Charge ( Chem.Atom  atom)
Parameters
atom

◆ hasMMFF94Charge()

bool CDPL.ForceField.hasMMFF94Charge ( Chem.Atom  atom)
Parameters
atom
Returns

◆ getMMFF94Charge()

float CDPL.ForceField.getMMFF94Charge ( Chem.Atom  atom)
Parameters
atom
Returns

◆ setMMFF94Charge()

None CDPL.ForceField.setMMFF94Charge ( Chem.Atom  atom,
float  charge 
)
Parameters
atom
charge

◆ perceiveUFFType()

int CDPL.ForceField.perceiveUFFType ( Chem.Atom  atom,
Chem.MolecularGraph  molgraph 
)
Parameters
atom
molgraph
Returns

◆ clearUFFType()

None CDPL.ForceField.clearUFFType ( Chem.Atom  atom)
Parameters
atom

◆ hasUFFType()

bool CDPL.ForceField.hasUFFType ( Chem.Atom  atom)
Parameters
atom
Returns

◆ getUFFType()

int CDPL.ForceField.getUFFType ( Chem.Atom  atom)
Parameters
atom
Returns

◆ setUFFType()

None CDPL.ForceField.setUFFType ( Chem.Atom  atom,
int  type 
)
Parameters
atom
type

◆ clearMMFF94SymbolicType()

None CDPL.ForceField.clearMMFF94SymbolicType ( Chem.Atom  atom)
Parameters
atom

◆ hasMMFF94SymbolicType()

bool CDPL.ForceField.hasMMFF94SymbolicType ( Chem.Atom  atom)
Parameters
atom
Returns

◆ getMMFF94SymbolicType()

str CDPL.ForceField.getMMFF94SymbolicType ( Chem.Atom  atom)
Parameters
atom
Returns

◆ setMMFF94SymbolicType()

None CDPL.ForceField.setMMFF94SymbolicType ( Chem.Atom  atom,
str  type 
)
Parameters
atom
type

◆ clearMMFF94NumericType()

None CDPL.ForceField.clearMMFF94NumericType ( Chem.Atom  atom)
Parameters
atom

◆ hasMMFF94NumericType()

bool CDPL.ForceField.hasMMFF94NumericType ( Chem.Atom  atom)
Parameters
atom
Returns

◆ getMMFF94NumericType()

int CDPL.ForceField.getMMFF94NumericType ( Chem.Atom  atom)
Parameters
atom
Returns

◆ setMMFF94NumericType()

None CDPL.ForceField.setMMFF94NumericType ( Chem.Atom  atom,
int  type 
)
Parameters
atom
type

◆ clearMMFF94TypeIndex()

None CDPL.ForceField.clearMMFF94TypeIndex ( Chem.Bond  bond)
Parameters
bond

◆ hasMMFF94TypeIndex()

bool CDPL.ForceField.hasMMFF94TypeIndex ( Chem.Bond  bond)
Parameters
bond
Returns

◆ getMMFF94TypeIndex()

int CDPL.ForceField.getMMFF94TypeIndex ( Chem.Bond  bond)
Parameters
bond
Returns

◆ setMMFF94TypeIndex()

None CDPL.ForceField.setMMFF94TypeIndex ( Chem.Bond  bond,
int  type_idx 
)
Parameters
bond
type_idx

◆ calcElasticPotentialGradient() [1/3]

float CDPL.ForceField.calcElasticPotentialGradient ( ElasticPotentialList  list,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
list
coords
grad
Returns

◆ calcElasticPotentialEnergy() [1/3]

float CDPL.ForceField.calcElasticPotentialEnergy ( ElasticPotentialList  list,
Math.Vector3DArray  coords 
)
Parameters
list
coords
Returns

◆ calcElasticPotentialGradient() [2/3]

float CDPL.ForceField.calcElasticPotentialGradient ( ElasticPotential  pot,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
pot
coords
grad
Returns

◆ calcElasticPotentialEnergy() [2/3]

float CDPL.ForceField.calcElasticPotentialEnergy ( ElasticPotential  pot,
Math.Vector3DArray  coords 
)
Parameters
pot
coords
Returns

◆ calcMMFF94AngleBendingGradient() [1/3]

float CDPL.ForceField.calcMMFF94AngleBendingGradient ( MMFF94AngleBendingInteractionList  ia_list,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
ia_list
coords
grad
Returns

◆ calcMMFF94AngleBendingEnergy() [1/4]

float CDPL.ForceField.calcMMFF94AngleBendingEnergy ( MMFF94AngleBendingInteractionList  ia_list,
Math.Vector3DArray  coords 
)
Parameters
ia_list
coords
Returns

◆ calcMMFF94AngleBendingGradient() [2/3]

float CDPL.ForceField.calcMMFF94AngleBendingGradient ( MMFF94AngleBendingInteraction  iaction,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
iaction
coords
grad
Returns

◆ calcMMFF94AngleBendingEnergy() [2/4]

float CDPL.ForceField.calcMMFF94AngleBendingEnergy ( MMFF94AngleBendingInteraction  iaction,
Math.Vector3DArray  coords 
)
Parameters
iaction
coords
Returns

◆ calcMMFF94BondStretchingGradient() [1/3]

float CDPL.ForceField.calcMMFF94BondStretchingGradient ( MMFF94BondStretchingInteractionList  ia_list,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
ia_list
coords
grad
Returns

◆ calcMMFF94BondStretchingEnergy() [1/4]

float CDPL.ForceField.calcMMFF94BondStretchingEnergy ( MMFF94BondStretchingInteractionList  ia_list,
Math.Vector3DArray  coords 
)
Parameters
ia_list
coords
Returns

◆ calcMMFF94BondStretchingGradient() [2/3]

float CDPL.ForceField.calcMMFF94BondStretchingGradient ( MMFF94BondStretchingInteraction  iaction,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
iaction
coords
grad
Returns

◆ calcMMFF94BondStretchingEnergy() [2/4]

float CDPL.ForceField.calcMMFF94BondStretchingEnergy ( MMFF94BondStretchingInteraction  iaction,
Math.Vector3DArray  coords 
)
Parameters
iaction
coords
Returns

◆ calcMMFF94ElectrostaticGradient() [1/3]

float CDPL.ForceField.calcMMFF94ElectrostaticGradient ( MMFF94ElectrostaticInteractionList  ia_list,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
ia_list
coords
grad
Returns

◆ calcMMFF94ElectrostaticEnergy() [1/4]

float CDPL.ForceField.calcMMFF94ElectrostaticEnergy ( MMFF94ElectrostaticInteractionList  ia_list,
Math.Vector3DArray  coords 
)
Parameters
ia_list
coords
Returns

◆ calcMMFF94ElectrostaticGradient() [2/3]

float CDPL.ForceField.calcMMFF94ElectrostaticGradient ( MMFF94ElectrostaticInteraction  iaction,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
iaction
coords
grad
Returns

◆ calcMMFF94ElectrostaticEnergy() [2/4]

float CDPL.ForceField.calcMMFF94ElectrostaticEnergy ( MMFF94ElectrostaticInteraction  iaction,
Math.Vector3DArray  coords 
)
Parameters
iaction
coords
Returns

◆ filterInteractions()

None CDPL.ForceField.filterInteractions ( MMFF94InteractionData  ia_data,
MMFF94InteractionData  filtered_ia_data,
Util.BitSet  inc_atom_mask 
)
Parameters
ia_data
filtered_ia_data
inc_atom_mask

◆ calcMMFF94OutOfPlaneBendingGradient() [1/3]

float CDPL.ForceField.calcMMFF94OutOfPlaneBendingGradient ( MMFF94OutOfPlaneBendingInteractionList  ia_list,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
ia_list
coords
grad
Returns

◆ calcMMFF94OutOfPlaneBendingEnergy() [1/4]

float CDPL.ForceField.calcMMFF94OutOfPlaneBendingEnergy ( MMFF94OutOfPlaneBendingInteractionList  ia_list,
Math.Vector3DArray  coords 
)
Parameters
ia_list
coords
Returns

◆ calcMMFF94OutOfPlaneBendingGradient() [2/3]

float CDPL.ForceField.calcMMFF94OutOfPlaneBendingGradient ( MMFF94OutOfPlaneBendingInteraction  iaction,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
iaction
coords
grad
Returns

◆ calcMMFF94OutOfPlaneBendingEnergy() [2/4]

float CDPL.ForceField.calcMMFF94OutOfPlaneBendingEnergy ( MMFF94OutOfPlaneBendingInteraction  iaction,
Math.Vector3DArray  coords 
)
Parameters
iaction
coords
Returns

◆ calcMMFF94StretchBendGradient() [1/3]

float CDPL.ForceField.calcMMFF94StretchBendGradient ( MMFF94StretchBendInteractionList  ia_list,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
ia_list
coords
grad
Returns

◆ calcMMFF94StretchBendEnergy() [1/4]

float CDPL.ForceField.calcMMFF94StretchBendEnergy ( MMFF94StretchBendInteractionList  ia_list,
Math.Vector3DArray  coords 
)
Parameters
ia_list
coords
Returns

◆ calcMMFF94StretchBendGradient() [2/3]

float CDPL.ForceField.calcMMFF94StretchBendGradient ( MMFF94StretchBendInteraction  iaction,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
iaction
coords
grad
Returns

◆ calcMMFF94StretchBendEnergy() [2/4]

float CDPL.ForceField.calcMMFF94StretchBendEnergy ( MMFF94StretchBendInteraction  iaction,
Math.Vector3DArray  coords 
)
Parameters
iaction
coords
Returns

◆ calcMMFF94TorsionGradient() [1/3]

float CDPL.ForceField.calcMMFF94TorsionGradient ( MMFF94TorsionInteractionList  ia_list,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
ia_list
coords
grad
Returns

◆ calcMMFF94TorsionEnergy() [1/3]

float CDPL.ForceField.calcMMFF94TorsionEnergy ( MMFF94TorsionInteractionList  ia_list,
Math.Vector3DArray  coords 
)
Parameters
ia_list
coords
Returns

◆ calcMMFF94TorsionGradient() [2/3]

float CDPL.ForceField.calcMMFF94TorsionGradient ( MMFF94TorsionInteraction  iaction,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
iaction
coords
grad
Returns

◆ calcMMFF94TorsionEnergy() [2/3]

float CDPL.ForceField.calcMMFF94TorsionEnergy ( MMFF94TorsionInteraction  iaction,
Math.Vector3DArray  coords 
)
Parameters
iaction
coords
Returns

◆ calcMMFF94VanDerWaalsGradient() [1/3]

float CDPL.ForceField.calcMMFF94VanDerWaalsGradient ( MMFF94VanDerWaalsInteractionList  ia_list,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
ia_list
coords
grad
Returns

◆ calcMMFF94VanDerWaalsEnergy() [1/4]

float CDPL.ForceField.calcMMFF94VanDerWaalsEnergy ( MMFF94VanDerWaalsInteractionList  ia_list,
Math.Vector3DArray  coords 
)
Parameters
ia_list
coords
Returns

◆ calcMMFF94VanDerWaalsGradient() [2/3]

float CDPL.ForceField.calcMMFF94VanDerWaalsGradient ( MMFF94VanDerWaalsInteraction  iaction,
Math.Vector3DArray  coords,
Math.Vector3DArray  grad 
)
Parameters
iaction
coords
grad
Returns

◆ calcMMFF94VanDerWaalsEnergy() [2/4]

float CDPL.ForceField.calcMMFF94VanDerWaalsEnergy ( MMFF94VanDerWaalsInteraction  iaction,
Math.Vector3DArray  coords 
)
Parameters
iaction
coords
Returns

◆ assignMMFF94BondTypeIndices()

None CDPL.ForceField.assignMMFF94BondTypeIndices ( Chem.MolecularGraph  molgraph,
bool  strict,
bool  overwrite 
)
Parameters
molgraph
strict
overwrite

◆ calcMMFF94AtomCharges()

None CDPL.ForceField.calcMMFF94AtomCharges ( Chem.MolecularGraph  molgraph,
bool  strict,
bool  overwrite 
)
Parameters
molgraph
strict
overwrite

◆ assignMMFF94AtomTypes()

None CDPL.ForceField.assignMMFF94AtomTypes ( Chem.MolecularGraph  molgraph,
bool  strict,
bool  overwrite 
)
Parameters
molgraph
strict
overwrite

◆ assignUFFAtomTypes()

None CDPL.ForceField.assignUFFAtomTypes ( Chem.MolecularGraph  molgraph,
bool  overwrite 
)
Parameters
molgraph
overwrite

◆ perceiveMMFF94AromaticRings() [1/2]

Chem.FragmentList CDPL.ForceField.perceiveMMFF94AromaticRings ( Chem.MolecularGraph  molgraph)
Parameters
molgraph
Returns

◆ perceiveMMFF94AromaticRings() [2/2]

Chem.FragmentList CDPL.ForceField.perceiveMMFF94AromaticRings ( Chem.MolecularGraph  molgraph,
bool  overwrite 
)
Parameters
molgraph
overwrite
Returns

◆ clearMMFF94AromaticRings()

None CDPL.ForceField.clearMMFF94AromaticRings ( Chem.MolecularGraph  molgraph)
Parameters
molgraph

◆ hasMMFF94AromaticRings()

bool CDPL.ForceField.hasMMFF94AromaticRings ( Chem.MolecularGraph  molgraph)
Parameters
molgraph
Returns

◆ getMMFF94AromaticRings()

Chem.FragmentList CDPL.ForceField.getMMFF94AromaticRings ( Chem.MolecularGraph  molgraph)
Parameters
molgraph
Returns

◆ setMMFF94AromaticRings()

None CDPL.ForceField.setMMFF94AromaticRings ( Chem.MolecularGraph  molgraph,
Chem.FragmentList  rings 
)
Parameters
molgraph
rings

◆ calcDistance()

float CDPL.ForceField.calcDistance ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos 
)

Calculates the distance \( r_{ij} \) between two atoms i and j.

\( r_{ij} = |\vec{v_{ij}}| \)

where
\( \vec{v_{ij}} = \vec{p_j} - \vec{p_i} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.

Parameters
atom1_posThe position \( \vec{p_i} \) of atom i.
atom2_posThe position \( \vec{p_j} \) of atom j.
Returns
The calculated distance \( r_{ij} \).

◆ calcSquaredDistance()

float CDPL.ForceField.calcSquaredDistance ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos 
)

Calculates the squared distance \( r_{ij}^2 \) between two atoms i and j.

\( r_{ij}^2 = |\vec{v_{ij}}|^2 \)

where
\( \vec{v_{ij}} = \vec{p_j} - \vec{p_i} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.

Parameters
atom1_posThe position \( \vec{p_i} \) of atom i.
atom2_posThe position \( \vec{p_j} \) of atom j.
Returns
The calculated squared distance \( r_{ij}^2 \).

◆ calcBondLengthsAndAngle()

tuple CDPL.ForceField.calcBondLengthsAndAngle ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos 
)
Parameters
term_atom1_pos
ctr_atom_pos
term_atom2_pos
Returns

◆ calcBondAngle() [1/2]

float CDPL.ForceField.calcBondAngle ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
float  r_ij,
float  r_jk 
)

Calculates the bond angle \( \vartheta_{ijk} \) between the two bonds i-j and j-k.

\( \vartheta_{ijk} = \arccos(\frac{\vec{v_{ij}} \cdot \vec{v_{jk}}}{|\vec{v_{ij}}| \: |\vec{v_{jk}}|}) \)

where
\( \vec{v_{ij}} = \vec{p_j} - \vec{p_i} \)
\( \vec{v_{jk}} = \vec{p_k} - \vec{p_j} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.
\( \vec{p_k} \) = coordinates of atom k.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of the terminal atom i.
ctr_atom_posThe position \( \vec{p_j} \) of the central atom j.
term_atom2_posThe position \( \vec{p_k} \) of the terminal atom k.
r_ijThe length of the bond between atom i and j.
r_jkThe length of the bond between atom j and k.
Returns
The calculated bond angle \( \vartheta_{ijk} \).

◆ calcBondAngle() [2/2]

float CDPL.ForceField.calcBondAngle ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos 
)

Calculates the bond angle \( \vartheta_{ijk} \) between the two bonds i-j and j-k.

\( \vartheta_{ijk} = \arccos(\frac{\vec{v_{ij}} \cdot \vec{v_{jk}}}{|\vec{v_{ij}}| \: |\vec{v_{jk}}|}) \)

where
\( \vec{v_{ij}} = \vec{p_j} - \vec{p_i} \)
\( \vec{v_{jk}} = \vec{p_k} - \vec{p_j} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.
\( \vec{p_k} \) = coordinates of atom k.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of the terminal atom i.
ctr_atom_posThe position \( \vec{p_j} \) of the central atom j.
term_atom2_posThe position \( \vec{p_k} \) of the terminal atom k.
Returns
The calculated bond angle \( \vartheta_{ijk} \).

◆ calcOutOfPlaneAngle()

float CDPL.ForceField.calcOutOfPlaneAngle ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  oop_atom_pos,
float  r_jl 
)

Calculates the out-of-plane angle \( \chi_{ijk;l} \) between the bond j-l and the plane defined by the atoms i-j-k.

\( \chi_{ijk;l} = \frac{\pi}{2} - \arccos(\frac{\vec{n_{ijk}} \cdot \vec{v_{jl}}}{|\vec{n_{ijk}}| \: |\vec{v_{jl}}|}) \)

where
\( \vec{v_{ji}} = \vec{p_i} - \vec{p_j} \)
\( \vec{v_{jk}} = \vec{p_k} - \vec{p_j} \)
\( \vec{v_{jl}} = \vec{p_l} - \vec{p_j} \)
\( \vec{n_{ijk}} = \vec{v_{ji}} \times \vec{v_{jk}} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.
\( \vec{p_k} \) = coordinates of atom k.
\( \vec{p_l} \) = coordinates of atom l.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of the terminal atom i.
ctr_atom_posThe position \( \vec{p_j} \) of the central atom j.
term_atom2_posThe position \( \vec{p_k} \) of the terminal atom k.
oop_atom_posThe position \( \vec{p_l} \) of the out-of-plane atom l.
r_jlThe length of the bond between atom j and atom l.
Returns
The calculated out-of-plane angle \( \chi_{ijk;l} \).

◆ calcDistanceDerivatives()

float CDPL.ForceField.calcDistanceDerivatives ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos,
Math.Vector3D  atom1_deriv,
Math.Vector3D  atom2_deriv 
)

Calculates the partial derivatives \( \frac{\partial r_{ij}}{\partial \vec{p_x}} \) of the distance \( r_{ij} \) between two atoms i and j.

\( \frac{\partial r_{ij}}{\partial \vec{p_i}} = \frac{-\vec{v_{ij}}}{r_{ij}} \)
\( \frac{\partial r_{ij}}{\partial \vec{p_j}} = \frac{\vec{v_{ij}}}{r_{ij}} \)
\( r_{ij} = |\vec{v_{ij}}| \)

where
\( \vec{v_{ij}} = \vec{p_j} - \vec{p_i} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.

Parameters
atom1_posThe position \( \vec{p_i} \) of atom i.
atom2_posThe position \( \vec{p_j} \) of atom j.
atom1_derivOutput variable for the calculated partial derivative \( \frac{\partial r_{ij}}{\partial \vec{p_i}} \) at the given atom positions.
atom2_derivOutput variable for the calculated partial derivative \( \frac{\partial r_{ij}}{\partial \vec{p_j}} \) at the given atom positions.
Returns
The calculated distance \( r_{ij} \).

◆ calcBondAngleCosDerivatives()

float CDPL.ForceField.calcBondAngleCosDerivatives ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  term_atom1_deriv,
Math.Vector3D  ctr_atom_deriv,
Math.Vector3D  term_atom2_deriv 
)

Calculates the partial derivatives \( \frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_x}} \) of the of the cosine of the angle \( \vartheta_{ijk} \) between the bonds i-j and j-k.

\( \frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_i}} = \frac{\vec{v_{jk}}}{r_{ji} \: r_{jk}} - \frac{\vec{v_{ji}} \: (\vec{v_{ji}} \cdot \vec{v_{jk}})}{r_{ji}^3 \: r_{jk}} \)
\( \frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_k}} = \frac{\vec{v_{ji}}}{r_{ji} \: r_{jk}} - \frac{\vec{v_{jk}} \: (\vec{v_{ji}} \cdot \vec{v_{jk}})}{r_{ji} \: r_{jk}^3} \)
\( \frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_j}} = -(\frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_i}} + \frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_k}}) \)
\( \cos(\vartheta_{ijk}) = \frac{\vec{v_{ij}} \cdot \vec{v_{jk}}}{r_{ij} \: r_{jk}} \)

where
\( \vec{v_{ji}} = \vec{p_i} - \vec{p_j} \)
\( \vec{v_{jk}} = \vec{p_k} - \vec{p_j} \)
\( r_{ji} = |\vec{v_{ji}}| \)
\( r_{jk} = |\vec{v_{jk}}| \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.
\( \vec{p_k} \) = coordinates of atom k.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of atom i.
ctr_atom_posThe position \( \vec{p_j} \) of atom j.
term_atom2_posThe position \( \vec{p_k} \) of atom k.
term_atom1_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_i}} \) at the given atom positions.
ctr_atom_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_j}} \) at the given atom positions.
term_atom2_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\vartheta_{ijk})}{\partial \vec{p_k}} \) at the given atom positions.
Returns
The calculated cosine of the bond angle \( \vartheta_{ijk} \).

◆ calcOutOfPlaneAngleCosDerivatives()

float CDPL.ForceField.calcOutOfPlaneAngleCosDerivatives ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  oop_atom_pos,
Math.Vector3D  term_atom1_deriv,
Math.Vector3D  ctr_atom_deriv,
Math.Vector3D  term_atom2_deriv,
Math.Vector3D  oop_atom_deriv 
)

Calculates the partial derivatives \( \frac{\partial \cos(\omega_{ijk;l})}{\partial \vec{p_x}} \) of the cosine of the angle \( \omega_{ijk;l} \) between the bond j-l and the normal of the plane defined by the atoms i-j-k.

\( \frac{\partial \cos(\omega_{ijk;l})}{\partial \vec{p_i}} = \frac{\vec{v_{jk}} \times \vec{v_{jl}}}{|\vec{n_{ijk}}| \: r_{jl}} - \cos(\omega_{ijk;l}) \: \frac{M_1 \cdot \vec{n_{ijk}}}{|\vec{n_{ijk}}|^2} \)
\( \frac{\partial \cos(\omega_{ijk;l})}{\partial \vec{p_k}} = \frac{\vec{v_{jl}} \times \vec{v_{ji}}}{|\vec{n_{ijk}}| \: r_{jl}} - \cos(\omega_{ijk;l}) \: \frac{M_2 \cdot \vec{n_{ijk}}}{|\vec{n_{ijk}}|^2} \)
\( \frac{\partial \cos(\omega_{ijk;l})}{\partial \vec{p_l}} = \frac{-1}{|\vec{n_{ijk}}| \: r_{jl}} \: (\frac{\vec{v_{jl}} (\vec{n_{ijk}} \cdot \vec{v_{jl}})}{r_{jl}^2} + \vec{r_{kl}} \times \vec{v_{il}} + \vec{v_{jl}} \times \vec{v_{ji}} + \vec{v_{jk}} \times \vec{v_{jl}}) \)
\( \frac{\partial \cos(\omega_{ijk;l})}{\partial \vec{p_j}} = -(\frac{\partial \cos(\omega_{ijk;l})}{\partial \vec{p_i}} + \frac{\partial \cos(\omega_{ijk;l})}{\partial \vec{p_k}} + \frac{\partial \cos(\omega_{ijk;l})}{\partial \vec{p_l}}) \)
\( \cos(\omega_{ijk;l}) = \frac{\vec{n_{ijk}} \cdot \vec{v_{jl}}}{|\vec{n_{ijk}}| \: r_{jl}} \)

where
\( M_1 = \left| \begin{array}{ccc} 0 & -\vec{v_{jk}}.z & \vec{v_{jk}}.y \\ \vec{v_{jk}}.z & 0 & -\vec{v_{jk}}.x \\ -\vec{v_{jk}}.y & \vec{v_{jk}}.x & 0 \end{array} \right| \)
\( M_2 = \left| \begin{array}{ccc} 0 & \vec{v_{ji}}.z & -\vec{v_{ji}}.y \\ -\vec{v_{ji}}.z & 0 & \vec{v_{ji}}.x \\ \vec{v_{ji}}.y & -\vec{v_{ji}}.x & 0 \end{array} \right| \)
\( \vec{v_{ji}} = \vec{p_i} - \vec{p_j} \)
\( \vec{v_{jk}} = \vec{p_k} - \vec{p_j} \)
\( \vec{v_{jl}} = \vec{p_l} - \vec{p_j} \)
\( \vec{r_{kl}} = \vec{p_l} - \vec{p_k} \)
\( \vec{v_{il}} = \vec{p_l} - \vec{p_i} \)
\( \vec{n_{ijk}} = \vec{v_{ji}} \times \vec{v_{jk}} \)
\( r_{jl} = |\vec{v_{jl}}| \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.
\( \vec{p_k} \) = coordinates of atom k.
\( \vec{p_l} \) = coordinates of atom l.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of the terminal atom i.
ctr_atom_posThe position \( \vec{p_j} \) of the central atom j.
term_atom2_posThe position \( \vec{p_k} \) of the terminal atom k.
oop_atom_posThe position \( \vec{p_l} \) of the out-of-plane atom l.
term_atom1_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\omega_{ijkl})}{\partial \vec{p_i}} \) at the given atom positions.
ctr_atom_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\omega_{ijkl})}{\partial \vec{p_j}} \) at the given atom positions.
term_atom2_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\omega_{ijkl})}{\partial \vec{p_k}} \) at the given atom positions.
oop_atom_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\omega_{ijkl})}{\partial \vec{p_l}} \) at the given atom positions.
Returns
The calculated cosine of the angle \( \omega_{ijk;l} \).

◆ calcDihedralAngleCosDerivatives()

float CDPL.ForceField.calcDihedralAngleCosDerivatives ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom1_pos,
Math.Vector3D  ctr_atom2_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  term_atom1_deriv,
Math.Vector3D  ctr_atom1_deriv,
Math.Vector3D  ctr_atom2_deriv,
Math.Vector3D  term_atom2_deriv 
)

Calculates the partial derivatives \( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_x}} \) of the cosine of the angle \( \Phi_{ijkl} \) between the planes defined by the atom triplets i-j-k and j-k-l.

\( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_i}} = \vec{v_{jk}} \times \vec{a} \)

\( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_j}} = \vec{r_{ki}} \times \vec{a} - \vec{v_{lk}} \times \vec{b} \)
\( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_l}} = \vec{v_{jk}} \times \vec{b} \)
\( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_k}} = -(\frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_i}} + \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_j}} + \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_l}}) \)
\( \cos(\Phi_{ijkl}) = \frac{\vec{n_{ijk}} \cdot \vec{n_{jkl}}}{|\vec{n_{ijk}}| \: |\vec{n_{jkl}}|} \)

where
\( \vec{v_{ji}} = \vec{p_i} - \vec{p_j} \)
\( \vec{v_{jk}} = \vec{p_k} - \vec{p_j} \)
\( \vec{v_{lk}} = \vec{p_k} - \vec{p_l} \)
\( \vec{r_{ki}} = \vec{p_i} - \vec{p_k} \)
\( \vec{n_{ijk}} = \vec{v_{ji}} \times \vec{v_{jk}} \)
\( \vec{n_{jkl}} = \vec{v_{jk}} \times \vec{v_{lk}} \)
\( \vec{a} = \frac{\frac{\vec{n_{jkl}}}{|\vec{n_{jkl}}|} - \cos(\Phi_{ijkl}) \: \frac{\vec{n_{ijk}}}{|\vec{n_{ijk}}|}}{|\vec{n_{ijk}}|} \)
\( \vec{b} = \frac{\frac{\vec{n_{ijk}}}{|\vec{n_{ijk}}|} - \cos(\Phi_{ijkl}) \: \frac{\vec{n_{jkl}}}{|\vec{n_{jkl}}|}}{|\vec{n_{jkl}}|} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.
\( \vec{p_k} \) = coordinates of atom k.
\( \vec{p_l} \) = coordinates of atom l.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of the terminal atom i.
ctr_atom1_posThe position \( \vec{p_j} \) of the central atom j.
ctr_atom2_posThe position \( \vec{p_k} \) of the central atom k.
term_atom2_posThe position \( \vec{p_l} \) of the terminal atom l.
term_atom1_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_i}} \) at the given atom positions.
ctr_atom1_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_j}} \) at the given atom positions.
ctr_atom2_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_k}} \) at the given atom positions.
term_atom2_derivOutput variable for the calculated partial derivative \( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_l}} \) at the given atom positions.
Returns
The calculated cosine of the dihedral angle \( \Phi_{ijkl} \).

◆ calcBondLengthsAndAngleCos()

tuple CDPL.ForceField.calcBondLengthsAndAngleCos ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos 
)
Parameters
term_atom1_pos
ctr_atom_pos
term_atom2_pos
Returns

◆ calcBondAngleCos() [1/2]

float CDPL.ForceField.calcBondAngleCos ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
float  r_ij,
float  r_jk 
)

Calculates the cosine of the bond angle \( \vartheta_{ijk} \) between the two bonds i-j and j-k.

\( \cos(\vartheta_{ijk}) = \frac{\vec{v_{ij}} \cdot \vec{v_{jk}}}{|\vec{v_{ij}}| \: |\vec{v_{jk}}|} \)

where
\( \vec{v_{ij}} = \vec{p_j} - \vec{p_i} \)
\( \vec{v_{jk}} = \vec{p_k} - \vec{p_j} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.
\( \vec{p_k} \) = coordinates of atom k.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of the terminal atom i.
ctr_atom_posThe position \( \vec{p_j} \) of the central atom j.
term_atom2_posThe position \( \vec{p_k} \) of the terminal atom k.
r_ijThe length of the bond between atom i and j.
r_jkThe length of the bond between atom j and k.
Returns
The calculated cosine of the bond angle \( \vartheta_{ijk} \).

◆ calcBondAngleCos() [2/2]

float CDPL.ForceField.calcBondAngleCos ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos 
)

Calculates the cosine of the bond angle \( \vartheta_{ijk} \) between the two bonds i-j and j-k.

\( \cos(\vartheta_{ijk}) = \frac{\vec{v_{ij}} \cdot \vec{v_{jk}}}{|\vec{v_{ij}}| \: |\vec{v_{jk}}|} \)

where
\( \vec{v_{ij}} = \vec{p_j} - \vec{p_i} \)
\( \vec{v_{jk}} = \vec{p_k} - \vec{p_j} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.
\( \vec{p_k} \) = coordinates of atom k.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of the terminal atom i.
ctr_atom_posThe position \( \vec{p_j} \) of the central atom j.
term_atom2_posThe position \( \vec{p_k} \) of the terminal atom k.
Returns
The calculated cosine of the bond angle \( \vartheta_{ijk} \).

◆ calcDihedralAngleCos()

float CDPL.ForceField.calcDihedralAngleCos ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom1_pos,
Math.Vector3D  ctr_atom2_pos,
Math.Vector3D  term_atom2_pos 
)

Calculates the cosine of the dihedral angle \( \Phi_{ijkl} \) between the planes defined by the atom triplets i-j-k and j-k-l.

\( \cos(\Phi_{ijkl}) = \frac{\vec{n_{ijk}} \cdot \vec{n_{jkl}}}{|\vec{n_{ijk}}| \: |\vec{n_{jkl}}|} \)

where
\( \vec{v_{ji}} = \vec{p_i} - \vec{p_j} \)
\( \vec{v_{jk}} = \vec{p_k} - \vec{p_j} \)
\( \vec{v_{lk}} = \vec{p_k} - \vec{p_l} \)
\( \vec{n_{ijk}} = \vec{v_{ji}} \times \vec{v_{jk}} \)
\( \vec{n_{jkl}} = \vec{v_{jk}} \times \vec{v_{lk}} \)

\( \vec{p_i} \) = coordinates of atom i.
\( \vec{p_j} \) = coordinates of atom j.
\( \vec{p_k} \) = coordinates of atom k.
\( \vec{p_l} \) = coordinates of atom l.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of the terminal atom i.
ctr_atom1_posThe position \( \vec{p_j} \) of the central atom j.
ctr_atom2_posThe position \( \vec{p_k} \) of the central atom k.
term_atom2_posThe position \( \vec{p_l} \) of the terminal atom l.
Returns
The calculated cosine of the dihedral angle \( \Phi_{ijkl} \).

◆ calcMMFF94ElectrostaticGradient() [3/3]

float CDPL.ForceField.calcMMFF94ElectrostaticGradient ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos,
Math.Vector3D  atom1_grad,
Math.Vector3D  atom2_grad,
float  atom1_chg,
float  atom2_chg,
float  scale_fact,
float  de_const,
float  dist_expo 
)

Calculates the electrostatic interaction energy gradient \( \nabla EQ_{ij} \) for the atom pair i-j.

Energy function:

\( EQ_{ij} = S \: 332.0716 \: \frac{q_i \: q_j}{D \: (R_{ij} + \delta)^n} \)

The partial derivatives with respect to the atom coordinates \( \vec{p_x} \) are calculated by:

\( \frac{\partial EQ_{ij}}{\partial \vec{p_x}} = \frac{\partial EQ_{ij}}{\partial R_{ij}} \: \frac{\partial R_{ij}}{\partial \vec{p_x}} \)

\( \frac{\partial EQ_{ij}}{\partial R_{ij}} = -S \: 332.0716 \: n \: \frac{q_i \: q_j}{D \: (R_{ij} + \delta)^{n + 1}} \)

for the calculation of the partial derivatives \( \frac{\partial R_{ij}}{\partial \vec{p_x}} \) see calcDistanceDerivatives().

where
\( S \) = a scaling factor depending on the topological distance of i-j.
\( q_i \) and \( q_j \) = partial atomic charges.
\( D \) = dielectric constant.
\( R_{ij} \) = interatomic distance (Å).
\( \delta \) = electrostatic buffering constant (0.05 Å).
\( n \) = exponent (normally 1, but can be 2 for distance-dependent dielectric constant).
\( \vec{p_x} \) = coordinates of the involved atoms i and j.

Note: 1-4 electrostatic interactions are scaled by 0.75 (thus, the electrostatic gradient term becomes \( EQ_{14} \: 0.75 \)).

Parameters
atom1_posThe position \( \vec{p_i} \) of atom i.
atom2_posThe position \( \vec{p_j} \) of atom j.
atom1_gradThe output variable storing the accumulated energy gradient contributions for atom i.
atom2_gradThe output variable storing the accumulated energy gradient contributions for atom j.
atom1_chgThe partial atom charge \( q_i \) of atom i.
atom2_chgThe partial atom charge \( q_j \) of atom j.
scale_factThe scaling factor for \( S \) depending on the topological i-j distance.
de_constThe dielectric constant \( D \).
dist_expoThe exponent \( n \).
Returns
The calculated electrostatic interaction energy \( EQ_{ij} \).
Note
The calculated partial energy derivative (see above) for an atom gets added to the corresponding output variable!

◆ calcMMFF94StretchBendGradient() [3/3]

float CDPL.ForceField.calcMMFF94StretchBendGradient ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  term_atom1_grad,
Math.Vector3D  ctr_atom_grad,
Math.Vector3D  term_atom2_grad,
float  ijk_force_const,
float  kji_force_const,
float  ref_angle,
float  ref_length1,
float  ref_length2 
)

Calculates the stretch-bend interaction energy gradient \( \nabla EBA_{ijk} \) for two bonds i-j and j-k.

Energy function:

\( EBA_{ijk} = 2.51210 \: (kba_{IJK} \: \Delta r_{ij} + kba_{KJI} \: \Delta r_{kj}) \: \Delta \vartheta_{ijk} \)

The partial derivatives with respect to the atom coordinates \( \vec{p_x} \) are calculated by:

\( \frac{\partial EBA_{ijk}}{\partial \vec{p_x}} = 2.5121 \: \Delta \vartheta_{ijk} \: (kba_{IJK} \: \frac{\partial \Delta r_{ij}}{\partial \vec{p_x}} + kba_{KJI} \: \frac{\partial \Delta r_{kj}}{\partial \vec{p_x}}) + 2.5121 \: \frac{\partial \Delta \vartheta_{ijk}}{\partial \vec{p_x}} \: (kba_{IJK} \: \Delta r_{ij} + kba_{KJI} \: \Delta r_{kj}) \)

\( \frac{\partial \Delta \vartheta_{ijk}}{\partial \vec{p_x}} = \frac{\partial \Delta \vartheta_{ijk}}{\partial \vartheta_{ijk}} \: \frac{\partial \vartheta_{ijk}}{\partial \cos(\vartheta_{ijk})} \: \frac{\partial \cos(\vartheta_{ijk})}{\vec{p_x}} \)
\( \frac{\partial \Delta \vartheta_{ijk}}{\partial \vartheta_{ijk}} = \frac{180}{\pi} \)
\( \frac{\partial \vartheta_{ijk}}{\partial \cos(\vartheta_{ijk})} = \frac{-1}{\sqrt{1 - \cos(\vartheta_{ijk})^2}} \)

for the calculation of the partial derivatives \( \frac{\partial \cos(\vartheta_{ijk})}{\vec{p_x}} \) see calcBondAngleCosDerivatives() and for the calculation of \( \frac{\partial \Delta r_{ij}}{\partial \vec{p_x}} \) see calcDistanceDerivatives().

where
\( kba_{IJK} \) = force constant in \( \frac{md}{rad} \) for i-j stretch coupled to i-j-k bend.
\( kba_{KJI} \) = force constant in \( \frac{md}{rad} \) for k-j stretch coupled to i-j-k bend.
\( \Delta r_{ij} \) = \( r_{ij} - r_{IJ}^0 \), the difference in angstroms between actual and reference bond lengths between bonded atoms i and j of types I and J.
\( \Delta r_{kj} \) = \( r_{kj} - r_{KJ}^0 \), the difference in angstroms between actual and reference bond lengths between bonded atoms k and j of types K and J.
\( \Delta \vartheta_{ijk} \) = \( \vartheta_{ijk} \: \frac{180}{\pi} - \vartheta_{IJK}^0 \), the difference between actual and reference i-j-k bond angles in degrees.
\( \vec{p_x} \) = coordinates of the involved atoms i, j and k.

Currently, stretch-bend interactions are omitted when the i-j-k interaction corresponds to a linear bond angle.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of atom i.
ctr_atom_posThe position \( \vec{p_j} \) of the central atom j.
term_atom2_posThe position \( \vec{p_k} \) of atom k.
term_atom1_gradThe output variable storing the accumulated energy gradient contributions for atom i.
ctr_atom_gradThe output variable storing the accumulated energy gradient contributions for atom j.
term_atom2_gradThe output variable storing the accumulated energy gradient contributions for atom k.
ijk_force_constThe stretch-bend force constant \( kba_{IJK} \).
kji_force_constThe stretch-bend force constant \( kba_{KJI} \).
ref_angleThe reference bond angle \( \vartheta_{IJK}^0 \).
ref_length1The reference bond length \( r_{IJ}^0 \).
ref_length2The reference bond length \( r_{KJ}^0 \).
Returns
The calculated stretch-bend interaction energy \( EBA_{ijk} \).
Note
The calculated partial energy derivative (see above) for an atom gets added to the corresponding output variable!

◆ calcMMFF94AngleBendingGradient() [3/3]

float CDPL.ForceField.calcMMFF94AngleBendingGradient ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  term_atom1_grad,
Math.Vector3D  ctr_atom_grad,
Math.Vector3D  term_atom2_grad,
bool  linear,
float  force_const,
float  ref_angle 
)

Calculates the angle bending interaction energy gradient \( \nabla EA_{ijk} \) for two bonds i-j and j-k.

Energy function employed for the non-linear case:

\( EA_{ijk} = 0.043844 \: \frac{ka_{IJK}}{2} \: \Delta \vartheta_{ijk}^2 \: (1 + cb \: \Delta \vartheta_{ijk}) \)

The partial derivatives with respect to the atom coordinates \( \vec{p_x} \) are calculated by:

\( \frac{\partial EA_{ijk}}{\partial \vec{p_x}} = \frac{\partial EA_{ijk}}{\partial \vartheta_{ijk}} \: \frac{\partial \vartheta_{ijk}}{\partial \cos(\vartheta_{ijk})} \: \frac{\partial \cos(\vartheta_{ijk})}{\vec{p_x}} \)

\( \frac{\partial EA_{ijk}}{\partial \vartheta_{ijk}} = -ka_{IJK} \: (86.58992538 \: \vartheta_{ijk}^2 - 3.022558594 \: \vartheta_{ijk} \: \vartheta_{IJK}^0 - 143.9313616 \: \vartheta_{ijk} + 0.02637679965 \: \vartheta_{IJK}^{0^2} + 2.512076157 \: \vartheta_{IJK}^0) \)

\( \frac{\partial \vartheta_{ijk}}{\partial \cos(\vartheta_{ijk})} = \frac{-1}{\sqrt{1 - \cos(\vartheta_{ijk})^2}} \)

for the calculation of the partial derivatives \( \frac{\partial \cos(\vartheta_{ijk})}{\vec{p_x}} \) see calcBondAngleCosDerivatives().

For linear or near-linear bond angles such as those which occur in alkynes, nitriles, isonitriles, azides, and diazo compounds, the energy function form used in DREIDING and UFF is employed:

\( EA_{ijk} = 143.9325 \: ka_{IJK} \:(1 + \cos(\vartheta_{ijk})) \)

The partial derivatives with respect to the atom coordinates \( \vec{p_x} \) are calculated by:

\( \frac{\partial EA_{ijk}}{\partial \vec{p_x}} = 143.9325 \: ka_{IJK} \: \frac{\partial \cos(\vartheta_{ijk})}{\vec{p_x}} \)

where
\( ka_{IJK} \) = angle bending force constant in \( \frac{md Ang}{rad^2} \) for the angle between atoms i, j and k of atom types I, J and K.
\( \Delta \vartheta_{ijk} \) = \( \vartheta_{ijk} - \vartheta_{IJK}^0 \), the difference between actual and reference i-j-k bond angles in degrees.
\( cb \) = \( -0.007 \: deg^{-1} \), the "cubic-bend" constant.
\( \vec{p_x} \) = coordinates of the involved atoms i, j and k.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of atom i.
ctr_atom_posThe position \( \vec{p_j} \) of the central atom j.
term_atom2_posThe position \( \vec{p_k} \) of atom k.
term_atom1_gradThe output variable storing the accumulated energy gradient contributions for atom i.
ctr_atom_gradThe output variable storing the accumulated energy gradient contributions for atom j.
term_atom2_gradThe output variable storing the accumulated energy gradient contributions for atom k.
linearIf True, the bond angle is linear.
force_constThe angle bending force constant \( ka_{IJK} \).
ref_angleThe reference bond angle \( \vartheta_{IJK}^0 \).
Returns
The calculated angle bending interaction energy \( EA_{ijk} \).
Note
The calculated partial energy derivative (see above) for an atom gets added to the corresponding output variable!

◆ calcMMFF94OutOfPlaneBendingGradient() [3/3]

float CDPL.ForceField.calcMMFF94OutOfPlaneBendingGradient ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  oop_atom_pos,
Math.Vector3D  term_atom1_grad,
Math.Vector3D  ctr_atom_grad,
Math.Vector3D  term_atom2_grad,
Math.Vector3D  oop_atom_grad,
float  force_const 
)

Calculates the out-of-plane bending interaction energy gradient \( \nabla EOOP_{ijk;l} \) for the bond j-l and the plane i-j-k.

Energy function:

\( EOOP_{ijk;l} = 0.043844 \: \frac{koop_{IJK \colon L}}{2} \: (\chi_{ijk;l} \: \frac{180}{\pi})^2 \)

The partial derivatives with respect to the atom coordinates \( \vec{p_x} \) are calculated by:

\( \frac{\partial EOOP_{ijk;l}}{\partial \vec{p_x}} = \frac{\partial EOOP_{ijk;l}}{\partial \chi_{ijk;l}} \: \frac{\partial \chi_{ijk;l}}{\partial \cos(\alpha_{ijk;l})} \: \frac{\partial \cos(\alpha_{ijk;l})}{\partial \vec{p_x}} \)

\( \frac{\partial EOOP_{ijk;l}}{\partial \chi_{ijk;l}} = 0.043844 \: (\frac{180}{\pi})^2 \: \chi_{ijk;l} \: koop_{IJK \colon L} \)
\( \chi_{ijk;l} = \frac{\pi}{2} - \alpha_{ijk;l} \)
\( \frac{\partial \chi_{ijk;l}}{\partial \cos(\alpha_{ijk;l})} = \frac{-1}{\sqrt{1 - \cos(\alpha_{ijk;l})^2}} \)

for the calculation of the partial derivatives \( \frac{\partial \cos(\alpha_{ijk;l})}{\partial \vec{p_x}} \) see calcOutOfPlaneAngleCosDerivatives().

where
\( koop_{IJK \colon L} \) = out-of-plane bending force constant in \( \frac{md Ang}{rad^2} \).
\( \chi_{ijk;l} \) = angle in radians between the bond j-l and the plane i-j-k, where j is the central atom.
\( \vec{p_x} \) = coordinates of the involved atoms i, j, k and l.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of atom i.
ctr_atom_posThe position \( \vec{p_j} \) of the central atom j.
term_atom2_posThe position \( \vec{p_k} \) of atom k.
oop_atom_posThe position \( \vec{p_l} \) of the out-of-plane atom l.
term_atom1_gradThe output variable storing the accumulated energy gradient contributions for atom i.
ctr_atom_gradThe output variable storing the accumulated energy gradient contributions for atom j.
term_atom2_gradThe output variable storing the accumulated energy gradient contributions for atom k.
oop_atom_gradThe output variable storing the accumulated energy gradient contributions for atom l.
force_constThe out-of-plane bending force constant \( koop_{IJK \colon L} \).
Returns
The calculated out-of-plane bending interaction energy \( EOOP_{ijk;l} \).
Note
The calculated partial energy derivative (see above) for an atom gets added to the corresponding output variable!

◆ calcMMFF94BondStretchingGradient() [3/3]

float CDPL.ForceField.calcMMFF94BondStretchingGradient ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos,
Math.Vector3D  atom1_grad,
Math.Vector3D  atom2_grad,
float  force_const,
float  ref_length 
)

Calculates the bond stretching interaction energy gradient \( \nabla EB_{ij} \) for the bond i-j.

Energy function:

\( EB_{ij} = 143.9325 \: \frac{kb_{IJ}}{2} \: \Delta r_{ij}^2 \times (1 + cs \: \Delta r_{ij} + \frac{7}{12} \: cs^2 \: \Delta r_{ij}^2) \)

The partial derivatives with respect to the atom coordinates \( \vec{p_x} \) are calculated by:

\( \frac{\partial EB_{ij}}{\partial \vec{p_x}} = \frac{\partial EB_{ij}}{\partial \Delta r_{ij}} \: \frac{\partial \Delta r_{ij}}{\partial \vec{p_x}} \)

\( \frac{\partial EB_{ij}}{\partial \Delta r_{ij}} = (167.92125 \: \Delta r_{ij}^3 \: cs^2 + 215.89875 \: \Delta r_{ij}^2 \: cs + 143.9325 \: \Delta r_{ij}) \: kb_{IJ} \)

for the calculation of the partial derivatives \( \frac{\partial \Delta r_{ij}}{\partial \vec{p_x}} \) see calcDistanceDerivatives().

where
\( kb_{IJ} \) = the bond stretching force constant in \( \frac{md}{Ang} \) for bonded atoms i and j of types I and J.
\( \Delta r_{ij} \) = \( r_{ij} - r_{IJ}^0 \), the difference in angstroms between actual and reference bond lengths between bonded atoms i and j of types I and J.
\( cs \) = \( -2 \: Ang^{-1} \), the "cubic stretch" constant.
\( \vec{p_x} \) = coordinates of the involved atoms i and j.

Note: throughout this description, the indices i, j, k, ... represent atoms; I, J, K, ... denote the corresponding numerical MMFF atom types (or, occasionally, the atomic species).

Parameters
atom1_posThe position \( \vec{p_i} \) of atom i.
atom2_posThe position \( \vec{p_j} \) of atom j.
atom1_gradThe output variable storing the accumulated energy gradient contributions for atom i.
atom2_gradThe output variable storing the accumulated energy gradient contributions for atom j.
force_constThe bond stretching force constant \( kb_{IJ} \).
ref_lengthThe reference bond length \( r_{IJ}^0 \).
Returns
The calculated bond stretching interaction energy \( EB_{ij} \).
Note
The calculated partial energy derivative (see above) for an atom gets added to the corresponding output variable!

◆ calcElasticPotentialGradient() [3/3]

float CDPL.ForceField.calcElasticPotentialGradient ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos,
Math.Vector3D  atom1_grad,
Math.Vector3D  atom2_grad,
float  force_const,
float  ref_length 
)

Calculates the elastic potential energy gradient \( \nabla E_{ij} \) for a pair of atoms i-j.

Energy function:

\( E_{ij} = k_{ij} \: \Delta r_{ij}^2 \)

The partial derivatives with respect to the atom coordinates \( \vec{p_x} \) are calculated by:

\( \frac{\partial E_{ij}}{\partial \vec{p_x}} = \frac{\partial E_{ij}}{\partial \Delta r_{ij}} \: \frac{\partial \Delta r_{ij}}{\partial \vec{p_x}} \)

\( \frac{\partial E_{ij}}{\partial \Delta r_{ij}} = 2 \: \Delta r_{ij} \: k_{ij} \)

for the calculation of the partial derivatives \( \frac{\partial \Delta r_{ij}}{\partial \vec{p_x}} \) see calcDistanceDerivatives().

where
\( k_{ij} \) = the force constant of the elastic potential.
\( \Delta r_{ij} \) = \( r_{ij} - r_{ij}^0 \), the difference between actual and reference distance of the atoms i and j.
\( \vec{p_x} \) = coordinates of the atoms i and j.

Parameters
atom1_posThe position \( \vec{p_i} \) of atom i.
atom2_posThe position \( \vec{p_j} \) of atom j.
atom1_gradThe output variable storing the accumulated energy gradient contributions for atom i.
atom2_gradThe output variable storing the accumulated energy gradient contributions for atom j.
force_constThe force constant \( k_{ij} \).
ref_lengthThe reference distance \( r_{ij}^0 \).
Returns
The calculated elastic potential energy \( E_{ij} \).
Note
The calculated partial energy derivative (see above) for an atom gets added to the corresponding output variable!
Since
1.1

◆ calcMMFF94TorsionGradient() [3/3]

float CDPL.ForceField.calcMMFF94TorsionGradient ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom1_pos,
Math.Vector3D  ctr_atom2_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  term_atom1_grad,
Math.Vector3D  ctr_atom1_grad,
Math.Vector3D  ctr_atom2_grad,
Math.Vector3D  term_atom2_grad,
float  tor_param1,
float  tor_param2,
float  tor_param3 
)

Calculates the torsion interaction energy gradient \( \nabla ET_{ijkl} \) for the central bond j-k and the connected bonds i-j and k-l.

Energy function:

\( ET_{ijkl} = 0.5 \: (V_1 \: (1 + \cos(\Phi_{ijkl})) + V_2 \: (1 - \cos(2 \: \Phi_{ijkl})) + V_3 \: (1 + \cos(3 \: \Phi_{ijkl}))) \)

The partial derivatives with respect to the atom coordinates \( \vec{p_x} \) are calculated by:

\( \frac{\partial ET_{ijkl}}{\partial \vec{p_x}} = \frac{\partial ET_{ijkl}}{\partial \Phi_{ijkl}} \: \frac{\partial \Phi_{ijkl}}{\partial \cos(\Phi_{ijkl})} \: \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_x}} \)

\( \frac{\partial ET_{ijkl}}{\partial \Phi_{ijkl}} = V_2 \: \sin(2 \: \Phi_{ijkl}) - 0.5 \: V_1 \: \sin(\Phi_{ijkl}) - 1.5 \: V_3 \: \sin(3 \: \Phi_{ijkl}) \)
\( \frac{\partial \Phi_{ijkl}}{\partial \cos(\Phi_{ijkl})} = \frac{-1}{\sqrt{1 - \cos(\Phi_{ijkl})^2}} \)

for the calculation of the partial derivatives \( \frac{\partial \cos(\Phi_{ijkl})}{\partial \vec{p_x}} \) see calcDihedralAngleCosDerivatives().

where
\( \Phi_{ijkl} \) is the i-j-k-l dihedral angle. The constants \( V_1 \), \( V_2 \) and \( V_3 \) depend on the atom types I, J, K and L for atoms i, j, k and l, where i-j, j-k and k-l are bonded pairs and i is not equal to l.

\( \vec{p_x} \) = coordinates of the involved atoms i, j, k and l.

Parameters
term_atom1_posThe position \( \vec{p_i} \) of the terminal atom i.
ctr_atom1_posThe position \( \vec{p_j} \) of the central atom j.
ctr_atom2_posThe position \( \vec{p_k} \) of the central atom k.
term_atom2_posThe position \( \vec{p_l} \) of the terminal atom l.
term_atom1_gradThe output variable storing the accumulated energy gradient contributions for atom i.
ctr_atom1_gradThe output variable storing the accumulated energy gradient contributions for atom j.
ctr_atom2_gradThe output variable storing the accumulated energy gradient contributions for atom k.
term_atom2_gradThe output variable storing the accumulated energy gradient contributions for atom l.
tor_param1The torsion parameter \( V_1 \).
tor_param2The torsion parameter \( V_2 \).
tor_param3The torsion parameter \( V_3 \).
Returns
The calculated torsion interaction energy \( ET_{ijkl} \).
Note
The calculated partial energy derivative (see above) for an atom gets added to the corresponding output variable!

◆ calcMMFF94VanDerWaalsGradient() [3/3]

float CDPL.ForceField.calcMMFF94VanDerWaalsGradient ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos,
Math.Vector3D  atom1_grad,
Math.Vector3D  atom2_grad,
float  e_IJ,
float  r_IJ,
float  r_IJ_7 
)

Calculates the van der Waals interaction energy gradient \( \nabla E_{vdW_{ij}} \) for the atom pair i-j.

Energy function:
\( E_{vdW_{ij}} = \varepsilon_{IJ} \: (\frac{1.07 \: R_{IJ}^*}{(R_{ij} + 0.07 \: R_{IJ}^*)})^7 \: (\frac{1.12 \: R_{IJ}^{*^7}}{(R_{ij}^7 + 0.12 \: R_{IJ}^{*^7})} - 2) \;\;\;\; (1) \)

The partial derivatives with respect to the atom coordinates \( \vec{p_x} \) are calculated by:

\( \frac{\partial E_{vdW_{ij}}}{\partial \vec{p_x}} = \frac{\partial E_{vdW_{ij}}}{\partial R_{ij}} \: \frac{\partial R_{ij}}{\partial \vec{p_x}} \)

\( \frac{\partial E_{vdW_{ij}}}{\partial R_{ij}} = \frac{-R_{IJ}^{*^7} \: \varepsilon_{IJ}}{(R_{ij} + 0.07 \: R_{IJ}^*)^8 \: (R_{ij}^7 + 0.12 \: R_{IJ}^{*^7})^2} \: (-22.48094067 \: R_{ij}^{14} + 19.78322779 \: R_{ij}^7 \: R_{IJ}^{*^7} + 0.8812528743 \: R_{ij}^6 \: R_{IJ}^{*^8} + 1.186993667 \: R_{IJ}^{*^{14}}) \)

for the calculation of the partial derivatives \( \frac{\partial R_{ij}}{\partial \vec{p_x}} \) see calcDistanceDerivatives().

where
\( R_{ij} \) = the interatomic distance.
\( R_{II}^* = A_I \: \alpha_I^{PEXP} \;\;\;\; (2) \)
\( R_{IJ}^* = 0.5 \: (R_{II}^* + R_{JJ}^*) \: (1 + AFACT(1 - \exp(-BFACT \: \gamma_{IJ}^2))) \;\;\;\; (3) \)
\( \gamma_{IJ} = \frac{(R_{II}^* - R_{JJ}^*)}{(R_{II}^* + R_{JJ}^*)} \;\;\;\; (4) \)
\( \varepsilon_{IJ} = \frac{181.16 \: G_I \: GJ \: \alpha_I \: \alpha_J}{((\alpha_I / N_I)^{1/2} + (\alpha_J / N_J)^{1/2})} \: \frac{1}{R_{IJ}^{*6}} \;\;\;\; (5) \)
\( \vec{p_x} \) = coordinates of the involved atoms i and j.

MMFF employs a "Buffered 14-7" form (eq 1) together with an expression which relates the minimum-gradient separation \( R_{II}^* \) to the atomic polarizability \( \alpha_I \) (eq 2), a specially formulated combination rule (eqs 3, 4), and a Slater-Kirkwood expression for the well depth \( \varepsilon_{IJ} \) (eq 5): The first non-comment line in the parameter file "MMFFVDW.PAR" contains five floating point numbers which define the variables PEXP, AFACT, BFACT, DARAD, and DAEPS, respectively. PEXP (currently 0.25), AFACT (currently 0.2) and BFACT (currently 12.0) are used in the equations shown above; DARAD and DAEPS are used as follows:

When either i or j is a hydrogen-bond donor, MMFF uses the simple arithmetic mean \( 0.5 \: (R_{II}^* + R_{JJ}^*) \) instead of eq 3 to obtain \( R_{IJ}^* \). If the i-j interaction is a donor-acceptor interaction, MMFF also scales \( R_{IJ}^* \) as given by eq 3 by DARAD (currently 0.8) and \( \varepsilon_{IJ} \) as given by eq 5 by DAEPS (currently 0.5).

Parameters
atom1_posThe position \( \vec{p_i} \) of atom i.
atom2_posThe position \( \vec{p_j} \) of atom j.
atom1_gradThe output variable storing the accumulated energy gradient contributions for atom i.
atom2_gradThe output variable storing the accumulated energy gradient contributions for atom j.
e_IJThe precalculated value \( \varepsilon_{IJ} \).
r_IJThe precalculated value \( R_{IJ}^* \).
r_IJ_7The precalculated value \( R_{IJ}^{*^7} \).
Returns
The calculated van der Waals interaction energy \( E_{vdW_{ij}} \).
Note
The calculated partial energy derivative (see above) for an atom gets added to the corresponding output variable!

◆ calcMMFF94ElectrostaticEnergy() [3/4]

float CDPL.ForceField.calcMMFF94ElectrostaticEnergy ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos,
float  atom1_chg,
float  atom2_chg,
float  scale_fact,
float  de_const,
float  dist_expo 
)

Calculates the electrostatic interaction energy \( EQ_{ij} \) for the atom pair i-j.

\( EQ_{ij} = S \: 332.0716 \: \frac{q_i \: q_j}{D \: (R_{ij} + \delta)^n} \)

where
\( S \) = a scaling factor depending on the topological distance of i-j.
\( q_i \) and \( q_j \) = Partial atomic charges.
\( D \) = Dielectric constant.
\( R_{ij} \) = Interatomic distance (Å) (see calcDistance()).
\( \delta \) = Electrostatic buffering constant (0.05 Å).
\( n \) = Exponent (normally 1, but can be 2 for distance-dependent dielectric constant).

Note: 1-4 electrostatic interactions are scaled by 0.75 (thus, the electrostatic energy term becomes \( EQ_{14} \: 0.75 \)).

Parameters
atom1_posThe position of atom i.
atom2_posThe position of atom j.
atom1_chgThe partial atom charge \( q_i \) of atom i.
atom2_chgThe partial atom charge \( q_j \) of atom j.
scale_factThe scaling factor for \( S \) depending on the topological i-j distance.
de_constThe dielectric constant \( D \).
dist_expoThe exponent \( n \).
Returns
The calculated electrostatic interaction energy \( EQ_{ij} \).

◆ calcMMFF94StretchBendEnergy() [3/4]

float CDPL.ForceField.calcMMFF94StretchBendEnergy ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
float  ijk_force_const,
float  kji_force_const,
float  ref_angle,
float  ref_length1,
float  ref_length2 
)

Calculates the stretch-bend interaction energy \( EBA_{ijk} \) for two bonds i-j and j-k.

\( EBA_{ijk} = 2.51210 \: (kba_{IJK} \: \Delta r_{ij} + kba_{KJI} \: \Delta r_{kj}) \: \Delta \vartheta_{ijk} \)

where
\( kba_{IJK} \) = force constant in \( \frac{md}{rad} \) for i-j stretch coupled to i-j-k bend.
\( kba_{KJI} \) = force constant in \( \frac{md}{rad} \) for k-j stretch coupled to i-j-k bend.
\( \Delta r_{ij} \) = \( r_{ij} - r_{IJ}^0 \), the difference in angstroms between actual and reference bond lengths between bonded atoms i and j of types I and J.
\( \Delta r_{kj} \) = \( r_{kj} - r_{KJ}^0 \), the difference in angstroms between actual and reference bond lengths between bonded atoms k and j of types K and J.
\( \Delta \vartheta_{ijk} \) = \( \vartheta_{ijk} - \vartheta_{IJK}^0 \), the difference between actual and reference i-j-k bond angles in degrees.

For the calculation of \( r_{ij} \), \( r_{kj} \), and \( \vartheta_{ijk} \) see calcBondLengthsAndAngle().

Currently, stretch-bend interactions are omitted when the i-j-k interaction corresponds to a linear bond angle.

Parameters
term_atom1_posThe position of atom i.
ctr_atom_posThe position of the central atom j.
term_atom2_posThe position of atom k.
ijk_force_constThe stretch-bend force constant \( kba_{IJK} \).
kji_force_constThe stretch-bend force constant \( kba_{KJI} \).
ref_angleThe reference bond angle \( \vartheta_{IJK}^0 \).
ref_length1The reference bond length \( r_{IJ}^0 \).
ref_length2The reference bond length \( r_{KJ}^0 \).
Returns
The calculated stretch-bend interaction energy \( EBA_{ijk} \).

◆ calcMMFF94StretchBendEnergy() [4/4]

float CDPL.ForceField.calcMMFF94StretchBendEnergy ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
float  r_ij,
float  r_jk,
float  ijk_force_const,
float  kji_force_const,
float  ref_angle,
float  ref_length1,
float  ref_length2 
)

Calculates the stretch-bend interaction energy \( EBA_{ijk} \) for two bonds i-j and j-k.

\( EBA_{ijk} = 2.51210 \: (kba_{IJK} \: \Delta r_{ij} + kba_{KJI} \: \Delta r_{kj}) \: \Delta \vartheta_{ijk} \)

where
\( kba_{IJK} \) = force constant in \( \frac{md}{rad} \) for i-j stretch coupled to i-j-k bend.
\( kba_{KJI} \) = force constant in \( \frac{md}{rad} \) for k-j stretch coupled to i-j-k bend.
\( \Delta r_{ij} \) = \( r_{ij} - r_{IJ}^0 \), the difference in angstroms between actual and reference bond lengths between bonded atoms i and j of types I and J.
\( \Delta r_{kj} \) = \( r_{kj} - r_{KJ}^0 \), the difference in angstroms between actual and reference bond lengths between bonded atoms k and j of types K and J.
\( \Delta \vartheta_{ijk} \) = \( \vartheta_{ijk} - \vartheta_{IJK}^0 \), the difference between actual and reference i-j-k bond angles in degrees.

For the calculation of \( r_{ij} \), \( r_{kj} \), and \( \vartheta_{ijk} \) see calcBondLengthsAndAngle().

Currently, stretch-bend interactions are omitted when the i-j-k interaction corresponds to a linear bond angle.

Parameters
term_atom1_posThe position of atom i.
ctr_atom_posThe position of the central atom j.
term_atom2_posThe position of atom k.
r_ijThe length of the bond between atom i and j.
r_jkThe length of the bond between atom j and k.
ijk_force_constThe stretch-bend force constant \( kba_{IJK} \).
kji_force_constThe stretch-bend force constant \( kba_{KJI} \).
ref_angleThe reference bond angle \( \vartheta_{IJK}^0 \).
ref_length1The reference bond length \( r_{IJ}^0 \).
ref_length2The reference bond length \( r_{KJ}^0 \).
Returns
The calculated stretch-bend interaction energy \( EBA_{ijk} \).

◆ calcMMFF94AngleBendingEnergy() [3/4]

float CDPL.ForceField.calcMMFF94AngleBendingEnergy ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
bool  linear,
float  force_const,
float  ref_angle 
)

Calculates the angle bending interaction energy \( EA_{ijk} \) for two bonds i-j and j-k.

\( EA_{ijk} = 0.043844 \: \frac{ka_{IJK}}{2} \: \Delta \vartheta_{ijk}^2 \: (1 + cb \: \Delta \vartheta_{ijk}) \)

where
\( ka_{IJK} \) = angle bending force constant in \( \frac{md Ang}{rad^2} \) for the angle between atoms i, j and k of atom types I, J and K.
\( \Delta \vartheta_{ijk} \) = \( \vartheta_{ijk} - \vartheta_{IJK}^0 \), the difference between actual and reference i-j-k bond angles in degrees (see calcBondAngle()).
\( cb \) = \( -0.007 \: deg^{-1} \), the "cubic-bend" constant.

For linear or near-linear bond angles such as those which occur in alkynes, nitriles, isonitriles, azides, and diazo compounds, the form used in DREIDING and UFF is employed:

\( EA_{ijk} = 143.9325 \: ka_{IJK} \:(1 + \cos(\vartheta_{ijk})) \)

where \( ka_{IJK} \) and \( \vartheta_{ijk} \) are defined as above.

Parameters
term_atom1_posThe position of atom i.
ctr_atom_posThe position of the central atom j.
term_atom2_posThe position of atom k.
linearIf True, the bond angle is linear.
force_constThe angle bending force constant \( ka_{IJK} \).
ref_angleThe reference bond angle \( \vartheta_{IJK}^0 \).
Returns
The calculated angle bending interaction energy \( EA_{ijk} \).

◆ calcMMFF94AngleBendingEnergy() [4/4]

float CDPL.ForceField.calcMMFF94AngleBendingEnergy ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
float  r_ij,
float  r_jk,
bool  linear,
float  force_const,
float  ref_angle 
)

Calculates the angle bending interaction energy \( EA_{ijk} \) for two bonds i-j and j-k.

\( EA_{ijk} = 0.043844 \: \frac{ka_{IJK}}{2} \: \Delta \vartheta_{ijk}^2 \: (1 + cb \: \Delta \vartheta_{ijk}) \)

where
\( ka_{IJK} \) = angle bending force constant in \( \frac{md Ang}{rad^2} \) for the angle between atoms i, j and k of atom types I, J and K.
\( \Delta \vartheta_{ijk} \) = \( \vartheta_{ijk} - \vartheta_{IJK}^0 \), the difference between actual and reference i-j-k bond angles in degrees (see calcBondAngle()).
\( cb \) = \( -0.007 \: deg^{-1} \), the "cubic-bend" constant.

For linear or near-linear bond angles such as those which occur in alkynes, nitriles, isonitriles, azides, and diazo compounds, the form used in DREIDING and UFF is employed:

\( EA_{ijk} = 143.9325 \: ka_{IJK} \:(1 + \cos(\vartheta_{ijk})) \)

where \( ka_{IJK} \) and \( \vartheta_{ijk} \) are defined as above.

Parameters
term_atom1_posThe position of atom i.
ctr_atom_posThe position of the central atom j.
term_atom2_posThe position of atom k.
r_ijThe length of the bond between atom i and j.
r_jkThe length of the bond between atom j and k.
linearIf True, the bond angle is linear.
force_constThe angle bending force constant \( ka_{IJK} \).
ref_angleThe reference bond angle \( \vartheta_{IJK}^0 \).
Returns
The calculated angle bending interaction energy \( EA_{ijk} \).

◆ calcMMFF94OutOfPlaneBendingEnergy() [3/4]

float CDPL.ForceField.calcMMFF94OutOfPlaneBendingEnergy ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  oop_atom_pos,
float  force_const 
)

Calculates the out-of-plane bending interaction energy \( EOOP_{ijk;l} \) for the bond j-l and the plane i-j-k.

\( EOOP_{ijk;l} = 0.043844 \: \frac{koop_{IJK \colon L}}{2} \: \chi_{ijk;l}^2 \)

where
\( koop_{IJK \colon L} \) = out-of-plane bending force constant in \( \frac{md Ang}{rad^2} \).
\( \chi_{ijk;l} \) = angle in degrees between the bond j-l and the plane i-j-k, where j is the central atom (see calcOutOfPlaneAngle()).

Parameters
term_atom1_posThe position of atom i.
ctr_atom_posThe position of the central atom j.
term_atom2_posThe position of atom k.
oop_atom_posThe position of the out-of-plane atom l.
force_constThe out-of-plane bending force constant \( koop_{IJK \colon L} \).
Returns
The calculated out-of-plane bending interaction energy \( EOOP_{ijk;l} \).

◆ calcMMFF94OutOfPlaneBendingEnergy() [4/4]

float CDPL.ForceField.calcMMFF94OutOfPlaneBendingEnergy ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom_pos,
Math.Vector3D  term_atom2_pos,
Math.Vector3D  oop_atom_pos,
float  r_jl,
float  force_const 
)

Calculates the out-of-plane bending interaction energy \( EOOP_{ijk;l} \) for the bond j-l and the plane i-j-k.

\( EOOP_{ijk;l} = 0.043844 \: \frac{koop_{IJK \colon L}}{2} \: \chi_{ijk;l}^2 \)

where
\( koop_{IJK \colon L} \) = out-of-plane bending force constant in \( \frac{md Ang}{rad^2} \).
\( \chi_{ijk;l} \) = angle in degrees between the bond j-l and the plane i-j-k, where j is the central atom (see calcOutOfPlaneAngle()).

Parameters
term_atom1_posThe position of atom i.
ctr_atom_posThe position of the central atom j.
term_atom2_posThe position of atom k.
oop_atom_posThe position of the out-of-plane atom l.
r_jlThe length of the bond between atom j and atom l.
force_constThe out-of-plane bending force constant \( koop_{IJK \colon L} \).
Returns
The calculated out-of-plane bending interaction energy \( EOOP_{ijk;l} \).

◆ calcMMFF94BondStretchingEnergy() [3/4]

float CDPL.ForceField.calcMMFF94BondStretchingEnergy ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos,
float  force_const,
float  ref_length 
)

Calculates the bond stretching interaction energy \( EB_{ij} \) for the bond i-j.

\( EB_{ij} = 143.9325 \: \frac{kb_{IJ}}{2} \: \Delta r_{ij}^2 \times (1 + cs \: \Delta r_{ij} + \frac{7}{12} \: cs^2 \: \Delta r_{ij}^2) \)

where
\( kb_{IJ} \) = the bond stretching force constant in \( \frac{md}{Ang} \) for bonded atoms i and j of types I and J.
\( \Delta r_{ij} \) = \( r_{ij} - r_{IJ}^0 \), the difference in angstroms between actual and reference bond lengths between bonded atoms i and j of types I and J (see calcDistance()).
\( cs \) = \( -2 \: Ang^{-1} \), the "cubic stretch" constant.

Note: throughout this description, the indices i, j, k, ... represent atoms; I, J, K, ... denote the corresponding numerical MMFF atom types (or, occasionally, the atomic species).

Parameters
atom1_posThe position of atom i.
atom2_posThe position of atom j.
force_constThe bond stretching force constant \( kb_{IJ} \).
ref_lengthThe reference bond length \( r_{IJ}^0 \).
Returns
The calculated bond stretching interaction energy \( EB_{ij} \).

◆ calcElasticPotentialEnergy() [3/3]

float CDPL.ForceField.calcElasticPotentialEnergy ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos,
float  force_const,
float  ref_length 
)

Calculates the energy \( E_{ij} \) of an elastic potential applied on a pair of atoms i-j.

\( E_{ij} = k_{ij} \: \Delta r_{ij}^2 \)

where
\( k_{ij} \) = the force constant of the elastic potential.
\( \Delta r_{ij} \) = \( r_{ij} - r_{ij}^0 \), the difference between actual and reference distance of the atoms i and j.

Parameters
atom1_posThe position of atom i.
atom2_posThe position of atom j.
force_constThe force constant \( k_{ij} \).
ref_lengthThe reference distance \( r_{ij}^0 \).
Returns
The calculated elastic potential energy \( E_{ij} \).
Since
1.1

◆ calcMMFF94TorsionEnergy() [3/3]

float CDPL.ForceField.calcMMFF94TorsionEnergy ( Math.Vector3D  term_atom1_pos,
Math.Vector3D  ctr_atom1_pos,
Math.Vector3D  ctr_atom2_pos,
Math.Vector3D  term_atom2_pos,
float  tor_param1,
float  tor_param2,
float  tor_param3 
)

Calculates the torsion interaction energy \( ET_{ijkl} \) for the central bond j-k and the connected bonds i-j and k-l.

\( ET_{ijkl} = 0.5 \: (V_1 \: (1 + \cos(\Phi_{ijkl})) + V_2 \: (1 - \cos(2 \: \Phi_{ijkl})) + V_3 \: (1 + \cos(3 \: \Phi_{ijkl}))) \)

where \( \Phi_{ijkl} \) is the i-j-k-l dihedral angle. The constants \( V_1 \), \( V_2 \) and \( V_3 \) depend on the atom types I, J, K and L for atoms i, j, k and l, where i-j, j-k and k-l are bonded pairs and i is not equal to l.

For the calculation of \( \cos(\Phi_{ijkl}) \) see calcDihedralAngleCos().

Parameters
term_atom1_posThe position of the terminal atom i.
ctr_atom1_posThe position of the central atom j.
ctr_atom2_posThe position of the central atom k.
term_atom2_posThe position of the terminal atom l.
tor_param1The torsion parameter \( V_1 \).
tor_param2The torsion parameter \( V_2 \).
tor_param3The torsion parameter \( V_3 \).
Returns
The calculated torsion interaction energy \( ET_{ijkl} \).

◆ calcMMFF94VanDerWaalsEnergy() [3/4]

float CDPL.ForceField.calcMMFF94VanDerWaalsEnergy ( Math.Vector3D  atom1_pos,
Math.Vector3D  atom2_pos,
float  e_IJ,
float  r_IJ,
float  r_IJ_7 
)

Calculates the van der Waals interaction energy \( E_{vdW_{ij}} \) for the atom pair i-j.

\( E_{vdW_{ij}} = \varepsilon_{IJ} \: (\frac{1.07 \: R_{IJ}^*}{(R_{ij} + 0.07 \: R_{IJ}^*)})^7 \: (\frac{1.12 \: R_{IJ}^{*^7}}{(R_{ij}^7 + 0.12 \: R_{IJ}^{*^7})} - 2) \;\;\;\; (1) \)

where
\( R_{ij} \) = the interatomic distance (see calcDistance()).
\( R_{II}^* = A_I \: \alpha_I^{PEXP} \;\;\;\; (2) \)
\( R_{IJ}^* = 0.5 \: (R_{II}^* + R_{JJ}^*) \: (1 + AFACT(1 - \exp(-BFACT \: \gamma_{IJ}^2))) \;\;\;\; (3) \)
\( \gamma_{IJ} = \frac{(R_{II}^* - R_{JJ}^*)}{(R_{II}^* + R_{JJ}^*)} \;\;\;\; (4) \)
\( \varepsilon_{IJ} = \frac{181.16 \: G_I \: GJ \: \alpha_I \: \alpha_J}{((\alpha_I / N_I)^{1/2} + (\alpha_J / N_J)^{1/2})} \: \frac{1}{R_{IJ}^{*^6}} \;\;\;\; (5) \)

MMFF employs a "Buffered 14-7" form (eq 1) together with an expression which relates the minimum-energy separation \( R_{II}^* \) to the atomic polarizability \( \alpha_I \) (eq 2), a specially formulated combination rule (eqs 3, 4), and a Slater-Kirkwood expression for the well depth \( \varepsilon_{IJ} \) (eq 5): The first non-comment line in the parameter file "MMFFVDW.PAR" contains five floating point numbers which define the variables PEXP, AFACT, BFACT, DARAD, and DAEPS, respectively. PEXP (currently 0.25), AFACT (currently 0.2) and BFACT (currently 12.0) are used in the equations shown above; DARAD and DAEPS are used as follows:

When either i or j is a hydrogen-bond donor, MMFF uses the simple arithmetic mean \( 0.5 \: (R_{II}^* + R_{JJ}^*) \) instead of eq 3 to obtain \( R_{IJ}^* \). If the i-j interaction is a donor-acceptor interaction, MMFF also scales \( R_{IJ}^* \) as given by eq 3 by DARAD (currently 0.8) and \( \varepsilon_{IJ} \) as given by eq 5 by DAEPS (currently 0.5).

Parameters
atom1_posThe position of atom i.
atom2_posThe position of atom j.
e_IJThe precalculated value \( \varepsilon_{IJ} \).
r_IJThe precalculated value \( R_{IJ}^* \).
r_IJ_7The precalculated value \( R_{IJ}^{*^7} \).
Returns
The calculated van der Waals interaction energy \( E_{vdW_{ij}} \).

◆ calcMMFF94ElectrostaticEnergy() [4/4]

float CDPL.ForceField.calcMMFF94ElectrostaticEnergy ( float  r_ij,
float  atom1_chg,
float  atom2_chg,
float  scale_fact,
float  de_const,
float  dist_expo 
)

Calculates the electrostatic interaction energy \( EQ_{ij} \) for the atom pair i-j.

\( EQ_{ij} = S \: 332.0716 \: \frac{q_i \: q_j}{D \: (R_{ij} + \delta)^n} \)

where
\( S \) = a scaling factor depending on the topological distance of i-j.
\( q_i \) and \( q_j \) = Partial atomic charges.
\( D \) = Dielectric constant.
\( R_{ij} \) = Interatomic distance (Å) (see calcDistance()).
\( \delta \) = Electrostatic buffering constant (0.05 Å).
\( n \) = Exponent (normally 1, but can be 2 for distance-dependent dielectric constant).

Note: 1-4 electrostatic interactions are scaled by 0.75 (thus, the electrostatic energy term becomes \( EQ_{14} \: 0.75 \)).

Parameters
r_ijThe interatomic distance \( R_{ij} \) of atom i and atom j.
atom1_chgThe partial atom charge \( q_i \) of atom i.
atom2_chgThe partial atom charge \( q_j \) of atom j.
scale_factThe scaling factor for \( S \) depending on the topological i-j distance.
de_constThe dielectric constant \( D \).
dist_expoThe exponent \( n \).
Returns
The calculated electrostatic interaction energy \( EQ_{ij} \).

◆ calcMMFF94BondStretchingEnergy() [4/4]

float CDPL.ForceField.calcMMFF94BondStretchingEnergy ( float  r_ij,
float  force_const,
float  ref_length 
)

Calculates the bond stretching interaction energy \( EB_{ij} \) for the bond i-j.

\( EB_{ij} = 143.9325 \: \frac{kb_{IJ}}{2} \: \Delta r_{ij}^2 \times (1 + cs \: \Delta r_{ij} + \frac{7}{12} \: cs^2 \: \Delta r_{ij}^2) \)

where
\( kb_{IJ} \) = the bond stretching force constant in \( \frac{md}{Ang} \) for bonded atoms i and j of types I and J.
\( \Delta r_{ij} \) = \( r_{ij} - r_{IJ}^0 \), the difference in angstroms between actual and reference bond lengths between bonded atoms i and j of types I and J (see calcDistance()).
\( cs \) = \( -2 \: Ang^{-1} \), the "cubic stretch" constant.

Note: throughout this description, the indices i, j, k, ... represent atoms; I, J, K, ... denote the corresponding numerical MMFF atom types (or, occasionally, the atomic species).

Parameters
r_ijThe length of the bond between atom i and j.
force_constThe bond stretching force constant \( kb_{IJ} \).
ref_lengthThe reference bond length \( r_{IJ}^0 \).
Returns
The calculated bond stretching interaction energy \( EB_{ij} \).

◆ calcMMFF94VanDerWaalsEnergy() [4/4]

float CDPL.ForceField.calcMMFF94VanDerWaalsEnergy ( float  r_ij,
float  e_IJ,
float  r_IJ,
float  r_IJ_7 
)

Calculates the van der Waals interaction energy \( E_{vdW_{ij}} \) for the atom pair i-j.

\( E_{vdW_{ij}} = \varepsilon_{IJ} \: (\frac{1.07 \: R_{IJ}^*}{(R_{ij} + 0.07 \: R_{IJ}^*)})^7 \: (\frac{1.12 \: R_{IJ}^{*^7}}{(R_{ij}^7 + 0.12 \: R_{IJ}^{*^7})} - 2) \;\;\;\; (1) \)

where
\( R_{ij} \) = the interatomic distance (see calcDistance()).
\( R_{II}^* = A_I \: \alpha_I^{PEXP} \;\;\;\; (2) \)
\( R_{IJ}^* = 0.5 \: (R_{II}^* + R_{JJ}^*) \: (1 + AFACT(1 - \exp(-BFACT \: \gamma_{IJ}^2))) \;\;\;\; (3) \)
\( \gamma_{IJ} = \frac{(R_{II}^* - R_{JJ}^*)}{(R_{II}^* + R_{JJ}^*)} \;\;\;\; (4) \)
\( \varepsilon_{IJ} = \frac{181.16 \: G_I \: GJ \: \alpha_I \: \alpha_J}{((\alpha_I / N_I)^{1/2} + (\alpha_J / N_J)^{1/2})} \: \frac{1}{R_{IJ}^{*^6}} \;\;\;\; (5) \)

MMFF employs a "Buffered 14-7" form (eq 1) together with an expression which relates the minimum-energy separation \( R_{II}^* \) to the atomic polarizability \( \alpha_I \) (eq 2), a specially formulated combination rule (eqs 3, 4), and a Slater-Kirkwood expression for the well depth \( \varepsilon_{IJ} \) (eq 5): The first non-comment line in the parameter file "MMFFVDW.PAR" contains five floating point numbers which define the variables PEXP, AFACT, BFACT, DARAD, and DAEPS, respectively. PEXP (currently 0.25), AFACT (currently 0.2) and BFACT (currently 12.0) are used in the equations shown above; DARAD and DAEPS are used as follows:

When either i or j is a hydrogen-bond donor, MMFF uses the simple arithmetic mean \( 0.5 \: (R_{II}^* + R_{JJ}^*) \) instead of eq 3 to obtain \( R_{IJ}^* \). If the i-j interaction is a donor-acceptor interaction, MMFF also scales \( R_{IJ}^* \) as given by eq 3 by DARAD (currently 0.8) and \( \varepsilon_{IJ} \) as given by eq 5 by DAEPS (currently 0.5).

Parameters
r_ijThe interatomic distance \( R_{ij} \) of atom i and atom j.
e_IJThe precalculated value \( \varepsilon_{IJ} \).
r_IJThe precalculated value \( R_{IJ}^* \).
r_IJ_7The precalculated value \( R_{IJ}^{*^7} \).
Returns
The calculated van der Waals interaction energy \( E_{vdW_{ij}} \).