Source code for ionize.Solution.transference

from ..constants import lpm3
from ..Database import Database

database = Database()


def transference(self, ion):
    """Return the fraction of charge carried by each of the ions as a list.

    Should not precisely add to 1, because some charge is carried by
    dissociated water.
    """
    if ion in self:
        if isinstance(ion, str):
            ion = self._name_lookup[ion]
        with ion.context(self):
            return (self.concentration(ion) * ion.molar_conductivity() /
                    self.conductivity())
    else:
        return 0


def zone_transfer(self, ion):
    """Return the zone transfer ion in the solution, in Coulombs/liter."""
    if isinstance(ion, str):
        ion = database[ion]

    with ion.context(self):
        return self.conductivity() / ion.mobility() / lpm3