Source code for mchem.terms.bonded

"""Bonded force terms: bonds, angles, Urey-Bradley, torsions, CMAP, AMOEBA-specific."""

import numpy as np
from dataclasses import dataclass


[docs] @dataclass class HarmonicBond: """Class for a bond with normal harmonic potential""" p0: int p1: int b0: float kb: float paramIdx: int = -1
[docs] @dataclass class AmoebaBond: """Class for a bond in AMOEBA force field, i.e. up to quartic polynomials""" p0: int p1: int b0: float kb: float cubic: float quartic: float paramIdx: int = -1
[docs] @dataclass class HarmonicAngle: """Class for an angle with harmonic potential""" p0: int p1: int p2: int th0: float kth: float paramIdx: int = -1
[docs] @dataclass class AmoebaAngle: """Class for an angle in AMOEBA force field (up to sextic polynomials)""" p0: int p1: int p2: int th0: float kth: float cubic: float quartic: float pentic: float sextic: float paramIdx: int = -1
[docs] @dataclass class AmoebaAngleInPlane: """Class for an in-plane angle in AMOEBA force field (up to sextic polynomials)""" p0: int p1: int p2: int p3: int # auxliary atom index for evaluate projected angle th0: float kth: float cubic: float quartic: float pentic: float sextic: float paramIdx: int = -1
[docs] @dataclass class AmoebaStretchBend: """Class for stretch-bend coupling term in AMOEBA force field""" p0: int p1: int p2: int th0: float b01: float b02: float kb1: float kb2: float paramIdx: int = -1
[docs] @dataclass class AmoebaUreyBradley: """Class for Urey-Bradley term used in AMOEBA force field""" p0: int p1: int p2: int r0: float fc: float paramIdx: int = -1
[docs] @dataclass class AmoebaOutOfPlaneBend: """Class for out-of-plane bending term in AMOEBA force field""" p0: int p1: int p2: int p3: int fc: float paramIdx: int = -1
[docs] @dataclass class PeriodicTorsion: """Periodic torsion (dihedral) term with up to six Fourier components.""" p0: int p1: int p2: int p3: int phase1: float phase2: float phase3: float phase4: float phase5: float phase6: float k1: float k2: float k3: float k4: float k5: float k6: float paramIdx: int = -1
[docs] @dataclass class AmoebaStretchTorsion: """Class for AMOEBA stretch-torsion coupling term""" p0: int p1: int p2: int p3: int k11: float k12: float k13: float k21: float k22: float k23: float k31: float k32: float k33: float b01: float b02: float b03: float phi01: float phi02: float phi03: float
[docs] @dataclass class AmoebaAngleTorsion: """Class for AMOEBA angle-torsion coupling term""" p0: int p1: int p2: int p3: int k11: float k12: float k13: float k21: float k22: float k23: float th01: float th02: float phi01: float phi02: float phi03: float paramIdx: int = -1
[docs] @dataclass class AmoebaPiTorsion: """ Class for pi-torsion term in Amoeba """ p0: int p1: int p2: int p3: int p4: int p5: int k: float paramIdx: int = -1
[docs] @dataclass class CMAPTable: """Class for a CMAP tabulated torsion-torsion coupling term""" phi: float psi: float ene: float paramIdx: int = -1
[docs] @dataclass class CMAP: """Class for CMAP torsion-torsion coupling term""" cmap: int p0: int p1: int p2: int p3: int p4: int p5: int p6: int p7: int
[docs] @dataclass class AmoebaTorsionTorsionGrid: """Class for an AMOEBA torsion-torsion 2D energy grid point""" angle1: float angle2: float f: float gridIdx: int
[docs] @dataclass class AmoebaTorsionTorsion: """Class for an AMOEBA torsion-torsion coupling term (5-atom chain)""" p0: int p1: int p2: int p3: int p4: int gridIdx: int nx: int ny: int