schrodinger.application.matsci.anharmonic module

Utilities for the anharmonic corrections workflow.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.matsci.anharmonic.SeqData(start, step, n_points)

Bases: tuple

n_points

Alias for field number 2

start

Alias for field number 0

step

Alias for field number 1

schrodinger.application.matsci.anharmonic.get_seq_data(options, flag)

Return a sequence data for the given flag.

Parameters
  • options (argparse.Namespace) – the options

  • flag (str) – the flag

Return type

SeqData

Returns

the sequence data

schrodinger.application.matsci.anharmonic.evaluate_f(x, deriv_idx, coeffs)

Evaluate the nth derivative of a polynomial described by the given coefficients.

Parameters
  • x (float) – the point at which to evaluate

  • deriv_idx (int) – indicates what derivative of the polynomial to evaluate, 0 is the polynomial itself, 1 is the first derivative, etc.

  • coeffs (tuple) – the coefficents of the polynomial, for a mth order polynomial must be of lenth m + 1

Return type

float

Returns

the evaluated value

schrodinger.application.matsci.anharmonic.angular_freq_to_freq(angular_freq)

Convert the given angular frequency to frequency.

Parameters

angular_freq (float) – the angular frequency in s**-1

Return type

float

Returns

the frequency in cm**-1

schrodinger.application.matsci.anharmonic.freq_to_angular_freq(freq)

Convert the given frequency to angular frequency.

Parameters

freq (float) – the frequency in cm**-1

Return type

float

Returns

the angular frequency in s**-1

schrodinger.application.matsci.anharmonic.plotter(x_min, x_max, x_e_min, x_e_max, x_step, y_func, file_name, title, y_label, x_values=None)

Plot the given function.

Parameters
  • x_min (float) – the minimum value on the x-axis

  • x_max (float) – the maximum value on the x-axis

  • x_e_min (float) – the minimum value on the extended x-axis

  • x_e_max (float) – the maximum value on the extended x-axis

  • x_step (float) – the step size to use on the x-axis

  • y_func (function) – the function to use to obtain y-axis values

  • file_name (str) – the file name used to write the plot image

  • title (str) – the title for the plot image

  • y_label (str) – the y-axis label for the plot image

  • x_values (list or None) – if not None then contains x values for points to show in the plot

schrodinger.application.matsci.anharmonic.get_normal_modes(jagout, max_i_freq=- inf)

Return the normal modes from the given JaguarOutput.

Parameters
Return type

list

Returns

contains pair tuples, (normal mode index (1-based), schrodinger.application.jaguar.results.NormalMode)

schrodinger.application.matsci.anharmonic.check_imaginary_frequencies(jag_out, jag_in, max_i_freq=0)

Check imaginary frequencies.

Parameters
  • jag_out (JaguarOutput) – the Jaguar output object

  • jag_in (JaguarInput) – the Jaguar input object

  • max_i_freq (float) – tolerate small imaginary frequencies less than this value in wavenumbers (cm^-1)

Raises

AnharmonicException – if there is an issue

schrodinger.application.matsci.anharmonic.get_st_jaguar_output(jagout_file_name, allow_new_dummies=False)

Return a structure from the given Jaguar output file.

Parameters
  • jagout_file_name (str) – the name of a Jaguar output file

  • allow_new_dummies (bool) – whether to allow mmjag’s lewis structure build to possibly add new dummy atoms

Return type

schrodinger.structure.Structure

Returns

the structure

exception schrodinger.application.matsci.anharmonic.AnharmonicException

Bases: Exception

class schrodinger.application.matsci.anharmonic.AnharmonicPotentials(st=None, jagout_file_name=None, jagrin_file_name=None, max_freq=300, factor_data=None, jaguar_kwargs={'basis': 'LACVP**', 'dftname': 'B3LYP', 'igeopt': 1, 'molchg': 0, 'multip': 1}, temperature_data=None, pressure_data=None, max_i_freq=0, plot=False, process_no_anharmonicities=False, tpp=1, logger=None, robust=False)

Bases: object

__init__(st=None, jagout_file_name=None, jagrin_file_name=None, max_freq=300, factor_data=None, jaguar_kwargs={'basis': 'LACVP**', 'dftname': 'B3LYP', 'igeopt': 1, 'molchg': 0, 'multip': 1}, temperature_data=None, pressure_data=None, max_i_freq=0, plot=False, process_no_anharmonicities=False, tpp=1, logger=None, robust=False)

Create an instance.

Parameters
  • st (schrodinger.structure.Structure or None) – a structure for which to calculate anharmonic potentials or None if using Jaguar frequency files directly

  • jagout_file_name (str or None) – the name of a Jaguar frequency output file for which to calculate anharmonic potentials or None if using an input structure

  • jagrin_file_name (str or None) – the name of a Jaguar freqency restart input file for which to calculate anharmonic potentials or None if using an input structure

  • max_freq (float) – anharmonic potentials are created for normal modes with harmonic frequencies less than this value in wavenumbers (cm^-1)

  • factor_data (SeqData or None) – unitless factor data for factors that multiply a normal mode displacement, if None then the defaults are used, the number of points is in the positive direction only, excluding zero and the negative direction, for example using a value of 4 in turn means 2 * 4 + 1 = 9 points total

  • jaguar_kwargs (dict) – Jaguar &gen section keyword arguments, used only if the anharmonic potentials are being calculated from an input structure rather than directly from Jaguar frequency files

  • temperature_data (SeqData or None) – temperature data in K, if None then the defaults are used

  • pressure_data (SeqData or None) – pressure data in atm, if None then the defaults are used

  • max_i_freq (float) – tolerate small imaginary frequencies less than this value in wavenumbers (cm^-1)

  • plot (bool) – if True then return plots of the potentials and particle densities

  • process_no_anharmonicities (bool) – if True then do not exit with an error if the given max_freq results in zero normal modes to be treated anharmonically

  • tpp (int) – the threads-per-process to use for running Jaguar calculations

  • logger (logging.Logger or None) – output logger or None if there isn’t one

  • robust (bool) – If True, use the robust Jaguar driver to run Jaguar jobs. If False, use Jaguar directly.

getJaguarJob(base_name, input_name)

Get the job to run Jaguar with the given job base name and input name. The job will run either Jaguar directly or the robust Jaguar driver based on the current robust setting.

Parameters
  • base_name (str) – The base name of this job

  • input_name (str) – The name of the input file

Return type

jobutils.RobustSubmissionJob

Returns

The job (suitable for JobDJ that will run Jaguar

runFrequencyJob()

Run a Jaguar frequency job on the input structure.

Raises

AnharmonicException – if there is an issue

static getFactors(factor_data)

Return the factors.

Parameters

factor_data (SeqData) – unitless factor data for factors that multiply a normal mode displacement, the number of points is in the positive direction only, excluding zero and the negative direction, for example using a value of 4 in turn means 2 * 4 + 1 = 9 points total

Return type

tuple

Returns

the factors

getExtendedFactors()

Return the extended factors.

Return type

tuple

Returns

the extended factors

runSinglePointJobs()

Run the Jaguar single point jobs from which to calculate the anharmonic potentials.

Raises

AnharmonicException – if there is an issue

collectEnergies()

Update self.potentials with the Jaguar single point energies.

Raises

AnharmonicException – if there is an issue

getEnergies(idx)

Return the energies (Hartree) used to build the potential for the given normal mode.

Parameters

idx (int) – the normal mode index, 1-based

Raises

AnharmonicException – if there is an issue

Return type

list

Returns

the energies

collectFits()

Update self.potentials with the anharmonic fit data.

Raises

AnharmonicException – if there is an issue

evaluate_f(idx, factor, deriv_idx, convert_to_si=False)

Evaluate the nth derivative of the anharmonic potential for the given normal mode index.

Parameters
  • idx (int) – the normal mode index, 1-based

  • factor (float) – the point at which to evaluate

  • deriv_idx (int) – indicates what derivative of the polynomial to evaluate, 0 is the polynomial itself, 1 is the first derivative, etc.

  • convert_to_si (bool) – if True convert the returned value from units of H/Ang.**deriv_idx to J/m**deriv_idx

Raises

AnharmonicException – if there is an issue

Return type

float

Returns

the evaluated value in units of H/Ang.**deriv_idx or if convert_to_si is True in units of J/m**deriv_idx

getReducedMass1(idx)

Return the reduced mass of the given normal mode using the Jaguar definition.

Parameters

idx (int) – the normal mode index, 1-based

Return type

float

Returns

the reduced mass in kg

getReducedMass2(idx)

Return the reduced mass of the given normal mode using the definition in the publications followed in this module.

Parameters

idx (int) – the normal mode index, 1-based

Return type

float

Returns

the reduced mass in kg

getReducedMass(idx)

Return the reduced mass of the given normal mode.

Parameters

idx (int) – the normal mode index, 1-based

Return type

float

Returns

the reduced mass in kg

collectAnharmonicFrequencies()

Update self.potentials with the anharmonic frequencies in wavenumbers (cm^-1).

Raises

AnharmonicException – if there is an issue

plotPotentials()

Plot the potentials.

logCoefficientsTable()

Log coefficients table.

logFrequencyTable()

Log frequency table.

run()

Calculate the anharmonic potentials.

class schrodinger.application.matsci.anharmonic.AnharmonicPartitionFunction(st=None, jagout_file_name=None, jagrin_file_name=None, max_freq=300, factor_data=None, jaguar_kwargs={'basis': 'LACVP**', 'dftname': 'B3LYP', 'igeopt': 1, 'molchg': 0, 'multip': 1}, temperature_data=None, pressure_data=None, max_i_freq=0, plot=False, process_no_anharmonicities=False, tpp=1, logger=None, robust=False)

Bases: schrodinger.application.matsci.anharmonic.AnharmonicPotentials

static getBeta(temperature)

Return beta.

Parameters

temperature (float) – the temperature in K

Return type

float

Returns

beta in 1/J

getClassicalParticleDensity(idx, temperature, factor)

For the given normal mode return the classical particle density evaluated at the given factor.

Parameters
  • idx (int) – the normal mode index, 1-based

  • temperature (float) – the temperature in K

  • factor (float) – the point at which to evaluate

Return type

float

Returns

the classical particle density in 1/Ang.

getCorrectionParticleDensity(idx, temperature, factor)

For the given normal mode return the particle density multiplicative correction evaluated at the given factor.

Parameters
  • idx (int) – the normal mode index, 1-based

  • temperature (float) – the temperature in K

  • factor (float) – the point at which to evaluate

Return type

float

Returns

the particle density multiplicative correction (unitless)

getParticleDensity(idx, temperature, factor)

For the given normal mode return the particle density evaluated at the given factor.

Parameters
  • idx (int) – the normal mode index, 1-based

  • temperature (float) – the temperature in K

  • factor (float) – the point at which to evaluate

Return type

float

Returns

the particle density in 1/Ang.

plotParticleDensity(idx, temperature)

For the given normal mode plot the particle density.

Parameters
  • idx (int) – the normal mode index, 1-based

  • temperature (float) – the temperature in K

checkCorrectionParticleDensity(idx, temperature)

For the given normal mode check the particle density multiplicative correction.

Parameters
  • idx (int) – the normal mode index, 1-based

  • temperature (float) – the temperature in K

Raises

AnharmonicException – if there is an issue

getAnharmonicVibPartitionFunctions(temperature)

Return the ln of the anharmonic vibrational partition functions.

Parameters

temperature (float) – the temperature in K

Return type

dict

Returns

keys are normal mode indices, 1-based, values are ln of the anharmonic vibrational partition functions

getHarmonicVibPartitionFunctions(temperature)

Return the ln of the harmonic vibrational partition functions.

Parameters

temperature (float) – the temperature in K

Return type

dict

Returns

keys are normal mode indices, 1-based, values are ln of the harmonic vibrational partition functions

static getVibPartitionFunction(lnz_a_vibs, lnz_h_vibs)

Return the ln of the vibrational partition function.

Return type

float

Returns

the ln of the vibrational partition function

logLnQTable(temperature, lnz_a_vibs, lnz_h_vibs)

Log lnQ table.

Parameters

temperature (float) – the temperature in K

setDivergencies()

Set divergencies.

run()

Calculate the anharmonic partition function.

class schrodinger.application.matsci.anharmonic.AnharmonicThermochemicalProperties(st=None, jagout_file_name=None, jagrin_file_name=None, max_freq=300, factor_data=None, jaguar_kwargs={'basis': 'LACVP**', 'dftname': 'B3LYP', 'igeopt': 1, 'molchg': 0, 'multip': 1}, temperature_data=None, pressure_data=None, max_i_freq=0, plot=False, process_no_anharmonicities=False, tpp=1, logger=None, robust=False)

Bases: schrodinger.application.matsci.anharmonic.AnharmonicPartitionFunction

getVibrationalTemperature(idx)

Return the vibrational temperature of the given normal mode.

Parameters

idx (int) – the normal mode index, 1-based

Return type

float

Returns

the vibrational temperature in K

getInternalEnergy(thermo)

Return the internal energy.

Parameters

thermo (schrodinger.application.jaguar.results.ThermoCollection) – the thermo object

Return type

float

Returns

the internal energy in kcal/mol

getZeroPointEnergy()

Return the zero point energy.

Return type

float

Returns

the zero point energy in kcal/mol

getHeatCapacity(thermo)

Return the heat capacity.

Parameters

thermo (schrodinger.application.jaguar.results.ThermoCollection) – the thermo object

Return type

float

Returns

the heat capacity in cal/(mol * K)

getEntropy(thermo)

Return the entropy.

Parameters

thermo (schrodinger.application.jaguar.results.ThermoCollection) – the thermo object

Return type

float

Returns

the entropy in cal/(mol * K)

getEnthalpy(thermo)

Return the enthalpy.

Parameters

thermo (schrodinger.application.jaguar.results.ThermoCollection) – the thermo object

Return type

float

Returns

the enthalpy in kcal/mol

getGibbsFreeEnergy(thermo)

Return the Gibbs free energy.

Parameters

thermo (schrodinger.application.jaguar.results.ThermoCollection) – the thermo object

Return type

float

Returns

the Gibbs free energy in kcal/mol

logZeroPointEnergy()

Log zero point energy.

logPropertyTable(thermo)

Log property table.

Parameters

thermo (schrodinger.application.jaguar.results.ThermoCollection) – the thermo object

run()

Calculate the anharmonic thermochemical properties.