Class IonParametersAdvanced

java.lang.Object
neqsim.thermo.util.constants.IonParametersAdvanced
All Implemented Interfaces:
Serializable

public final class IonParametersAdvanced extends Object implements Serializable
Ion-specific parameters for the e-CPA-Advanced electrolyte equation of state.

This class provides ion-specific interaction parameters fitted to experimental mean ionic activity coefficient and osmotic coefficient data. Unlike the original e-CPA model which uses universal linear correlations for all ions, this model has individual parameters per ion-solvent pair, enabling higher accuracy especially for multivalent ions and sulfate systems.

Parameter Structure

Each ion has the following parameters:

  • sigma: Hard-sphere diameter [Angstrom]
  • W0: Ion-water interaction energy at 298.15 K [J*m3/mol2]
  • WT: Linear temperature coefficient of W [J*m3/(mol2*K)]
  • WTT: Quadratic temperature coefficient [J*m3/(mol2*K2)]
  • RBorn0: Born radius at 298.15 K [Angstrom]
  • RBornT: Temperature coefficient of Born radius [Angstrom/K]

Data Sources

  • Robinson and Stokes (1959, 2002) — activity coefficient data at 25 C
  • Hamer and Wu (1972) — critical evaluation of activity coefficients
  • Marcus (1988) — ionic radii and hydration free energies
  • Archer (1992) — NaCl properties 0-300 C
Version:
1.0
Author:
Even Solbraa
See Also:
  • Field Details

  • Constructor Details

    • IonParametersAdvanced

      private IonParametersAdvanced()
      Private constructor to prevent instantiation.
  • Method Details

    • setW0

      public static void setW0(String ionName, double newW0)
      Set the W0 (base ion-water interaction energy) for a given ion. Used during parameter fitting to update W0 without recompiling. Creates a new AdvancedIonData with the updated W0 while keeping all other parameters.
      Parameters:
      ionName - the ion name (e.g., "Na+", "Cl-")
      newW0 - new W0 value in J*m3/mol2
    • setWParameters

      public static void setWParameters(String ionName, double newW0, double newWT, double newWTT)
      Set the W parameters (W0, WT, WTT) for a given ion. Used during parameter fitting.
      Parameters:
      ionName - the ion name (e.g., "Na+", "Cl-")
      newW0 - base interaction energy at T_ref in J*m3/mol2
      newWT - linear T-coefficient in J*m3/(mol2*K)
      newWTT - quadratic T-coefficient in J*m3/(mol2*K2)
    • getIonData

      public static IonParametersAdvanced.AdvancedIonData getIonData(String ionName)
      Get advanced ion data for a given ion name.
      Parameters:
      ionName - the name of the ion (e.g., "Na+", "Cl-", "Ca++", "SO4--")
      Returns:
      AdvancedIonData object, or null if ion not found
    • hasIonData

      public static boolean hasIonData(String ionName)
      Check if ion-specific advanced parameters exist for a given ion.
      Parameters:
      ionName - the name of the ion
      Returns:
      true if parameters exist
    • getIonPairData

      public static IonParametersAdvanced.IonPairData getIonPairData(String cationName, String anionName)
      Get ion-pair formation data for a cation-anion pair.
      Parameters:
      cationName - the cation name (e.g., "Ca++")
      anionName - the anion name (e.g., "SO4--")
      Returns:
      IonPairData object, or null if no ion pairing data available
    • hasIonPairData

      public static boolean hasIonPairData(String cationName, String anionName)
      Check if ion pairing is expected for a given cation-anion combination.
      Parameters:
      cationName - the cation name
      anionName - the anion name
      Returns:
      true if ion-pair formation data exists
    • calcW

      public static double calcW(String ionName, double temperature)
      Calculate the ion-water interaction energy W at a given temperature.
      Parameters:
      ionName - the ion name
      temperature - the temperature in Kelvin
      Returns:
      the interaction energy W(T) in J*m3/mol2
    • calcWdT

      public static double calcWdT(String ionName, double temperature)
      Calculate the temperature derivative of W.
      Parameters:
      ionName - the ion name
      temperature - the temperature in Kelvin
      Returns:
      dW/dT in J*m3/(mol2*K)
    • calcWdTdT

      public static double calcWdTdT(String ionName)
      Calculate the second temperature derivative of W.
      Parameters:
      ionName - the ion name
      Returns:
      d2W/dT2 in J*m3/(mol2*K2)
    • calcBornRadius

      public static double calcBornRadius(String ionName, double temperature)
      Calculate the Born radius at a given temperature.
      Parameters:
      ionName - the ion name
      temperature - the temperature in Kelvin
      Returns:
      Born radius in Angstrom
    • calcIonPairConstant

      public static double calcIonPairConstant(String cationName, String anionName, double temperature)
      Calculate ion-pair formation constant at a given temperature.
      Parameters:
      cationName - the cation name
      anionName - the anion name
      temperature - the temperature in Kelvin
      Returns:
      K_IP in L/mol