Class SystemElectrolyteCPAMM
java.lang.Object
neqsim.thermo.system.SystemThermo
neqsim.thermo.system.SystemEos
neqsim.thermo.system.SystemSrkEos
neqsim.thermo.system.SystemSrkCPA
neqsim.thermo.system.SystemElectrolyteCPAMM
- All Implemented Interfaces:
Serializable, Cloneable, SystemInterface
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 Summary
FieldsModifier and TypeFieldDescriptionprivate static final longSerialization version UID.Fields inherited from class SystemThermo
a, allowPhaseShift, attractiveTermNumber, beta, CapeOpenProperties10, CapeOpenProperties11, characterization, checkStability, chemicalReactionOperations, chemicalSystem, componentNameTag, criticalPressure, criticalTemperature, enhancedMultiPhaseCheck, fluidInfo, fluidName, hydrateCheck, interfaceProp, isInitialized, logger, maxNumberOfPhases, modelName, multiPhaseCheck, numberOfComponents, numberOfPhases, numericDerivatives, oilAssayCharacterisation, phaseArray, phaseIndex, phaseType, resultTable, solidPhaseCheck, standard, waxCharacterisation -
Constructor Summary
ConstructorsConstructorDescriptionConstructor for SystemElectrolyteCPAMM with default conditions (298.15 K, 1 bar).SystemElectrolyteCPAMM(double T, double P) Constructor for SystemElectrolyteCPAMM.SystemElectrolyteCPAMM(double T, double P, boolean checkForSolids) Constructor for SystemElectrolyteCPAMM with specified number of phases. -
Method Summary
Modifier and TypeMethodDescriptionclone()clone.doublegetDebyeLength(int phaseNumber) Get the Debye screening length for the specified phase.doublegetMixturePermittivity(int phaseNumber) Get the mixture permittivity including ion effects for the specified phase.doublegetSolventPermittivity(int phaseNumber) Get the solvent permittivity (dielectric constant) for the specified phase.voidInitialize Huron-Vidal parameters with default alpha = 0.2.voidinitHuronVidalIonParameters(double alphaValue) Initialize Huron-Vidal parameters for ion-solvent interactions.voidsetBornOn(boolean on) Enable or disable the Born solvation term.voidsetDebyeHuckelOn(boolean on) Enable or disable the Debye-Hückel electrostatic term.voidsetDielectricMixingRule(String ruleName) Set the dielectric constant mixing rule by name for all phases.voidSet the dielectric constant mixing rule for all phases.voidsetShortRangeOn(boolean on) Enable or disable the short-range ion-solvent term.Methods inherited from class SystemSrkCPA
addComponent, commonInitializationMethods inherited from class SystemThermo
addCapeOpenProperty, addCharacterized, addComponent, addComponent, addComponent, addComponent, addComponent, addComponent, addComponent, addFluid, addFluid, addGasToLiquid, addHydratePhase, addHydratePhase2, addLiquidToGas, addOilFractions, addOilFractions, addPhase, addPhaseFractionToPhase, addPhaseFractionToPhase, addPlusFraction, addSalt, addSolidComplexPhase, addSolidPhase, addTBPfraction, addTBPfraction, addTBPfraction2, addTBPfraction3, addTBPfraction4, addToComponentNames, allowPhaseShift, allowPhaseShift, autoSelectMixingRule, autoSelectModel, calc_x_y, calc_x_y_nonorm, calcHenrysConstant, calcInterfaceProperties, calcKIJ, calculateDensityFromBoilingPoint, calculateMolarMassFromDensityAndBoilingPoint, changeComponentName, checkStability, checkStability, chemicalReactionInit, clearAll, createDatabase, createTable, deleteFluidPhase, display, doEnhancedMultiPhaseCheck, doMultiPhaseCheck, doSolidPhaseCheck, getAntoineVaporPressure, getBeta, getBeta, getCapeOpenProperties10, getCapeOpenProperties11, getCASNumbers, getCharacterization, getChemicalReactionOperations, getCompFormulaes, getCompIDs, getCompNames, getComponentNameTag, getCorrectedVolume, getCorrectedVolumeFraction, getCp, getCp, getCv, getCv, getDensity, getDensity, getdPdVtn, getdVdPtn, getdVdTpn, getEmptySystemClone, getEnthalpy, getEnthalpy, getEntropy, getEntropy, getExergy, getExergy, getFlowRate, getFluidInfo, getFluidName, getGamma, getGasPhase, getGibbsEnergy, getHeatOfVaporization, getHelmholtzEnergy, getHydrateCheck, getIdealLiquidDensity, getInterfacialTension, getInterfacialTension, getInterfacialTension, getInternalEnergy, getInternalEnergy, getInterphaseProperties, getJouleThomsonCoefficient, getJouleThomsonCoefficient, getKappa, getKinematicViscosity, getKinematicViscosity, getKvector, getLiquidPhase, getLiquidVolume, getLowestGibbsEnergyPhase, getMass, getMaxNumberOfPhases, getMixingRule, getMixingRuleName, getModelName, getMolarComposition, getMolarMass, getMolarMass, getMolarRate, getMolarVolume, getMolarVolume, getMolecularWeights, getMoleFraction, getMoleFractionsSum, getNormalBoilingPointTemperatures, getNumberOfComponents, getNumberOfOilFractionComponents, getNumberOfPhases, getOilAssayCharacterisation, getOilFractionIDs, getOilFractionLiquidDensityAt25C, getOilFractionMolecularMass, getOilFractionNormalBoilingPoints, getPC, getPhase, getPhase, getPhase, getPhaseFraction, getPhaseIndex, getPhaseIndex, getPhaseIndex, getPhaseNumberOfPhase, getPhaseOfType, getPhases, getPressure, getPressure, getPressure, getProperties, getProperty, getProperty, getProperty, getResultTable, getSoundSpeed, getSoundSpeed, getStandard, getStandard, getSumBeta, getTC, getTemperature, getTemperature, getTemperature, getThermalConductivity, getThermalConductivity, getTotalNumberOfMoles, getViscosity, getViscosity, getVolume, getVolume, getVolumeFraction, getWaxCharacterisation, getWaxModel, getWeightBasedComposition, getWtFraction, getZ, getzvector, getZvolcorr, hasPhaseType, hasPlusFraction, hasTBPFraction, init, init, init_x_y, initAnalytic, initAnalytic, initBeta, initNumeric, initNumeric, initNumeric, initPhysicalProperties, initPhysicalProperties, initRefPhases, initTotalNumberOfMoles, invertPhaseTypes, isBetaValid, isChemicalSystem, isChemicalSystem, isForcePhaseTypes, isImplementedCompositionDeriativesofFugacity, isImplementedCompositionDeriativesofFugacity, isImplementedPressureDeriativesofFugacity, isImplementedTemperatureDeriativesofFugacity, isInitialized, isMultiphaseWaxCheck, isNumericDerivatives, isPhase, normalizeBeta, orderByDensity, phaseToSystem, phaseToSystem, phaseToSystem, phaseToSystem, readFluid, readObject, readObjectFromFile, reInitPhaseInformation, reInitPhaseType, removeComponent, removePhase, removePhaseKeepTotalComposition, renameComponent, replacePhase, reset, reset_x_y, resetCharacterisation, resetDatabase, resetPhysicalProperties, save, saveFluid, saveFluid, saveObject, saveObjectToFile, saveToDataBase, setAllComponentsInPhase, setAllPhaseType, setAttractiveTerm, setBeta, setBeta, setBinaryInteractionParameter, setBinaryInteractionParameter, setBmixType, setComponentCriticalParameters, setComponentCriticalParameters, setComponentFlowRates, setComponentNames, setComponentNameTag, setComponentNameTagOnNormalComponents, setComponentVolumeCorrection, setComponentVolumeCorrection, setEmptyFluid, setEnhancedMultiPhaseCheck, setFluidInfo, setFluidName, setForcePhaseTypes, setForceSinglePhase, setForceSinglePhase, setHeavyTBPfractionAsPlusFraction, setHydrateCheck, setImplementedCompositionDeriativesofFugacity, setImplementedPressureDeriativesofFugacity, setImplementedTemperatureDeriativesofFugacity, setLastTBPasPlus, setMaxNumberOfPhases, setMixingRule, setMixingRule, setMixingRuleGEmodel, setMixingRuleParametersForComponent, setModel, setModelName, setMolarComposition, setMolarCompositionOfNamedComponents, setMolarCompositionOfPlusFluid, setMolarCompositionPlus, setMolarFlowRates, setMultiPhaseCheck, setMultiphaseWaxCheck, setNumberOfPhases, setNumericDerivatives, setPC, setPhase, setPhaseIndex, setPhaseType, setPhaseType, setPressure, setPressure, setSolidPhaseCheck, setSolidPhaseCheck, setStandard, setTC, setTemperature, setTemperature, setTemperature, setTotalFlowRate, setTotalNumberOfMoles, setUseTVasIndependentVariables, toCompJson, toJson, tuneModel, useTVasIndependentVariables, useVolumeCorrection, write, writeMethods inherited from class Object
finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface SystemInterface
addComponent, addComponents, addComponents, calcResultTable, display, getComponent, getComponent, getComponentNames, getGamma2, getHydrateFraction, getHydratePhase, getNumberOfMoles, getPhaseNumberOfPhase, hasComponent, hasComponent, hashCode, hasHydratePhase, hasPhaseType, hasSolidPhase, initPhysicalProperties, initProperties, initThermoProperties, prettyPrint, setMixingRule, setMixingRule, setPhysicalPropertyModel, setPhysicalPropertyModel, validateSetup
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization 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 KelvinP- 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 KelvinP- pressure in bar (absolute)checkForSolids- whether to include solid phase check
-
-
Method Details
-
clone
clone.
- Specified by:
clonein interfaceSystemInterface- Overrides:
clonein classSystemSrkCPA- Returns:
- a
SystemInterfaceobject
-
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
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-glycolLOOYENGA- Theoretical basis for polar mixturesOSTER- Designed for water-alcohol mixturesLICHTENECKER- Logarithmic mixing rule
- Parameters:
rule- the dielectric mixing rule to use
-
setDielectricMixingRule
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.
-