Here, we define the conventions for units and solvent properties for eqtk.solve(), EQTK’s high level interface for solving couple equilibria. We describe the conventions for the low-level interfaces at the bottom of this page.

Concentration units

All inputs and outputs describing concentrations (initial concentrations, equilibrium constants, and equilibrium concentrations) are assumed to be in the same units. These units are then specified with the units keyword argument. Allowed units are:

  • None (default, specifies that concentrations are dimensionless)

  • "mole fraction"

  • "M"

  • "molar"

  • "mM"

  • "millimolar"

  • "µM"

  • "uM" (synonym for micromolar)

  • "micromolar"

  • "nM"

  • "nanomolar"

  • "pM"

  • "picomolar"

Energy units

The free energies \(\mathbf{G}\) may also carry units, and these must be specified using the G_units keyword argument of eqtk.solve(). The allowed energy units are:

  • None (default)

  • “kcal/mol”

  • “J”

  • “J/mol”

  • “kJ/mol”

  • “pN-nm”

If G_units is None, the inputted free energies are assumed to be in units of the thermal energy, \(kT\), where \(k\) is the Boltzmann constant. If G_units are specified, the user should be sure to properly set the value of the T keyword argument, which gives the temperature of the solution in Kelvin. The default is T=293.15.

It takes as required input the initial concentrations \(\mathbf{c}^0\). The user is also required to specify the stoichiometric matrix \(\mathsf{N}\) and the equilibrium constants \(\mathbf{K}\), or the conservation matrix \(\mathsf{A}\) and the free energies of all chemical species \(\mathbf{G}\).

Assumptions about the solvent

By default, EQTK assumes the solvent is water at atmospheric pressure and a temperature of 293.15 K. The temperature is adjusted using the T keyword argument, which allows specification of the temperature in Kelvin.

If the solvent is not water at atmospheric pressure, the user must specify the number density (not mass density) of the solvent in the same concentration units as specified by the units keyword argument. For example, at atmospheric pressure and room temperature, \(\rho_\mathrm{H_2O} \approx 55\) moles per liter.

Note that if the concentrations are given as mole fractions (units=None), then the solvent density is not necessary.

Conventions for low-level interface

The low-level interfaces to the equilibrium solver, eqtk.solveNK(), eqtk.solveNG(), and eqtk.solveAG(), use only dimensionless concentration and energy units. This means that the concentrations are all mole fractions and equilibrium constants are dimenesionless. All free energies are in units of the thermal energy \(kT\), where k is the Boltzmann constant and \(T\) is the temperature.