Class FurstElectrolyteConstants
- All Implemented Interfaces:
Serializable
FurstElectrolyteConstants class.
- Version:
- $Id: $Id
- Author:
- esol
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final doubleReference dielectric constant for water at 298.15 K.static double[]ConstantfurstParams.static double[]ConstantfurstParamsCPA.static double[]Parameters for electrolytes in ethanol solvent.static double[]Parameters for electrolytes in MDEA (methyldiethanolamine) solvent.static double[]Parameters for electrolytes in MEA (monoethanolamine) solvent.static double[]Parameters for electrolytes in MEG (monoethylene glycol) solvent.static double[]Parameters for electrolytes in methanol solvent.static double[]Temperature-dependent Wij parameters for electrolyte interactions.static double[]Parameters for electrolytes in TEG (triethylene glycol) solvent.static double[]Parameters for gas-ion short-range interactions (salting out effect).Ion-specific Wij parameters for problematic electrolytes.private static final longSerialization version UID. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateDummy constructor, not for use. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidClear all ion-specific Wij parameters.static doublegetFurstParam(int i) getFurstParam.static doublegetFurstParamCPA(int i) getFurstParamCPA.static doublegetFurstParamEtOH(int i) Get electrolyte parameter for ethanol solvent.static doublegetFurstParamGasIon(int i) Get gas-ion interaction parameter.static doublegetFurstParamMDEA(int i) getFurstParamMDEA.static doublegetFurstParamMEA(int i) Get electrolyte parameter for MEA (monoethanolamine) solvent.static doublegetFurstParamMEG(int i) Get electrolyte parameter for MEG solvent.static doublegetFurstParamMeOH(int i) Get electrolyte parameter for methanol solvent.static doublegetFurstParamTDep(int i) Get temperature-dependent Wij parameter for electrolyte interactions.static doublegetFurstParamTEG(int i) Get electrolyte parameter for TEG (triethylene glycol) solvent.static double[]getIonSpecificWij(String cation, String anion) Get ion-specific Wij parameters for a cation-anion pair.static doublegetMixtureDielectricConstant(double[] moleFractions, double[] dielectricConstants) Compute mixture dielectric constant from component contributions.static doublegetPredictiveWij(double epsilon, double stokesDiameter, boolean isDivalent) Compute predictive Wij parameter for a cation-solvent pair based on dielectric constant.static doublegetPredictiveWijIntercept(double epsilon, boolean isDivalent) Compute predictive Wij intercept parameter based on solvent dielectric constant.static doublegetPredictiveWijSlope(double epsilon, boolean isDivalent) Compute predictive Wij slope parameter based on solvent dielectric constant.static booleanhasIonSpecificWij(String cation, String anion) Check if ion-specific Wij parameters exist for a cation-anion pair.private static voidInitialize ion-specific Wij parameter map.static voidsetFurstParam(int i, double value) setFurstParam.static voidsetFurstParamCPA(int i, double value) setFurstParamCPA.static voidsetFurstParamEtOH(int i, double value) Set electrolyte parameter for ethanol solvent.static voidsetFurstParamGasIon(int i, double value) Set gas-ion interaction parameter.static voidsetFurstParamMDEA(int i, double value) Set electrolyte parameter for MDEA solvent.static voidsetFurstParamMEA(int i, double value) Set electrolyte parameter for MEA (monoethanolamine) solvent.static voidsetFurstParamMEG(int i, double value) Set electrolyte parameter for MEG solvent.static voidsetFurstParamMeOH(int i, double value) Set electrolyte parameter for methanol solvent.static voidsetFurstParams(String type) Setter for the fieldfurstParams.static voidsetFurstParamTDep(int i, double value) Set temperature-dependent Wij parameter for electrolyte interactions.static voidsetFurstParamTEG(int i, double value) Set electrolyte parameter for TEG (triethylene glycol) solvent.static voidsetIonSpecificWij(String cation, String anion, double wijCatWater, double wijCatAnion) Set an ion-specific Wij parameter pair.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
furstParams
public static double[] furstParamsConstantfurstParams. -
furstParamsCPA
public static double[] furstParamsCPAConstantfurstParamsCPA.Parameters fitted to multi-salt osmotic coefficient and mean ionic activity coefficient data (Robinson & Stokes, 1965) at 25°C using Nelder-Mead optimization.
Fitting dataset: NaCl, KCl, LiCl, NaBr, KBr, NaI, KI, NaF (1:1 halides), CaCl2, MgCl2, BaCl2, SrCl2 (2:1 chlorides). Concentration range: 0.1-6 molal.
Performance (December 2024 fitting):
- Halides: 1-10% combined error (excellent)
- Divalent chlorides: 3-8% combined error (very good)
- Nitrates: 15-18% (limited by linear correlation)
- Na2SO4: ~40% (requires ion-specific parameters)
Linear correlations for Wij short-range interaction parameters:
- Wij(cation-water) = furstParamsCPA[2] * stokesDiameter + furstParamsCPA[3]
- Wij(cation-anion) = furstParamsCPA[4] * (stokesDiam + paulingDiam)^4 + furstParamsCPA[5]
For divalent (2+) cations:
- Wij(2+ cation-water) = furstParamsCPA[6] * stokesDiameter + furstParamsCPA[7]
- Wij(2+ cation-anion) = furstParamsCPA[8] * (stokesDiam + paulingDiam)^4 + furstParamsCPA[9]
-
furstParamsCPA_MDEA
public static double[] furstParamsCPA_MDEAParameters for electrolytes in MDEA (methyldiethanolamine) solvent.MDEA has dielectric constant ~21.2 at 25°C (vs 78.4 for water). This lower dielectric significantly affects the MSA long-range term and ion solvation energies.
Structure same as furstParamsCPA: [0-1] LR parameters, [2-5] SR parameters for 1+ cations, [6-9] SR parameters for 2+ cations.
Parameters fitted 2024-12 for multiple ions at 20 mol% MDEA. Most salts give reasonable γ± (6/8 pass). NaBr and CaCl2 have numerical instability issues at this composition.
Known limitations:
- Numerical instability (NaN) for NaBr and CaCl2
- Stability window: 15-35 mol% MDEA for most salts
-
furstParamsCPA_MEG
public static double[] furstParamsCPA_MEGParameters for electrolytes in MEG (monoethylene glycol) solvent.MEG has dielectric constant 37.7 at 25°C (vs 78.4 for water). This lower dielectric significantly affects the MSA long-range term and ion solvation energies.
Structure same as furstParamsCPA: [0-1] LR parameters, [2-5] SR parameters for 1+ cations, [6-9] SR parameters for 2+ cations.
Parameters fitted 2024-12 for multiple ions (Na+, K+, Li+, Ca++, Mg++, Ba++) at 30 mol% MEG. Validated for Cl- and Br- salts. Gives γ± in range 0.1-6.0 for all tested salts (8/8 pass).
Known limitations:
- Individual ion γ may vary significantly (e.g., K+ low, Na+ high) while γ± is reasonable
- Accuracy may degrade at very high MEG concentrations (>70 mol%)
-
furstParamsCPA_MeOH
public static double[] furstParamsCPA_MeOHParameters for electrolytes in methanol solvent.Methanol has dielectric constant 32.7 at 25°C (vs 78.4 for water). Structure same as furstParamsCPA.
Parameters fitted 2024-12 for multiple ions (Na+, K+, Li+, Ca++, Mg++, Ba++) at 30 mol% methanol. Validated for Cl- and Br- salts. Uses positive slope similar to MEG to balance across ion sizes.
Known limitations:
- Individual ion γ may vary significantly while γ± is reasonable
- Some divalent salts may have numerical issues at high concentrations
-
furstParamsCPA_EtOH
public static double[] furstParamsCPA_EtOHParameters for electrolytes in ethanol solvent.Ethanol has dielectric constant 24.5 at 25°C (vs 78.4 for water, 32.7 for methanol). Structure same as furstParamsCPA.
Parameters fitted 2024-12 for multiple ions (Na+, K+, Li+, Ca++, Mg++, Ba++) at 30 mol% ethanol. Validated for Cl- and Br- salts. Uses positive slope similar to MEG to balance across ion sizes.
Known limitations:
- Individual ion γ may vary significantly while γ± is reasonable
- Some divalent salts may have numerical issues at high concentrations
-
furstParamsCPA_MEA
public static double[] furstParamsCPA_MEAParameters for electrolytes in MEA (monoethanolamine) solvent.MEA (H2N-CH2-CH2-OH) is a primary alkanolamine with dielectric constant ~31 at 25°C, similar to methanol (32.7). MEA is widely used in CO2 capture applications where salt precipitation and ionic equilibria are important.
Structure same as furstParamsCPA: [0-1] LR parameters, [2-5] SR parameters for 1+ cations, [6-9] SR parameters for 2+ cations.
Parameters fitted 2024-12 for multiple ions at 20 mol% MEA. All tested salts (8/8) give reasonable γ± in range 0.08-6.0. Larger slope needed due to MEA's low dielectric constant.
Known limitations:
- Individual ion γ vary significantly (e.g., Na+ high, K+ low) while γ± is reasonable
- Negative osmotic coefficients at high MEA concentrations (physically impossible)
-
furstParamsCPA_TEG
public static double[] furstParamsCPA_TEGParameters for electrolytes in TEG (triethylene glycol) solvent.TEG (HOCH2CH2OCH2CH2OCH2CH2OH) has dielectric constant ~23.7 at 25°C, similar to ethanol (24.5). TEG is widely used for gas dehydration where salt precipitation and ionic equilibria may be relevant.
Structure same as furstParamsCPA: [0-1] LR parameters, [2-5] SR parameters for 1+ cations, [6-9] SR parameters for 2+ cations.
WARNING: These are initial estimates based on water parameters. They have NOT been fitted against experimental data for TEG-water-electrolyte systems. Similar issues to MEG parameters are expected.
-
furstParamsCPA_TDep
public static double[] furstParamsCPA_TDepTemperature-dependent Wij parameters for electrolyte interactions.The full Wij(T) is: Wij(T) = wij[0] + wij[1]*(1/T - 1/298.15) + wij[2]*f(T) where f(T) = (298.15-T)/T + ln(T/298.15)
wij[1] relates to the enthalpy of ion-solvent interaction (∂G/∂T) wij[2] relates to the heat capacity contribution (∂²G/∂T²)
Structure: [0-1] cation-water slope/intercept for wij[1], [2-3] cation-water for wij[2], [4-5] cation-anion for wij[1], [6-7] cation-anion for wij[2], [8-11] same for divalent cations
Parameters derived from temperature dependence of osmotic coefficients. Positive wij[1] means Wij increases with temperature (weaker interaction at high T). Literature: Pitzer (1991), Archer (1992) for NaCl(aq) 273-373 K.
-
EPSILON_WATER_REF
public static final double EPSILON_WATER_REFReference dielectric constant for water at 298.15 K.- See Also:
-
furstParamsGasIon
public static double[] furstParamsGasIonParameters for gas-ion short-range interactions (salting out effect).Gases like CO2 and CH4 experience a "salting out" effect in electrolyte solutions - their solubility decreases with increasing salt concentration. This is modeled through short-range Wij interactions between gas molecules and ions.
The Setchenow equation gives: ln(S/S0) = -k_s * m where k_s is typically 0.1-0.12 L/mol for CO2 and 0.12-0.15 L/mol for CH4 in NaCl solutions.
Structure: [0] W_CO2-cation, [1] W_CO2-anion, [2] W_CH4-cation, [3] W_CH4-anion.
Calibration 2024-12: These parameters compensate for excessive salting out from the SR2 term's packing fraction derivative (FSR2eps * epsi). The positive Wij values reduce the net dFSR2dN contribution for CO2/CH4. Validation results for CO2 in NaCl at 298 K: 0.5 mol/kg: ~5%, 1.0 mol/kg: ~10%, 2.0 mol/kg: ~18%, matching k_s ~ 0.1 L/mol.
Limitation: These parameters are calibrated for Na+/Cl- solutions. Other ion pairs may show different salting-out behavior due to varying implicit contributions from the FSR2eps*epsi term. For accurate predictions with ions like K+, MDEA+, HCO3-, or Ca++, ion-specific parameters should be fitted.
-
ionSpecificWij
Ion-specific Wij parameters for problematic electrolytes.These parameters override the generalized linear correlations for specific ion pairs that exhibit non-standard behavior (e.g., nitrates, sulfates with certain cations).
Fitted to Robinson & Stokes (1965) data where generalized correlations give >15% error.
-
-
Constructor Details
-
FurstElectrolyteConstants
private FurstElectrolyteConstants()Dummy constructor, not for use. Class is to be considered static.
-
-
Method Details
-
setFurstParam
public static void setFurstParam(int i, double value) setFurstParam.
- Parameters:
i- a intvalue- a double
-
getFurstParam
public static double getFurstParam(int i) getFurstParam.
- Parameters:
i- a int- Returns:
- a double
-
getFurstParamCPA
public static double getFurstParamCPA(int i) getFurstParamCPA.
- Parameters:
i- index into furstParamsCPA array- Returns:
- the parameter value
-
setFurstParamCPA
public static void setFurstParamCPA(int i, double value) setFurstParamCPA.
- Parameters:
i- index into furstParamsCPA arrayvalue- the parameter value to set
-
getFurstParamMDEA
public static double getFurstParamMDEA(int i) getFurstParamMDEA.
- Parameters:
i- a int- Returns:
- a double
-
setFurstParamMDEA
public static void setFurstParamMDEA(int i, double value) Set electrolyte parameter for MDEA solvent.- Parameters:
i- index into furstParamsCPA_MDEA arrayvalue- the parameter value to set
-
getFurstParamMEG
public static double getFurstParamMEG(int i) Get electrolyte parameter for MEG solvent.- Parameters:
i- index into furstParamsCPA_MEG array- Returns:
- the parameter value
-
setFurstParamMEG
public static void setFurstParamMEG(int i, double value) Set electrolyte parameter for MEG solvent.- Parameters:
i- index into furstParamsCPA_MEG arrayvalue- the parameter value to set
-
getFurstParamMeOH
public static double getFurstParamMeOH(int i) Get electrolyte parameter for methanol solvent.- Parameters:
i- index into furstParamsCPA_MeOH array- Returns:
- the parameter value
-
setFurstParamMeOH
public static void setFurstParamMeOH(int i, double value) Set electrolyte parameter for methanol solvent.- Parameters:
i- index into furstParamsCPA_MeOH arrayvalue- the parameter value to set
-
getFurstParamEtOH
public static double getFurstParamEtOH(int i) Get electrolyte parameter for ethanol solvent.- Parameters:
i- index into furstParamsCPA_EtOH array- Returns:
- the parameter value
-
setFurstParamEtOH
public static void setFurstParamEtOH(int i, double value) Set electrolyte parameter for ethanol solvent.- Parameters:
i- index into furstParamsCPA_EtOH arrayvalue- the parameter value to set
-
getFurstParamMEA
public static double getFurstParamMEA(int i) Get electrolyte parameter for MEA (monoethanolamine) solvent.- Parameters:
i- index into furstParamsCPA_MEA array- Returns:
- the parameter value
-
setFurstParamMEA
public static void setFurstParamMEA(int i, double value) Set electrolyte parameter for MEA (monoethanolamine) solvent.- Parameters:
i- index into furstParamsCPA_MEA arrayvalue- the parameter value to set
-
getFurstParamTEG
public static double getFurstParamTEG(int i) Get electrolyte parameter for TEG (triethylene glycol) solvent.- Parameters:
i- index into furstParamsCPA_TEG array- Returns:
- the parameter value
-
setFurstParamTEG
public static void setFurstParamTEG(int i, double value) Set electrolyte parameter for TEG (triethylene glycol) solvent.- Parameters:
i- index into furstParamsCPA_TEG arrayvalue- the parameter value to set
-
getFurstParamTDep
public static double getFurstParamTDep(int i) Get temperature-dependent Wij parameter for electrolyte interactions.Index mapping for wij[1] (enthalpy term):
- [0-1]: 1+ cation-solvent slope, intercept
- [4-5]: 1+ cation-anion prefactor, intercept
- [8-9]: 2+ cation-solvent slope, intercept
- [12-13]: 2+ cation-anion prefactor, intercept
Index mapping for wij[2] (heat capacity term):
- [2-3]: 1+ cation-solvent slope, intercept
- [6-7]: 1+ cation-anion prefactor, intercept
- [10-11]: 2+ cation-solvent slope, intercept
- [14-15]: 2+ cation-anion prefactor, intercept
- Parameters:
i- index into furstParamsCPA_TDep array- Returns:
- the parameter value
-
setFurstParamTDep
public static void setFurstParamTDep(int i, double value) Set temperature-dependent Wij parameter for electrolyte interactions.- Parameters:
i- index into furstParamsCPA_TDep arrayvalue- the parameter value to set
-
setFurstParams
-
getFurstParamGasIon
public static double getFurstParamGasIon(int i) Get gas-ion interaction parameter.- Parameters:
i- index: 0-3=legacy fixed params, 4=CO2-ion slope, 5=CO2-ion intercept, 6=CH4-ion slope, 7=CH4-ion intercept- Returns:
- the Wij parameter value
-
setFurstParamGasIon
public static void setFurstParamGasIon(int i, double value) Set gas-ion interaction parameter.- Parameters:
i- index: 0-3=legacy fixed params, 4=CO2-ion slope, 5=CO2-ion intercept, 6=CH4-ion slope, 7=CH4-ion interceptvalue- the Wij parameter value to set
-
getPredictiveWijSlope
public static double getPredictiveWijSlope(double epsilon, boolean isDivalent) Compute predictive Wij slope parameter based on solvent dielectric constant.This method provides a universal correlation for the cation-solvent Wij slope parameter based on the solvent's dielectric constant. The correlation is fitted to reproduce the behavior of water, methanol, ethanol, MEG, MEA, and MDEA at 298.15 K.
The functional form is: slope = a0 + a1 * (1/epsilon - 1/epsilon_water)
- Parameters:
epsilon- the solvent dielectric constant at the temperature of interestisDivalent- true if the cation is divalent (2+), false for monovalent (1+)- Returns:
- the Wij slope parameter (multiplies ion Stokes diameter)
-
getPredictiveWijIntercept
public static double getPredictiveWijIntercept(double epsilon, boolean isDivalent) Compute predictive Wij intercept parameter based on solvent dielectric constant.This method provides a universal correlation for the cation-solvent Wij intercept parameter based on the solvent's dielectric constant. The correlation is fitted to reproduce the behavior of water, methanol, ethanol, MEG, MEA, and MDEA at 298.15 K.
The functional form is: intercept = b0 + b1 * (1/epsilon - 1/epsilon_water)
- Parameters:
epsilon- the solvent dielectric constant at the temperature of interestisDivalent- true if the cation is divalent (2+), false for monovalent (1+)- Returns:
- the Wij intercept parameter
-
getPredictiveWij
public static double getPredictiveWij(double epsilon, double stokesDiameter, boolean isDivalent) Compute predictive Wij parameter for a cation-solvent pair based on dielectric constant.This is the main entry point for the predictive mixed-solvent electrolyte model. It computes the short-range Wij interaction parameter between a cation and a neutral solvent molecule using only the solvent's dielectric constant as a descriptor.
W_ij = slope(epsilon) * d_cation + intercept(epsilon)
For mixed solvents, compute the mixture dielectric constant first (e.g., mole-fraction weighted average), then call this method.
- Parameters:
epsilon- the solvent (or mixture) dielectric constantstokesDiameter- the cation's Stokes diameter [m]isDivalent- true if the cation is divalent (2+)- Returns:
- the Wij short-range interaction parameter
-
getMixtureDielectricConstant
public static double getMixtureDielectricConstant(double[] moleFractions, double[] dielectricConstants) Compute mixture dielectric constant from component contributions.Uses a simple mole-fraction weighted average for the dielectric constant. This is a reasonable approximation for polar solvent mixtures at moderate concentrations.
- Parameters:
moleFractions- array of mole fractions for each solvent componentdielectricConstants- array of dielectric constants for each solvent component- Returns:
- the mixture dielectric constant
-
getIonSpecificWij
-
hasIonSpecificWij
-
initializeIonSpecificWij
private static void initializeIonSpecificWij()Initialize ion-specific Wij parameter map.Parameters fitted to Robinson & Stokes (1965) experimental data at 25°C.
-
setIonSpecificWij
public static void setIonSpecificWij(String cation, String anion, double wijCatWater, double wijCatAnion) Set an ion-specific Wij parameter pair.- Parameters:
cation- the cation name (e.g., "Na+")anion- the anion name (e.g., "NO3-")wijCatWater- Wij for cation-water interactionwijCatAnion- Wij for cation-anion interaction
-
clearIonSpecificWij
public static void clearIonSpecificWij()Clear all ion-specific Wij parameters.
-