Skip to content

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

Solids Separator in the example flowsheet

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

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.

public SolidsSeparator()
Public Sub New()

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.
public SolidsSeparator(string name, string description)
Public Sub New(name As String, description As String)

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.

public string EmbeddedImageData { get; set; }
Public Property EmbeddedImageData As String

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.

public override bool HasPropertiesForDynamicMode { get; }
Public Overrides ReadOnly Property HasPropertiesForDynamicMode As Boolean

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.

public double LiquidSeparationEfficiency { get; set; }
Public Property LiquidSeparationEfficiency As Double

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.

public override bool MobileCompatible { get; }
Public Overrides ReadOnly Property MobileCompatible As Boolean

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).

public override SimulationObjectClass ObjectClass { get; set; }
Public Overrides Property ObjectClass As SimulationObjectClass

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).

public double SeparationEfficiency { get; set; }
Public Property SeparationEfficiency As Double

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.

public override bool SupportsDynamicMode { get; }
Public Overrides ReadOnly Property SupportsDynamicMode As Boolean

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.

public bool UseEmbeddedImage { get; set; }
Public Property UseEmbeddedImage As Boolean

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).
public override void Calculate(object args = null)
Public Overrides Sub Calculate(args As Object = Nothing)

CloneXML(): Creates a deep copy of this solids separator via XML serialization.

Creates a deep copy of this solids separator via XML serialization.

public override object CloneXML()
Public Overrides Function CloneXML() As Object

CloseEditForm(): Closes and disposes the editing form.

Closes and disposes the editing form.

public override void CloseEditForm()
Public Overrides Sub CloseEditForm()

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.

public override void CreateDynamicProperties()
Public Overrides Sub CreateDynamicProperties()

DeCalculate(): Clears the calculated results from the outlet material streams.

Clears the calculated results from the outlet material streams.

public override void DeCalculate()
Public Overrides Sub DeCalculate()

DisplayEditForm(): Opens or activates the editing form for this solids separator.

Opens or activates the editing form for this solids separator.

public override void DisplayEditForm()
Public Overrides Sub DisplayEditForm()

GetDisplayDescription(): Returns the localised display description for this unit operation.

Returns the localised display description for this unit operation.

public override string GetDisplayDescription()
Public Overrides Function GetDisplayDescription() As String

GetDisplayName(): Returns the localised display name for this unit operation.

Returns the localised display name for this unit operation.

public override string GetDisplayName()
Public Overrides Function GetDisplayName() As String

GetIconBitmapBytes(): Returns the icon bitmap as a byte array.

Returns the icon bitmap as a byte array.

public override byte[] GetIconBitmapBytes()
Public Overrides Function GetIconBitmapBytes() As Byte()

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).
public override string[] GetProperties(PropertyType proptype)
Public Overrides Function GetProperties(proptype As PropertyType) As String()

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.
public override string GetPropertyUnit(string prop, IUnitsOfMeasure su = null)
Public Overrides Function GetPropertyUnit(prop As String, su As IUnitsOfMeasure = Nothing) As String

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.
public override object GetPropertyValue(string prop, IUnitsOfMeasure su = null)
Public Overrides Function GetPropertyValue(prop As String, su As IUnitsOfMeasure = Nothing) As Object

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.
public override bool LoadData(List<XElement> data)
Public Overrides Function LoadData(data As List(Of XElement)) As Boolean

PerformPostCalcValidation(): Performs post-calculation validation (no-op for this unit operation).

Performs post-calculation validation (no-op for this unit operation).

public override void PerformPostCalcValidation()
Public Overrides Sub PerformPostCalcValidation()

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.

public override void RunDynamicModel()
Public Overrides Sub RunDynamicModel()

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.

public override List<XElement> SaveData()
Public Overrides Function SaveData() As List(Of XElement)

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.
public override bool SetPropertyValue(string prop, object propval, IUnitsOfMeasure su = null)
Public Overrides Function SetPropertyValue(prop As String, propval As Object, su As IUnitsOfMeasure = Nothing) As Boolean

UpdateEditForm(): Refreshes the editing form with updated data.

Refreshes the editing form with updated data.

public override void UpdateEditForm()
Public Overrides Sub UpdateEditForm()

Fields

f: The classic (WinForms) editor window open for this unit operation, if any.

The classic (WinForms) editor window open for this unit operation, if any. Not saved with the flowsheet.

public object f
Public f As Object