Added ArrheniusEP class to rmgpy.kinetics.arrhenius module.

The ArrheniusEP class merges the Arrhenius equation with the Evans-
Polanyi correction for adjusting the activation energy based on the
enthalpy of reaction. This is primarily useful for representing entries
in our database of kinetics rate rules.
Added functions for converting reaction order to/from units.

The conversion from rate coefficient units to reaction order is more
flexible in that it can handle e.g. cm^3 and m^3, molecule and mol, etc.
The conversion from reaction order to rate coefficient units returns the
SI units used internally to store the values.
Updated versions of Species and TransitionState classes.

These classes now use the Conformer object in place of the old
StatesModel object. Since E0 is stored on the Conformer object, it is
no longer stored on the Species or TransitionState object. For Species,
HeatCapacityModel replaces ThermoModel, and molecularWeight becomes a
scalar quantity wrapped in a property.

Both Species and TransitionState also add methods for computing the
thermodynamic and statistical mechanical properties. For the thermo
properties, the methods use the HeatCapacityModel if present, then the
conformer if present, then raise an exception if neither are found.
Updated version of Reaction class.

The new Reaction class adds a label attribute and removes the thirdBody
attribute; the latter is not needed thanks to the ThirdBody class for
representing kinetics. The methods for computing k(T) using TST and
k(E) using ILT or RRKM theory have been updated; the latter have been
moved to a new (not yet committed) location. The methods for computing
the enthalpy, entropy, and free energy of reaction now call the
corresponding methods of the Species object, rather than using each
species' thermo attribute directly.
Fixed units error in fitting of Fourier and cosine hindered rotor potentials.

A few quantities were thinking in kJ/mol instead of J/mol.
Fixed a few getFreeEnergy() methods.

A few implementations were returning the dimensionless G(T)/RT instead
of the dimensional G(T). Also updated a few docstrings to reflect that
all of the thermodynamic properties are returned as dimensional.
Fixed units error in Chebyshev.fitToData().

The idea is to let the user specify the units the Chebyshev coefficients
are outputted as by setting the units. Unfortunately, this parameter was
being ignored in the fitting.
Added rmgpy.pdep subpackage for pressure dependence functionality.

The rmgpy.pdep subpackage will contain a suite of modules providing
functionality for computing pressure-dependent kinetics k(T,P). This
will eventually replace the rmgpy.measure subpackage.
Added LennardJones class to rmgpy.pdep.collision module.

The LennardJones class represents a set of Lennard-Jones collision
parameters. A method for computing the collision frequency for a given
temperature, bath gas concentration, and reduced mass is provided.
Added SingleExponentialDown class to rmgpy.pdep.collision module.

The SingleExponentialDown class represents a single exponential down
model of collisional energy transfer. This is the simplest such model,
as it only requires one parameter: the average energy transferred in a
deactivating collision. (This can also be given as a power law in
temperature, which requires three parameters.) A method for generating
the matrix of collisional energy transfer probabilities is provided.
Added k(E) functions to rmgpy.pdep.reaction module.

Two methods of computing k(E) are available: RRKM theory (more accurate
but requiring detailed transition state information) and inverse Laplace
transform (more approximate, but only requiring high-P Arrhenius
kinetics). The calculateMicrocanonicalRateCoefficient() function will
automatically choose RRKM or ILT based on the availability of either
detailed transition state information or high-P kinetics.
Added getDensityOfStatesForst() function to rmgpy.statmech.conformer module.

This function provides the ability to compute the density of states
using the method of steepest descents to apply the inverse Laplace
transform to the partition function. This approach has the advantage of
being able to handle any degree of freedom that has an analytical
partition function; an analytical density of states is not required.
(In particular, we can use semiclassical hindered rotors.) It is also
generally not any less accurate than direct count methods, except that
it applies continuous smoothing that is an approximation (but a very
good one) at low energies. We want continuous densities of states for
k(T,P) calculations anyway.

Despite the name, the function actually computes the sum of states first,
as it is more numerically stable, and then the density of states. The
first-order steepest descents approximation is used by default instead
of the second-order approximation due to its better numerical stability;
the accuracy tradeoff is less than 5%.
Added Conformer.getActiveModes() function.

This function returns a list of the active modes of a molecular
conformer. This list always includes all internal degrees of freedom
(vibrational and torsional), and includes all or part of the external
rotational modes as determined by the activeJRotor and activeKRotor
parameters. If either or both of the J-rotor or K-rotor are not active,
then the NonlinearRotor is approximated as a symmetric top (using a
LinearRotor and a KRotor.)

If you are solving the 1D master equation to get k(T,P), you want both
the J-rotor and K-rotor to be active. This is less accurate at lower
temperatures. If you want the J-rotor to be adiabatic (as is physically
more reasonable at low temperatures) you must solve the 2D master
equation, which is expensive.
Added Configuration class to rmgpy.pdep.configuration module.

The Configuration class represents a molecular configuration on a
potential energy surface. It can be used for a unimolecular isomer,
bimolecular reactant or product channel, or a transition state. Methods
are provided for getting the thermodynamic and statistical mechanical
properties. Methods for mapping the density and sum of states from
energies referenced to the zero-point energy to energies references to
some other energy are provided; interpolation is used where needed to
do this.
Added Network class to rmgpy.pdep.network module.

The Network class represents a pressure-dependent unimolecular reaction
network, composed of a set of unimolecular isomers, bimolecular reactant
channels, and product channels. Functionality for computing the k(T,P)
values is provided via the initialize() and calculateRateCoefficients()
methods. These are supported by several helper methods, including those
for computing the collision matrices and microcanonical rate
coefficients.
Added rmgpy.pdep.me module for working with the master equation.

Currently it provides only one method, generateFullMEMatrix(), for
generating the full 1D or 2D master equation matrix for a pressure-
dependent reaction network. This involves a lot of array indexing, so it
is Cythonized for speed.
Added rmgpy.pdep.msc module for the modified strong collision method.

This is a fast, robust, and often reasonably accurate method of getting
the k(T,P) values for a pressure-dependent reaction network. It has a
tendency to underpredict the effect of falloff for larger reaction
networks, but in general works well over a wide range of conditions
due to the use of a collision efficiency (the "modified" in modified
strong collision).
Added rmgpy.pdep.rs module for the reservoir state method.

Only a bit more expensive than the MSC method, the RS method is often
more accurate at lower temperatures. However, the approximations used in
the RS method fail terribly at high temperatures, which makes it far
less robust than the MSC method. (It may be possible to correct for
this, but the current implementation does not.)
Added rmgpy.pdep.cse module for the chemically-significant eigenvalues method.

This is the most accurate of the k(T,P) estimation methods, and is
"exact" as long as there are enough chemically distinct eigenmodes.
However, this condition is unlikely to hold for networks of even modest
size as you move away from the high-pressure limit, especially at high
temperature. This is generally treated as representing a need to lump
k(T,P) values together, but it's not clear how to do this in an
automatic manner.
Import content of submodules when importing rmgpy.pdep subpackage.

This includes the Configuration and Network classes, as well as the
collision and reaction classes and functions.