Continuous Cake Filter¶
![]()
Represents a continuous cake filter unit operation that separates solids from a liquid stream. The calculation is based on the cake filter equations from McCabe, Smith and Harriott, "Unit Operations of Chemical Engineering", Chapter 29. Solids removal efficiency is governed by the specified cake relative humidity, filter area, and operating parameters.
DWSIM.UnitOperations.UnitOperations.Filter
Assembly DWSIM.UnitOperations.dll · Object ← BaseClass ← UnitOpBaseClass ← Filter
At a glance¶

| Port | Index | Connected in the example |
|---|---|---|
| Inlet, material | 0 |
Slurry |
| Outlet, material | 0 |
Filtrate |
| Outlet, material | 1 |
Cake |
Example¶
This code runs on every build of this site, and the output below is what it printed.
fs = (Flowsheet.Create("FilterExample")
.WithCompounds("Water", "Benzoic acid")
.WithPropertyPackage(PropertyPackages.Raoult))
# Keep benzoic acid in the solid phase: the filter reads the solids from phase 7.
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.0))
.SetCompoundMassFlow("Water", 5.0) # kg/s
.SetCompoundMassFlow("Benzoic acid", 0.5))
filtrate = fs.AddMaterialStream("Filtrate")
cake = fs.AddMaterialStream("Cake")
flt = (fs.AddFilter("F-1")
.ConnectFeed(slurry)
.ConnectProduct(filtrate, 0)
.ConnectProduct(cake, 1))
# Simulation mode: the pressure drop needed to pass the feed through a given area.
f = flt.Object
f.CalcMode = Filter.CalculationMode.Simulation
f.TotalFilterArea = 8.0 # m2
f.SubmergedAreaFraction = 0.35
f.FilterCycleTime = 90.0 # s per drum revolution
f.SpecificCakeResistance = 3.0e9 # m/kg
f.FilterMediumResistance = 1.0e9 # 1/m
f.CakeRelativeHumidity = 15.0 # % liquid in the discharged cake
fs.AutoLayout()
fs.Solve()
c = cake.Object
print(f"Pressure drop = {f.PressureDrop / 1e5:.3f} bar")
print(f"Filtrate = {filtrate.Object.GetMassFlow():.3f} kg/s")
print(f"Cake = {c.GetMassFlow():.3f} kg/s, "
f"{c.Phases[0].Compounds['Water'].MassFraction * 100:.1f} wt% water")
print(f"Mass balance = {slurry.Object.GetMassFlow():.3f} kg/s in, "
f"{filtrate.Object.GetMassFlow() + c.GetMassFlow():.3f} kg/s out")
Output
Pressure drop = 0.161 bar
Filtrate = 4.912 kg/s
Cake = 0.588 kg/s, 15.0 wt% water
Mass balance = 5.500 kg/s in, 5.500 kg/s out
DWSIM 10.2.11.0, generated 2026-10-08.
Calculation modes¶
Set with CalcMode (CalculationMode). The mode decides which properties are inputs; every other one is a result and is overwritten by the calculation.
| Mode | Value | What it does | Inputs |
|---|---|---|---|
Design |
0 | Design mode: calculates the required total filter area given a specified pressure drop. | PROP_FT_2, PROP_FT_3, PROP_FT_4, PROP_FT_5, PROP_FT_6, PROP_FT_7 |
Simulation |
1 | Simulation mode: calculates the pressure drop given a specified total filter area. | PROP_FT_1, PROP_FT_2, PROP_FT_3, PROP_FT_4, PROP_FT_5, PROP_FT_6 |
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 in |
|---|---|---|---|
PROP_FT_0 |
Energy Balance | kW | result |
PROP_FT_1 |
Total Filter Area | m2 | Simulation |
PROP_FT_2 |
Cake Relative Humidity (%) | % | all modes |
PROP_FT_3 |
Cycle Time | s | all modes |
PROP_FT_4 |
Filter Medium Resistance | m-1 | all modes |
PROP_FT_5 |
Specific Cake Resistance | m/kg | all modes |
PROP_FT_6 |
Submerged Area Fraction | all modes | |
PROP_FT_7 |
Total Pressure Drop | Pa | Design |
Dynamic mode¶
Extra properties used when the flowsheet runs in dynamic mode.
| Name | Unit |
|---|---|
| Cake Mass | kg |
| Backwash Interval | s |
| Backwash Duration | s |
| Time Since Last Backwash | s |
| Backwash Active | |
| Separation Efficiency |
Learn more¶
-
User guide
-
FluentAPI
API members¶
Public members declared by this class. Inherited members are documented on the base classes.
Constructors¶
Filter(): Initializes a new instance of the Filter class with default settings.
Initializes a new instance of the Filter class with default settings.
Filter(string, string): Initializes a new instance of the Filter class with the specified name and description.
Initializes a new instance of the Filter class with the specified name and description.
| Parameter | Type | Description |
|---|---|---|
name |
String |
The display name of the filter object. |
description |
String |
A brief description of the filter object. |
Properties¶
CakeRelativeHumidity: Gets or sets the relative humidity of the discharged cake as a percentage (%).
Gets or sets the relative humidity of the discharged cake as a percentage (%).
CalcMode: Gets or sets the calculation mode (Design or Simulation).
Gets or sets the calculation mode (Design or Simulation).
EnergyImb: Gets or sets the energy imbalance across the filter (kW).
Gets or sets the energy imbalance across the filter (kW).
EquipmentTypes: Gets the list of supported equipment types for this unit operation.
Gets the list of supported equipment types for this unit operation.
FilterCycleTime: Gets or sets the filter cycle time (s).
Gets or sets the filter cycle time (s).
FilterMediumResistance: Gets or sets the filter medium resistance (1/m).
Gets or sets the filter medium resistance (1/m).
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.
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.
ObjectClass: Gets or sets the simulation object class for this unit operation.
Gets or sets the simulation object class for this unit operation.
PressureDrop: Gets or sets the total pressure drop across the filter (Pa).
Gets or sets the total pressure drop across the filter (Pa).
SpecificCakeResistance: Gets or sets the specific cake resistance (m/kg).
Gets or sets the specific cake resistance (m/kg).
SubmergedAreaFraction: Gets or sets the fraction of the filter area that is submerged during filtration (dimensionless, 0 to 1).
Gets or sets the fraction of the filter area that is submerged during filtration (dimensionless, 0 to 1).
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.
TotalFilterArea: Gets or sets the total filter area (m²).
Gets or sets the total filter area (m²).
Methods¶
Calculate(object): Calculates the filter separation results.
Calculates the filter separation results.
| Parameter | Type | Description |
|---|---|---|
args |
Object |
CloneXML(): Creates a deep copy via XML serialization.
Creates a deep copy 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: cake mass, backwash interval, duration, elapsed time...
Registers the dynamic properties for dynamic simulation mode: cake mass, backwash interval, duration, elapsed time and state, and the solids separation efficiency (fraction, 0-1).
DeCalculate(): Clears all calculated results.
Clears all calculated results.
DisplayEditForm(): Opens or activates the editing form.
Opens or activates the editing form.
GetDisplayDescription(): Returns the localised display description.
Returns the localised display description.
GetDisplayName(): Returns the localised display name.
Returns the localised display name.
GetIconBitmapBytes(): Returns the icon bitmap as a byte array.
Returns the icon bitmap as a byte array.
GetProperties(PropertyType): Returns an array of property identifiers for the specified property type.
Returns an array of property identifiers for the specified property type.
| Parameter | Type | Description |
|---|---|---|
proptype |
PropertyType |
GetPropertyUnit(string, IUnitsOfMeasure): Returns the unit string for the specified property.
Returns the unit string for the specified property.
| Parameter | Type | Description |
|---|---|---|
prop |
String |
|
su |
IUnitsOfMeasure |
GetPropertyValue(string, IUnitsOfMeasure): Returns the value of the specified property.
Returns the value of the specified property.
| Parameter | Type | Description |
|---|---|---|
prop |
String |
|
su |
IUnitsOfMeasure |
GetReport(IUnitsOfMeasure, CultureInfo, string): Generates a plain-text report of the filter results.
Generates a plain-text report of the filter results.
| Parameter | Type | Description |
|---|---|---|
su |
IUnitsOfMeasure |
|
ci |
CultureInfo |
|
numberformat |
String |
LoadData(List<XElement>): Loads object data from a list of XML elements.
Loads object data from a list of XML elements.
| Parameter | Type | Description |
|---|---|---|
data |
List<XElement> |
List of XML elements containing the serialized object data. |
RunDynamicModel(): Runs one dynamic-mode integration step: accumulates captured solids in the cake, handles the backwash cycle, and...
Runs one dynamic-mode integration step: accumulates captured solids in the cake, handles the backwash cycle, and sets the filtrate flow from the cake and medium resistances and the cake outlet flow.
SaveData(): Saves object data to a list of XML elements for serialization.
Saves object data to a list of XML elements for serialization.
SetPropertyValue(string, object, IUnitsOfMeasure): Sets the value of the specified property.
Sets the value of the specified property.
| Parameter | Type | Description |
|---|---|---|
prop |
String |
|
propval |
Object |
|
su |
IUnitsOfMeasure |
UpdateEditForm(): Refreshes the editing form with updated data.
Refreshes the editing form with updated data.
Fields¶