Soave-Redlich-Kwong (SRK)¶
Soave-Redlich-Kwong cubic equation of state (1972) with the van der Waals one-fluid mixing rules and binary interaction parameters kij from the databank. For gases, hydrocarbons and gas processing.
DWSIM.Thermodynamics.PropertyPackages.SRKPropertyPackage
Assembly DWSIM.Thermodynamics.dll · Object ← PropertyPackage ← SRKPropertyPackage
Name in the flowsheet Soave-Redlich-Kwong (SRK) · FluentAPI PropertyPackages.SoaveRedlichKwong
Scope¶
A cubic equation of state for gases, hydrocarbons and gas processing: natural gas, LPG, refinery gases, compression, and vapor-liquid equilibrium of nonpolar mixtures from low to high pressure. Like Peng-Robinson, it gives the fugacity coefficients of both phases from one equation.
The Soave-Redlich-Kwong (1972) equation is P = RT/(V - b) - a(T)/[V(V + b)], with b = 0.08664 RTc/Pc and a = 0.42747 (R2Tc2/Pc) α(T), α = [1 + m(1 - Tr1/2)]2, m = 0.48 + 1.574ω - 0.176ω2. Mixtures use the van der Waals one-fluid rules with binary interaction parameters kij. The liquid takes the smallest root of the cubic in Z and the vapor the largest. Enthalpy and entropy are the ideal-gas values plus the departure functions of the equation.
Parameters. Tc, Pc and ω come from the compound database; the
kij come from an SRK databank shipped with DWSIM (a separate table from the Peng-Robinson one).
A pair without a value has kij = 0. The values can be edited in the package editor, or set from
code with ConfigureSRK(c => c.WithKij(...)), and are saved with the flowsheet.
Liquid density. By default from the experimental data of the compound or the Rackett equation; the equation-of-state density with the Peneloux volume translation is an option of the package settings.
Derivatives. Analytical temperature and composition derivatives of the fugacity coefficients are available to the vapor-fraction flashes and the rigorous column solvers.
Limitations¶
- Liquid volumes from the equation itself are poor, as for every two-parameter cubic; keep the default liquid density method unless the volume translation is wanted.
- Polar and associating liquids (water, alcohols, glycols) are outside the model; see NRTL, UNIQUAC or the CPA models of ThermoPack.
- A missing kij is zero; propane with n-butane, the pair of the example, has kij = 0 in the saved configuration below. Check the pairs with CO2, H2S, N2 and H2.
- A stream with a single compound (mole fraction above 0.99999) is flashed on the vapor pressure curve of the compound database.
Example¶
This code runs on every build of this site, and the output below is what it printed.
fs = (Flowsheet.Create("SRKExample")
.WithCompounds("Propane", "N-butane")
.WithPropertyPackage(PropertyPackages.SoaveRedlichKwong))
# temperature and vapor fraction given: the flash finds the pressure
bubble = (fs.AddMaterialStream("Bubble point")
.WithTemperature(Q.Celsius(25.0)).WithVaporFraction(0.0)
.SetCompoundMolarFlow("Propane", 0.6)
.SetCompoundMolarFlow("N-butane", 0.4))
dew = (fs.AddMaterialStream("Dew point")
.WithTemperature(Q.Celsius(25.0)).WithVaporFraction(1.0)
.SetCompoundMolarFlow("Propane", 0.6)
.SetCompoundMolarFlow("N-butane", 0.4))
fs.Solve()
b, d = bubble.Object, dew.Object
print(f"Bubble pressure = {b.GetPressure() / 1e5:.3f} bar")
print(f"Propane in vapor = {b.Phases[2].Compounds['Propane'].MoleFraction:.4f} (first bubble, mole fraction)")
print(f"Dew pressure = {d.GetPressure() / 1e5:.3f} bar")
print(f"Vapor density = {d.Phases[2].Properties.density:.2f} kg/m3 (Z = {d.Phases[2].Properties.compressibilityFactor:.4f})")
print(f"Liquid density = {b.Phases[3].Properties.density:.1f} kg/m3")
Output
Bubble pressure = 6.557 bar
Propane in vapor = 0.8293 (first bubble, mole fraction)
Dew pressure = 4.506 bar
Vapor density = 9.98 kg/m3 (Z = 0.9051)
Liquid density = 527.8 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 | Soave-Redlich-Kwong EOS |
| Liquid fugacity | Soave-Redlich-Kwong EOS |
| Vapor enthalpy, entropy, Cp/Cv | Soave-Redlich-Kwong EOS |
| Liquid enthalpy, entropy, Cp/Cv | Soave-Redlich-Kwong EOS |
| Vapor density | Soave-Redlich-Kwong EOS |
| Liquid density | Soave-Redlich-Kwong EOS (+VT) / 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.
| Element | Content in the example | What it holds |
|---|---|---|
InteractionParameters |
1 InteractionParameter entry (Compound1, Compound2, Value) |
kij (Value) of the pairs of the flowsheet compounds, from the databank or entered in the package editor |
First InteractionParameter of InteractionParameters in the example
Settings common to every property package, as saved for the example
| Element | Value |
|---|---|
Type |
DWSIM.Thermodynamics.PropertyPackages.SRKPropertyPackage |
ComponentName |
Soave-Redlich-Kwong (SRK) |
ComponentDescription |
|
Tag |
Soave-Redlich-Kwong (SRK) |
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¶
SRKPropertyPackage(bool)
| Parameter | Type | Description |
|---|---|---|
comode |
Boolean |
Properties¶
DisplayDescription
DisplayName
ImplementsAnalyticalDerivatives
MobileCompatible
Methods¶
AUX_CM(object)
| Parameter | Type | Description |
|---|---|---|
Vx |
Object |
AUX_CM(Phase)
| Parameter | Type | Description |
|---|---|---|
Phase |
Phase |
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 |
CalcIsothermalCompressibility(IPhase)
| Parameter | Type | Description |
|---|---|---|
p |
IPhase |
CalcJouleThomsonCoefficient(IPhase)
| Parameter | Type | Description |
|---|---|---|
p |
IPhase |
DisplayEditingForm()
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_CalcdKdComposition(double[], double[], double, double, State, string): Composition (mole-number) derivative of the equilibrium K-values, d(K_i)/dn_j, with respect to the mole numbers of...
Composition (mole-number) derivative of the equilibrium K-values, d(K_i)/dn_j, with respect to the mole numbers of the phase indicated by withRespectTo (State.Liquid perturbs Vx, State.Vapor perturbs Vy), on a total-moles = 1 basis. Returns an (nc x nc) matrix. Base implementation is a finite difference; EOS/activity packages override it using the analytical d(ln phi)/dn (or d(ln gamma)/dx) building blocks.
| Parameter | Type | Description |
|---|---|---|
Vx |
Double[] |
|
Vy |
Double[] |
|
T |
Double |
|
P |
Double |
|
withRespectTo |
State |
|
type |
String |
DW_CalcdKdT(double[], double[], double, double, string)
| Parameter | Type | Description |
|---|---|---|
Vx |
Double[] |
|
Vy |
Double[] |
|
T |
Double |
|
P |
Double |
|
type |
String |
DW_CalcdLnFugCoeffdn(double[], double, double, State): Composition (mole-number) derivative of the natural logarithm of the fugacity coefficients, d(ln phi_i)/dn_j, for...
Composition (mole-number) derivative of the natural logarithm of the fugacity coefficients, d(ln phi_i)/dn_j, for the given phase, evaluated on a total-moles = 1 basis. Returns an (nc x nc) matrix. Base implementation is a finite difference in mole numbers; EOS/activity packages override this with the closed-form partial-molar expression.
| Parameter | Type | Description |
|---|---|---|
Vx |
Double[] |
|
T |
Double |
|
P |
Double |
|
st |
State |
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 |
ReturnCriticalPoints()
RunPostMaterialStreamSetRoutine()
SupportsComponent(ICompoundConstantProperties)
| Parameter | Type | Description |
|---|---|---|
comp |
ICompoundConstantProperties |
Fields¶
ClassId