Zeolite Adsorber¶
DWSIM Plus
Available with a DWSIM Plus (Patreon) subscription.
![]()
Zeolite Adsorber unit operation for DWSIM. Ports ───── Inlet 0 : Feed gas stream Outlet 0 : Raffinate (non/less-adsorbed product) Outlet 1 : Desorbate (adsorbed product, released on regeneration) Modes ───── Equilibrium – steady-state shortcut using working capacity PSA Cycle – 4-step Skarstrom cycle with explicit pressurisation, feed, blowdown and purge steps Isotherm models: single-site Langmuir, dual-site Langmuir, Freundlich.
DWSIM.UnitOperations.ZeoliteAdsorber.ZeoliteAdsorberUnitOperation
Assembly DWSIM.UnitOperations.ZeoliteAdsorber.dll · Object ← BaseClass ← UnitOpBaseClass ← ZeoliteAdsorberUnitOperation
At a glance¶

| Port | Index | Connected in the example |
|---|---|---|
| Inlet, material | 0 |
Biogas |
| Outlet, material | 0 |
Upgraded gas |
| Outlet, material | 1 |
Tail gas |
Example¶
This code runs on every build of this site, and the output below is what it printed.
fs = (Flowsheet.Create("ZeoliteExample")
.WithCompounds("Methane", "Carbon dioxide")
.WithPropertyPackage(PropertyPackages.PengRobinson))
biogas = (fs.AddMaterialStream("Biogas")
.At(Q.Celsius(30.0), Q.Bar(6.0))
.SetCompoundMolarFlow("Methane", 30.0) # mol/s
.SetCompoundMolarFlow("Carbon dioxide", 20.0))
product = fs.AddMaterialStream("Upgraded gas") # raffinate
tail = fs.AddMaterialStream("Tail gas") # desorbate
ads = (fs.AddZeoliteAdsorber("ADS-1")
.ConnectFeed(biogas)
.ConnectProduct(product, 0)
.ConnectProduct(tail, 1))
cfg = ads.Config
cfg.OperationMode = OperationMode.Equilibrium
cfg.RegenerationMode = RegenerationMode.PressureSwing
cfg.IsothermModel = IsothermModel.Langmuir
cfg.DesorptionPressure = 0.2e5 # Pa
cfg.CycleTime = 600.0 # s
cfg.Bed.AdsorbentMass = 2000.0 # kg
cfg.Bed.VesselDiameter = 1.4 # m
cfg.Bed.BedLength = 3.0 # m
cfg.Preset = ZeolitePreset.Zeolite13X # 13X isotherm parameters for CO2 and methane
fs.AutoLayout()
fs.Solve()
r = ads.Object.Results
co2 = next(c for c in r.ComponentResults if c.ComponentName == "Carbon dioxide")
y_co2 = co2.RaffinateMolarFlow / r.RaffinateMolarFlow
print(f"CO2 working capacity = {co2.LoadingAdsorption - co2.LoadingDesorption:.2f} mol/kg")
print(f"CO2 adsorbed = {co2.AdsorbedMolarFlow:.2f} of 20.00 mol/s")
print(f"Upgraded gas = {r.RaffinateMolarFlow:.2f} mol/s, {y_co2 * 100:.1f} mol% CO2")
print(f"Tail gas = {r.DesorbateMolarFlow:.2f} mol/s")
print(f"Bed pressure drop = {r.PressureDrop / 1000:.2f} kPa")
Output
CO2 working capacity = 4.17 mol/kg
CO2 adsorbed = 13.89 of 20.00 mol/s
Upgraded gas = 32.46 mol/s, 16.9 mol% CO2
Tail gas = 17.54 mol/s
Bed pressure drop = 1.29 kPa
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 |
|---|---|---|---|
Operation Mode |
NF | yes | |
Isotherm Model |
NF | yes | |
Regeneration Mode |
NF | yes | |
Use Inlet Temperature |
NF | yes | |
Adsorption Temperature |
K | yes | |
Desorption Pressure |
Pa | yes | |
Desorption Temperature |
K | yes | |
Adsorbent Mass |
kg | yes | |
Bed Void Fraction |
NF | yes | |
Bulk Density |
kg/m3 | yes | |
Number of Beds |
NF | yes | |
Vessel Diameter |
mm | yes | |
Bed Length |
mm | yes | |
Particle Diameter |
mm | yes | |
Particle Sphericity |
NF | yes | |
Cycle Time |
s | yes | |
Purge Fraction |
NF | yes | |
Pressurisation Time Fraction |
NF | yes | |
Feed Molar Flow |
mol/s | result | |
Raffinate Molar Flow |
mol/s | result | |
Desorbate Molar Flow |
mol/s | result | |
Key Component Recovery |
% | result | |
Key Component Purity (Desorbate) |
% | result | |
Key Component Purity (Raffinate) |
% | result | |
Heat of Adsorption |
kW | result | |
Purge Molar Flow |
mol/s | result | |
Pressure Drop |
Pa | 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 input configuration: operation mode, isotherm model and per-compound isotherm data, zeolite preset...
Gets or sets the input configuration: operation mode, isotherm model and per-compound isotherm data, zeolite preset, regeneration mode and bed geometry.
IsPremium: Gets a value indicating that this unit operation is listed in the Premium group of the object palette (always true).
Gets a value indicating that this unit operation is listed in the Premium group of the object palette (always true).
MobileCompatible: Gets a value indicating whether this unit operation is compatible with mobile interfaces (always false).
Gets a value indicating whether this unit operation is compatible with mobile interfaces (always false).
ObjectClass: Gets the simulation object class category (separators).
Gets the simulation object class category (separators).
Prefix: Gets the default name prefix for this unit operation ('ZA-').
Gets the default name prefix for this unit operation ("ZA-").
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: one feed gas inlet on the left and two outlets on the...
Creates the graphic connector definitions on the flowsheet: one feed gas inlet on the left and two outlets on the right (raffinate on top, desorbate below). The energy connector is disabled.
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 on the given SkiaSharp canvas: the embedded photo in photorealistic mode (draw mode 2)...
Draws the unit operation on the given SkiaSharp canvas: the embedded photo in photorealistic mode (draw mode 2), otherwise the vector icon.
| Parameter | Type | Description |
|---|---|---|
g |
Object |
The SkiaSharp canvas. |
GetChartModel(string): Builds an OxyPlot model of the bed pressure through the cycle steps of the last calculation, one segment per step...
Builds an OxyPlot model of the bed pressure through the cycle steps of the last calculation, one segment per step, in the flowsheet's pressure unit.
| Parameter | Type | Description |
|---|---|---|
name |
String |
GetChartModelNames(): Chart names the PFD chart object can embed.
Chart names the PFD chart object can embed.
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.
Returns the raw bytes of the icon image for this unit operation.
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.
Populates the cross-platform (Avalonia) editor panel with controls.
| 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. |
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¶