pele.thermodynamics._normalmodes#

class pele.thermodynamics._normalmodes.NormalModeError[source]

Source

class NormalModeError(Exception):

raised if the normal mode results are not as expected

this typically means that a minimum is actually a transition state, or a transition state is actually a higher order saddle

pele.thermodynamics._normalmodes.normalmode_frequencies()[source]

Source

def normalmode_frequencies(hessian, metric=None, eps=1e-4):

calculate (squared) normal mode frequencies

Parameters:
hessian: 2d array

hessian matrix

metric: 2d array

mass weighted metric tensor

Returns:
sorted array of normal mode frequencies
pele.thermodynamics._normalmodes.normalmodes()[source]

Source

def normalmodes(hessian, metric=None, eps=1e-4, symmetric=False):

calculate (squared) normal mode frequencies and normal mode vectors

Parameters:
hessian: array

hessian marix

metric: array

mass weighted metric tensor

symmetric: bool

If true, the Hessian times the metric tensor is assumed to be symmetric. This is not usually the case, even if the metric tensor is symmetric. It is true if the metric tensor is the identity.

Returns:
freq, evecs tuple array of squared frequencies and normal modes
pele.thermodynamics._normalmodes.logproduct_freq2()[source]

Source

def logproduct_freq2(freqs, nzero, nnegative=0, eps=1e-4):

calculate the log product of positive (squared) frequencies

calculates log(product_i f_i^2)

Parameters:
freqs:

array of (squared) normalmode frequencies

nzero: int

expected number of zero eigenvalues

nnegative: int, optional

expected number of negative frequencies, 0 for minimum, 1 for transition states

eps: float, optional

cutoff to determine if eigenvalue is no zero

Returns:
tuple of number of considered frequencies and log product of frequencies