Skip to content

Air Cooler 2

DWSIM Plus

Available with a DWSIM Plus (Patreon) subscription.

Air cooler (Air Cooler 2): cools a process fluid flowing through a tube bundle with ambient air moved by a fan. The air flow is proportional to the fan speed, and the fan electrical power is taken from the power inlet energy stream. Three calculation modes: specified process outlet temperature, specified tube geometry, or specified overall UA. Ports: fluid inlet, power (energy) inlet and fluid outlet.

DWSIM.UnitOperations.ExtensionPack.UnitOperations.AirCooler2
Assembly DWSIM.UnitOperations.ExtensionPack.dll · Object ← BaseClass ← UnitOpBaseClass ← AirCooler2

At a glance

Air Cooler 2 in the example flowsheet

Port Index Connected in the example
Inlet, material 0 Water-in
Inlet, energy 1 Fan power
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("AirCooler2Example")
      .WithCompound("Water")
      .WithPropertyPackage(PropertyPackages.SteamTables))

hot = fs.AddMaterialStream("Water-in").At(Q.Celsius(80.0), Q.Bar(3.0)).WithMassFlow(Q.KgPerSecond(10.0))
cooled = fs.AddMaterialStream("Water-out")
fan = fs.AddEnergyStream("Fan power")

cooler = (fs.AddAirCooler2("AC-1")
          .WithCalculationMode(AirCooler2.CalcMode.SpecifyUA)
          .WithOverallUA(60000.0)                     # W/K
          .WithPressureDrop(Q.Bar(0.3))
          .WithAirInletTemperature(Q.Celsius(35.0))
          .WithAirPressure(Q.Bar(1.01325))
          .WithReferenceFanSpeedRpm(300.0)
          .WithReferenceAirFlowM3PerS(60.0)           # air flow at the reference speed
          .WithActualFanSpeedRpm(300.0)
          .ConnectFeed(hot)
          .ConnectProduct(cooled)
          .ConnectEnergyFeed(fan, 1))                 # fan power enters at port 1
cooler.Object.ElectricalPowerConversionFactor = 0.1   # kW per rpm

fs.AutoLayout()
fs.Solve()

o = cooler.Object
print(f"Heat load           = {o.HeatLoad:.0f} kW ({o.ExchangerEfficiency:.1f} % of maximum)")
print(f"Water outlet T      = {cooled.TemperatureK - 273.15:.2f} C")
print(f"Air outlet T        = {o.AirOutletTemperature - 273.15:.2f} C")
print(f"Air flow            = {o.ActualAirFlow:.1f} m3/s")
print(f"Fan electrical load = {fan.EnergyFlowKW:.1f} kW")

Output

Heat load           = 1240 kW (65.8 % of maximum)
Water outlet T      = 50.39 C
Air outlet T        = 52.98 C
Air flow            = 60.0 m3/s
Fan electrical load = 30.0 kW

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
Pressure Drop Pa yes
Outlet Temperature K yes
Overall UA W/K yes
Reference Fan Speed rpm yes
Reference Air Flow m3/s yes
Actual Fan Speed rpm yes
Actual Air Flow m3/s yes
Air Inlet Temperature K yes
Air Pressure Pa yes
Air Outlet Temperature K yes
Electrical Power Conversion Factor yes
Heat Load kW yes
Electrical Power Load kW yes
Tube Internal Diameter mm yes
Tube External Diameter mm yes
Tube Length m yes
Tube Pitch mm yes
Tube Fouling K.m2/W yes
Tube Passes yes
Tube Number yes
Tube Roughness m yes
Tube Thermal Conductivity W/[m.K] yes
Max Heat Exchange kW yes
Exchanger Efficiency % yes

Learn more

API members

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

Constructors

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

Initializes a new default instance of the AirCooler2 class.

public AirCooler2()
Public Sub New()

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

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

Parameter Type Description
Name String The name of this unit operation.
Description String A brief description of this unit operation.
public AirCooler2(string Name, string Description)
Public Sub New(Name As String, Description As String)

Properties

ActualAirFlow: Gets or sets the actual air volumetric flow, in m3/s.

Gets or sets the actual air volumetric flow, in m3/s. Recalculated on every run as ReferenceAirFlow times ActualFanSpeed divided by ReferenceFanSpeed.

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

ActualFanSpeed: Gets or sets the actual fan speed, in rpm.

Gets or sets the actual fan speed, in rpm. It sets the actual air flow and the fan electrical power load.

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

AirIn: Gets or sets the internal material stream for the ambient air entering the cooler, created on each calculation.

Gets or sets the internal material stream for the ambient air entering the cooler, created on each calculation. Not saved with the flowsheet.

public MaterialStream AirIn { get; set; }
Public Property AirIn As MaterialStream

AirInletTemperature: Gets or sets the air inlet temperature, in K.

Gets or sets the air inlet temperature, in K. Used when UseGlobalWeather is False.

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

AirOut: Gets or sets the internal material stream for the air leaving the cooler, created on each calculation.

Gets or sets the internal material stream for the air leaving the cooler, created on each calculation. Not saved with the flowsheet.

public MaterialStream AirOut { get; set; }
Public Property AirOut As MaterialStream

AirOutletTemperature: Gets or sets the calculated air outlet temperature, in K.

Gets or sets the calculated air outlet temperature, in K.

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

AirPressure: Gets or sets the air pressure, in Pa.

Gets or sets the air pressure, in Pa. Used when UseGlobalWeather is False.

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

Area: Gets or sets the external heat transfer area of the tubes, in m2, calculated in the geometry mode.

Gets or sets the external heat transfer area of the tubes, in m2, calculated in the geometry mode.

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

CalculationMode: Gets or sets the calculation mode: 0 = SpecifyOutletTemperature (process fluid outlet temperature given; heat load...

Gets or sets the calculation mode: 0 = SpecifyOutletTemperature (process fluid outlet temperature given; heat load and overall UA calculated), 1 = SpecifyGeometry (tube geometry given; outlet temperatures, tube pressure drop, overall UA, LMTD and area calculated), 2 = SpecifyUA (overall UA given; heat load and outlet temperatures calculated).

public AirCooler2.CalcMode CalculationMode { get; set; }
Public Property CalculationMode As AirCooler2.CalcMode

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.

public override string ComponentDescription { get; set; }
Public Overrides Property ComponentDescription As String

ComponentName: Gets or sets the CAPE-OPEN component name for this unit operation.

Gets or sets the CAPE-OPEN component name for this unit operation.

public override string ComponentName { get; set; }
Public Overrides Property ComponentName As String

ElectricalPowerConversionFactor: Gets or sets the fan electrical power per unit of fan speed, in kW/rpm.

Gets or sets the fan electrical power per unit of fan speed, in kW/rpm. The electrical power load is this factor times ActualFanSpeed.

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

ElectricalPowerLoad: Gets or sets the calculated fan electrical power, in kW, which is written to the power inlet energy stream.

Gets or sets the calculated fan electrical power, in kW, which is written to the power inlet energy stream.

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

ExchangerEfficiency: Gets or sets the calculated exchanger efficiency: heat load divided by the maximum theoretical heat exchange, in %.

Gets or sets the calculated exchanger efficiency: heat load divided by the maximum theoretical heat exchange, in %.

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

HeatLoad: Gets or sets the calculated heat removed from the process fluid, in kW.

Gets or sets the calculated heat removed from the process fluid, in kW.

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

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

public bool IsPremium { get; }
Public ReadOnly Property IsPremium As Boolean

LMTD: Gets or sets the calculated log mean temperature difference, in K.

Gets or sets the calculated log mean temperature difference, in K.

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

LMTD_F: Gets or sets the LMTD correction factor F, calculated in the geometry mode.

Gets or sets the LMTD correction factor F, calculated in the geometry mode.

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

MaxHeatExchange: Gets or sets the calculated maximum theoretical heat exchange between the process fluid and the air, in kW.

Gets or sets the calculated maximum theoretical heat exchange between the process fluid and the air, in kW.

public double MaxHeatExchange { get; set; }
Public Property MaxHeatExchange 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 (Exchangers).

Gets or sets the simulation object class category (Exchangers).

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

OutletTemperature: Gets or sets the process fluid outlet temperature, in K.

Gets or sets the process fluid outlet temperature, in K. Input in the outlet temperature mode; calculated in the other modes.

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

OverallUA: Gets or sets the overall heat transfer coefficient times area (UA), in W/K.

Gets or sets the overall heat transfer coefficient times area (UA), in W/K. Input in the UA mode; calculated in the other modes.

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

PressureDrop: Gets or sets the process fluid (tube side) pressure drop, in Pa.

Gets or sets the process fluid (tube side) pressure drop, in Pa. Input in the outlet temperature and UA modes; calculated in the geometry mode.

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

ReferenceAirFlow: Gets or sets the air volumetric flow delivered at the reference fan speed, in m3/s.

Gets or sets the air volumetric flow delivered at the reference fan speed, in m3/s.

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

ReferenceFanSpeed: Gets or sets the reference fan speed, in rpm, at which the fan delivers ReferenceAirFlow.

Gets or sets the reference fan speed, in rpm, at which the fan delivers ReferenceAirFlow.

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

Tube_De: Gets or sets the tube external diameter, in mm.

Gets or sets the tube external diameter, in mm.

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

Tube_Di: Gets or sets the tube internal diameter, in mm.

Gets or sets the tube internal diameter, in mm.

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

Tube_Fouling: Gets or sets the tube fouling factor, in m2.K/W.

Gets or sets the tube fouling factor, in m2.K/W.

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

Tube_Length: Gets or sets the tube length, in m.

Gets or sets the tube length, in m.

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

Tube_NumberPerShell: Gets or sets the number of tubes in the bundle.

Gets or sets the number of tubes in the bundle.

public int Tube_NumberPerShell { get; set; }
Public Property Tube_NumberPerShell As Integer

Tube_PassesPerShell: Gets or sets the number of tube passes.

Gets or sets the number of tube passes.

public int Tube_PassesPerShell { get; set; }
Public Property Tube_PassesPerShell As Integer

Tube_Pitch: Gets or sets the tube pitch (center-to-center spacing), in mm.

Gets or sets the tube pitch (center-to-center spacing), in mm. It must be larger than the tube external diameter.

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

Tube_Roughness: Gets or sets the tube wall roughness, in mm.

Gets or sets the tube wall roughness, in mm.

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

Tube_ThermalConductivity: Gets or sets the tube wall thermal conductivity, in W/(m.K).

Gets or sets the tube wall thermal conductivity, in W/(m.K).

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

UseGlobalWeather: Gets or sets whether the air inlet temperature and pressure are taken from the flowsheet's current weather conditions.

Gets or sets whether the air inlet temperature and pressure are taken from the flowsheet's current weather conditions. When False (default), AirInletTemperature and AirPressure are used.

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

Methods

Calculate(object): Calculates the object.

Calculates the object.

Parameter Type Description
args Object
public override void Calculate(object args = null)
Public Overrides Sub Calculate(args As Object = Nothing)

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.

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

CloseEditForm(): Closes the editor of this object, if it is open.

Closes the editor of this object, if it is open.

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

DeCalculate(): Decalculates the object.

Decalculates the object.

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

DisplayEditForm(): Opens the editor of this object.

Opens the editor of this object. A host that has no editor for it does nothing.

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

GetDefaultProperties(): Returns the identifiers of the properties shown by default for this unit operation: outlet temperature, overall UA...

Returns the identifiers of the properties shown by default for this unit operation: outlet temperature, overall UA, heat load, electrical power load, actual air flow, air inlet and outlet temperatures, maximum heat exchange and exchanger efficiency.

public override string[] GetDefaultProperties()
Public Overrides Function GetDefaultProperties() As String()

GetDisplayDescription(): Returns the localized description string for this unit operation type.

Returns the localized description string for this unit operation type.

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

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

Returns the localized display name for this unit operation type.

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

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.

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

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

GetPropertyDescription(string): Returns a description of the specified property.

Returns a description of the specified property. This unit operation returns the property identifier unchanged.

Parameter Type Description
p String The property identifier.
public override string GetPropertyDescription(string p)
Public Overrides Function GetPropertyDescription(p As String) As String

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.
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 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.
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 results report for this unit operation.

Generates a plain-text results report for this unit operation.

Parameter Type Description
su IUnitsOfMeasure The unit system used for formatting output values.
ci CultureInfo The culture info used for number formatting.
numberformat String A .NET numeric format string (e.g. "G6") applied to output values.
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

GetStructuredReport(): Generates a structured (tabular) results report for display in the UI.

Generates a structured (tabular) results report for display in the UI.

public override List<Tuple<ReportItemType, string[]>> GetStructuredReport()
Public Overrides Function GetStructuredReport() As List(Of Tuple(Of ReportItemType, String()))

LoadData(List<XElement>): Restores the unit operation state from a list of XML elements previously produced by SaveData.

Restores the unit operation state from a list of XML elements previously produced by SaveData.

Parameter Type Description
data List<XElement> The list of XElement objects containing 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()

SaveData(): Serializes the unit operation state to a list of XML elements for persistence.

Serializes the unit operation state to a list of XML elements for persistence.

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

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.
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(): Redraws the editor of this object with the current values, if it is open.

Redraws the editor of this object with the current values, if it is open.

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 EditingForm_AirCooler f
Public f As EditingForm_AirCooler