Class IonParametersAdvanced
java.lang.Object
neqsim.thermo.util.constants.IonParametersAdvanced
- All Implemented Interfaces:
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classData class holding ion-specific advanced parameters.static classData class for ion-pair formation parameters. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Map<String, IonParametersAdvanced.AdvancedIonData> Map of ion name to advanced parameters.private static final Map<String, IonParametersAdvanced.IonPairData> Map of ion-pair keys to ion-pair formation constants.private static final longSerialization version UID.static final doubleReference temperature for parameter fitting [K]. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivatePrivate constructor to prevent instantiation. -
Method Summary
Modifier and TypeMethodDescriptionstatic doublecalcBornRadius(String ionName, double temperature) Calculate the Born radius at a given temperature.static doublecalcIonPairConstant(String cationName, String anionName, double temperature) Calculate ion-pair formation constant at a given temperature.static doubleCalculate the ion-water interaction energy W at a given temperature.static doubleCalculate the temperature derivative of W.static doubleCalculate the second temperature derivative of W.getIonData(String ionName) Get advanced ion data for a given ion name.getIonPairData(String cationName, String anionName) Get ion-pair formation data for a cation-anion pair.static booleanhasIonData(String ionName) Check if ion-specific advanced parameters exist for a given ion.static booleanhasIonPairData(String cationName, String anionName) Check if ion pairing is expected for a given cation-anion combination.static voidSet the W0 (base ion-water interaction energy) for a given ion.static voidsetWParameters(String ionName, double newW0, double newWT, double newWTT) Set the W parameters (W0, WT, WTT) for a given ion.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
T_REF
public static final double T_REFReference temperature for parameter fitting [K].- See Also:
-
ION_DATA
Map of ion name to advanced parameters. -
ION_PAIR_DATA
Map of ion-pair keys to ion-pair formation constants.
-
-
Constructor Details
-
IonParametersAdvanced
private IonParametersAdvanced()Private constructor to prevent instantiation.
-
-
Method Details
-
setW0
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
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/mol2newWT- linear T-coefficient in J*m3/(mol2*K)newWTT- quadratic T-coefficient in J*m3/(mol2*K2)
-
getIonData
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
Check if ion-specific advanced parameters exist for a given ion.- Parameters:
ionName- the name of the ion- Returns:
- true if parameters exist
-
getIonPairData
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
-
calcW
Calculate the ion-water interaction energy W at a given temperature.- Parameters:
ionName- the ion nametemperature- the temperature in Kelvin- Returns:
- the interaction energy W(T) in J*m3/mol2
-
calcWdT
Calculate the temperature derivative of W.- Parameters:
ionName- the ion nametemperature- the temperature in Kelvin- Returns:
- dW/dT in J*m3/(mol2*K)
-
calcWdTdT
Calculate the second temperature derivative of W.- Parameters:
ionName- the ion name- Returns:
- d2W/dT2 in J*m3/(mol2*K2)
-
calcBornRadius
Calculate the Born radius at a given temperature.- Parameters:
ionName- the ion nametemperature- the temperature in Kelvin- Returns:
- Born radius in Angstrom
-
calcIonPairConstant
-