thermo.electrochem module¶

thermo.electrochem.
conductivity
(CASRN=None, AvailableMethods=False, Method=None, full_info=True)[source]¶ This function handles the retrieval of a chemical’s conductivity. Lookup is based on CASRNs. Will automatically select a data source to use if no Method is provided; returns None if the data is not available.
Function has data for approximately 100 chemicals.
Parameters: CASRN : string
CASRN []
Returns: kappa : float
Electrical conductivity of the fluid, [S/m]
T : float, only returned if full_info == True
Temperature at which conductivity measurement was made
methods : list, only returned if AvailableMethods == True
List of methods which can be used to obtain RI with the given inputs
Other Parameters: Method : string, optional
A string for the method name to use, as defined by constants in conductivity_methods
AvailableMethods : bool, optional
If True, function will determine which methods can be used to obtain conductivity for the desired chemical, and will return methods instead of conductivity
full_info : bool, optional
If True, function will return the temperature at which the conductivity reading was made
Notes
Only one source is available in this function. It is:
 ‘LANGE_COND’ which is from Lange’s Handbook, Table 8.34 Electrical
Conductivity of Various Pure Liquids’, a compillation of data in [R244261].
References
[R244261] (1, 2) Speight, James. Lange’s Handbook of Chemistry. 16 edition. McGrawHill Professional, 2005. Examples
>>> conductivity('7732185') (4e06, 291.15)

thermo.electrochem.
Laliberte_density
(T, ws, CASRNs)[source]¶ Calculate the density of an aqueous electrolyte mixture using the form proposed by [R245262]. Parameters are loaded by the function as needed. Units are Kelvin and Pa*s.
\[\rho_m = \left(\frac{w_w}{\rho_w} + \sum_i \frac{w_i}{\rho_{app_i}}\right)^{1}\]Parameters: T : float
Temperature of fluid [K]
ws : array
Weight fractions of fluid components other than water
CASRNs : array
CAS numbers of the fluid components other than water
Returns: rho_i : float
Solution density, [kg/m^3]
Notes
Temperature range check is not used here.
References
[R245262] (1, 2) Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Viscosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 172560. doi:10.1021/je8008123 Examples
>>> Laliberte_density(273.15, [0.0037838838], ['7647145']) 1002.6250120185854

thermo.electrochem.
Laliberte_heat_capacity
(T, ws, CASRNs)[source]¶ Calculate the heat capacity of an aqueous electrolyte mixture using the form proposed by [R246263]. Parameters are loaded by the function as needed.
\[TODO\]Parameters: T : float
Temperature of fluid [K]
ws : array
Weight fractions of fluid components other than water
CASRNs : array
CAS numbers of the fluid components other than water
Returns: Cp : float
Solution heat capacity, [J/kg/K]
Notes
Temperature range check is not implemented. Units are Kelvin and J/kg/K.
References
[R246263] (1, 2) Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Viscosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 172560. doi:10.1021/je8008123 Examples
>>> Laliberte_heat_capacity(273.15+1.5, [0.00398447], ['7647145']) 4186.569908672113

thermo.electrochem.
Laliberte_viscosity
(T, ws, CASRNs)[source]¶ Calculate the viscosity of an aqueous mixture using the form proposed by [R247264]. Parameters are loaded by the function as needed. Units are Kelvin and Pa*s.
\[\mu_m = \mu_w^{w_w} \Pi\mu_i^{w_i}\]Parameters: T : float
Temperature of fluid [K]
ws : array
Weight fractions of fluid components other than water
CASRNs : array
CAS numbers of the fluid components other than water
Returns: mu_i : float
Solute partial viscosity, Pa*s
Notes
Temperature range check is not used here. Check is performed using NaCl at 5 degC from the first value in [R247264]‘s spreadsheet.
References
[R247264] (1, 2, 3) Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Viscosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 172560. doi:10.1021/je8008123 Examples
>>> Laliberte_viscosity(273.15+5, [0.005810], ['7647145']) 0.0015285828581961414

thermo.electrochem.
Laliberte_viscosity_w
(T)[source]¶ Calculate the viscosity of a water using the form proposed by [R248265]. No parameters are needed, just a temperature. Units are Kelvin and Pa*s. t is temperature in degrees Celcius.
\[\mu_w = \frac{t + 246}{(0.05594t+5.2842)t + 137.37}\]Parameters: T : float
Temperature of fluid [K]
Returns: mu_w : float
Water viscosity, Pa*s
Notes
Original source or pure water viscosity is not cited. No temperature range is given for this equation.
References
[R248265] (1, 2) Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Viscosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 172560. doi:10.1021/je8008123 Examples
>>> Laliberte_viscosity_w(298) 0.0008932264487033279

thermo.electrochem.
Laliberte_viscosity_i
(T, w_w, v1, v2, v3, v4, v5, v6)[source]¶ Calculate the viscosity of a solute using the form proposed by [R249266] Parameters are needed, and a temperature. Units are Kelvin and Pa*s.
\[\mu_i = \frac{\exp\left( \frac{v_1(1w_w)^{v_2}+v_3}{v_4 t +1}\right)} {v_5(1w_w)^{v_6}+1}\]Parameters: T : float
Temperature of fluid [K]
w_w : float
Weight fraction of water in the solution
v1v6 : floats
Function fit parameters
Returns: mu_i : float
Solute partial viscosity, Pa*s
Notes
Temperature range check is outside of this function. Check is performed using NaCl at 5 degC from the first value in [R249266]‘s spreadsheet.
References
[R249266] (1, 2, 3) Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Viscosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 172560. doi:10.1021/je8008123 Examples
>>> d = _Laliberte_Viscosity_ParametersDict['7647145'] >>> Laliberte_viscosity_i(273.15+5, 10.005810, d["V1"], d["V2"], d["V3"], d["V4"], d["V5"], d["V6"] ) 0.004254025533308794

thermo.electrochem.
Laliberte_density_w
(T)[source]¶ Calculate the density of water using the form proposed by [R250267]. No parameters are needed, just a temperature. Units are Kelvin and kg/m^3h.
\[\rho_w = \frac{\left\{\left([(2.8054253\times 10^{10}\cdot t + 1.0556302\times 10^{7})t  4.6170461\times 10^{5}]t 0.0079870401\right)t + 16.945176 \right\}t + 999.83952} {1 + 0.01687985\cdot t}\]Parameters: T : float
Temperature of fluid [K]
Returns: rho_w : float
Water density, [kg/m^3]
Notes
Original source not cited No temperature range is used.
References
[R250267] (1, 2) Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Viscosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 172560. doi:10.1021/je8008123 Examples
>>> Laliberte_density_w(298.15) 997.0448954179155 >>> Laliberte_density_w(273.15 + 50) 988.0362916114763

thermo.electrochem.
Laliberte_density_i
(T, w_w, c0, c1, c2, c3, c4)[source]¶ Calculate the density of a solute using the form proposed by Laliberte [R251268]. Parameters are needed, and a temperature, and water fraction. Units are Kelvin and Pa*s.
\[\rho_{app,i} = \frac{(c_0[1w_w]+c_1)\exp(10^{6}[t+c_4]^2)} {(1w_w) + c_2 + c_3 t}\]Parameters: T : float
Temperature of fluid [K]
w_w : float
Weight fraction of water in the solution
c0c4 : floats
Function fit parameters
Returns: rho_i : float
Solute partial density, [kg/m^3]
Notes
Temperature range check is TODO
References
[R251268] (1, 2) Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Viscosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 172560. doi:10.1021/je8008123 Examples
>>> d = _Laliberte_Density_ParametersDict['7647145'] >>> Laliberte_density_i(273.15+0, 10.0037838838, d["C0"], d["C1"], d["C2"], d["C3"], d["C4"]) 3761.8917585699983

thermo.electrochem.
Laliberte_heat_capacity_w
(T)[source]¶ Calculate the heat capacity of water using the interpolation proposed by [R252269]. No parameters are needed, just a temperature.
\[Cp_w = Cp_1 + (Cp_2Cp_1) \left( \frac{tt_1}{t_2t_1}\right) + \frac{(Cp_3  2Cp_2 + Cp_1)}{2}\left( \frac{tt_1}{t_2t_1}\right) \left( \frac{tt_1}{t_2t_1}1\right)\]Parameters: T : float
Temperature of fluid [K]
Returns: Cp_w : float
Water heat capacity, [J/kg/K]
Notes
Units are Kelvin and J/kg/K. Original source not cited No temperature range is used. The original equation is not used, but rather a cubic scipy interpolation routine.
References
[R252269] (1, 2) Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Viscosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 172560. doi:10.1021/je8008123 Examples
>>> Laliberte_heat_capacity_w(273.15+3.56) 4208.878020261102

thermo.electrochem.
Laliberte_heat_capacity_i
(T, w_w, a1, a2, a3, a4, a5, a6)[source]¶ Calculate the heat capacity of a solute using the form proposed by [R253270] Parameters are needed, and a temperature, and water fraction.
\[Cp_i = a_1 e^\alpha + a_5(1w_w)^{a_6} \alpha = a_2 t + a_3 \exp(0.01t) + a_4(1w_w)\]Parameters: T : float
Temperature of fluid [K]
w_w : float
Weight fraction of water in the solution
a1a6 : floats
Function fit parameters
Returns: Cp_i : float
Solute partial heat capacity, [J/kg/K]
Notes
Units are Kelvin and J/kg/K. Temperature range check is TODO
References
[R253270] (1, 2) Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Viscosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 172560. doi:10.1021/je8008123 Examples
>>> d = _Laliberte_Heat_Capacity_ParametersDict['7647145'] >>> Laliberte_heat_capacity_i(1.5+273.15, 10.00398447, d["A1"], d["A2"], d["A3"], d["A4"], d["A5"], d["A6"]) 2930.7353945880477

thermo.electrochem.
dilute_ionic_conductivity
(ionic_conductivities, zs, rhom)[source]¶ This function handles the calculation of the electrical conductivity of a dilute electrolytic aqueous solution. Requires the mole fractions of each ion, the molar density of the whole mixture, and ionic conductivity coefficients for each ion.
\[\lambda = \sum_i \lambda_i^\circ z_i \rho_m\]Parameters: ionic_conductivities : list[float]
Ionic conductivity coefficients of each ion in the mixture [m^2*S/mol]
zs : list[float]
Mole fractions of each ion in the mixture, []
rhom : float
Overall molar density of the solution, [mol/m^3]
Returns: kappa : float
Electrical conductivity of the fluid, [S/m]
Notes
The ionic conductivity coefficients should not be equivalent coefficients; for example, 0.0053 m^2*S/mol is the equivalent conductivity coefficient of Mg+2, but this method expects twice its value  0.0106. Both are reported commonly in literature.
Water can be included in this caclulation by specifying a coefficient of 0. The conductivity of any electrolyte eclipses its own conductivity by many orders of magnitude. Any other solvents present will affect the conductivity extensively and there are few good methods to predict this effect.
References
[R254271] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca Raton, FL: CRC press, 2014. Examples
Complex mixture of electrolytes [‘Cl‘, ‘HCO3‘, ‘SO42’, ‘Na+’, ‘K+’, ‘Ca+2’, ‘Mg+2’]:
>>> ionic_conductivities = [0.00764, 0.00445, 0.016, 0.00501, 0.00735, 0.0119, 0.01061] >>> zs = [0.03104, 0.00039, 0.00022, 0.02413, 0.0009, 0.0024, 0.00103] >>> dilute_ionic_conductivity(ionic_conductivities=ionic_conductivities, zs=zs, rhom=53865.9) 22.05246783663

thermo.electrochem.
conductivity_McCleskey
(T, M, lambda_coeffs, A_coeffs, B, multiplier, rho=1000.0)[source]¶ This function handles the calculation of the electrical conductivity of an electrolytic aqueous solution with one electrolyte in solution. It handles temperature dependency and concentrated solutions. Requires the temperature of the solution; its molality, and four sets of coefficients lambda_coeffs, A_coeffs, B, and multiplier.
\[ \begin{align}\begin{aligned}\Lambda = \frac{\kappa}{C}\\\Lambda = \Lambda^0(t)  A(t) \frac{m^{1/2}}{1+Bm^{1/2}}\\\Lambda^\circ(t) = c_1 t^2 + c_2 t + c_3\\A(t) = d_1 t^2 + d_2 t + d_3\end{aligned}\end{align} \]In the above equations, t is temperature in degrees Celcius; m is molality in mol/kg, and C is the concentration of the elctrolytes in mol/m^3, calculated as the product of density and molality.
Parameters: T : float
Temperature of the solution, [K]
M : float
Molality of the solution with respect to one electrolyte (mol solute / kg solvent), [mol/kg]
lambda_coeffs : list[float]
List of coefficients for the polynomial used to calculate lambda; length3 coefficients provided in [R255272], []
A_coeffs : list[float]
List of coefficients for the polynomial used to calculate A; length3 coefficients provided in [R255272], []
B : float
Empirical constant for an electrolyte, []
multiplier : float
The multiplier to obtain the absolute conductivity from the equivalent conductivity; ex 2 for CaCl2, []
rho : float, optional
The mass density of the aqueous mixture, [kg/m^3]
Returns: kappa : float
Electrical conductivity of the solution at the specified molality and temperature [S/m]
Notes
Coefficients provided in [R255272] result in conductivity being calculated in units of mS/cm; they are converted to S/m before returned.
References
[R255272] (1, 2, 3, 4) McCleskey, R. Blaine. “Electrical Conductivity of Electrolytes Found In Natural Waters from (5 to 90) °C.” Journal of Chemical & Engineering Data 56, no. 2 (February 10, 2011): 31727. doi:10.1021/je101012n. Examples
A 0.5 wt% solution of CaCl2, conductivity calculated in mS/cm
>>> conductivity_McCleskey(T=293.15, M=0.045053, A_coeffs=[.03918, 3.905, ... 137.7], lambda_coeffs=[0.01124, 2.224, 72.36], B=3.8, multiplier=2) 0.8482584585108555

thermo.electrochem.
thermal_conductivity_Magomedov
(T, P, ws, CASRNs, k_w=None)[source]¶ Calculate the thermal conductivity of an aqueous mixture of electrolytes using the form proposed by Magomedov [R256273]. Parameters are loaded by the function as needed. Function will fail if an electrolyte is not in the database.
\[\lambda = \lambda_w\left[ 1  \sum_{i=1}^n A_i (w_i + 2\times10^{4} w_i^3)\right]  2\times10^{8} PT\sum_{i=1}^n w_i\]Parameters: T : float
Temperature of liquid [K]
P : float
Pressure of the liquid [Pa]
ws : array
Weight fractions of liquid components other than water
CASRNs : array
CAS numbers of the liquid components other than water
k_w : float
Liquid thermal condiuctivity or pure water at T and P, [W/m/K]
Returns: kl : float
Liquid thermal condiuctivity, [W/m/K]
Notes
Range from 273 K to 473 K, P from 0.1 MPa to 100 MPa. C from 0 to 25 mass%. Internal untis are MPa for pressure and weight percent.
An example is sought for this function. It is not possible to reproduce the author’s values consistently.
References
[R256273] (1, 2) Magomedov, U. B. “The Thermal Conductivity of Binary and Multicomponent Aqueous Solutions of Inorganic Substances at High Parameters of State.” High Temperature 39, no. 2 (March 1, 2001): 22126. doi:10.1023/A:1017518731726. Examples
>>> thermal_conductivity_Magomedov(293., 1E6, [.25], ['7758943'], k_w=0.59827) 0.548654049375

thermo.electrochem.
ionic_strength
(mis, zis)[source]¶ Calculate the ionic strength of a solution in one of two ways, depending on the inputs only. For Pitzer and Bromley models, mis should be molalities of each component. For eNRTL models, mis should be mole fractions of each electrolyte in the solution. This will sum to be much less than 1.
\[ \begin{align}\begin{aligned}I = \frac{1}{2} \sum M_i z_i^2\\I = \frac{1}{2} \sum x_i z_i^2\end{aligned}\end{align} \]Parameters: mis : list
Molalities of each ion, or mole fractions of each ion [mol/kg or ]
zis : list
Charges of each ion []
Returns: I : float
ionic strength, [?]
References
[R257274] Chen, ChauChyun, H. I. Britt, J. F. Boston, and L. B. Evans. “Local Composition Model for Excess Gibbs Energy of Electrolyte Systems. Part I: Single Solvent, Single Completely Dissociated Electrolyte Systems.” AIChE Journal 28, no. 4 (July 1, 1982): 58896. doi:10.1002/aic.690280410 [R258274] Gmehling, Jurgen. Chemical Thermodynamics: For Process Simulation. Weinheim, Germany: WileyVCH, 2012. Examples
>>> ionic_strength([0.1393, 0.1393], [1, 1]) 0.1393

thermo.electrochem.
Kweq_1981
(T, rho_w)[source]¶ Calculates equilibrium constant for OH and H+ in water, according to [R259276]. Second most recent formulation.
\[\log_{10} K_w= A + B/T + C/T^2 + D/T^3 + (E+F/T+G/T^2)\log_{10} \rho_w\]Parameters: T : float
Temperature of fluid [K]
rho_w : float
Density of water, [kg/m^3]
Returns: Kweq : float
Ionization constant of water, []
Notes
Density is internally converted to units of g/cm^3.
A = 4.098; B = 3245.2; C = 2.2362E5; D = 3.984E7; E = 13.957; F = 1262.3; G = 8.5641E5
References
[R259276] (1, 2) Marshall, William L., and E. U. Franck. “Ion Product of Water Substance, 01000 degree C, 1010,000 Bars New International Formulation and Its Background.” Journal of Physical and Chemical Reference Data 10, no. 2 (April 1, 1981): 295304. doi:10.1063/1.555643. Examples
>>> 1*log10(Kweq_1981(600, 700)) 11.274522047458206

thermo.electrochem.
Kweq_IAPWS_gas
(T)[source]¶ Calculates equilibrium constant for OH and H+ in water vapor, according to [R260277]. This is the most recent formulation available.
\[log_{10} K_w^G = \gamma_0 + \gamma_1 T^{1} + \gamma_2 T^{2} + \gamma_3 T^{3}\]Parameters: T : float
Temperature of H2O [K]
Returns: K_w_G : float
Notes
gamma0 = 6.141500E1; gamma1 = 4.825133E4; gamma2 = 6.770793E4; gamma3 = 1.010210E7
References
[R260277] (1, 2) Bandura, Andrei V., and Serguei N. Lvov. “The Ionization Constant of Water over Wide Ranges of Temperature and Density.” Journal of Physical and Chemical Reference Data 35, no. 1 (March 1, 2006): 1530. doi:10.1063/1.1928231 Examples
>>> Kweq_IAPWS_gas(800) 1.4379721554798815e61

thermo.electrochem.
Kweq_IAPWS
(T, rho_w)[source]¶ Calculates equilibrium constant for OH and H+ in water, according to [R261278]. This is the most recent formulation available.
\[ \begin{align}\begin{aligned}Q = \rho \exp(\alpha_0 + \alpha_1 T^{1} + \alpha_2 T^{2} \rho^{2/3})\\ \log_{10} K_w = 2n \left[ \log_{10}(1+Q)  \frac{Q}{Q+1} \rho (\beta_0 + \beta_1 T^{1} + \beta_2 \rho) \right] \log_{10} K_w^G + 2 \log_{10} \frac{18.015268}{1000}\end{aligned}\end{align} \]Parameters: T : float
Temperature of water [K]
rho_w : float
Density of water at temperature and pressure [kg/m^3]
Returns: Kweq : float
Ionization constant of water, []
Notes
Formulation is in terms of density in g/cm^3; density is converted internally.
n = 6; alpha0 = 0.864671; alpha1 = 8659.19; alpha2 = 22786.2; beta0 = 0.642044; beta1 = 56.8534; beta2 = 0.375754
References
[R261278] (1, 2) Bandura, Andrei V., and Serguei N. Lvov. “The Ionization Constant of Water over Wide Ranges of Temperature and Density.” Journal of Physical and Chemical Reference Data 35, no. 1 (March 1, 2006): 1530. doi:10.1063/1.1928231 Examples
Example from IAPWS check:
>>> 1*log10(Kweq_IAPWS(600, 700)) 11.203153057603775

thermo.electrochem.
balance_ions
(anions, cations, anion_zs=None, cation_zs=None, anion_concs=None, cation_concs=None, rho_w=997.1, method='increase dominant', selected_ion=None)[source]¶ Performs an ion balance to adjust measured experimental ion compositions to electroneutrality. Can accept either the actual mole fractions of the ions, or their concentrations in units of [mg/L] as well for convinience.
The default method will locate the most prevalent ion in the type of ion not in excess  and increase it until the two ion types balance.
Parameters: anions : list(ChemicalMetadata)
List of all negatively charged ions measured as being in the solution; ChemicalMetadata instances or simply objects with the attributes MW and charge, []
cations : list(ChemicalMetadata)
List of all positively charged ions measured as being in the solution; ChemicalMetadata instances or simply objects with the attributes MW and charge, []
anion_zs : list, optional
Mole fractions of each anion as measured in the aqueous solution, []
cation_zs : list, optional
Mole fractions of each cation as measured in the aqueous solution, []
anion_concs : list, optional
Concentrations of each anion in the aqueous solution in the units often reported (for convinience only) [mg/L]
cation_concs : list, optional
Concentrations of each cation in the aqueous solution in the units often reported (for convinience only) [mg/L]
rho_w : float, optional
Density of the aqueous solutionr at the temperature and pressure the anion and cation concentrations were measured (if specified), [kg/m^3]
method : str, optional
The method to use to balance the ionimbalance; one of ‘dominant’, ‘decrease dominant’, ‘increase dominant’, ‘proportional insufficient ions increase’, ‘proportional excess ions decrease’, ‘proportional cation adjustment’, ‘proportional anion adjustment’, ‘Na or Cl increase’, ‘Na or Cl decrease’, ‘adjust’, ‘increase’, ‘decrease’, ‘makeup’].
selected_ion : ChemicalMetadata, optional
Some methods adjust only one userspecified ion; this is that input. For the case of the ‘makeup’ method, this is a tuple of (anion, cation) ChemicalMetadata instances and only the ion type not in excess will be used.
Returns: anions : list(ChemicalMetadata)
List of all negatively charged ions measured as being in the solution; ChemicalMetadata instances after potentially adding in an ion which was not present but specified by the user, []
cations : list(ChemicalMetadata)
List of all positively charged ions measured as being in the solution; ChemicalMetadata instances after potentially adding in an ion which was not present but specified by the user, []
anion_zs : list,
Mole fractions of each anion in the aqueous solution after the charge balance, []
cation_zs : list
Mole fractions of each cation in the aqueous solution after the charge balance, []
z_water : float
Mole fraction of the water in the solution, []
Notes
The methods perform the charge balance as follows:
 ‘dominant’ : The ion with the largest mole fraction in solution has its concentration adjusted up or down as necessary to balance the solution.
 ‘decrease dominant’ : The ion with the largest mole fraction in the type of ion with excess charge has its own mole fraction decreased to balance the solution.
 ‘increase dominant’ : The ion with the largest mole fraction in the type of ion with insufficient charge has its own mole fraction decreased to balance the solution.
 ‘proportional insufficient ions increase’ : The ion charge type which is present insufficiently has each of the ions mole fractions increased proportionally until the solution is balanced.
 ‘proportional excess ions decrease’ : The ion charge type which is present in excess has each of the ions mole fractions decreased proportionally until the solution is balanced.
 ‘proportional cation adjustment’ : All cations have their mole fractions increased or decreased proportionally as necessary to balance the solution.
 ‘proportional anion adjustment’ : All anions have their mole fractions increased or decreased proportionally as necessary to balance the solution.
 ‘Na or Cl increase’ : Either Na+ or Cl is added to the solution until the solution is balanced; the species will be added if they were not present initially as well.
 ‘Na or Cl decrease’ : Either Na+ or Cl is removed from the solution until the solution is balanced; the species will be added if they were not present initially as well.
 ‘adjust’ : An ion specified with the parameter selected_ion has its mole fraction increased or decreased as necessary to balance the solution. An exception is raised if the specified ion alone cannot balance the solution.
 ‘increase’ : An ion specified with the parameter selected_ion has its mole fraction increased as necessary to balance the solution. An exception is raised if the specified ion alone cannot balance the solution.
 ‘decrease’ : An ion specified with the parameter selected_ion has its mole fraction decreased as necessary to balance the solution. An exception is raised if the specified ion alone cannot balance the solution.
 ‘makeup’ : Two ions ase specified as a tuple with the parameter selected_ion. Whichever ion type is present in the solution insufficiently is added; i.e. if the ions were Mg+2 and Cl, and there was too much negative charge in the solution, Mg+2 would be added until the solution was balanced.
Examples
>>> anions_n = ['Cl', 'HCO3', 'SO42'] >>> cations_n = ['Na+', 'K+', 'Ca+2', 'Mg+2'] >>> cations = [pubchem_db.search_name(i) for i in cations_n] >>> anions = [pubchem_db.search_name(i) for i in anions_n] >>> an_res, cat_res, an_zs, cat_zs, z_water = balance_ions(anions, cations, ... anion_zs=[0.02557, 0.00039, 0.00026], cation_zs=[0.0233, 0.00075, ... 0.00262, 0.00119], method='proportional excess ions decrease') >>> an_zs [0.02557, 0.00039, 0.00026] >>> cat_zs [0.01948165456267761, 0.0006270918850647299, 0.0021906409851594564, 0.0009949857909693717] >>> z_water 0.9504856267761288