Solids Separator¶
![]()
Represents a solids separator unit operation that removes solid-phase material from a mixed material stream. Liquid and vapour phases are sent to the first outlet while the solid phase is directed to the second outlet, each split according to user-specified separation efficiencies.
DWSIM.UnitOperations.UnitOperations.SolidsSeparator
Assembly DWSIM.UnitOperations.dll · Object ← BaseClass ← UnitOpBaseClass ← SolidsSeparator
At a glance¶

| Port | Index | Connected in the example |
|---|---|---|
| Inlet, material | 0 |
Slurry |
| Outlet, material | 0 |
Mother-liquor |
| Outlet, material | 1 |
Wet-solids |
Example¶
This code runs on every build of this site, and the output below is what it printed.
fs = (Flowsheet.Create("SolidsSeparatorExample")
.WithCompounds("Water", "Benzoic acid")
.WithPropertyPackage(PropertyPackages.Raoult))
# Keep benzoic acid in the solid phase: the flash then reports it as phase 7 (solid).
pp = list(fs.Inner.PropertyPackages.Values)[0].__implementation__
pp.ForcedSolids.Add("Benzoic acid")
slurry = (fs.AddMaterialStream("Slurry")
.At(Q.Celsius(25.0), Q.Bar(1.5))
.SetCompoundMassFlow("Water", 5.0) # kg/s
.SetCompoundMassFlow("Benzoic acid", 0.5))
liquor = fs.AddMaterialStream("Mother-liquor")
solids = fs.AddMaterialStream("Wet-solids")
sep = (fs.AddSolidsSeparator("SS-1")
.ConnectFeed(slurry)
.ConnectProduct(liquor, 0) # liquid (and vapor) outlet
.ConnectProduct(solids, 1)) # solids outlet
sep.Object.SeparationEfficiency = 98.0 # % of the solids sent to the solids outlet
sep.Object.LiquidSeparationEfficiency = 95.0 # % of the liquid sent to the liquid outlet
fs.AutoLayout()
fs.Solve()
l, s = liquor.Object, solids.Object
print(f"Feed solids = {slurry.Object.Phases[7].Properties.massflow:.3f} kg/s")
print(f"Mother liquor = {l.GetMassFlow():.3f} kg/s, "
f"{l.Phases[0].Compounds['Benzoic acid'].MassFlow:.4f} kg/s solids carried over")
print(f"Wet solids = {s.GetMassFlow():.3f} kg/s, "
f"{s.Phases[0].Compounds['Water'].MassFraction * 100:.1f} wt% water")
print(f"Mass balance = {slurry.Object.GetMassFlow():.3f} kg/s in, {l.GetMassFlow() + s.GetMassFlow():.3f} kg/s out")
Output
Feed solids = 0.500 kg/s
Mother liquor = 4.760 kg/s, 0.0100 kg/s solids carried over
Wet solids = 0.740 kg/s, 33.8 wt% water
Mass balance = 5.500 kg/s in, 5.500 kg/s out
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 |
|---|---|---|---|
PROP_SS_1 |
Solids Separation Efficiency | % | yes |
PROP_SS_2 |
Liquids Separation Efficiency | % | yes |
Dynamic mode¶
Extra properties used when the flowsheet runs in dynamic mode.
| Name | Unit |
|---|---|
| Solids Holdup | kg |
| Maximum Solids Holdup | kg |
| Discharge Active |
Learn more¶
-
User guide
-
FluentAPI
API members¶
Public members declared by this class. Inherited members are documented on the base classes.
Constructors¶
SolidsSeparator(): Initializes a new default instance of the SolidsSeparator class.
Initializes a new default instance of the SolidsSeparator class.
SolidsSeparator(string, string): Initializes a new instance of the SolidsSeparator class with a name and description.
Initializes a new instance of the SolidsSeparator class with a name and description.
| Parameter | Type | Description |
|---|---|---|
name |
String |
The display name of the solids separator. |
description |
String |
A brief description of the solids separator. |
Properties¶
EmbeddedImageData: Gets or sets Base64-encoded embedded image data used when a custom icon is displayed.
Gets or sets Base64-encoded embedded image data used when a custom icon is displayed.
HasPropertiesForDynamicMode: Gets a value indicating whether this unit operation exposes properties for dynamic mode.
Gets a value indicating whether this unit operation exposes properties for dynamic mode.
LiquidSeparationEfficiency: Gets or sets the liquid-phase separation efficiency as a percentage (0–100).
Gets or sets the liquid-phase separation efficiency as a percentage (0–100). Determines how much liquid leaks to the solids outlet.
MobileCompatible: Gets a value indicating whether this unit operation is compatible with mobile/cross-platform interfaces.
Gets a value indicating whether this unit operation is compatible with mobile/cross-platform interfaces.
ObjectClass: Gets or sets the simulation object class category for this unit operation (Solids).
Gets or sets the simulation object class category for this unit operation (Solids).
SeparationEfficiency: Gets or sets the solid-phase separation efficiency as a percentage (0–100).
Gets or sets the solid-phase separation efficiency as a percentage (0–100).
SupportsDynamicMode: Gets a value indicating whether this unit operation supports dynamic simulation mode.
Gets a value indicating whether this unit operation supports dynamic simulation mode.
UseEmbeddedImage: Gets or sets whether an embedded image is used as the custom icon for this unit operation.
Gets or sets whether an embedded image is used as the custom icon for this unit operation.
Methods¶
Calculate(object): Performs the steady-state calculation for the solids separator: splits inlet stream phases to their respective...
Performs the steady-state calculation for the solids separator: splits inlet stream phases to their respective outlets based on the configured separation efficiencies.
| Parameter | Type | Description |
|---|---|---|
args |
Object |
Optional calculation arguments (not used). |
CloneXML(): Creates a deep copy of this solids separator via XML serialization.
Creates a deep copy of this solids separator via XML serialization.
CloseEditForm(): Closes and disposes the editing form.
Closes and disposes the editing form.
CreateDynamicProperties(): Registers the dynamic properties for dynamic simulation mode: the solids holdup (kg), the maximum solids holdup...
Registers the dynamic properties for dynamic simulation mode: the solids holdup (kg), the maximum solids holdup before discharge (kg, 0 for continuous discharge) and the discharge state flag.
DeCalculate(): Clears the calculated results from the outlet material streams.
Clears the calculated results from the outlet material streams.
DisplayEditForm(): Opens or activates the editing form for this solids separator.
Opens or activates the editing form for this solids separator.
GetDisplayDescription(): Returns the localised display description for this unit operation.
Returns the localised display description for this unit operation.
GetDisplayName(): Returns the localised display name for this unit operation.
Returns the localised display name for this unit operation.
GetIconBitmapBytes(): Returns the icon bitmap as a byte array.
Returns the icon bitmap as a byte array.
GetProperties(PropertyType): Returns an array of property identifier strings for the specified property type.
Returns an array of property identifier strings for the specified property type.
| Parameter | Type | Description |
|---|---|---|
proptype |
PropertyType |
The category of properties to list (read-write, read-only, all). |
GetPropertyUnit(string, IUnitsOfMeasure): Returns the unit string for the specified property.
Returns the unit string for the specified property.
| Parameter | Type | Description |
|---|---|---|
prop |
String |
The property identifier string. |
su |
IUnitsOfMeasure |
Optional unit system. |
GetPropertyValue(string, IUnitsOfMeasure): Returns the value of the specified property, converted to the given unit system.
Returns the value of the specified property, converted to the given unit system.
| Parameter | Type | Description |
|---|---|---|
prop |
String |
The property identifier string. |
su |
IUnitsOfMeasure |
Optional unit system for conversion. |
LoadData(List<XElement>): Loads the object state from a list of XML elements.
Loads the object state from a list of XML elements.
| Parameter | Type | Description |
|---|---|---|
data |
List<XElement> |
The XML element list containing the serialized state. |
PerformPostCalcValidation(): Performs post-calculation validation (no-op for this unit operation).
Performs post-calculation validation (no-op for this unit operation).
RunDynamicModel(): Runs one dynamic-mode integration step: accumulates the captured solids, flags a discharge when the holdup reaches...
Runs one dynamic-mode integration step: accumulates the captured solids, flags a discharge when the holdup reaches its maximum (or on every step for continuous discharge), then runs the steady-state split.
SaveData(): Saves the object state to a list of XML elements for serialization.
Saves the object state to a list of XML elements for serialization.
SetPropertyValue(string, object, IUnitsOfMeasure): Sets the value of the specified property from the given value and unit system.
Sets the value of the specified property from the given value and unit system.
| Parameter | Type | Description |
|---|---|---|
prop |
String |
The property identifier string. |
propval |
Object |
The new value to assign. |
su |
IUnitsOfMeasure |
Optional unit system for conversion. |
UpdateEditForm(): Refreshes the editing form with updated data.
Refreshes the editing form with updated data.
Fields¶