Skip to content

Orifice Plate

Represents an orifice plate flow-measurement device modelled using the ISO 5167 standard. Calculates the pressure drop across the orifice for a given mass flow rate and fluid properties, supporting single-phase liquid or gas service and two-phase homogeneous or slip flow models.

DWSIM.UnitOperations.UnitOperations.OrificePlate
Assembly DWSIM.UnitOperations.dll · Object ← BaseClass ← UnitOpBaseClass ← OrificePlate

At a glance

Orifice Plate in the example flowsheet

Port Index Connected in the example
Inlet, material 0 Water-in
Outlet, material 0 Water-out

Example

This code runs on every build of this site, and the output below is what it printed.

fs = (Flowsheet.Create("OrificePlateExample")
      .WithCompound("Water")
      .WithPropertyPackage(PropertyPackages.SteamTables))

water_in = (fs.AddMaterialStream("Water-in")
            .At(Q.Celsius(25.0), Q.Bar(5.0))
            .WithMassFlow(Q.KgPerSecond(20.0)))
water_out = fs.AddMaterialStream("Water-out")

orifice = (fs.AddOrificePlate("FE-1")
           .ConnectFeed(water_in)
           .ConnectProduct(water_out))

fe1 = orifice.Object
fe1.OrifType = OrificePlate.OrificeType.FlangeTaps
fe1.InternalPipeDiameter = 0.10226          # m, 4 inch schedule 40
fe1.OrificeDiameter = 0.060                 # m
fe1.Beta = fe1.OrificeDiameter / fe1.InternalPipeDiameter   # not updated by the two setters above

fs.AutoLayout()
fs.Solve()

print(f"Beta (d/D)             = {fe1.Beta:.4f}")
print(f"Orifice pressure drop  = {fe1.OrificePressureDrop / 1e3:.2f} kPa")
print(f"Permanent pressure drop = {fe1.OverallPressureDrop / 1e3:.2f} kPa")
print(f"Outlet P               = {water_out.PressurePa / 1e5:.4f} bar")
print(f"Temperature change     = {fe1.DeltaT:.4f} K")

Output

Beta (d/D)             = 0.5867
Orifice pressure drop  = 60.34 kPa
Permanent pressure drop = 38.78 kPa
Outlet P               = 4.6122 bar
Temperature change     = 0.0086 K

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_OP_0 Pressure Tappings yes
PROP_OP_1 Orifice Diameter m yes
PROP_OP_2 Internal Pipe Diameter m yes
PROP_OP_3 Correction Factor yes
PROP_OP_4 Beta (d/D) result
PROP_OP_5 Overall Pressure Drop Pa result
PROP_OP_6 Orifice Pressure Drop Pa result
PROP_OP_7 Temperature Difference K (difference) result

Learn more

API members

Public members declared by this class. Inherited members are documented on the base classes.

Constructors

OrificePlate(): Initializes a new default instance of the OrificePlate class.

Initializes a new default instance of the OrificePlate class.

public OrificePlate()
Public Sub New()

OrificePlate(string, string): Initializes a new instance of the OrificePlate class with a name and description.

Initializes a new instance of the OrificePlate class with a name and description.

Parameter Type Description
name String The display name of the orifice plate.
description String A brief description of the orifice plate.
public OrificePlate(string name, string description)
Public Sub New(name As String, description As String)

Properties

Beta: Gets the diameter ratio β = d/D (orifice diameter / pipe internal diameter).

Gets the diameter ratio β = d/D (orifice diameter / pipe internal diameter). It follows the two diameters when both are set; the stored value is used only when they are not.

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

CalculationMethod: Gets or sets the two-phase flow calculation method used when both phases are present.

Gets or sets the two-phase flow calculation method used when both phases are present.

public OrificePlate.CalcMethod CalculationMethod { get; set; }
Public Property CalculationMethod As OrificePlate.CalcMethod

CorrectionFactor: Gets or sets a dimensionless correction factor applied to the calculated discharge coefficient.

Gets or sets a dimensionless correction factor applied to the calculated discharge coefficient.

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

DeltaT: Gets or sets the calculated temperature change (K) across the orifice plate.

Gets or sets the calculated temperature change (K) across the orifice plate.

public double? DeltaT { get; set; }
Public Property DeltaT As Double?

HasPropertiesForDynamicMode: Gets a value indicating whether this unit operation exposes dedicated properties for dynamic mode.

Gets a value indicating whether this unit operation exposes dedicated properties for dynamic mode.

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

InternalPipeDiameter: Gets or sets the internal pipe bore diameter (m) upstream of the orifice.

Gets or sets the internal pipe bore diameter (m) upstream of the orifice.

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

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.

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

ObjectClass: Gets or sets the simulation object class category for this orifice plate (PressureChangers).

Gets or sets the simulation object class category for this orifice plate (PressureChangers).

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

OrificeDiameter: Gets or sets the orifice bore diameter (m).

Gets or sets the orifice bore diameter (m).

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

OrificePressureDrop: Gets or sets the differential pressure (Pa) measured directly across the orifice throat.

Gets or sets the differential pressure (Pa) measured directly across the orifice throat.

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

OrifType: Gets or sets the pressure tap configuration of this orifice plate.

Gets or sets the pressure tap configuration of this orifice plate.

public OrificePlate.OrificeType OrifType { get; set; }
Public Property OrifType As OrificePlate.OrificeType

OverallPressureDrop: Gets or sets the total pressure drop (Pa) across the orifice plate including flow recovery losses.

Gets or sets the total pressure drop (Pa) across the orifice plate including flow recovery losses.

public double OverallPressureDrop { get; set; }
Public Property OverallPressureDrop 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

Methods

Calculate(object): Performs the ISO 5167 orifice plate calculation: determines the downstream pressure and temperature given the inlet...

Performs the ISO 5167 orifice plate calculation: determines the downstream pressure and temperature given the inlet stream conditions and the configured orifice geometry.

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 orifice plate via XML serialization.

Creates a deep copy of this orifice plate 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()

DeCalculate(): Clears all calculated results.

Clears all calculated results.

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

DisplayEditForm(): Opens or activates the editing form.

Opens or activates the editing form.

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

GetDisplayDescription(): Returns the localised display description.

Returns the localised display description.

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

GetDisplayName(): Returns the localised display name.

Returns the localised display name.

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 identifiers for the specified property type.

Returns an array of property identifiers for the specified property type.

Parameter Type Description
proptype PropertyType
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
su IUnitsOfMeasure
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.

Returns the value of the specified property.

Parameter Type Description
prop String
su IUnitsOfMeasure
public override object GetPropertyValue(string prop, IUnitsOfMeasure su = null)
Public Overrides Function GetPropertyValue(prop As String, su As IUnitsOfMeasure = Nothing) As Object

GetReport(IUnitsOfMeasure, CultureInfo, string): Generates a plain-text report of the orifice plate results.

Generates a plain-text report of the orifice plate results.

Parameter Type Description
su IUnitsOfMeasure
ci CultureInfo
numberformat String
public override string GetReport(IUnitsOfMeasure su, CultureInfo ci, string numberformat)
Public Overrides Function GetReport(su As IUnitsOfMeasure, ci As CultureInfo, numberformat As String) As String

RunDynamicModel(): Executes a single dynamic model step by delegating to the steady-state Calculate routine.

Executes a single dynamic model step by delegating to the steady-state Calculate routine.

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

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