Neutralization Reactor¶
DWSIM Plus
Available with a DWSIM Plus (Patreon) subscription.
![]()
Neutralization Reactor — mixes up to 6 electrolyte streams, specifies outlet T/P or runs adiabatically, and estimates the outlet pH from a charge-balance calculation on the mixed stream. Ports ───── Inlets 0..N-1 : Feed streams (acid, base, or buffer) Outlet 0 : Product (neutralized) stream
DWSIM.UnitOperations.ElectrolyteOps.NeutralizationReactorUnitOperation
Assembly DWSIM.UnitOperations.ElectrolyteOps.dll · Object ← BaseClass ← UnitOpBaseClass ← NeutralizationReactorUnitOperation
At a glance¶

| Port | Index | Connected in the example |
|---|---|---|
| Inlet, material | 0 |
Acid |
| Inlet, material | 1 |
Caustic |
| Inlet, energy | 2 |
|
| Outlet, material | 0 |
Neutralized |
Example¶
This code runs on every build of this site, and the output below is what it printed.
fs = (Flowsheet.Create("NeutralizationExample")
.WithCompounds("Water", "Hydronium", "Chloride (ion)", "Sodium (ion)", "Hydroxide")
.WithPropertyPackage(PropertyPackages.Plus.ElectrolyteNRTL))
# Acid: 0.10 mol/L HCl, 10 kg/s. Caustic: 0.95 mol/s of NaOH in 5 kg/s of water
acid = (fs.AddMaterialStream("Acid").At(Q.Celsius(25.0), Q.Bar(2.0))
.SetCompoundMolarFlow("Water", 10.0 / 0.018015)
.SetCompoundMolarFlow("Hydronium", 1.0)
.SetCompoundMolarFlow("Chloride (ion)", 1.0))
caustic = (fs.AddMaterialStream("Caustic").At(Q.Celsius(25.0), Q.Bar(2.0))
.SetCompoundMolarFlow("Water", 5.0 / 0.018015)
.SetCompoundMolarFlow("Sodium (ion)", 0.95)
.SetCompoundMolarFlow("Hydroxide", 0.95))
product = fs.AddMaterialStream("Neutralized")
nr = (fs.AddNeutralizationReactor("NR-1")
.WithThermalMode(NeutralizationThermalMode.Isothermal)
.WithOutletTemperature(Q.Celsius(25.0))
.ConnectFeed(acid, 0).ConnectFeed(caustic, 1)
.ConnectProduct(product, 0))
fs.AutoLayout()
fs.Solve()
r = nr.Object.Results
print(f"Neutralized = {r.NeutralizedMolarFlow:.3f} mol/s of H3O+ and OH-")
print(f"Estimated pH = {r.EstimatedPH:.2f}")
print(f"Outlet = {r.OutletMassFlow:.3f} kg/s at {r.OutletTemperature - 273.15:.1f} C")
print(f"Heat duty = {r.HeatDuty / 1000.0:.1f} kW (negative: heat removed)")
Output
Neutralized = 0.950 mol/s of H3O+ and OH-
Estimated pH = 2.48
Outlet = 15.093 kg/s at 25.0 C
Heat duty = -53.0 kW (negative: heat removed)
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 |
|---|---|---|---|
Thermal Mode |
yes | ||
Outlet Temperature |
K | yes | |
Use Inlet Pressure |
yes | ||
Fixed Pressure |
Pa | yes | |
Number of Inlets |
yes | ||
Calculated Outlet Temperature |
K | result | |
Outlet Pressure |
Pa | result | |
Outlet Molar Flow |
mol/s | result | |
Outlet Mass Flow |
kg/s | result | |
Estimated pH |
result | ||
Neutralized Molar Flow |
mol/s | result | |
Net Charge Excess |
meq/L | result | |
Heat Duty |
kW | result | |
Active Inlets |
result |
Learn more¶
-
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: thermal mode, outlet temperature, outlet pressure specification and the number...
Gets or sets the input configuration: thermal mode, outlet temperature, outlet pressure specification and the number of feed inlets.
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 (reactors).
Gets the simulation object class category (reactors).
Prefix: Gets the default name prefix for this unit operation ('NR-').
Gets the default name prefix for this unit operation ("NR-").
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 inlet per configured inlet on the left, a duty...
Creates the graphic connector definitions on the flowsheet: one feed inlet per configured inlet on the left, a duty (energy) inlet at the bottom placed last in the inlet list, and one product outlet on the right.
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. |
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.
Restores the unit operation. The Config element, when present, is loaded into the existing Config; files saved without it keep the default configuration.
| Parameter | Type | Description |
|---|---|---|
data |
List<XElement> |
The XML elements written by SaveData. |
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, with its Config written as a Config element.
Serializes the unit operation, with its Config written as a Config element.
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. |