Class SystemElectrolyteCPAMM

All Implemented Interfaces:
Serializable, Cloneable, SystemInterface

public class SystemElectrolyteCPAMM extends SystemSrkCPA
Thermodynamic system class using the Maribo-Mogensen electrolyte CPA (e-CPA) equation of state.

This model is based on the PhD thesis: "Development of an Electrolyte CPA Equation of State for Mixed Solvent Electrolytes" by Bjørn Maribo-Mogensen, Technical University of Denmark, 2014.

The residual Helmholtz free energy consists of:

  • SRK cubic equation of state term
  • CPA association term for hydrogen bonding
  • Debye-Hückel term for long-range electrostatic interactions
  • Born solvation term for ion hydration

Key differences from the standard electrolyte CPA in NeqSim:

  • Uses Debye-Hückel instead of MSA for long-range electrostatics (simpler, faster)
  • Empirical Born radius correlations for cations and anions
  • Temperature-dependent ion-solvent interaction parameters

Example usage:

SystemInterface system = new SystemElectrolyteCPAMM(298.15, 1.0);
system.addComponent("water", 1.0);
system.addComponent("Na+", 0.1);
system.addComponent("Cl-", 0.1);
system.setMixingRule(10); // Electrolyte CPA mixing rule
system.init(0);
system.init(1);
Version:
$Id: $Id
Author:
Even Solbraa
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
  • Constructor Details

    • SystemElectrolyteCPAMM

      public SystemElectrolyteCPAMM()
      Constructor for SystemElectrolyteCPAMM with default conditions (298.15 K, 1 bar).
    • SystemElectrolyteCPAMM

      public SystemElectrolyteCPAMM(double T, double P)
      Constructor for SystemElectrolyteCPAMM.
      Parameters:
      T - temperature in Kelvin
      P - pressure in bar (absolute)
    • SystemElectrolyteCPAMM

      public SystemElectrolyteCPAMM(double T, double P, boolean checkForSolids)
      Constructor for SystemElectrolyteCPAMM with specified number of phases.
      Parameters:
      T - temperature in Kelvin
      P - pressure in bar (absolute)
      checkForSolids - whether to include solid phase check
  • Method Details

    • clone

      public SystemElectrolyteCPAMM clone()

      clone.

      Specified by:
      clone in interface SystemInterface
      Overrides:
      clone in class SystemSrkCPA
      Returns:
      a SystemInterface object
    • setDebyeHuckelOn

      public void setDebyeHuckelOn(boolean on)
      Enable or disable the Debye-Hückel electrostatic term.
      Parameters:
      on - true to enable, false to disable
    • setBornOn

      public void setBornOn(boolean on)
      Enable or disable the Born solvation term.
      Parameters:
      on - true to enable, false to disable
    • getDebyeLength

      public double getDebyeLength(int phaseNumber)
      Get the Debye screening length for the specified phase.
      Parameters:
      phaseNumber - phase index
      Returns:
      Debye length in meters
    • getSolventPermittivity

      public double getSolventPermittivity(int phaseNumber)
      Get the solvent permittivity (dielectric constant) for the specified phase.
      Parameters:
      phaseNumber - phase index
      Returns:
      solvent permittivity (dimensionless)
    • getMixturePermittivity

      public double getMixturePermittivity(int phaseNumber)
      Get the mixture permittivity including ion effects for the specified phase.
      Parameters:
      phaseNumber - phase index
      Returns:
      mixture permittivity (dimensionless)
    • setDielectricMixingRule

      public void setDielectricMixingRule(PhaseElectrolyteCPAMM.DielectricMixingRule rule)
      Set the dielectric constant mixing rule for all phases.

      Available mixing rules:

      • MOLAR_AVERAGE - Simple molar-weighted average (default)
      • VOLUME_AVERAGE - Volume-weighted average, better for water-glycol
      • LOOYENGA - Theoretical basis for polar mixtures
      • OSTER - Designed for water-alcohol mixtures
      • LICHTENECKER - Logarithmic mixing rule
      Parameters:
      rule - the dielectric mixing rule to use
    • setDielectricMixingRule

      public void setDielectricMixingRule(String ruleName)
      Set the dielectric constant mixing rule by name for all phases.
      Parameters:
      ruleName - the name of the mixing rule: "MOLAR_AVERAGE", "VOLUME_AVERAGE", "LOOYENGA", "OSTER", or "LICHTENECKER"
    • setShortRangeOn

      public void setShortRangeOn(boolean on)
      Enable or disable the short-range ion-solvent term.
      Parameters:
      on - true to enable, false to disable
    • initHuronVidalIonParameters

      public void initHuronVidalIonParameters(double alphaValue)
      Initialize Huron-Vidal parameters for ion-solvent interactions.

      This method sets up the NRTL parameters in the Huron-Vidal mixing rule using the ion-solvent interaction parameters from the Maribo-Mogensen thesis (Table 6.11). Call this method AFTER setting mixing rule 4 or 7 (Huron-Vidal).

      The ion-solvent interaction energy follows: τ_iw = u0_iw + uT_iw × (T - 298.15) where u0 and uT are from IonParametersMM.

      Parameters:
      alphaValue - the NRTL non-randomness parameter (typically 0.2 for electrolytes)
    • initHuronVidalIonParameters

      public void initHuronVidalIonParameters()
      Initialize Huron-Vidal parameters with default alpha = 0.2.