Class ComponentSAFTVRMie
- All Implemented Interfaces:
Serializable, Cloneable, ComponentEosInterface, ComponentInterface, ThermodynamicConstantsInterface
Implements the Lafitte et al. (2013) SAFT-VR Mie formulation with variable-range Mie potential. The Mie potential generalizes the Lennard-Jones potential with adjustable repulsive (lambda_r) and attractive (lambda_a) exponents.
Reference: Lafitte, T., Apostolakou, A., Avendano, C., Galindo, A., Adjiman, C.S., Mueller, E.A., Jackson, G. (2013). Accurate statistical associating fluid theory for chain molecules formed from Mie segments. J. Chem. Phys., 139, 154504.
- Version:
- $Id: $Id
- Author:
- Even Solbraa
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected doubleTemperature at which dSAFTi was last computed.protected doubleDerivative of hard-sphere Helmholtz energy with respect to moles of component i.private doubleprivate doubleprotected doubleDerivative of hard-sphere RDF with respect to moles of component i.protected doubleDerivative of log(ghs) with respect to moles of component i.protected doubleDerivative of mean segment number with respect to moles of component i.protected doubleDerivative of packing fraction with respect to moles of component i.protected doubleTemperature-dependent effective diameter for component i.private doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate intNumber of association sites on this component (as used in SAFT-VR Mie).private static final longSerialization version UID.private double[]Association site fractions X_A for this component.Fields inherited from class ComponentEos
a, aDern, aDerT, aDerTn, aDerTT, aDiffDiffT, aDiffT, Ai, Aij, AiT, alpha, aT, b, bDern, bDerTn, Bi, Bij, dAdndn, dBdndn, delta1, delta2, logger, m, omegaAOverride, sqrtATFields inherited from class Component
acentricFactor, aCPA, AntoineA, AntoineASolid, AntoineB, AntoineBSolid, AntoineC, AntoineCSolid, AntoineD, AntoineE, antoineLiqVapPresType, associationEnergy, associationScheme, associationVolume, attractiveTermNumber, bCPA, calcActivity, componentName, componentNumber, criticalPressure, criticalTemperature, criticalViscosity, criticalVolume, debyeDipoleMoment, dfugdn, dfugdp, dfugdt, dfugdx, dielectricParameter, dqPuredT, dqPuredTdT, elements, epsikSAFT, epsikSAFTVRMie, fugacityCoefficient, gibbsEnergyOfFormation, heatOfVaporizationCoefs, henryCoefParameter, Hsub, idealGasAbsoluteEntropy, idealGasGibbsEnergyOfFormation, index, ionicCharge, isIon, isNormalComponent, isPlusFraction, isTBPfraction, K, lambdaASAFTVRMie, lambdaRSAFTVRMie, lennardJonesEnergyParameter, lennardJonesMolecularDiameter, liquidConductivityParameter, liquidDensityCoefs, liquidViscosityModel, liquidViscosityParameter, matiascopemanParams, matiascopemanParamsPR, matiascopemanParamsUMRPRU, matiascopemanSolidParams, mCPA, meltingPointTemperature, molarMass, mSAFTi, mSAFTVRMie, normalBoilingPoint, normalLiquidDensity, numberOfAssociationSites, numberOfMoles, numberOfMolesInPhase, parachorParameter, paulingAnionicDiameter, qPure, racketZ, referencePotential, referenceStateType, schwartzentruberParams, sigmaSAFTi, sigmaSAFTVRMie, solidCheck, solidDensityCoefs, sphericalCoreRadius, srkacentricFactor, standardDensity, stokesCationicDiameter, surfTensInfluenceParam, triplePointDensity, triplePointPressure, TwuCoonParams, viscosityCorrectionFactor, viscosityFrictionK, voli, x, zFields inherited from interface ThermodynamicConstantsInterface
atm, avagadroNumber, boltzmannConstant, electronCharge, faradayConstant, gravity, molarMassAir, normalStateTemperature, pi, planckConstant, R, referencePressure, referenceTemperature, standardStateTemperature, vacumPermittivity -
Constructor Summary
ConstructorsConstructorDescriptionComponentSAFTVRMie(String name, double moles, double molesInPhase, int compNumber) Constructor for ComponentSAFTVRMie. -
Method Summary
Modifier and TypeMethodDescriptiondoublecalcdahsSAFTdi(PhaseInterface phase, int nc, double temp, double pres) Derivative of hard-sphere Helmholtz energy with respect to moles of component i.doublecalcdF1dispVolTermdn(PhaseInterface phase, int nc, double temp, double pres) Derivative of dispersion volume term with respect to moles of component i.doublecalcdghsSAFTdi(PhaseInterface phase, int nc, double temp, double pres) Derivative of hard-sphere RDF with respect to moles of component i.doublecalcdmSAFTdi(PhaseInterface phase, int nc, double temp, double pres) Derivative of segment number with respect to moles of component i.doublecalcdnSAFTdi(PhaseInterface phase, int nc, double temp, double pres) Derivative of packing fraction with respect to moles of component i.static doublecalcEffectiveDiameter(double sigma, double epsk, double temperature, double lr, double la) Calculates effective BH diameter by numerical Gauss-Legendre quadrature of the Mie potential.doublecalcF1dispI1dn(PhaseInterface phase, int nc, double temp, double pres) Calculates derivative of first-order dispersion integral (I1) w.r.t. moles.doublecalcF1dispSumTermdn(PhaseInterface phase, int nc, double temp, double pres) Calculates derivative of first-order dispersion sum term w.r.t. moles.doublecalcF2dispSumTermdn(PhaseInterface phase, int nc, double temp, double pres) Calculates derivative of second-order dispersion sum term w.r.t. moles.doublecalcF2dispZHCdn(PhaseInterface phase, int nc, double temp, double pres) Calculates derivative of second-order compression factor correction w.r.t. moles.static doublecalcMiePrefactor(double lr, double la) Calculates the Mie potential prefactor C.clone()clone.doubledF_DISP_SAFTdN(PhaseInterface phase, int nc, double temp, double pres) Dispersion contribution to dF/dNi.doubledF_HC_SAFTdN(PhaseInterface phase, int nc, double temp, double pres) Hard-chain contribution to dF/dNi.doubledFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) Calculates the association contribution to dF/dNi. dFCPAdN = sum_A [ln(X_A^i)] - hcpatot/2 * d(ln I)/d(ni), where I is the Dufal 2015 association integral used for the SAFT-VR Mie association strength.doubledFdN(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) Returns the derivative of the reduced residual Helmholtz energy with respect to moles of component i at constant T and total volume V.doubledFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, double pressure) dFdNdN.doubledFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) dFdNdT.doubledFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) dFdNdV.voidFinit(PhaseInterface phase, double temperature, double pressure, double totalNumberOfMoles, double beta, int numberOfComponents, int initType) Initializes SAFT-VR Mie component derivatives within the phase context.doubleGets the temperature derivative of the BH effective diameter for this component.doubleGets the mean segment number derivative w.r.t. moles.doubleGets the packing fraction derivative w.r.t. moles.doubleGets the temperature-dependent effective segment diameter.doublegetEpsikSAFT.doublegetmSAFTi.intReturns the number of association sites used in SAFT-VR Mie.doublegetSigmaSAFTi.private doubleGets the temperature stored for this component (for derivative calculations).double[]Returns the association site fraction array.voidinit(double temperature, double pressure, double totalNumberOfMoles, double beta, int initType) Initializes component temperature-dependent diameter using the Barker-Henderson integral for the Mie potential (evaluated analytically following Lafitte et al. 2013).voidinitAssociationArrays(int nSites) Initializes the association site fraction arrays.voidrecalcSAFTDiameter(double temperature) Recalculates the temperature-dependent effective BH diameter without running the full Component.init().private voidreinitSAFTOnPhase(PhaseSAFTVRMie phase, int numberOfComponents, double temperature, double pressure) Reinitializes SAFT quantities on a cloned phase for numerical differentiation.voidsetXsiteAssoc(int siteIndex, double value) Sets a site fraction value.Methods inherited from class ComponentSrk
calca, calcb, getdQpuredT, getdQpuredTdT, getQpure, getSurfaceTenisionInfluenceParameter, getVolumeCorrectionMethods inherited from class ComponentEos
alpha, aT, diffalphaT, diffaT, diffdiffalphaT, diffdiffaT, equals, fugcoef, geta, getAder, getaDiffDiffT, getaDiffT, getAi, getAij, getAiT, getAresnTV, getaT, getAttractiveParameter, getAttractiveTerm, getb, getBder, getBi, getBij, getChemicalPotential, getdAdndn, getdAdT, getdAdTdn, getdAdTdT, getdBdndn, getdBdndT, getdBdT, getDeltaEosParameters, getdUdndnSV, getdUdnSV, getdUdSdnV, getdUdVdnS, getOmegaAOverride, hasOmegaAOverride, logfugcoefdN, logfugcoefdNi, logfugcoefdP, logfugcoefdT, seta, setAder, setAttractiveParameter, setAttractiveTerm, setb, setBder, setdAdndn, setdAdT, setdAdTdn, setdAdTdT, setdBdndn, setdBdndT, setdBdTdT, setOmegaAMethods inherited from class Component
addMolesChemReac, calcActivity, createComponent, doSolidCheck, fugcoefDiffPresNumeric, fugcoefDiffTempNumeric, getAcentricFactor, getAntoineASolid, getAntoineBSolid, getAntoineCSolid, getAntoineVaporPressure, getAntoineVaporPressuredT, getAntoineVaporTemperature, getAssociationEnergy, getAssociationEnergySAFT, getAssociationEnergySAFTVRMie, getAssociationScheme, getAssociationVolume, getAssociationVolumeSAFT, getAssociationVolumeSAFTVRMie, getAttractiveTermNumber, getCASnumber, getCCsolidVaporPressure, getCCsolidVaporPressuredT, getChemicalPotential, getChemicalPotentialdN, getChemicalPotentialdNTV, getChemicalPotentialdP, getChemicalPotentialdP, getChemicalPotentialdT, getChemicalPotentialdV, getChemicalPotentialIdealReference, getComponentName, getComponentNumber, getComponentType, getCostaldCharacteristicVolume, getCp0, getCpA, getCpB, getCpC, getCpD, getCpE, getCriticalCompressibilityFactor, getCriticalViscosity, getCriticalVolume, getCv0, getDebyeDipoleMoment, getdfugdn, getdfugdp, getdfugdt, getdfugdx, getDielectricConstant, getDielectricConstantdT, getDielectricConstantdTdT, getdrhodN, getElements, getEnthalpy, getEntropy, getEpsikSAFTVRMie, getFlowRate, getFormulae, getFugacityCoefficient, getFugacitydN, getGibbsEnergy, getGibbsEnergyOfFormation, getGresTP, getHeatOfFusion, getHeatOfVapourization, getHenryCoef, getHenryCoefdT, getHenryCoefParameter, getHID, getHresTP, getHsub, getIdealGasAbsoluteEntropy, getIdealGasEnthalpyOfFormation, getIdealGasGibbsEnergyOfFormation, getIdEntropy, getIndex, getIonicCharge, getIonicDiameter, getK, getLambdaASAFTVRMie, getLambdaRSAFTVRMie, getLennardJonesEnergyParameter, getLennardJonesMolecularDiameter, getLiquidConductivityParameter, getLiquidViscosityModel, getLiquidViscosityParameter, getMatiascopemanParams, getMatiascopemanParams, getMatiascopemanParamsPR, getMatiascopemanParamsUMRPRU, getMatiascopemanSolidParams, getMeltingPointTemperature, getMolality, getMolarity, getMolarMass, getMolarMass, getmSAFTVRMie, getName, getNormalBoilingPoint, getNormalBoilingPoint, getNormalLiquidDensity, getNormalLiquidDensity, getNumberOfAssociationSites, getNumberOfmoles, getNumberOfMolesInPhase, getOrginalNumberOfAssociationSites, getParachorParameter, getPaulingAnionicDiameter, getPC, getPC, getPureComponentCpLiquid, getPureComponentCpSolid, getPureComponentHeatOfVaporization, getPureComponentLiquidDensity, getPureComponentSolidDensity, getRacketZ, getRacketZCPA, getRate, getReferenceEnthalpy, getReferencePotential, getReferenceStateType, getSchwartzentruberParams, getSigmaSAFTVRMie, getSolidVaporPressure, getSolidVaporPressuredT, getSphericalCoreRadius, getSresTP, getStandardDensity, getStokesCationicDiameter, getSurfTensInfluenceParam, getTC, getTC, getTotalFlowRate, getTriplePointDensity, getTriplePointPressure, getTriplePointTemperature, getTwuCoonParams, getViscosityCorrectionFactor, getViscosityFrictionK, getVoli, getVolumeCorrectionConst, getVolumeCorrectionT, getVolumeCorrectionT_CPA, getx, getz, hasVolumeCorrection, insertComponentIntoDatabase, isHydrateFormer, isHydrocarbon, isInert, isIsHydrateFormer, isIsIon, isIsNormalComponent, isIsPlusFraction, isIsTBPfraction, isWaxFormer, reducedPressure, reducedTemperature, setAcentricFactor, setAntoineASolid, setAntoineBSolid, setAntoineCSolid, setAssociationEnergy, setAssociationEnergySAFT, setAssociationEnergySAFTVRMie, setAssociationScheme, setAssociationVolume, setAssociationVolumeSAFT, setAssociationVolumeSAFTVRMie, setCASnumber, setComponentName, setComponentNumber, setComponentType, setCostaldCharacteristicVolume, setCpA, setCpB, setCpC, setCpD, setCpE, setCriticalCompressibilityFactor, setCriticalViscosity, setCriticalVolume, setDebyeDipoleMoment, setdfugdn, setdfugdp, setdfugdt, setdfugdx, setEpsikSAFT, setEpsikSAFTVRMie, setFormulae, setFugacityCoefficient, setHeatOfFusion, setHenryCoefParameter, setIdealGasEnthalpyOfFormation, setIsAllTypesFalse, setIsHydrateFormer, setIsIon, setIsNormalComponent, setIsPlusFraction, setIsTBPfraction, setK, setLambdaASAFTVRMie, setLambdaRSAFTVRMie, setLennardJonesEnergyParameter, setLennardJonesMolecularDiameter, setLiquidConductivityParameter, setLiquidViscosityModel, setLiquidViscosityParameter, setMatiascopemanParams, setMatiascopemanParams, setMatiascopemanParamsPR, setMatiascopemanSolidParams, setMolarMass, setMolarMass, setmSAFTi, setmSAFTVRMie, setNormalBoilingPoint, setNormalLiquidDensity, setNumberOfAssociationSites, setNumberOfmoles, setNumberOfMolesInPhase, setParachorParameter, setPaulingAnionicDiameter, setPC, setPC, setProperties, setRacketZ, setRacketZCPA, setReferenceEnthalpy, setReferencePotential, setSchwartzentruberParams, setSigmaSAFTi, setSigmaSAFTVRMie, setSolidCheck, setSphericalCoreRadius, setStandardDensity, setStokesCationicDiameter, setSurfTensInfluenceParam, setTC, setTC, setTriplePointTemperature, setTwuCoonParams, setViscosityAssociationFactor, setViscosityFrictionK, setVoli, setVolumeCorrection, setVolumeCorrectionConst, setVolumeCorrectionT, setVolumeCorrectionT_CPA, setWaxFormer, setx, setzMethods inherited from class Object
finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ComponentInterface
addMoles, addMolesChemReac, addMolesChemReac, calcActivity, createComponent, doSolidCheck, fugcoefDiffPresNumeric, fugcoefDiffTempNumeric, getAcentricFactor, getAntoineASolid, getAntoineBSolid, getAntoineCSolid, getAntoineVaporPressure, getAntoineVaporPressuredT, getAntoineVaporTemperature, getAssociationEnergy, getAssociationEnergySAFT, getAssociationEnergySAFTVRMie, getAssociationScheme, getAssociationVolume, getAssociationVolumeSAFT, getAssociationVolumeSAFTVRMie, getAttractiveTermNumber, getCASnumber, getCCsolidVaporPressure, getCCsolidVaporPressuredT, getChemicalPotential, getChemicalPotentialdN, getChemicalPotentialdNTV, getChemicalPotentialdP, getChemicalPotentialdT, getChemicalPotentialdV, getChemicalPotentialIdealReference, getComponentName, getComponentNumber, getComponentType, getCostaldCharacteristicVolume, getCp0, getCpA, getCpB, getCpC, getCpD, getCpE, getCriticalCompressibilityFactor, getCriticalViscosity, getCriticalVolume, getCv0, getDebyeDipoleMoment, getdfugdn, getdfugdp, getdfugdt, getdfugdx, getDielectricConstant, getDielectricConstantdT, getDielectricConstantdTdT, getdrhodN, getElements, getEnthalpy, getEntropy, getEpsikSAFTVRMie, getFlowRate, getFormulae, getFugacityCoefficient, getGibbsEnergy, getGibbsEnergyOfFormation, getGresTP, getHeatOfFusion, getHeatOfVapourization, getHenryCoef, getHenryCoefdT, getHenryCoefParameter, getHID, getHresTP, getHsub, getIdealGasAbsoluteEntropy, getIdealGasEnthalpyOfFormation, getIdealGasGibbsEnergyOfFormation, getIdEntropy, getIndex, getIonicCharge, getK, getLambdaASAFTVRMie, getLambdaRSAFTVRMie, getLennardJonesEnergyParameter, getLennardJonesMolecularDiameter, getLiquidConductivityParameter, getLiquidViscosityModel, getLiquidViscosityParameter, getLogFugacityCoefficient, getMatiascopemanParams, getMatiascopemanSolidParams, getMeltingPointTemperature, getMolality, getMolarity, getMolarMass, getMolarMass, getmSAFTVRMie, getName, getNormalBoilingPoint, getNormalBoilingPoint, getNormalLiquidDensity, getNormalLiquidDensity, getNumberOfAssociationSites, getNumberOfmoles, getNumberOfMolesInPhase, getOrginalNumberOfAssociationSites, getParachorParameter, getPaulingAnionicDiameter, getPC, getPC, getPureComponentCpLiquid, getPureComponentCpSolid, getPureComponentHeatOfVaporization, getPureComponentLiquidDensity, getPureComponentSolidDensity, getRacketZ, getRacketZCPA, getRate, getReferencePotential, getReferenceStateType, getSchwartzentruberParams, getSigmaSAFTVRMie, getSolidVaporPressure, getSolidVaporPressuredT, getSphericalCoreRadius, getSresTP, getStokesCationicDiameter, getSurfTensInfluenceParam, getTC, getTC, getTotalFlowRate, getTriplePointDensity, getTriplePointPressure, getTriplePointTemperature, getTwuCoonParams, getViscosityCorrectionFactor, getViscosityFrictionK, getVoli, getVolumeCorrectionConst, getVolumeCorrectionT, getVolumeCorrectionT_CPA, getx, getz, insertComponentIntoDatabase, isHydrateFormer, isHydrocarbon, isInert, isIsIon, isIsNormalComponent, isIsPlusFraction, isIsTBPfraction, isWaxFormer, reducedPressure, reducedTemperature, setAcentricFactor, setAntoineASolid, setAntoineBSolid, setAntoineCSolid, setAssociationEnergy, setAssociationEnergySAFT, setAssociationEnergySAFTVRMie, setAssociationScheme, setAssociationVolume, setAssociationVolumeSAFT, setAssociationVolumeSAFTVRMie, setCASnumber, setComponentName, setComponentNumber, setComponentType, setCostaldCharacteristicVolume, setCpA, setCpB, setCpC, setCpD, setCpE, setCriticalCompressibilityFactor, setCriticalViscosity, setCriticalVolume, setDebyeDipoleMoment, setdfugdn, setdfugdp, setdfugdt, setdfugdx, setEpsikSAFT, setEpsikSAFTVRMie, setFormulae, setFugacityCoefficient, setHeatOfFusion, setHenryCoefParameter, setIdealGasEnthalpyOfFormation, setIsHydrateFormer, setIsIon, setIsNormalComponent, setIsPlusFraction, setIsTBPfraction, setK, setLambdaASAFTVRMie, setLambdaRSAFTVRMie, setLennardJonesEnergyParameter, setLennardJonesMolecularDiameter, setLiquidConductivityParameter, setLiquidViscosityModel, setLiquidViscosityParameter, setMatiascopemanParams, setMatiascopemanParams, setMolarMass, setMolarMass, setmSAFTi, setmSAFTVRMie, setNormalBoilingPoint, setNormalLiquidDensity, setNumberOfAssociationSites, setNumberOfmoles, setNumberOfMolesInPhase, setParachorParameter, setPC, setPC, setProperties, setRacketZ, setRacketZCPA, setReferencePotential, setSchwartzentruberParams, setSigmaSAFTi, setSigmaSAFTVRMie, setSolidCheck, setSphericalCoreRadius, setStokesCationicDiameter, setSurfTensInfluenceParam, setTC, setTC, setTriplePointTemperature, setTwuCoonParams, setViscosityAssociationFactor, setViscosityFrictionK, setVolumeCorrection, setVolumeCorrectionConst, setVolumeCorrectionT, setVolumeCorrectionT_CPA, setWaxFormer, setx, setz
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
dSAFTi
protected double dSAFTiTemperature-dependent effective diameter for component i. -
componentTemperature
protected double componentTemperatureTemperature at which dSAFTi was last computed. -
dnSAFTdi
protected double dnSAFTdiDerivative of packing fraction with respect to moles of component i. -
dghsSAFTdi
protected double dghsSAFTdiDerivative of hard-sphere RDF with respect to moles of component i. -
dahsSAFTdi
protected double dahsSAFTdiDerivative of hard-sphere Helmholtz energy with respect to moles of component i. -
dmSAFTdi
protected double dmSAFTdiDerivative of mean segment number with respect to moles of component i. -
dlogghsSAFTdi
protected double dlogghsSAFTdiDerivative of log(ghs) with respect to moles of component i. -
dF_HC_SAFTdN
private double dF_HC_SAFTdN -
dF_DISP_SAFTdN
private double dF_DISP_SAFTdN -
F1dispSumTermdn
private double F1dispSumTermdn -
F1dispVolTermdn
private double F1dispVolTermdn -
F1dispI1dn
private double F1dispI1dn -
F2dispSumTermdn
private double F2dispSumTermdn -
F2dispVolTermdn
private double F2dispVolTermdn -
F2dispI2dn
private double F2dispI2dn -
F2dispZHCdn
private double F2dispZHCdn -
xsiteAssoc
private double[] xsiteAssocAssociation site fractions X_A for this component. -
nAssocSites
private int nAssocSitesNumber of association sites on this component (as used in SAFT-VR Mie).
-
-
Constructor Details
-
ComponentSAFTVRMie
Constructor for ComponentSAFTVRMie.- Parameters:
name- component namemoles- number of molesmolesInPhase- number of moles in phasecompNumber- component number
-
-
Method Details
-
getmSAFTi
public double getmSAFTi()getmSAFTi.
Returns the SAFT-VR Mie specific segment number, not the PC-SAFT value.
- Specified by:
getmSAFTiin interfaceComponentInterface- Overrides:
getmSAFTiin classComponent- Returns:
- a double
-
getSigmaSAFTi
public double getSigmaSAFTi()getSigmaSAFTi.
Returns the SAFT-VR Mie specific segment diameter, not the PC-SAFT value.
- Specified by:
getSigmaSAFTiin interfaceComponentInterface- Overrides:
getSigmaSAFTiin classComponent- Returns:
- a double
-
getEpsikSAFT
public double getEpsikSAFT()getEpsikSAFT.
Returns the SAFT-VR Mie specific energy parameter, not the PC-SAFT value.
- Specified by:
getEpsikSAFTin interfaceComponentInterface- Overrides:
getEpsikSAFTin classComponent- Returns:
- a double
-
clone
clone.
- Specified by:
clonein interfaceComponentInterface- Overrides:
clonein classComponentSrk- Returns:
- a
ComponentInterfaceobject
-
initAssociationArrays
public void initAssociationArrays(int nSites) Initializes the association site fraction arrays. Called from PhaseSAFTVRMie.initAssociationSchemes.- Parameters:
nSites- number of association sites for this component
-
getXsiteAssoc
public double[] getXsiteAssoc()Returns the association site fraction array.- Returns:
- xsiteAssoc array
-
setXsiteAssoc
public void setXsiteAssoc(int siteIndex, double value) Sets a site fraction value.- Parameters:
siteIndex- site indexvalue- new XA value
-
getNAssocSites
public int getNAssocSites()Returns the number of association sites used in SAFT-VR Mie.- Returns:
- number of sites
-
dFCPAdN
public double dFCPAdN(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) Calculates the association contribution to dF/dNi. dFCPAdN = sum_A [ln(X_A^i)] - hcpatot/2 * d(ln I)/d(ni), where I is the Dufal 2015 association integral used for the SAFT-VR Mie association strength.- Parameters:
phase- the phasenumberOfComponents- number of componentstemperature- temperature in Kpressure- pressure in Pa- Returns:
- dF_ASSOC/dNi
-
calcMiePrefactor
public static double calcMiePrefactor(double lr, double la) Calculates the Mie potential prefactor C.- Parameters:
lr- repulsive exponentla- attractive exponent- Returns:
- Mie potential prefactor
-
init
public void init(double temperature, double pressure, double totalNumberOfMoles, double beta, int initType) Initializes component temperature-dependent diameter using the Barker-Henderson integral for the Mie potential (evaluated analytically following Lafitte et al. 2013).- Specified by:
initin interfaceComponentInterface- Overrides:
initin classComponentEos- Parameters:
temperature- temperature in Kpressure- pressure in PatotalNumberOfMoles- total molesbeta- phase fractioninitType- initialization type
-
recalcSAFTDiameter
public void recalcSAFTDiameter(double temperature) Recalculates the temperature-dependent effective BH diameter without running the full Component.init(). Used by numerical derivatives that perturb temperature on cloned phases.- Parameters:
temperature- temperature in K
-
calcEffectiveDiameter
public static double calcEffectiveDiameter(double sigma, double epsk, double temperature, double lr, double la) Calculates effective BH diameter by numerical Gauss-Legendre quadrature of the Mie potential.- Parameters:
sigma- segment diameter in mepsk- energy parameter eps/k in Ktemperature- temperature in Klr- repulsive exponentla- attractive exponent- Returns:
- effective diameter in m
-
Finit
public void Finit(PhaseInterface phase, double temperature, double pressure, double totalNumberOfMoles, double beta, int numberOfComponents, int initType) Initializes SAFT-VR Mie component derivatives within the phase context.- Specified by:
Finitin interfaceComponentInterface- Overrides:
Finitin classComponentEos- Parameters:
phase- the phasetemperature- temperature in Kpressure- pressure in PatotalNumberOfMoles- total molesbeta- phase fractionnumberOfComponents- number of componentsinitType- initialization type
-
dFdN
public double dFdN(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) Returns the derivative of the reduced residual Helmholtz energy with respect to moles of component i at constant T and total volume V.For a pure component, uses the exact thermodynamic identity: dF/dN = F/n - v * dF/dV_neqsim, where v is the molar volume and dF/dV is the already-computed analytical volume derivative from the phase. This avoids numerical differentiation issues where perturbing moles at constant total volume causes the packing fraction eta to cancel.
- Specified by:
dFdNin interfaceComponentEosInterface- Overrides:
dFdNin classComponentEos- Parameters:
phase- the phasenumberOfComponents- number of componentstemperature- temperature in Kpressure- pressure in Pa- Returns:
- dF/dNi
-
dFdNdT
public double dFdNdT(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) dFdNdT.
Analytical formula: dFdNdT = dFdT/n - v * dFdTdV, derived from d/dT of dFdN = F/n - v*dFdV.
- Specified by:
dFdNdTin interfaceComponentEosInterface- Overrides:
dFdNdTin classComponentEos- Parameters:
phase- aPhaseInterfaceobjectnumberOfComponents- a inttemperature- a doublepressure- a double- Returns:
- a double
-
dFdNdV
public double dFdNdV(PhaseInterface phase, int numberOfComponents, double temperature, double pressure) dFdNdV.
Analytical formula: dFdNdV = -v * dFdVdV, derived from d/dV of dFdN = F/n - v*dFdV at constant N (where v = V/n, so dv/dV = 1/n).
- Specified by:
dFdNdVin interfaceComponentEosInterface- Overrides:
dFdNdVin classComponentEos- Parameters:
phase- aPhaseInterfaceobjectnumberOfComponents- a inttemperature- a doublepressure- a double- Returns:
- a double
-
dFdNdN
public double dFdNdN(int j, PhaseInterface phase, int numberOfComponents, double temperature, double pressure) dFdNdN.
Numerical differentiation of dFdN with respect to moles of component j. Clones the phase, perturbs N_j while keeping total volume constant, and computes the central difference of the analytical dFdN. The reinit helper only calls init + volInit (no Finit) to avoid infinite recursion.
- Specified by:
dFdNdNin interfaceComponentEosInterface- Overrides:
dFdNdNin classComponentEos- Parameters:
j- a intphase- aPhaseInterfaceobjectnumberOfComponents- a inttemperature- a doublepressure- a double- Returns:
- a double
-
reinitSAFTOnPhase
private void reinitSAFTOnPhase(PhaseSAFTVRMie phase, int numberOfComponents, double temperature, double pressure) Reinitializes SAFT quantities on a cloned phase for numerical differentiation. Updates component mole fractions based on the perturbed numberOfMolesInPhase values and recalculates SAFT variables via volInit. Does NOT call Component.init to avoid corrupting system-level moles.- Parameters:
phase- the phase to reinitializenumberOfComponents- number of componentstemperature- temperature in Kpressure- pressure in Pa
-
calcdnSAFTdi
Derivative of packing fraction with respect to moles of component i.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- dnSAFT/dNi
-
calcdghsSAFTdi
Derivative of hard-sphere RDF with respect to moles of component i.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- dghs/dNi
-
calcdahsSAFTdi
Derivative of hard-sphere Helmholtz energy with respect to moles of component i.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- dahs/dNi
-
calcdmSAFTdi
Derivative of segment number with respect to moles of component i.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- dm/dNi
-
calcdF1dispVolTermdn
Derivative of dispersion volume term with respect to moles of component i.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- dVolTerm/dNi
-
calcF1dispSumTermdn
Calculates derivative of first-order dispersion sum term w.r.t. moles.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- d(F1dispSumTerm)/dNi
-
calcF1dispI1dn
Calculates derivative of first-order dispersion integral (I1) w.r.t. moles.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- dI1/dNi
-
calcF2dispSumTermdn
Calculates derivative of second-order dispersion sum term w.r.t. moles.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- d(F2dispSumTerm)/dNi
-
calcF2dispZHCdn
Calculates derivative of second-order compression factor correction w.r.t. moles.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- d(F2dispZHC)/dNi
-
dF_HC_SAFTdN
Hard-chain contribution to dF/dNi. Computes all intermediate derivatives from the phase to work correctly on cloned phases (no reliance on cached component fields).- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- dF_HC/dNi
-
dF_DISP_SAFTdN
Dispersion contribution to dF/dNi. Uses the pair-summed quantities from volInit. Computes deta/dn_i inline to work on cloned phases.- Parameters:
phase- the phasenc- number of componentstemp- temperaturepres- pressure- Returns:
- dF_DISP/dNi
-
getdSAFTi
public double getdSAFTi()Gets the temperature-dependent effective segment diameter.- Returns:
- effective diameter in m
-
getDnSAFTdi
public double getDnSAFTdi()Gets the packing fraction derivative w.r.t. moles.- Returns:
- dnSAFT/dNi
-
getDmSAFTdi
public double getDmSAFTdi()Gets the mean segment number derivative w.r.t. moles.- Returns:
- dm/dNi
-
getDdSAFTidT
public double getDdSAFTidT()Gets the temperature derivative of the BH effective diameter for this component. Computed by central finite difference of the Gauss-Legendre BH quadrature.- Returns:
- dd_i/dT in m/K
-
getTemperature
private double getTemperature()Gets the temperature stored for this component (for derivative calculations).- Returns:
- temperature in K
-