Amine Treater¶
DWSIM Plus
Available with a DWSIM Plus (Patreon) subscription.
![]()
Shortcut Amine Treater. One sour-gas feed → two outlets (sweet gas, acid gas). H₂S and CO₂ (if present as compounds) are partitioned by the configured removal fractions; hydrocarbons mostly pass to the sweet side, with a small mass slip to the acid gas. Any sulfur carried on WtPctSulfur ExtraProperties is treated as H₂S-equivalent and routed to the acid gas outlet.
DWSIM.UnitOperations.Refining.Amine.AmineUnitOperation
Assembly DWSIM.UnitOperations.Refining.dll · Object ← BaseClass ← UnitOpBaseClass ← AmineUnitOperation
At a glance¶

| Port | Index | Connected in the example |
|---|---|---|
| Inlet, material | 0 |
Sour-gas |
| Outlet, material | 0 |
Sweet-gas |
| Outlet, material | 1 |
Acid-gas |
Example¶
This code runs on every build of this site, and the output below is what it printed.
fs = (Flowsheet.Create("AmineExample")
.WithCompounds("Methane", "Ethane", "Propane", "Carbon dioxide", "Hydrogen sulfide")
.WithPropertyPackage(PropertyPackages.PengRobinson))
# Sour gas, 1000 kmol/h: 85 % methane, 6 % ethane, 3 % propane, 4 % CO2, 2 % H2S
kmolh = {"Methane": 850.0, "Ethane": 60.0, "Propane": 30.0,
"Carbon dioxide": 40.0, "Hydrogen sulfide": 20.0}
sour = fs.AddMaterialStream("Sour-gas").At(Q.Celsius(40.0), Q.Bar(60.0))
for name, flow in kmolh.items():
sour.SetCompoundMolarFlow(name, flow / 3.6) # mol/s
sweet = fs.AddMaterialStream("Sweet-gas")
acid = fs.AddMaterialStream("Acid-gas")
amine = (fs.AddAmineTreater("AMN-1")
.WithH2SRemoval(0.9995)
.WithCO2Removal(0.50)
.WithHydrocarbonSlip(0.001)
.WithOperatingPressure(Q.Bar(1.8)) # acid gas leaves the regenerator at this pressure
.WithAmineCirculationLPerMolH2S(15.0)
.ConnectFeed(sour, 0)
.ConnectProduct(sweet, 0).ConnectProduct(acid, 1))
fs.AutoLayout()
fs.Solve()
r = amine.Object.Results
print(f"H2S in sweet gas = {sweet.OverallMoleFraction('Hydrogen sulfide') * 1e6:.0f} ppmv")
print(f"CO2 in sweet gas = {sweet.OverallMoleFraction('Carbon dioxide') * 100.0:.2f} mol%")
print(f"H2S in acid gas = {acid.OverallMoleFraction('Hydrogen sulfide') * 100.0:.1f} mol%")
print(f"H2S removed = {r.H2SRemovedKgPerS * 3600.0:.0f} kg/h")
print(f"Amine circulation = {r.AmineCirculationLPerS * 3.6:.0f} m3/h")
Output
H2S in sweet gas = 10 ppmv
CO2 in sweet gas = 2.09 mol%
H2S in acid gas = 48.8 mol%
H2S removed = 681 kg/h
Amine circulation = 300 m3/h
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 | |
H2S Removal Fraction |
NF | yes | |
CO2 Removal Fraction |
NF | yes | |
Feed Mass Flow |
kg/s | result | |
Sweet Gas Mass Flow |
kg/s | result | |
Acid Gas Mass Flow |
kg/s | result | |
H2S Removed |
kg/s | result | |
CO2 Removed |
kg/s | 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 amine treater: the operating temperature and pressure, H2S and CO2 removal...
Gets or sets the configuration of this amine treater: the operating temperature and pressure, H2S and CO2 removal fractions, hydrocarbon slip fraction, amine circulation per mole of H2S, and the names of the H2S and CO2 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 (Columns).
Gets the simulation object class category (Columns).
Prefix: Gets the default name prefix for this unit operation ('AMT-').
Gets the default name prefix for this unit operation ("AMT-").
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: a Sour Gas inlet on the left and two outlets on the...
Creates the graphic connector definitions on the flowsheet: a Sour Gas inlet on the left and two outlets on the right (Sweet Gas at the top, Acid Gas at the bottom).
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¶