Skip to content

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()
public GraysonStreedPropertyPackage()
Public Sub New()

GraysonStreedPropertyPackage(bool)
Parameter Type Description
comode Boolean
public GraysonStreedPropertyPackage(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 = "5C1EEFAB-8E68-48d5-8D63-69304B47CE7F"
Public Const ClassId As String = "5C1EEFAB-8E68-48d5-8D63-69304B47CE7F"

m_cs
public GS m_cs
Public m_cs As GS

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(,)