mstk.forcefield.LinearAngleTerm

class mstk.forcefield.LinearAngleTerm(type1, type2, type3, k)

Linear angle described by the distance between the center atom and its equilibrated position

For angle i-j-k, the energy function is

>>> U = k_linear * (r_j - r_j_0)^2
>>> r_j_0 = a * r_i + (1-a) * r_k
>>> a = b_jk / (b_ij + b_jk)

The k_linear can be converted from the k_theta in HarmonicAngleTerm

>>> k_linear = k_theta * 2 * (b_ij + b_jk)^2 / (b_ij * b_jk)^2

To be consistent with other angle terms, the k_theta is defined as the force constant, in unit of kJ/mol/rad^2

This term itself does not contain bond length parameters for i-j and j-k bonds Instead, it expects two BondTerm between each side atom type and type2 existing in the ForceField object. If such a BondTerm does not exist, then the ForceField is invalid and cannot be used to construct a System.

During the initialization, the two side atom types will be sorted by their string.

Parameters:
  • type1 (str) –

  • type2 (str) –

  • type3 (str) –

  • k (float) –

type1
Type:

str

type2
Type:

str

type3
Type:

str

theta
Type:

float

k
Type:

float

fixed
Type:

bool

Methods

__init__(type1, type2, type3, k)

calc_a_k_linear(b12, b23)

evaluate_energy(val)

Evaluate the energy for a force field term like HarmonicBondTerm, PeriodicDihedralTerm, etc...

get_alias()

Return a short alias for the name of this class

to_zff()

Pack the attributes of a term into a string so that can be saved into a line in ZFF file.

to_zff_header()

Header string to explain a line in ZFF format

to_zfp()

Pack the attributes of a term into a dict so that can be saved into ZFP xml file.

Attributes

is_linear

Whether or not this angle term is linear.

name

The name of this force field term.

calc_a_k_linear(b12, b23)
property is_linear

Whether or not this angle term is linear.

Returns:

is

Return type:

bool