VPTSystem

Provides a little helper for setting up the input system for a VPT job

 

__init__(self, mol, internals=None, dummy_atoms=None, modes=None, local_modes=None, mode_selection=None, mode_transformation=None, full_surface_mode_selection=None, potential_derivatives=None, potential_function=None, order=2, dipole_derivatives=None, eckart_embed=False, copy_mol=False): 
  • mol: str | list | Molecule

    the molecule or system specification to use (doesn’t really even need to be a molecule)

  • internals: list | dict

    the Z-matrix for the internal coordinates optionally with a specification of a conversion and inverse To supply a conversion function, provide a dict like so

    {
    'zmatrix': [[atom1, bond1, angle1, dihed1], [atom2, bond2, angle2, dihed2], ...] or None,
    'conversion': 'a function to convert from Z-matrix coordinates to desired coordinates',
    'inverse': 'the inverse conversion'
    }
    
  • modes: MolecularVibrations|dict

    the normal modes to use if not already supplied by the Molecule

  • potential_derivatives: Iterable[np.ndarray]

    the derivatives of the potential to use for expansions

  • dipole_derivatives: Iterable[np.ndarray]

    the set of dipole derivatives to use for expansions

 

prep_local_modes(self, dRdX, dXdR=None, sort_freqs=False): 

 

@property
nmodes(self): 

Provides the number of modes in the system

  • :returns: _

 

get_potential_derivatives(self, potential_function, order=2, **fd_opts): 

Computes potential derivatives for the given function through finite difference

  • potential_function: Any
  • order: Any
  • fd_opts: Any
  • :returns: _

 

@classmethod
from_harmonic_scan(cls, scan_array): 

When using functions of internal (Z-matrix/polyspherical) coordinates, a sample form of the conversion function is

def conv(r, t, f, **kwargs):
    '''
    Takes the bond lengths (`r`), angles `(t)` and dihedrals `(f)`,
    and returns new coordinates that are functions of these coordinates
    '''
    ... # convert the coordinates
    return np.array([r, t, f])

and then the inverse function will take the output of conv and return the original Z-matrix/polyspherical coordinates.


Feedback

Examples

Templates

Documentation