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(bool)
| Parameter | Type | Description |
|---|---|---|
comode |
Boolean |
Properties¶
ImplementsAnalyticalDerivatives
MobileCompatible
Methods¶
AUX_VAPDENS(double, double)
| Parameter | Type | Description |
|---|---|---|
T |
Double |
|
P |
Double |
AUX_Z(double[], double, double, PhaseName)
| Parameter | Type | Description |
|---|---|---|
Vx |
Double[] |
|
T |
Double |
|
P |
Double |
|
state |
PhaseName |
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 |
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 |
DW_CalcCompPartialVolume(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
phase |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcCp_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcCv_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcdKdT(double[], double[], double, double, string)
| Parameter | Type | Description |
|---|---|---|
Vx |
Double[] |
|
Vy |
Double[] |
|
T |
Double |
|
P |
Double |
|
type |
String |
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 |
DW_CalcEnergyFlowMistura_ISOL(double, double)
| Parameter | Type | Description |
|---|---|---|
T |
Double |
|
P |
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). |
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). |
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). |
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). |
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) |
DW_CalcK_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcMassaEspecifica_ISOL(Phase, double, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
|
Pvp |
Double |
DW_CalcMM_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcOverallProps()
DW_CalcPhaseProps(Phase)
| Parameter | Type | Description |
|---|---|---|
Phase |
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. |
DW_CalcPVAP_ISOL(double)
| Parameter | Type | Description |
|---|---|---|
T |
Double |
DW_CalcTensaoSuperficial_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
DW_CalcViscosidadeDinamica_ISOL(Phase, double, double)
| Parameter | Type | Description |
|---|---|---|
Phase1 |
Phase |
|
T |
Double |
|
P |
Double |
IntegralSimpsonCp(double, double, double, string)
| Parameter | Type | Description |
|---|---|---|
a |
Double |
|
b |
Double |
|
Epsilon |
Double |
|
subst |
String |
IntegralSimpsonCp_T(double, double, double, string)
| Parameter | Type | Description |
|---|---|---|
a |
Double |
|
b |
Double |
|
Epsilon |
Double |
|
subst |
String |
RET_KIJ(string, string)
| Parameter | Type | Description |
|---|---|---|
id1 |
String |
|
id2 |
String |
SupportsComponent(ICompoundConstantProperties)
| Parameter | Type | Description |
|---|---|---|
comp |
ICompoundConstantProperties |
Fields¶
ClassId