Grayson-Streed¶
Grayson-Streed correlation, the extension of Chao-Seader to higher temperatures and to hydrogen-rich heavy hydrocarbon systems: 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.GraysonStreedPropertyPackage
Assembly DWSIM.Thermodynamics.dll · Object ← PropertyPackage ← GraysonStreedPropertyPackage
Name in the flowsheet Grayson-Streed · FluentAPI PropertyPackages.GraysonStreed
Scope¶
Grayson-Streed (GS) is the extension of the Chao-Seader correlation with special applicability to hydrogen. The guide recommends it for heavy hydrocarbon systems with a high hydrogen content, such as hydrotreater, hydrocracker and reformer reactor effluents and their hot and cold high-pressure separators; the property package selection guide lists it there with Chao-Seader and Lee-Kesler-Plöcker.
The structure is that of Chao-Seader. The liquid fugacity coefficient is φiL = νi γi:
- νi from log νi = log νi(0) + ωi log νi(1), a polynomial in the reduced temperature with pressure terms. Grayson and Streed refitted the coefficients of log ν(0) for the simple fluid, for hydrogen and for methane;
- γi from regular-solution theory, ln γi = Vi (δi - δ̄)2 / RT.
The vapor fugacity coefficient comes from the Redlich-Kwong equation of state. Only the phase equilibrium comes from the correlation: 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. It reads the same three parameters of each compound as Chao-Seader: the modified acentric factor (the ordinary acentric factor when absent), the solubility parameter, δ = ((ΔHv - RT) / VL)1/2, and the liquid molar volume. The petroleum characterization tools fill them for the pseudo-components of an oil.
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.
- The package has no binary parameter to fit to mixture data. When data are available, an equation of state with fitted kij such as Peng-Robinson can be tuned instead.
Example¶
This code runs on every build of this site, and the output below is what it printed.
feed = {"Hydrogen": 70.0, "Methane": 5.0, "N-hexane": 5.0, # mol/s
"N-decane": 10.0, "N-hexadecane": 10.0}
fs = (Flowsheet.Create("GraysonStreedExample")
.WithCompounds(*feed)
.WithPropertyPackage(PropertyPackages.GraysonStreed))
# the reactor effluent flashed hot (250 C) and, after the air cooler, cold (50 C)
streams = {}
for t in (250.0, 50.0):
s = fs.AddMaterialStream(f"Effluent at {t:.0f} C").At(Q.Celsius(t), Q.Bar(60.0))
for name, flow in feed.items():
s.SetCompoundMolarFlow(name, flow)
streams[t] = s
fs.Solve()
print(f"{'':26}{'250 C':>10}{'50 C':>10}")
rows = {"Vapor fraction": [], "H2 in the liquid": [], "K-value H2": [], "K-value n-C10": [],
"Liquid density, kg/m3": []}
for t in (250.0, 50.0):
s = streams[t].Object
vapor, liquid = s.Phases[2], s.Phases[3]
K = lambda c: vapor.Compounds[c].MoleFraction / liquid.Compounds[c].MoleFraction
rows["Vapor fraction"].append(vapor.Properties.molarfraction)
rows["H2 in the liquid"].append(liquid.Compounds["Hydrogen"].MoleFraction)
rows["K-value H2"].append(K("Hydrogen"))
rows["K-value n-C10"].append(K("N-decane"))
rows["Liquid density, kg/m3"].append(liquid.Properties.density)
for name, (hot, cold) in rows.items():
print(f"{name:26}{hot:10.4g}{cold:10.4g}")
Output
250 C 50 C
Vapor fraction 0.8044 0.7375
H2 in the liquid 0.08303 0.03827
K-value H2 10.24 24.45
K-value n-C10 0.1212 0.0003172
Liquid density, kg/m3 577.1 723.6
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 | Grayson-Streed 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 |
66 characters |
ComponentName |
Grayson-Streed |
ComponentDescription |
|
Tag |
Grayson-Streed |
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¶
GraysonStreedPropertyPackage(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