Skip to content

Chao-Seader

Chao-Seader correlation for hydrocarbon mixtures with hydrogen and light gases: liquid fugacity from a pure-component correlation and a regular-solution activity coefficient, vapor from the Redlich-Kwong equation of state, enthalpy from Lee-Kesler.

DWSIM.Thermodynamics.PropertyPackages.ChaoSeaderPropertyPackage
Assembly DWSIM.Thermodynamics.dll · Object ← PropertyPackage ← ChaoSeaderPropertyPackage
Name in the flowsheet Chao-Seader · FluentAPI PropertyPackages.ChaoSeader

Scope

Chao-Seader (CS) is a semi-empirical correlation for hydrocarbon mixtures with hydrogen and light gases: refinery and gas-plant streams, hydrotreater and reformer separators, crude and naphtha fractionation. The guide gives its range as heavy hydrocarbon systems below 10 342 kPa (1500 psia) and between -18 and 260 °C. The DWSIM property package selection guide lists it, with Grayson-Streed and Lee-Kesler-Plöcker, for systems with a high hydrogen content.

The K-value of each compound is φiL / φiV. The liquid fugacity coefficient is the product of two terms:

  • a pure-component term νi, log νi = log νi(0) + ωi log νi(1), where log ν(0) is a polynomial in the reduced temperature with pressure terms (with coefficient sets of its own for hydrogen and methane) and ωi is the Chao-Seader acentric factor;
  • a regular-solution activity coefficient, ln γi = Vi (δi - δ̄)2 / RT, with the liquid molar volume Vi, the solubility parameter δi, and δ̄ their volume-fraction average over the liquid.

The vapor fugacity coefficient comes from the Redlich-Kwong equation of state. These correlations give only the phase equilibrium: enthalpy, entropy and heat capacities of both phases are Lee-Kesler departure functions, the vapor density comes from the Lee-Kesler compressibility factor, and the liquid density from the experimental data or the Rackett and COSTALD correlations.

The package has no binary interaction parameters. Each compound carries three Chao-Seader parameters: the modified acentric factor, the solubility parameter and the liquid molar volume (the compound creator and the petroleum characterization tools fill them). Without a modified acentric factor the ordinary acentric factor is used; a compound without a solubility parameter is treated as an ideal liquid component (activity coefficient 1) and is left out of the volume-fraction averages.

DWSIM supplies analytical temperature derivatives of the fugacity coefficients of this package for the flash and the column solvers; the composition derivative falls back to finite differences.

Limitations

  • The correlation was built for hydrocarbons with hydrogen and light gases; water and polar compounds need another package.
  • Keep to its range (below 10 342 kPa, -18 to 260 °C). For heavy hydrocarbon systems with a high hydrogen content the guide recommends Grayson-Streed.

Example

This code runs on every build of this site, and the output below is what it printed.

feed = {"Hydrogen": 60.0, "Methane": 8.0, "Ethane": 4.0, "Propane": 3.0,      # mol/s
        "N-butane": 3.0, "N-pentane": 4.0, "N-hexane": 8.0, "N-heptane": 10.0}
fs = (Flowsheet.Create("ChaoSeaderExample")
      .WithCompounds(*feed)
      .WithPropertyPackage(PropertyPackages.ChaoSeader))

effluent = fs.AddMaterialStream("Separator feed").At(Q.Celsius(40.0), Q.Bar(25.0))
for name, flow in feed.items():
    effluent.SetCompoundMolarFlow(name, flow)

fs.Solve()

s = effluent.Object
vapor, liquid = s.Phases[2], s.Phases[3]
K = lambda c: vapor.Compounds[c].MoleFraction / liquid.Compounds[c].MoleFraction
print(f"Vapor fraction           = {vapor.Properties.molarfraction:.4f}")
print(f"Hydrogen in the vapor    = {vapor.Compounds['Hydrogen'].MoleFraction:.4f} (mole fraction)")
print(f"Hydrogen in the liquid   = {liquid.Compounds['Hydrogen'].MoleFraction:.4f} (mole fraction)")
print(f"K-values H2 / CH4 / C7   = {K('Hydrogen'):.2f} / {K('Methane'):.2f} / {K('N-heptane'):.4f}")
print(f"Liquid / vapor density   = {liquid.Properties.density:.1f} / {vapor.Properties.density:.2f} kg/m3")

Output

Vapor fraction           = 0.7480
Hydrogen in the vapor    = 0.7966 (mole fraction)
Hydrogen in the liquid   = 0.0165 (mole fraction)
K-values H2 / CH4 / C7   = 48.15 / 7.39 / 0.0082
Liquid / vapor density   = 633.2 / 7.60 kg/m3

DWSIM 10.2.11.0, generated 2026-10-08.

Property methods

How the package calculates each property, as it reports it in PropertyMethodsInfo (the property package editor shows the same list).

Property Method
Vapor fugacity Redlich-Kwong EOS
Liquid fugacity Chao-Seader EOS
Vapor enthalpy, entropy, Cp/Cv Lee-Kesler
Liquid enthalpy, entropy, Cp/Cv Lee-Kesler
Vapor density Lee-Kesler
Liquid density Experimental / Rackett / COSTALD
Vapor viscosity Experimental / Lucas / Jossi-Stiel-Thodos
Liquid viscosity Experimental / Letsou-Stiel
Vapor thermal conductivity Experimental / Ely-Hanley
Liquid thermal conductivity Experimental / Latini
Surface tension Experimental / Brock-Bird
Solid density Experimental Data / User-Defined
Solid enthalpy, entropy, Cp/Cv Experimental Solid Cp / From Liquid Phase Enthalpy + Enthalpy of Fusion

Default flash algorithm: Universal.

Configuration saved with the flowsheet

The package writes its settings to the simulation file (SaveData) and reads them back on load (LoadData). The elements below are the ones this package adds to those of every property package, as written for the example.

This package adds no elements of its own.

Settings common to every property package, as saved for the example
Element Value
Type 63 characters
ComponentName Chao-Seader
ComponentDescription
Tag Chao-Seader
UseHenryConstants true
AutoEstimateMissingNRTLUNIQUACParameters true
UseImmiscibleListForLiquid2InitialEstimates true
SingleCompoundCheckThreshold 0.99999
OverrideKvalFugCoeff false
OverrideEnthalpyCalculation false
OverrideEntropyCalculation false
LiquidDensityCalculationMode_Subcritical Rackett_and_ExpData
LiquidDensityCalculationMode_Supercritical Rackett_and_ExpData
LiquidDensity_CorrectExpDataForPressure true
LiquidDensity_UsePenelouxVolumeTranslation true
LiquidViscosityCalculationMode_Subcritical ExpData
LiquidViscosityCalculationMode_Supercritical Letsou_Stiel
LiquidViscosity_CorrectExpDataForPressure true
LiquidViscosity_MixingRule MoleAverage
VaporPhaseFugacityCalculationMode Ideal
SolidPhaseFugacityCalculationMethod FromLiquidFugacity
SolidPhaseFugacity_UseIdealLiquidPhaseFugacity false
SolidPhaseEnthalpy_UsesCp false
EnthalpyEntropyCpCvCalculationMode LeeKesler
LiquidEnthalpyEntropyCpCvCalculationMode_EOS EOS
LiquidFugacity_UsePoyntingCorrectionFactor true
ActivityCoefficientModels_IgnoreMissingInteractionParameters false
IgnoreVaporFractionLimit false
IgnoreSalinityLimit false
CalculateAdditionalMaterialStreamProperties true
FlashCalculationApproach NestedLoops
DisplayMissingCompoundPropertiesWarning false
ForcedSolids []
PropertyOverrides {}
FlashSettings 36 Setting entries

Learn more

API members

Public members declared by this class. Inherited members are documented on the base classes.

Constructors

ChaoSeaderPropertyPackage()
public ChaoSeaderPropertyPackage()
Public Sub New()

ChaoSeaderPropertyPackage(bool)
Parameter Type Description
comode Boolean
public ChaoSeaderPropertyPackage(bool comode)
Public Sub New(comode As Boolean)

Properties

ImplementsAnalyticalDerivatives
public override bool ImplementsAnalyticalDerivatives { get; }
Public Overrides ReadOnly Property ImplementsAnalyticalDerivatives As Boolean

MobileCompatible
public override bool MobileCompatible { get; }
Public Overrides ReadOnly Property MobileCompatible As Boolean

Methods

AUX_VAPDENS(double, double)
Parameter Type Description
T Double
P Double
public override double AUX_VAPDENS(double T, double P)
Public Overrides Function AUX_VAPDENS(T As Double, P As Double) As Double

AUX_Z(double[], double, double, PhaseName)
Parameter Type Description
Vx Double[]
T Double
P Double
state PhaseName
public override double AUX_Z(double[] Vx, double T, double P, PhaseName state)
Public Overrides Function AUX_Z(Vx As Double(), T As Double, P As Double, state As PhaseName) As Double

ConfigParameters()
public override void ConfigParameters()
Public Overrides Sub ConfigParameters()

dfidRbb_H(object, object, object, object, object, object, object, object)
Parameter Type Description
Rbb Object
Kb0 Object
Vz Object
Vu Object
sum_Hvi0 Object
DHv Object
DHl Object
HT Object
public double dfidRbb_H(object Rbb, object Kb0, object Vz, object Vu, object sum_Hvi0, object DHv, object DHl, object HT)
Public Function dfidRbb_H(Rbb As Object, Kb0 As Object, Vz As Object, Vu As Object, sum_Hvi0 As Object, DHv As Object, DHl As Object, HT As Object) As Double

dfidRbb_S(object, object, object, object, object, object, object, object)
Parameter Type Description
Rbb Object
Kb0 Object
Vz Object
Vu Object
sum_Hvi0 Object
DHv Object
DHl Object
ST Object
public double dfidRbb_S(object Rbb, object Kb0, object Vz, object Vu, object sum_Hvi0, object DHv, object DHl, object ST)
Public Function dfidRbb_S(Rbb As Object, Kb0 As Object, Vz As Object, Vu As Object, sum_Hvi0 As Object, DHv As Object, DHl As Object, ST As Object) As Double

DW_CalcCompPartialVolume(Phase, double, double)
Parameter Type Description
phase Phase
T Double
P Double
public override void DW_CalcCompPartialVolume(Phase phase, double T, double P)
Public Overrides Sub DW_CalcCompPartialVolume(phase As Phase, T As Double, P As Double)

DW_CalcCp_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcCp_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcCp_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcCv_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcCv_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcCv_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcdKdT(double[], double[], double, double, string)
Parameter Type Description
Vx Double[]
Vy Double[]
T Double
P Double
type String
public override double[] DW_CalcdKdT(double[] Vx, double[] Vy, double T, double P, string type = "LV")
Public Overrides Function DW_CalcdKdT(Vx As Double(), Vy As Double(), T As Double, P As Double, type As String = "LV") As Double()

DW_CalcdLnFugCoeffdT(double[], double, double, State): Temperature derivative of the natural logarithm of the fugacity coefficients, d(ln phi_i)/dT, for the given phase.

Temperature derivative of the natural logarithm of the fugacity coefficients, d(ln phi_i)/dT, for the given phase. Base implementation is a forward finite difference; EOS/activity packages override this with a closed-form expression. Distinct from DW_CalcdFugCoeffdT, which returns d(phi)/dT (not the logarithm).

Parameter Type Description
Vx Double[]
T Double
P Double
st State
public override double[] DW_CalcdLnFugCoeffdT(double[] Vx, double T, double P, State st)
Public Overrides Function DW_CalcdLnFugCoeffdT(Vx As Double(), T As Double, P As Double, st As State) As Double()

DW_CalcEnergyFlowMistura_ISOL(double, double)
Parameter Type Description
T Double
P Double
public override double DW_CalcEnergyFlowMistura_ISOL(double T, double P)
Public Overrides Function DW_CalcEnergyFlowMistura_ISOL(T As Double, P As Double) As Double

DW_CalcEnthalpy(Array, double, double, State): Calculates the enthalpy of a mixture.

Calculates the enthalpy of a mixture.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature (K)
P Double Pressure (Pa)
st State State enum indicating the state of the mixture (liquid or vapor).
public override double DW_CalcEnthalpy(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcEnthalpy(Vx As Array, T As Double, P As Double, st As State) As Double

DW_CalcEnthalpyDeparture(Array, double, double, State): Calculates the enthalpy departure of a mixture.

Calculates the enthalpy departure of a mixture.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature (K)
P Double Pressure (Pa)
st State State enum indicating the state of the mixture (liquid or vapor).
public override double DW_CalcEnthalpyDeparture(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcEnthalpyDeparture(Vx As Array, T As Double, P As Double, st As State) As Double

DW_CalcEntropy(Array, double, double, State): Calculates the entropy of a mixture.

Calculates the entropy of a mixture.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature (K)
P Double Pressure (Pa)
st State State enum indicating the state of the mixture (liquid or vapor).
public override double DW_CalcEntropy(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcEntropy(Vx As Array, T As Double, P As Double, st As State) As Double

DW_CalcEntropyDeparture(Array, double, double, State): Calculates the entropy departure of a mixture.

Calculates the entropy departure of a mixture.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature (K)
P Double Pressure (Pa)
st State State enum indicating the state of the mixture (liquid or vapor).
public override double DW_CalcEntropyDeparture(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcEntropyDeparture(Vx As Array, T As Double, P As Double, st As State) As Double

DW_CalcFugCoeff(Array, double, double, State): Calculates fugacity coefficients for the specified composition at the specified conditions.

Calculates fugacity coefficients for the specified composition at the specified conditions.

Parameter Type Description
Vx Array Vector of doubles containing the molar composition of the mixture.
T Double Temperature in K
P Double Pressure in Pa
st State Mixture state (Liquid or Vapor)
public override double[] DW_CalcFugCoeff(Array Vx, double T, double P, State st)
Public Overrides Function DW_CalcFugCoeff(Vx As Array, T As Double, P As Double, st As State) As Double()

DW_CalcK_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcK_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcK_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcMassaEspecifica_ISOL(Phase, double, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
Pvp Double
public override double DW_CalcMassaEspecifica_ISOL(Phase Phase1, double T, double P, double Pvp = 0)
Public Overrides Function DW_CalcMassaEspecifica_ISOL(Phase1 As Phase, T As Double, P As Double, Pvp As Double = 0) As Double

DW_CalcMM_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcMM_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcMM_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcOverallProps()
public override void DW_CalcOverallProps()
Public Overrides Sub DW_CalcOverallProps()

DW_CalcPhaseProps(Phase)
Parameter Type Description
Phase Phase
public override void DW_CalcPhaseProps(Phase Phase)
Public Overrides Sub DW_CalcPhaseProps(Phase As Phase)

DW_CalcProp(string, Phase): Provides a wrapper function for CAPE-OPEN CalcProp/CalcSingleProp functions.

Provides a wrapper function for CAPE-OPEN CalcProp/CalcSingleProp functions.

Parameter Type Description
property String The property to be calculated.
phase Phase The phase where the property must be calculated for.
public override void DW_CalcProp(string property, Phase phase)
Public Overrides Sub DW_CalcProp([property] As String, phase As Phase)

DW_CalcPVAP_ISOL(double)
Parameter Type Description
T Double
public override double DW_CalcPVAP_ISOL(double T)
Public Overrides Function DW_CalcPVAP_ISOL(T As Double) As Double

DW_CalcTensaoSuperficial_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcTensaoSuperficial_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcTensaoSuperficial_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

DW_CalcViscosidadeDinamica_ISOL(Phase, double, double)
Parameter Type Description
Phase1 Phase
T Double
P Double
public override double DW_CalcViscosidadeDinamica_ISOL(Phase Phase1, double T, double P)
Public Overrides Function DW_CalcViscosidadeDinamica_ISOL(Phase1 As Phase, T As Double, P As Double) As Double

IntegralSimpsonCp(double, double, double, string)
Parameter Type Description
a Double
b Double
Epsilon Double
subst String
public double IntegralSimpsonCp(double a, double b, double Epsilon, string subst)
Public Function IntegralSimpsonCp(a As Double, b As Double, Epsilon As Double, subst As String) As Double

IntegralSimpsonCp_T(double, double, double, string)
Parameter Type Description
a Double
b Double
Epsilon Double
subst String
public double IntegralSimpsonCp_T(double a, double b, double Epsilon, string subst)
Public Function IntegralSimpsonCp_T(a As Double, b As Double, Epsilon As Double, subst As String) As Double

RET_KIJ(string, string)
Parameter Type Description
id1 String
id2 String
public double RET_KIJ(string id1, string id2)
Public Function RET_KIJ(id1 As String, id2 As String) As Double

RET_VCSAc()
public double[] RET_VCSAc()
Public Function RET_VCSAc() As Double()

RET_VCSS()
public double[] RET_VCSS()
Public Function RET_VCSS() As Double()

RET_VKij()
public override double[,] RET_VKij()
Public Overrides Function RET_VKij() As Double(,)

RET_VVL()
public double[] RET_VVL()
Public Function RET_VVL() As Double()

SupportsComponent(ICompoundConstantProperties)
Parameter Type Description
comp ICompoundConstantProperties
public override bool SupportsComponent(ICompoundConstantProperties comp)
Public Overrides Function SupportsComponent(comp As ICompoundConstantProperties) As Boolean

Fields

ClassId
public const string ClassId = "8079D263-219C-4df6-BB7D-D034DEE9C464"
Public Const ClassId As String = "8079D263-219C-4df6-BB7D-D034DEE9C464"

m_cs
public CS m_cs
Public m_cs As CS

m_lk
public LeeKesler m_lk
Public m_lk As LeeKesler

m_pr
public PengRobinson m_pr
Public m_pr As PengRobinson

MAT_KIJ
public object[,] MAT_KIJ
Public MAT_KIJ As Object(,)