Class ComponentCoutinhoWax
- All Implemented Interfaces:
Serializable, Cloneable, ComponentEosInterface, ComponentInterface, ThermodynamicConstantsInterface
Implements the solid-liquid equilibrium model of Coutinho (1998, 2001) for wax precipitation in petroleum fluids. The model uses the UNIQUAC local composition framework for the solid-phase activity coefficient, with predictive interaction parameters derived from the Hildebrand-Scatchard regular solution theory and the Wilson equation for the liquid phase.
The solid-liquid equilibrium condition for each component i is:
ln(x_i ^ s * gamma_i ^ s) = ln(x_i ^ l * gamma_i ^ l) - (DeltaH_f_i / (R * T)) * (1 - T / T_f_i)
+ (DeltaCp_SL_i / R) * (T_f_i / T - 1 - ln(T_f_i / T))
The solid-phase activity coefficient is calculated using the predictive UNIQUAC equation with combinatorial and residual contributions. The UNIQUAC interaction parameters lambda_ij for the solid phase are estimated from the sublimation enthalpies of pure components.
References:
- Coutinho, J.A.P., "Predictive UNIQUAC: A New Model for the Description of Multiphase Solid-Liquid Equilibria in Complex Hydrocarbon Mixtures," Ind. Eng. Chem. Res., 37, 4870-4875, 1998.
- Coutinho, J.A.P. and Daridon, J.-L., "Low-Pressure Modeling of Wax Formation in Crude Oils," Energy & Fuels, 15, 1454-1460, 2001.
- Coutinho, J.A.P. and Stenby, E.H., "Predictive Local Composition Models for Solid/Liquid Equilibrium in n-Alkane Systems," Ind. Eng. Chem. Res., 35, 918-925, 1996.
- Version:
- 1.0
- Author:
- NeqSim
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static org.apache.logging.log4j.LoggerLogger object for class.private static final longSerialization version UID.private static final doubleCoordination number for UNIQUAC model.Fields inherited from class ComponentSolid
AntoineSolidequation, CCequation, dpdt, pureCompFug, PvapSolid, PvapSoliddT, refPhase, soldens, SolidFug, solvolFields 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, 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
ConstructorsConstructorDescriptionComponentCoutinhoWax(String name, double moles, double molesInPhase, int compIndex) Constructor for ComponentCoutinhoWax. -
Method Summary
Modifier and TypeMethodDescriptiondoublecalcLambdaIJ(PhaseInterface phase1, int comp1, int comp2) Calculates the UNIQUAC binary interaction parameter lambda_ij for the solid phase.doublecalcLnGammaUNIQUAC(PhaseInterface phase1) Calculates the natural logarithm of the UNIQUAC activity coefficient for this component in the solid (wax) phase.doublecalcSublimationEnthalpy(PhaseInterface phase1, int compIndex) Calculates the sublimation enthalpy of a pure n-alkane at the given temperature.doublefugcoef(PhaseInterface phase1) Calculate, set and return fugacity coefficient.doublefugcoef2(PhaseInterface phase1) Calculate, set and return fugacity coefficient.private doubleEstimates the effective carbon number for a component.Methods inherited from class ComponentSolid
fugcoef, getMolarVolumeSolid, getVolumeCorrection2, setSolidRefFluidPhaseMethods inherited from class ComponentSrk
calca, calcb, clone, getdQpuredT, getdQpuredTdT, getQpure, getSurfaceTenisionInfluenceParameter, getVolumeCorrectionMethods inherited from class ComponentEos
alpha, aT, dFdN, dFdNdN, dFdNdT, dFdNdV, diffalphaT, diffaT, diffdiffalphaT, diffdiffaT, equals, Finit, 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, init, 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, getEpsikSAFT, 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, getmSAFTi, 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, getSigmaSAFTi, 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, getEpsikSAFT, 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, getmSAFTi, 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, getSigmaSAFTi, 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:
-
logger
static org.apache.logging.log4j.Logger loggerLogger object for class. -
Z_COORD
private static final double Z_COORDCoordination number for UNIQUAC model. Standard value is 10 as recommended by Abrams and Prausnitz (1975).- See Also:
-
-
Constructor Details
-
ComponentCoutinhoWax
Constructor for ComponentCoutinhoWax.- Parameters:
name- Name of component.moles- Total number of moles of component.molesInPhase- Number of moles in phase.compIndex- Index number of component in phase object component array.
-
-
Method Details
-
fugcoef
Calculate, set and return fugacity coefficient.
Uses Claperyons equation to calculate the solid fugacity
- Specified by:
fugcoefin interfaceComponentInterface- Overrides:
fugcoefin classComponentSolid- Parameters:
phase1- aPhaseInterfaceobject to get fugacity coefficient of.- Returns:
- Fugacity coefficient
-
fugcoef2
Calculate, set and return fugacity coefficient.
Calculates the solid fugacity coefficient using the Coutinho predictive UNIQUAC model. The solid-phase fugacity is computed from the liquid reference fugacity, heat of fusion, heat capacity difference, and the UNIQUAC solid-phase activity coefficient.
- Overrides:
fugcoef2in classComponentSolid- Parameters:
phase1- aPhaseInterfaceobject to get fugacity coefficient of.- Returns:
- Fugacity coefficient
-
calcLnGammaUNIQUAC
Calculates the natural logarithm of the UNIQUAC activity coefficient for this component in the solid (wax) phase.The UNIQUAC model splits the activity coefficient into a combinatorial (entropic) term and a residual (enthalpic) term:
ln(gamma_i) = ln(gamma_i ^ comb) + ln(gamma_i ^ res)
The combinatorial term accounts for differences in molecular size and shape, while the residual term accounts for energetic interactions between unlike molecules in the solid solution.
- Parameters:
phase1- The phase for which to calculate the activity coefficient.- Returns:
- The natural logarithm of the UNIQUAC activity coefficient.
-
calcLambdaIJ
Calculates the UNIQUAC binary interaction parameter lambda_ij for the solid phase.Following Coutinho (1998), the interaction parameters are estimated from the sublimation enthalpies using the geometric mean combining rule. For the solid phase, the interaction energy between molecules i and j is related to the geometric mean of their sublimation enthalpies:
lambda_ij = lambda_ji = -(2 / Z) * sqrt((DH_sub_i - RT) * (DH_sub_j - RT)) + (1 - alpha_ij) * (1 / Z) * ((DH_sub_i - RT) + (DH_sub_j - RT))where alpha_ij is a non-randomness correction parameter. For equal chain molecules, lambda_ii = -(2/Z) * (DH_sub_i - RT). The deviation from the geometric mean rule is captured by the excess parameter alpha_ij which is zero for same-size molecules and increases with size difference.
- Parameters:
phase1- Current phasecomp1- Index of component 1comp2- Index of component 2- Returns:
- The UNIQUAC interaction parameter lambda_ij [J/mol]
-
calcSublimationEnthalpy
Calculates the sublimation enthalpy of a pure n-alkane at the given temperature.DH_sub = DH_vap(T) + DH_fus + DH_trans
where DH_vap is the enthalpy of vaporization, DH_fus is the enthalpy of fusion, and DH_trans is the solid-solid transition enthalpy (relevant for odd-numbered n-alkanes).
- Parameters:
phase1- Current phasecompIndex- Component index- Returns:
- Sublimation enthalpy [J/mol]
-
getCarbonNumber
Estimates the effective carbon number for a component.Uses the molecular weight to estimate carbon number, assuming the component is approximately an n-alkane (CnH2n+2): MW = 14.027 * n + 2.016.
- Parameters:
comp- Component interface- Returns:
- Estimated carbon number
-