Alkylation Unit¶
DWSIM Plus
Available with a DWSIM Plus (Patreon) subscription.
![]()
Shortcut Alkylation unit. Two inlets (iso-butane, olefin feed) → two outlets (alkylate, LPG purge). Mass balance is olefin-limited: reacted olefin × yield factor = alkylate mass; everything else goes to purge. Exothermic heat is rejected on the energy connector. Outlets are emitted as moles of a single surrogate compound each (Isooctane / n-Butane by default).
DWSIM.UnitOperations.Refining.Alkylation.AlkylationUnitOperation
Assembly DWSIM.UnitOperations.Refining.dll · Object ← BaseClass ← UnitOpBaseClass ← AlkylationUnitOperation
At a glance¶

| Port | Index | Connected in the example |
|---|---|---|
| Inlet, material | 0 |
iC4 |
| Inlet, material | 1 |
Butenes |
| Outlet, material | 0 |
Alkylate |
| Outlet, material | 1 |
LPG-purge |
| Outlet, energy | 2 |
Refrigeration |
Example¶
This code runs on every build of this site, and the output below is what it printed.
fs = (Flowsheet.Create("AlkylationExample")
.WithCompounds("Isobutane", "1-Butene", "N-butane", "2,2,4-trimethylpentane")
.WithPropertyPackage(PropertyPackages.PengRobinson))
# Isobutane (with recycle) and a butene feed, both liquid at 10 bar.
# The unit treats the whole olefin inlet as olefin, so feed it olefin only.
isobutane = (fs.AddMaterialStream("iC4").At(Q.Celsius(10.0), Q.Bar(10.0))
.SetCompoundMassFlow("Isobutane", 6.0) # kg/s
.SetCompoundMassFlow("N-butane", 0.3))
olefin = (fs.AddMaterialStream("Butenes").At(Q.Celsius(10.0), Q.Bar(10.0))
.SetCompoundMassFlow("1-Butene", 1.0))
alkylate = fs.AddMaterialStream("Alkylate")
purge = fs.AddMaterialStream("LPG-purge")
cooling = fs.AddEnergyStream("Refrigeration")
alky = (fs.AddAlkylation("ALK-1")
.WithOperatingTemperature(Q.Celsius(10.0))
.WithOperatingPressure(Q.Bar(7.0))
.WithOlefinConversion(0.98)
.WithAlkylateYieldPerKgOlefin(1.78) # kg alkylate per kg olefin reacted
.WithAlkylateRON(95.0)
.ConnectFeed(isobutane, 0).ConnectFeed(olefin, 1)
.ConnectProduct(alkylate, 0).ConnectProduct(purge, 1))
# The reaction heat leaves through outlet port 2
alky.ConnectEnergyProduct(cooling, 2)
fs.AutoLayout()
fs.Solve()
r = alky.Object.Results
print(f"Alkylate = {alkylate.MassFlowKgPerSecond:.3f} kg/s (RON {r.AlkylateRON:.0f})")
print(f"LPG purge = {purge.MassFlowKgPerSecond:.3f} kg/s")
print(f"Olefin reacted = {r.OlefinReactedMass:.3f} kg/s")
print(f"iC4/olefin ratio = {r.IsoButaneOlefinRatio:.2f} mol/mol")
print(f"Refrigeration = {cooling.EnergyFlowKW:.0f} kW")
Output
Alkylate = 1.744 kg/s (RON 95)
LPG purge = 5.556 kg/s
Olefin reacted = 0.980 kg/s
iC4/olefin ratio = 6.08 mol/mol
Refrigeration = 1078 kW
DWSIM 10.2.11.0, generated 2026-10-08.
Properties¶
IDs accepted by GetPropertyValue, SetPropertyValue, the sensitivity analysis, the optimizer, the Adjust block and dynamic events. Units are SI; pass another unit system to GetPropertyValue to get them converted.
| ID | Name | Unit (SI) | Input |
|---|---|---|---|
Operating Temperature |
K | yes | |
Operating Pressure |
Pa | yes | |
Olefin Conversion |
NF | yes | |
IsoButane/Olefin Ratio |
NF | yes | |
Alkylate Yield Per Kg Olefin |
NF | yes | |
Alkylate RON |
NF | yes | |
Total Feed Mass |
kg/s | result | |
Alkylate Mass Flow |
kg/s | result | |
Purge Mass Flow |
kg/s | result | |
Cooler Duty |
kW | result |
Learn more¶
-
User guide
-
FluentAPI
API members¶
Public members declared by this class. Inherited members are documented on the base classes.
Constructors¶
Properties¶
ComponentDescription: Gets or sets the CAPE-OPEN component description for this unit operation.
Gets or sets the CAPE-OPEN component description for this unit operation.
Config: Gets or sets the configuration of this alkylation unit: the operating temperature and pressure, olefin conversion...
Gets or sets the configuration of this alkylation unit: the operating temperature and pressure, olefin conversion, iso-butane to olefin molar ratio, alkylate yield and heat release per kg of olefin, alkylate RON, and the alkylate and purge surrogate compounds.
IsRefining: Gets a value indicating that this unit operation belongs to the refining group.
Gets a value indicating that this unit operation belongs to the refining group. Always true; the object palette uses it to list the unit under the Refinery category.
MobileCompatible: Gets a value indicating whether this unit operation is compatible with mobile interfaces.
Gets a value indicating whether this unit operation is compatible with mobile interfaces. Always false.
ObjectClass: Gets the simulation object class category (Reactors).
Gets the simulation object class category (Reactors).
Prefix: Gets the default name prefix for this unit operation ('ALK-').
Gets the default name prefix for this unit operation ("ALK-").
Methods¶
Calculate(object): Calculates the object.
Calculates the object.
| Parameter | Type | Description |
|---|---|---|
args |
Object |
CloneXML(): Creates a deep copy of this object by round-tripping through XML serialization.
Creates a deep copy of this object by round-tripping through XML serialization.
CloseEditForm(): Closes the editor of this object, if it is open.
Closes the editor of this object, if it is open.
CreateConnectors(): Creates the graphic connector definitions on the flowsheet: two inlets (iso-Butane and Olefin Feed) on the left, two...
Creates the graphic connector definitions on the flowsheet: two inlets (iso-Butane and Olefin Feed) on the left, two outlets (Alkylate and Purge) on the right, and a Cooler Duty energy outlet.
DeCalculate(): Decalculates the object.
Decalculates the object.
DisplayEditForm(): Opens the editor of this object.
Opens the editor of this object. A host that has no editor for it does nothing.
Draw(object): Draws the unit operation icon on the given SkiaSharp canvas.
Draws the unit operation icon on the given SkiaSharp canvas. Draw mode 2 uses the embedded PNG image (falling back to the vector icon if it cannot be loaded), draw mode 1 draws the vector icon as a silhouette, and other modes draw the vector icon.
| Parameter | Type | Description |
|---|---|---|
g |
Object |
The SkiaSharp canvas (SKCanvas). |
GetDisplayDescription(): Returns the description string for this unit operation type.
Returns the description string for this unit operation type.
GetDisplayName(): Returns the display name for this unit operation type.
Returns the display name for this unit operation type.
GetIconBitmapBytes(): Returns the raw bytes of the icon image for this unit operation, rendered from the vector icon at 64 x 64 pixels.
Returns the raw bytes of the icon image for this unit operation, rendered from the vector icon at 64 x 64 pixels.
GetPreferredGraphicObjectHeight(): Returns the preferred height of the flowsheet graphic object, in pixels.
Returns the preferred height of the flowsheet graphic object, in pixels.
GetPreferredGraphicObjectWidth(): Returns the preferred width of the flowsheet graphic object, in pixels.
Returns the preferred width of the flowsheet graphic object, in pixels.
GetProperties(PropertyType): Get a list of all properties of the object.
Get a list of all properties of the object.
| Parameter | Type | Description |
|---|---|---|
proptype |
PropertyType |
Type of the property. |
GetPropertyUnit(string, IUnitsOfMeasure): Gets the units of a property.
Gets the units of a property.
| Parameter | Type | Description |
|---|---|---|
prop |
String |
Property identifier. |
su |
IUnitsOfMeasure |
Units system to use. Null to use the default (SI) system. |
GetPropertyValue(string, IUnitsOfMeasure): Returns the value of a named property, converting from SI to the current unit system.
Returns the value of a named property, converting from SI to the current unit system. Falls back to extra properties if the property is not found in the base implementation.
| Parameter | Type | Description |
|---|---|---|
prop |
String |
The property identifier string. |
su |
IUnitsOfMeasure |
Optional units-of-measure system used for conversion; uses the shared SI system when Nothing. |
LoadData(List<XElement>): Restores the unit operation state from a list of XML elements previously produced by SaveData.
Restores the unit operation state from a list of XML elements previously produced by SaveData.
| Parameter | Type | Description |
|---|---|---|
data |
List<XElement> |
The list of XElement objects containing serialized state. |
PopulateEditorPanel(object): Populates the cross-platform (Avalonia) editor panel with controls: buttons that open the configuration and results...
Populates the cross-platform (Avalonia) editor panel with controls: buttons that open the configuration and results forms. Other container types are ignored.
| Parameter | Type | Description |
|---|---|---|
ctner |
Object |
The editor panel (layout container) to populate. |
ReturnInstance(string): Creates and returns a new instance for deserialization.
Creates and returns a new instance for deserialization.
| Parameter | Type | Description |
|---|---|---|
typename |
String |
The type name to instantiate (not used). |
SaveData(): Serializes the unit operation state to a list of XML elements for persistence.
Serializes the unit operation state to a list of XML elements for persistence.
SetPropertyValue(string, object, IUnitsOfMeasure): Sets the value of a property.
Sets the value of a property.
| Parameter | Type | Description |
|---|---|---|
prop |
String |
Property identifier. |
propval |
Object |
Property value to set at the specified units. |
su |
IUnitsOfMeasure |
Units system to use. Null to use the default (SI) system. |
UpdateEditForm(): Redraws the editor of this object with the current values, if it is open.
Redraws the editor of this object with the current values, if it is open.
Fields¶