diff --git a/DWSIM.Interfaces/Enums.vb b/DWSIM.Interfaces/Enums.vb
index ba1ad8773..87dfc874f 100644
--- a/DWSIM.Interfaces/Enums.vb
+++ b/DWSIM.Interfaces/Enums.vb
@@ -455,6 +455,8 @@ Namespace Enums
Switches = 14
Inputs = 15
None = 16
+ CleanPowerSources = 17
+ Electrolyzers = 18
End Enum
diff --git a/DWSIM.Interfaces/ISimulationObject.vb b/DWSIM.Interfaces/ISimulationObject.vb
index c48b6c76d..7e35bdb7c 100644
--- a/DWSIM.Interfaces/ISimulationObject.vb
+++ b/DWSIM.Interfaces/ISimulationObject.vb
@@ -242,4 +242,8 @@ Imports DWSIM.Interfaces.Enums
Function GetAsObject() As Object
+ ReadOnly Property IsSource As Boolean
+
+ ReadOnly Property IsSink As Boolean
+
End Interface
diff --git a/DWSIM.SharedClasses/BaseClass/SimulationObjectBaseClasses.vb b/DWSIM.SharedClasses/BaseClass/SimulationObjectBaseClasses.vb
index 3edada18a..d555ad641 100644
--- a/DWSIM.SharedClasses/BaseClass/SimulationObjectBaseClasses.vb
+++ b/DWSIM.SharedClasses/BaseClass/SimulationObjectBaseClasses.vb
@@ -1495,6 +1495,10 @@ Namespace UnitOperations
End Get
End Property
+ Public Overridable ReadOnly Property IsSource As Boolean = False Implements ISimulationObject.IsSource
+
+ Public Overridable ReadOnly Property IsSink As Boolean = False Implements ISimulationObject.IsSink
+
#End Region
End Class
diff --git a/DWSIM.UnitOperations/DWSIM.UnitOperations.vbproj b/DWSIM.UnitOperations/DWSIM.UnitOperations.vbproj
index 35369ee11..96e42b38d 100644
--- a/DWSIM.UnitOperations/DWSIM.UnitOperations.vbproj
+++ b/DWSIM.UnitOperations/DWSIM.UnitOperations.vbproj
@@ -96,6 +96,10 @@
False
..\DWSIM\References\Cureos.Numerics.dll
+
+ False
+ ..\DWSIM\References\Eto.Forms\Release\net45\Eto.dll
+
..\packages\NetOfficeFw.Excel.1.8.1\lib\net40\ExcelApi.dll
False
@@ -228,6 +232,12 @@
Form
+
+ EditingForm_AirCooler.vb
+
+
+ Form
+
EditingForm_AnalogGauge.vb
@@ -632,7 +642,10 @@
+
+
+
@@ -675,6 +688,9 @@
EditingForm_Adjust.vb
+
+ EditingForm_AirCooler.vb
+
EditingForm_AnalogGauge.vb
@@ -1258,6 +1274,11 @@
{a58eb237-f703-45cf-89f9-e8b91bff76c1}
DWSIM.DrawingTools.SkiaSharp.Extended
+
+ {5ba7546b-010c-4197-975e-f462bbea1ec4}
+ DWSIM.ExtensionMethods.Eto
+ False
+
{e4e37bfa-063f-4dba-a1bf-294d392c2ca4}
DWSIM.Inspector
@@ -1703,6 +1724,7 @@
+
diff --git a/DWSIM.UnitOperations/EditingForms/EditingForm_AirCooler.designer.vb b/DWSIM.UnitOperations/EditingForms/EditingForm_AirCooler.designer.vb
new file mode 100644
index 000000000..54649a328
--- /dev/null
+++ b/DWSIM.UnitOperations/EditingForms/EditingForm_AirCooler.designer.vb
@@ -0,0 +1,1412 @@
+
+Partial Class EditingForm_AirCooler
+
+ 'Form overrides dispose to clean up the component list.
+
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(EditingForm_AirCooler))
+ Me.GroupBox1 = New System.Windows.Forms.GroupBox()
+ Me.btnCreateAndConnectEnergy = New System.Windows.Forms.Button()
+ Me.btnDisconnectEnergy = New System.Windows.Forms.Button()
+ Me.btnCreateAndConnectOutlet1 = New System.Windows.Forms.Button()
+ Me.Label14 = New System.Windows.Forms.Label()
+ Me.btnCreateAndConnectInlet1 = New System.Windows.Forms.Button()
+ Me.cbEnergy = New System.Windows.Forms.ComboBox()
+ Me.btnDisconnectOutlet1 = New System.Windows.Forms.Button()
+ Me.btnDisconnect1 = New System.Windows.Forms.Button()
+ Me.Label7 = New System.Windows.Forms.Label()
+ Me.cbOutlet1 = New System.Windows.Forms.ComboBox()
+ Me.cbInlet1 = New System.Windows.Forms.ComboBox()
+ Me.Label19 = New System.Windows.Forms.Label()
+ Me.GroupBox5 = New System.Windows.Forms.GroupBox()
+ Me.lblTag = New System.Windows.Forms.TextBox()
+ Me.chkActive = New System.Windows.Forms.CheckBox()
+ Me.lblConnectedTo = New System.Windows.Forms.Label()
+ Me.lblStatus = New System.Windows.Forms.Label()
+ Me.Label13 = New System.Windows.Forms.Label()
+ Me.Label12 = New System.Windows.Forms.Label()
+ Me.Label11 = New System.Windows.Forms.Label()
+ Me.GroupBox4 = New System.Windows.Forms.GroupBox()
+ Me.rtbAnnotations = New Extended.Windows.Forms.RichTextBoxExtended()
+ Me.GroupBox2 = New System.Windows.Forms.GroupBox()
+ Me.TabControl1 = New System.Windows.Forms.TabControl()
+ Me.TabPage1 = New System.Windows.Forms.TabPage()
+ Me.Label1 = New System.Windows.Forms.Label()
+ Me.tbEff = New System.Windows.Forms.TextBox()
+ Me.Label9 = New System.Windows.Forms.Label()
+ Me.Label43 = New System.Windows.Forms.Label()
+ Me.tbOverallUA = New System.Windows.Forms.TextBox()
+ Me.Label44 = New System.Windows.Forms.Label()
+ Me.lblMaximumHeatExchange = New System.Windows.Forms.Label()
+ Me.tbMaxHeatEx = New System.Windows.Forms.TextBox()
+ Me.Label42 = New System.Windows.Forms.Label()
+ Me.lblHeatExchanged = New System.Windows.Forms.Label()
+ Me.tbHeatingChange = New System.Windows.Forms.TextBox()
+ Me.Label6 = New System.Windows.Forms.Label()
+ Me.lblOutletAirTemperature = New System.Windows.Forms.Label()
+ Me.tbOutletAirTemp = New System.Windows.Forms.TextBox()
+ Me.Label40 = New System.Windows.Forms.Label()
+ Me.lblInletAirPressure = New System.Windows.Forms.Label()
+ Me.tbInletAirPre = New System.Windows.Forms.TextBox()
+ Me.Label38 = New System.Windows.Forms.Label()
+ Me.lblInletAirTemperature = New System.Windows.Forms.Label()
+ Me.tbInletAirTemp = New System.Windows.Forms.TextBox()
+ Me.Label36 = New System.Windows.Forms.Label()
+ Me.lblOutletTemperature = New System.Windows.Forms.Label()
+ Me.lblPressureDrop = New System.Windows.Forms.Label()
+ Me.tbOutletTemperature = New System.Windows.Forms.TextBox()
+ Me.Label2 = New System.Windows.Forms.Label()
+ Me.tbPressureDrop = New System.Windows.Forms.TextBox()
+ Me.Label3 = New System.Windows.Forms.Label()
+ Me.cbCalcMode = New System.Windows.Forms.ComboBox()
+ Me.Label8 = New System.Windows.Forms.Label()
+ Me.TabPage2 = New System.Windows.Forms.TabPage()
+ Me.lbuTubeThermalCond = New System.Windows.Forms.Label()
+ Me.tbTubeThermalCond = New System.Windows.Forms.TextBox()
+ Me.tbTubeDi = New System.Windows.Forms.TextBox()
+ Me.Label5 = New System.Windows.Forms.Label()
+ Me.Label32 = New System.Windows.Forms.Label()
+ Me.lbTubeRoughness = New System.Windows.Forms.Label()
+ Me.lbuTubeDi = New System.Windows.Forms.Label()
+ Me.tbTubeRoughness = New System.Windows.Forms.TextBox()
+ Me.Label30 = New System.Windows.Forms.Label()
+ Me.Label4 = New System.Windows.Forms.Label()
+ Me.tbTubeDe = New System.Windows.Forms.TextBox()
+ Me.lbuTubePitch = New System.Windows.Forms.Label()
+ Me.lbTubeDe = New System.Windows.Forms.Label()
+ Me.tbTubePitch = New System.Windows.Forms.TextBox()
+ Me.Label28 = New System.Windows.Forms.Label()
+ Me.Label20 = New System.Windows.Forms.Label()
+ Me.tbTubeLength = New System.Windows.Forms.TextBox()
+ Me.tbNumberOfTubesPerShell = New System.Windows.Forms.TextBox()
+ Me.lbuTubeLength = New System.Windows.Forms.Label()
+ Me.Label22 = New System.Windows.Forms.Label()
+ Me.Label26 = New System.Windows.Forms.Label()
+ Me.tbTubePassesPerShell = New System.Windows.Forms.TextBox()
+ Me.tbTubeFoulingFactor = New System.Windows.Forms.TextBox()
+ Me.Label24 = New System.Windows.Forms.Label()
+ Me.lbuTubeFoulingFactor = New System.Windows.Forms.Label()
+ Me.TabPage3 = New System.Windows.Forms.TabPage()
+ Me.lblElectricalLoad = New System.Windows.Forms.Label()
+ Me.tbElecLoad = New System.Windows.Forms.TextBox()
+ Me.Label34 = New System.Windows.Forms.Label()
+ Me.Label29 = New System.Windows.Forms.Label()
+ Me.tbElecConv = New System.Windows.Forms.TextBox()
+ Me.Label31 = New System.Windows.Forms.Label()
+ Me.lblActualAirFlow = New System.Windows.Forms.Label()
+ Me.tbActualAF = New System.Windows.Forms.TextBox()
+ Me.Label27 = New System.Windows.Forms.Label()
+ Me.Label21 = New System.Windows.Forms.Label()
+ Me.tbActualR = New System.Windows.Forms.TextBox()
+ Me.Label23 = New System.Windows.Forms.Label()
+ Me.lblRefAirFlow = New System.Windows.Forms.Label()
+ Me.tbRefAF = New System.Windows.Forms.TextBox()
+ Me.Label18 = New System.Windows.Forms.Label()
+ Me.Label15 = New System.Windows.Forms.Label()
+ Me.tbRefR = New System.Windows.Forms.TextBox()
+ Me.Label16 = New System.Windows.Forms.Label()
+ Me.ToolTipChangeTag = New System.Windows.Forms.ToolTip(Me.components)
+ Me.GroupBox1.SuspendLayout()
+ Me.GroupBox5.SuspendLayout()
+ Me.GroupBox4.SuspendLayout()
+ Me.GroupBox2.SuspendLayout()
+ Me.TabControl1.SuspendLayout()
+ Me.TabPage1.SuspendLayout()
+ Me.TabPage2.SuspendLayout()
+ Me.TabPage3.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'GroupBox1
+ '
+ Me.GroupBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.GroupBox1.Controls.Add(Me.btnCreateAndConnectEnergy)
+ Me.GroupBox1.Controls.Add(Me.btnDisconnectEnergy)
+ Me.GroupBox1.Controls.Add(Me.btnCreateAndConnectOutlet1)
+ Me.GroupBox1.Controls.Add(Me.Label14)
+ Me.GroupBox1.Controls.Add(Me.btnCreateAndConnectInlet1)
+ Me.GroupBox1.Controls.Add(Me.cbEnergy)
+ Me.GroupBox1.Controls.Add(Me.btnDisconnectOutlet1)
+ Me.GroupBox1.Controls.Add(Me.btnDisconnect1)
+ Me.GroupBox1.Controls.Add(Me.Label7)
+ Me.GroupBox1.Controls.Add(Me.cbOutlet1)
+ Me.GroupBox1.Controls.Add(Me.cbInlet1)
+ Me.GroupBox1.Controls.Add(Me.Label19)
+ Me.GroupBox1.Location = New System.Drawing.Point(7, 105)
+ Me.GroupBox1.Name = "GroupBox1"
+ Me.GroupBox1.Size = New System.Drawing.Size(403, 113)
+ Me.GroupBox1.TabIndex = 12
+ Me.GroupBox1.TabStop = False
+ Me.GroupBox1.Text = "Connections"
+ '
+ 'btnCreateAndConnectEnergy
+ '
+ Me.btnCreateAndConnectEnergy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.btnCreateAndConnectEnergy.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.btnCreateAndConnectEnergy.Image = CType(resources.GetObject("btnCreateAndConnectEnergy.Image"), System.Drawing.Image)
+ Me.btnCreateAndConnectEnergy.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.btnCreateAndConnectEnergy.Location = New System.Drawing.Point(347, 77)
+ Me.btnCreateAndConnectEnergy.Name = "btnCreateAndConnectEnergy"
+ Me.btnCreateAndConnectEnergy.Size = New System.Drawing.Size(21, 21)
+ Me.btnCreateAndConnectEnergy.TabIndex = 42
+ Me.ToolTipValues.SetToolTip(Me.btnCreateAndConnectEnergy, "Criar e Conectar")
+ Me.btnCreateAndConnectEnergy.UseVisualStyleBackColor = True
+ '
+ 'btnDisconnectEnergy
+ '
+ Me.btnDisconnectEnergy.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.btnDisconnectEnergy.Image = CType(resources.GetObject("btnDisconnectEnergy.Image"), System.Drawing.Image)
+ Me.btnDisconnectEnergy.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.btnDisconnectEnergy.Location = New System.Drawing.Point(374, 77)
+ Me.btnDisconnectEnergy.Name = "btnDisconnectEnergy"
+ Me.btnDisconnectEnergy.Size = New System.Drawing.Size(21, 21)
+ Me.btnDisconnectEnergy.TabIndex = 23
+ Me.ToolTipValues.SetToolTip(Me.btnDisconnectEnergy, "Desconectar")
+ Me.btnDisconnectEnergy.UseVisualStyleBackColor = True
+ '
+ 'btnCreateAndConnectOutlet1
+ '
+ Me.btnCreateAndConnectOutlet1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.btnCreateAndConnectOutlet1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.btnCreateAndConnectOutlet1.Image = CType(resources.GetObject("btnCreateAndConnectOutlet1.Image"), System.Drawing.Image)
+ Me.btnCreateAndConnectOutlet1.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.btnCreateAndConnectOutlet1.Location = New System.Drawing.Point(347, 50)
+ Me.btnCreateAndConnectOutlet1.Name = "btnCreateAndConnectOutlet1"
+ Me.btnCreateAndConnectOutlet1.Size = New System.Drawing.Size(21, 21)
+ Me.btnCreateAndConnectOutlet1.TabIndex = 41
+ Me.ToolTipValues.SetToolTip(Me.btnCreateAndConnectOutlet1, "Criar e Conectar")
+ Me.btnCreateAndConnectOutlet1.UseVisualStyleBackColor = True
+ '
+ 'Label14
+ '
+ Me.Label14.AutoSize = True
+ Me.Label14.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label14.Location = New System.Drawing.Point(9, 80)
+ Me.Label14.Name = "Label14"
+ Me.Label14.Size = New System.Drawing.Size(76, 13)
+ Me.Label14.TabIndex = 22
+ Me.Label14.Text = "Energy Stream"
+ '
+ 'btnCreateAndConnectInlet1
+ '
+ Me.btnCreateAndConnectInlet1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.btnCreateAndConnectInlet1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.btnCreateAndConnectInlet1.Image = CType(resources.GetObject("btnCreateAndConnectInlet1.Image"), System.Drawing.Image)
+ Me.btnCreateAndConnectInlet1.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.btnCreateAndConnectInlet1.Location = New System.Drawing.Point(347, 23)
+ Me.btnCreateAndConnectInlet1.Name = "btnCreateAndConnectInlet1"
+ Me.btnCreateAndConnectInlet1.Size = New System.Drawing.Size(21, 21)
+ Me.btnCreateAndConnectInlet1.TabIndex = 40
+ Me.ToolTipValues.SetToolTip(Me.btnCreateAndConnectInlet1, "Criar e Conectar")
+ Me.btnCreateAndConnectInlet1.UseVisualStyleBackColor = True
+ '
+ 'cbEnergy
+ '
+ Me.cbEnergy.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.cbEnergy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+ Me.cbEnergy.FormattingEnabled = True
+ Me.cbEnergy.Location = New System.Drawing.Point(147, 77)
+ Me.cbEnergy.Name = "cbEnergy"
+ Me.cbEnergy.Size = New System.Drawing.Size(194, 21)
+ Me.cbEnergy.TabIndex = 21
+ '
+ 'btnDisconnectOutlet1
+ '
+ Me.btnDisconnectOutlet1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.btnDisconnectOutlet1.Image = CType(resources.GetObject("btnDisconnectOutlet1.Image"), System.Drawing.Image)
+ Me.btnDisconnectOutlet1.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.btnDisconnectOutlet1.Location = New System.Drawing.Point(374, 50)
+ Me.btnDisconnectOutlet1.Name = "btnDisconnectOutlet1"
+ Me.btnDisconnectOutlet1.Size = New System.Drawing.Size(21, 21)
+ Me.btnDisconnectOutlet1.TabIndex = 20
+ Me.ToolTipValues.SetToolTip(Me.btnDisconnectOutlet1, "Desconectar")
+ Me.btnDisconnectOutlet1.UseVisualStyleBackColor = True
+ '
+ 'btnDisconnect1
+ '
+ Me.btnDisconnect1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.btnDisconnect1.Image = CType(resources.GetObject("btnDisconnect1.Image"), System.Drawing.Image)
+ Me.btnDisconnect1.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.btnDisconnect1.Location = New System.Drawing.Point(374, 23)
+ Me.btnDisconnect1.Name = "btnDisconnect1"
+ Me.btnDisconnect1.Size = New System.Drawing.Size(21, 21)
+ Me.btnDisconnect1.TabIndex = 14
+ Me.ToolTipValues.SetToolTip(Me.btnDisconnect1, "Desconectar")
+ Me.btnDisconnect1.UseVisualStyleBackColor = True
+ '
+ 'Label7
+ '
+ Me.Label7.AutoSize = True
+ Me.Label7.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label7.Location = New System.Drawing.Point(9, 53)
+ Me.Label7.Name = "Label7"
+ Me.Label7.Size = New System.Drawing.Size(71, 13)
+ Me.Label7.TabIndex = 13
+ Me.Label7.Text = "Outlet Stream"
+ '
+ 'cbOutlet1
+ '
+ Me.cbOutlet1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.cbOutlet1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+ Me.cbOutlet1.FormattingEnabled = True
+ Me.cbOutlet1.Location = New System.Drawing.Point(147, 50)
+ Me.cbOutlet1.Name = "cbOutlet1"
+ Me.cbOutlet1.Size = New System.Drawing.Size(194, 21)
+ Me.cbOutlet1.TabIndex = 8
+ '
+ 'cbInlet1
+ '
+ Me.cbInlet1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.cbInlet1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+ Me.cbInlet1.FormattingEnabled = True
+ Me.cbInlet1.Location = New System.Drawing.Point(147, 23)
+ Me.cbInlet1.Name = "cbInlet1"
+ Me.cbInlet1.Size = New System.Drawing.Size(194, 21)
+ Me.cbInlet1.TabIndex = 1
+ '
+ 'Label19
+ '
+ Me.Label19.AutoSize = True
+ Me.Label19.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label19.Location = New System.Drawing.Point(8, 26)
+ Me.Label19.Name = "Label19"
+ Me.Label19.Size = New System.Drawing.Size(63, 13)
+ Me.Label19.TabIndex = 0
+ Me.Label19.Text = "Inlet Stream"
+ '
+ 'GroupBox5
+ '
+ Me.GroupBox5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.GroupBox5.Controls.Add(Me.lblTag)
+ Me.GroupBox5.Controls.Add(Me.chkActive)
+ Me.GroupBox5.Controls.Add(Me.lblConnectedTo)
+ Me.GroupBox5.Controls.Add(Me.lblStatus)
+ Me.GroupBox5.Controls.Add(Me.Label13)
+ Me.GroupBox5.Controls.Add(Me.Label12)
+ Me.GroupBox5.Controls.Add(Me.Label11)
+ Me.GroupBox5.Location = New System.Drawing.Point(7, 5)
+ Me.GroupBox5.Name = "GroupBox5"
+ Me.GroupBox5.Size = New System.Drawing.Size(403, 98)
+ Me.GroupBox5.TabIndex = 11
+ Me.GroupBox5.TabStop = False
+ Me.GroupBox5.Text = "General Info"
+ '
+ 'lblTag
+ '
+ Me.lblTag.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblTag.Location = New System.Drawing.Point(133, 19)
+ Me.lblTag.Name = "lblTag"
+ Me.lblTag.Size = New System.Drawing.Size(262, 20)
+ Me.lblTag.TabIndex = 24
+ '
+ 'chkActive
+ '
+ Me.chkActive.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.chkActive.Appearance = System.Windows.Forms.Appearance.Button
+ Me.chkActive.Image = Global.DWSIM.UnitOperations.My.Resources.Resources.bullet_tick
+ Me.chkActive.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.chkActive.Location = New System.Drawing.Point(374, 43)
+ Me.chkActive.Name = "chkActive"
+ Me.chkActive.Size = New System.Drawing.Size(21, 21)
+ Me.chkActive.TabIndex = 21
+ Me.ToolTipValues.SetToolTip(Me.chkActive, "Ativo/Inativo")
+ Me.chkActive.UseVisualStyleBackColor = True
+ '
+ 'lblConnectedTo
+ '
+ Me.lblConnectedTo.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblConnectedTo.AutoSize = True
+ Me.lblConnectedTo.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lblConnectedTo.Location = New System.Drawing.Point(132, 72)
+ Me.lblConnectedTo.Name = "lblConnectedTo"
+ Me.lblConnectedTo.Size = New System.Drawing.Size(38, 13)
+ Me.lblConnectedTo.TabIndex = 20
+ Me.lblConnectedTo.Text = "Objeto"
+ '
+ 'lblStatus
+ '
+ Me.lblStatus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblStatus.AutoSize = True
+ Me.lblStatus.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lblStatus.Location = New System.Drawing.Point(132, 47)
+ Me.lblStatus.Name = "lblStatus"
+ Me.lblStatus.Size = New System.Drawing.Size(38, 13)
+ Me.lblStatus.TabIndex = 19
+ Me.lblStatus.Text = "Objeto"
+ '
+ 'Label13
+ '
+ Me.Label13.AutoSize = True
+ Me.Label13.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label13.Location = New System.Drawing.Point(9, 72)
+ Me.Label13.Name = "Label13"
+ Me.Label13.Size = New System.Drawing.Size(51, 13)
+ Me.Label13.TabIndex = 17
+ Me.Label13.Text = "Linked to"
+ '
+ 'Label12
+ '
+ Me.Label12.AutoSize = True
+ Me.Label12.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label12.Location = New System.Drawing.Point(9, 47)
+ Me.Label12.Name = "Label12"
+ Me.Label12.Size = New System.Drawing.Size(37, 13)
+ Me.Label12.TabIndex = 16
+ Me.Label12.Text = "Status"
+ '
+ 'Label11
+ '
+ Me.Label11.AutoSize = True
+ Me.Label11.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label11.Location = New System.Drawing.Point(9, 22)
+ Me.Label11.Name = "Label11"
+ Me.Label11.Size = New System.Drawing.Size(38, 13)
+ Me.Label11.TabIndex = 14
+ Me.Label11.Text = "Object"
+ '
+ 'GroupBox4
+ '
+ Me.GroupBox4.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.GroupBox4.Controls.Add(Me.rtbAnnotations)
+ Me.GroupBox4.Location = New System.Drawing.Point(7, 582)
+ Me.GroupBox4.Name = "GroupBox4"
+ Me.GroupBox4.Size = New System.Drawing.Size(403, 156)
+ Me.GroupBox4.TabIndex = 10
+ Me.GroupBox4.TabStop = False
+ Me.GroupBox4.Text = "Notes"
+ '
+ 'rtbAnnotations
+ '
+ Me.rtbAnnotations.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.rtbAnnotations.Location = New System.Drawing.Point(3, 16)
+ Me.rtbAnnotations.Name = "rtbAnnotations"
+ Me.rtbAnnotations.Rtf = "{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1046{\fonttbl{\f0\fnil Microsoft " &
+ "Sans Serif;}}" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "{\*\generator Riched20 10.0.18362}\viewkind4\uc1 " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "\pard\f0\fs17\" &
+ "par" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "}" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10)
+ Me.rtbAnnotations.ShowRedo = False
+ Me.rtbAnnotations.ShowUndo = False
+ Me.rtbAnnotations.Size = New System.Drawing.Size(397, 137)
+ Me.rtbAnnotations.TabIndex = 0
+ '
+ 'GroupBox2
+ '
+ Me.GroupBox2.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.GroupBox2.Controls.Add(Me.TabControl1)
+ Me.GroupBox2.Location = New System.Drawing.Point(7, 221)
+ Me.GroupBox2.Name = "GroupBox2"
+ Me.GroupBox2.Size = New System.Drawing.Size(403, 361)
+ Me.GroupBox2.TabIndex = 13
+ Me.GroupBox2.TabStop = False
+ Me.GroupBox2.Text = "Calculation Parameters"
+ '
+ 'TabControl1
+ '
+ Me.TabControl1.Controls.Add(Me.TabPage1)
+ Me.TabControl1.Controls.Add(Me.TabPage2)
+ Me.TabControl1.Controls.Add(Me.TabPage3)
+ Me.TabControl1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.TabControl1.Location = New System.Drawing.Point(3, 16)
+ Me.TabControl1.Name = "TabControl1"
+ Me.TabControl1.SelectedIndex = 0
+ Me.TabControl1.Size = New System.Drawing.Size(397, 342)
+ Me.TabControl1.TabIndex = 0
+ '
+ 'TabPage1
+ '
+ Me.TabPage1.Controls.Add(Me.Label1)
+ Me.TabPage1.Controls.Add(Me.tbEff)
+ Me.TabPage1.Controls.Add(Me.Label9)
+ Me.TabPage1.Controls.Add(Me.Label43)
+ Me.TabPage1.Controls.Add(Me.tbOverallUA)
+ Me.TabPage1.Controls.Add(Me.Label44)
+ Me.TabPage1.Controls.Add(Me.lblMaximumHeatExchange)
+ Me.TabPage1.Controls.Add(Me.tbMaxHeatEx)
+ Me.TabPage1.Controls.Add(Me.Label42)
+ Me.TabPage1.Controls.Add(Me.lblHeatExchanged)
+ Me.TabPage1.Controls.Add(Me.tbHeatingChange)
+ Me.TabPage1.Controls.Add(Me.Label6)
+ Me.TabPage1.Controls.Add(Me.lblOutletAirTemperature)
+ Me.TabPage1.Controls.Add(Me.tbOutletAirTemp)
+ Me.TabPage1.Controls.Add(Me.Label40)
+ Me.TabPage1.Controls.Add(Me.lblInletAirPressure)
+ Me.TabPage1.Controls.Add(Me.tbInletAirPre)
+ Me.TabPage1.Controls.Add(Me.Label38)
+ Me.TabPage1.Controls.Add(Me.lblInletAirTemperature)
+ Me.TabPage1.Controls.Add(Me.tbInletAirTemp)
+ Me.TabPage1.Controls.Add(Me.Label36)
+ Me.TabPage1.Controls.Add(Me.lblOutletTemperature)
+ Me.TabPage1.Controls.Add(Me.lblPressureDrop)
+ Me.TabPage1.Controls.Add(Me.tbOutletTemperature)
+ Me.TabPage1.Controls.Add(Me.Label2)
+ Me.TabPage1.Controls.Add(Me.tbPressureDrop)
+ Me.TabPage1.Controls.Add(Me.Label3)
+ Me.TabPage1.Controls.Add(Me.cbCalcMode)
+ Me.TabPage1.Controls.Add(Me.Label8)
+ Me.TabPage1.Location = New System.Drawing.Point(4, 22)
+ Me.TabPage1.Name = "TabPage1"
+ Me.TabPage1.Padding = New System.Windows.Forms.Padding(3)
+ Me.TabPage1.Size = New System.Drawing.Size(389, 316)
+ Me.TabPage1.TabIndex = 0
+ Me.TabPage1.Text = "Main"
+ Me.TabPage1.UseVisualStyleBackColor = True
+ '
+ 'Label1
+ '
+ Me.Label1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Label1.AutoSize = True
+ Me.Label1.Location = New System.Drawing.Point(324, 287)
+ Me.Label1.Name = "Label1"
+ Me.Label1.Size = New System.Drawing.Size(15, 13)
+ Me.Label1.TabIndex = 70
+ Me.Label1.Text = "%"
+ '
+ 'tbEff
+ '
+ Me.tbEff.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbEff.Location = New System.Drawing.Point(151, 284)
+ Me.tbEff.Name = "tbEff"
+ Me.tbEff.ReadOnly = True
+ Me.tbEff.Size = New System.Drawing.Size(167, 20)
+ Me.tbEff.TabIndex = 69
+ Me.tbEff.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label9
+ '
+ Me.Label9.AutoSize = True
+ Me.Label9.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label9.Location = New System.Drawing.Point(12, 287)
+ Me.Label9.Name = "Label9"
+ Me.Label9.Size = New System.Drawing.Size(107, 13)
+ Me.Label9.TabIndex = 68
+ Me.Label9.Text = "Exchanger Efficiency"
+ '
+ 'Label43
+ '
+ Me.Label43.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Label43.AutoSize = True
+ Me.Label43.Location = New System.Drawing.Point(324, 209)
+ Me.Label43.Name = "Label43"
+ Me.Label43.Size = New System.Drawing.Size(30, 13)
+ Me.Label43.TabIndex = 67
+ Me.Label43.Text = "W/K"
+ '
+ 'tbOverallUA
+ '
+ Me.tbOverallUA.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbOverallUA.Location = New System.Drawing.Point(151, 206)
+ Me.tbOverallUA.Name = "tbOverallUA"
+ Me.tbOverallUA.Size = New System.Drawing.Size(167, 20)
+ Me.tbOverallUA.TabIndex = 66
+ Me.tbOverallUA.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label44
+ '
+ Me.Label44.AutoSize = True
+ Me.Label44.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label44.Location = New System.Drawing.Point(12, 209)
+ Me.Label44.Name = "Label44"
+ Me.Label44.Size = New System.Drawing.Size(58, 13)
+ Me.Label44.TabIndex = 65
+ Me.Label44.Text = "Overall UA"
+ '
+ 'lblMaximumHeatExchange
+ '
+ Me.lblMaximumHeatExchange.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblMaximumHeatExchange.AutoSize = True
+ Me.lblMaximumHeatExchange.Location = New System.Drawing.Point(324, 261)
+ Me.lblMaximumHeatExchange.Name = "lblMaximumHeatExchange"
+ Me.lblMaximumHeatExchange.Size = New System.Drawing.Size(45, 13)
+ Me.lblMaximumHeatExchange.TabIndex = 64
+ Me.lblMaximumHeatExchange.Text = "Label41"
+ '
+ 'tbMaxHeatEx
+ '
+ Me.tbMaxHeatEx.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbMaxHeatEx.Location = New System.Drawing.Point(151, 258)
+ Me.tbMaxHeatEx.Name = "tbMaxHeatEx"
+ Me.tbMaxHeatEx.ReadOnly = True
+ Me.tbMaxHeatEx.Size = New System.Drawing.Size(167, 20)
+ Me.tbMaxHeatEx.TabIndex = 63
+ Me.tbMaxHeatEx.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label42
+ '
+ Me.Label42.AutoSize = True
+ Me.Label42.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label42.Location = New System.Drawing.Point(12, 261)
+ Me.Label42.Name = "Label42"
+ Me.Label42.Size = New System.Drawing.Size(128, 13)
+ Me.Label42.TabIndex = 62
+ Me.Label42.Text = "Maximum Heat Exchange"
+ '
+ 'lblHeatExchanged
+ '
+ Me.lblHeatExchanged.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblHeatExchanged.AutoSize = True
+ Me.lblHeatExchanged.Location = New System.Drawing.Point(324, 235)
+ Me.lblHeatExchanged.Name = "lblHeatExchanged"
+ Me.lblHeatExchanged.Size = New System.Drawing.Size(45, 13)
+ Me.lblHeatExchanged.TabIndex = 61
+ Me.lblHeatExchanged.Text = "Label10"
+ '
+ 'tbHeatingChange
+ '
+ Me.tbHeatingChange.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbHeatingChange.Location = New System.Drawing.Point(151, 232)
+ Me.tbHeatingChange.Name = "tbHeatingChange"
+ Me.tbHeatingChange.ReadOnly = True
+ Me.tbHeatingChange.Size = New System.Drawing.Size(167, 20)
+ Me.tbHeatingChange.TabIndex = 60
+ Me.tbHeatingChange.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label6
+ '
+ Me.Label6.AutoSize = True
+ Me.Label6.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label6.Location = New System.Drawing.Point(12, 235)
+ Me.Label6.Name = "Label6"
+ Me.Label6.Size = New System.Drawing.Size(87, 13)
+ Me.Label6.TabIndex = 59
+ Me.Label6.Text = "Heat Exchanged"
+ '
+ 'lblOutletAirTemperature
+ '
+ Me.lblOutletAirTemperature.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblOutletAirTemperature.AutoSize = True
+ Me.lblOutletAirTemperature.Location = New System.Drawing.Point(324, 169)
+ Me.lblOutletAirTemperature.Name = "lblOutletAirTemperature"
+ Me.lblOutletAirTemperature.Size = New System.Drawing.Size(45, 13)
+ Me.lblOutletAirTemperature.TabIndex = 58
+ Me.lblOutletAirTemperature.Text = "Label39"
+ '
+ 'tbOutletAirTemp
+ '
+ Me.tbOutletAirTemp.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbOutletAirTemp.Location = New System.Drawing.Point(151, 166)
+ Me.tbOutletAirTemp.Name = "tbOutletAirTemp"
+ Me.tbOutletAirTemp.ReadOnly = True
+ Me.tbOutletAirTemp.Size = New System.Drawing.Size(167, 20)
+ Me.tbOutletAirTemp.TabIndex = 57
+ Me.tbOutletAirTemp.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label40
+ '
+ Me.Label40.AutoSize = True
+ Me.Label40.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label40.Location = New System.Drawing.Point(12, 169)
+ Me.Label40.Name = "Label40"
+ Me.Label40.Size = New System.Drawing.Size(113, 13)
+ Me.Label40.TabIndex = 56
+ Me.Label40.Text = "Outlet Air Temperature"
+ '
+ 'lblInletAirPressure
+ '
+ Me.lblInletAirPressure.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblInletAirPressure.AutoSize = True
+ Me.lblInletAirPressure.Location = New System.Drawing.Point(324, 143)
+ Me.lblInletAirPressure.Name = "lblInletAirPressure"
+ Me.lblInletAirPressure.Size = New System.Drawing.Size(45, 13)
+ Me.lblInletAirPressure.TabIndex = 55
+ Me.lblInletAirPressure.Text = "Label37"
+ '
+ 'tbInletAirPre
+ '
+ Me.tbInletAirPre.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbInletAirPre.Location = New System.Drawing.Point(151, 140)
+ Me.tbInletAirPre.Name = "tbInletAirPre"
+ Me.tbInletAirPre.Size = New System.Drawing.Size(167, 20)
+ Me.tbInletAirPre.TabIndex = 54
+ Me.tbInletAirPre.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label38
+ '
+ Me.Label38.AutoSize = True
+ Me.Label38.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label38.Location = New System.Drawing.Point(12, 143)
+ Me.Label38.Name = "Label38"
+ Me.Label38.Size = New System.Drawing.Size(86, 13)
+ Me.Label38.TabIndex = 53
+ Me.Label38.Text = "Inlet Air Pressure"
+ '
+ 'lblInletAirTemperature
+ '
+ Me.lblInletAirTemperature.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblInletAirTemperature.AutoSize = True
+ Me.lblInletAirTemperature.Location = New System.Drawing.Point(324, 117)
+ Me.lblInletAirTemperature.Name = "lblInletAirTemperature"
+ Me.lblInletAirTemperature.Size = New System.Drawing.Size(45, 13)
+ Me.lblInletAirTemperature.TabIndex = 52
+ Me.lblInletAirTemperature.Text = "Label35"
+ '
+ 'tbInletAirTemp
+ '
+ Me.tbInletAirTemp.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbInletAirTemp.Location = New System.Drawing.Point(151, 114)
+ Me.tbInletAirTemp.Name = "tbInletAirTemp"
+ Me.tbInletAirTemp.Size = New System.Drawing.Size(167, 20)
+ Me.tbInletAirTemp.TabIndex = 51
+ Me.tbInletAirTemp.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label36
+ '
+ Me.Label36.AutoSize = True
+ Me.Label36.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label36.Location = New System.Drawing.Point(12, 117)
+ Me.Label36.Name = "Label36"
+ Me.Label36.Size = New System.Drawing.Size(105, 13)
+ Me.Label36.TabIndex = 50
+ Me.Label36.Text = "Inlet Air Temperature"
+ '
+ 'lblOutletTemperature
+ '
+ Me.lblOutletTemperature.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblOutletTemperature.AutoSize = True
+ Me.lblOutletTemperature.Location = New System.Drawing.Point(324, 79)
+ Me.lblOutletTemperature.Name = "lblOutletTemperature"
+ Me.lblOutletTemperature.Size = New System.Drawing.Size(39, 13)
+ Me.lblOutletTemperature.TabIndex = 48
+ Me.lblOutletTemperature.Text = "Label9"
+ '
+ 'lblPressureDrop
+ '
+ Me.lblPressureDrop.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblPressureDrop.AutoSize = True
+ Me.lblPressureDrop.Location = New System.Drawing.Point(324, 53)
+ Me.lblPressureDrop.Name = "lblPressureDrop"
+ Me.lblPressureDrop.Size = New System.Drawing.Size(39, 13)
+ Me.lblPressureDrop.TabIndex = 47
+ Me.lblPressureDrop.Text = "Label1"
+ '
+ 'tbOutletTemperature
+ '
+ Me.tbOutletTemperature.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbOutletTemperature.Location = New System.Drawing.Point(151, 76)
+ Me.tbOutletTemperature.Name = "tbOutletTemperature"
+ Me.tbOutletTemperature.Size = New System.Drawing.Size(167, 20)
+ Me.tbOutletTemperature.TabIndex = 44
+ Me.tbOutletTemperature.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label2
+ '
+ Me.Label2.AutoSize = True
+ Me.Label2.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label2.Location = New System.Drawing.Point(12, 79)
+ Me.Label2.Name = "Label2"
+ Me.Label2.Size = New System.Drawing.Size(123, 13)
+ Me.Label2.TabIndex = 43
+ Me.Label2.Text = "Outlet Fluid Temperature"
+ '
+ 'tbPressureDrop
+ '
+ Me.tbPressureDrop.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbPressureDrop.Location = New System.Drawing.Point(151, 50)
+ Me.tbPressureDrop.Name = "tbPressureDrop"
+ Me.tbPressureDrop.Size = New System.Drawing.Size(167, 20)
+ Me.tbPressureDrop.TabIndex = 42
+ Me.tbPressureDrop.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label3
+ '
+ Me.Label3.AutoSize = True
+ Me.Label3.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label3.Location = New System.Drawing.Point(12, 53)
+ Me.Label3.Name = "Label3"
+ Me.Label3.Size = New System.Drawing.Size(99, 13)
+ Me.Label3.TabIndex = 41
+ Me.Label3.Text = "Fluid Pressure Drop"
+ '
+ 'cbCalcMode
+ '
+ Me.cbCalcMode.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.cbCalcMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+ Me.cbCalcMode.FormattingEnabled = True
+ Me.cbCalcMode.Items.AddRange(New Object() {"Specify Outlet Temperature", "Specify Tube Geometry", "Specify Overall UA"})
+ Me.cbCalcMode.Location = New System.Drawing.Point(151, 15)
+ Me.cbCalcMode.Name = "cbCalcMode"
+ Me.cbCalcMode.Size = New System.Drawing.Size(218, 21)
+ Me.cbCalcMode.TabIndex = 40
+ '
+ 'Label8
+ '
+ Me.Label8.AutoSize = True
+ Me.Label8.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label8.Location = New System.Drawing.Point(12, 19)
+ Me.Label8.Name = "Label8"
+ Me.Label8.Size = New System.Drawing.Size(86, 13)
+ Me.Label8.TabIndex = 39
+ Me.Label8.Text = "Calculation Type"
+ '
+ 'TabPage2
+ '
+ Me.TabPage2.Controls.Add(Me.lbuTubeThermalCond)
+ Me.TabPage2.Controls.Add(Me.tbTubeThermalCond)
+ Me.TabPage2.Controls.Add(Me.tbTubeDi)
+ Me.TabPage2.Controls.Add(Me.Label5)
+ Me.TabPage2.Controls.Add(Me.Label32)
+ Me.TabPage2.Controls.Add(Me.lbTubeRoughness)
+ Me.TabPage2.Controls.Add(Me.lbuTubeDi)
+ Me.TabPage2.Controls.Add(Me.tbTubeRoughness)
+ Me.TabPage2.Controls.Add(Me.Label30)
+ Me.TabPage2.Controls.Add(Me.Label4)
+ Me.TabPage2.Controls.Add(Me.tbTubeDe)
+ Me.TabPage2.Controls.Add(Me.lbuTubePitch)
+ Me.TabPage2.Controls.Add(Me.lbTubeDe)
+ Me.TabPage2.Controls.Add(Me.tbTubePitch)
+ Me.TabPage2.Controls.Add(Me.Label28)
+ Me.TabPage2.Controls.Add(Me.Label20)
+ Me.TabPage2.Controls.Add(Me.tbTubeLength)
+ Me.TabPage2.Controls.Add(Me.tbNumberOfTubesPerShell)
+ Me.TabPage2.Controls.Add(Me.lbuTubeLength)
+ Me.TabPage2.Controls.Add(Me.Label22)
+ Me.TabPage2.Controls.Add(Me.Label26)
+ Me.TabPage2.Controls.Add(Me.tbTubePassesPerShell)
+ Me.TabPage2.Controls.Add(Me.tbTubeFoulingFactor)
+ Me.TabPage2.Controls.Add(Me.Label24)
+ Me.TabPage2.Controls.Add(Me.lbuTubeFoulingFactor)
+ Me.TabPage2.Location = New System.Drawing.Point(4, 22)
+ Me.TabPage2.Name = "TabPage2"
+ Me.TabPage2.Padding = New System.Windows.Forms.Padding(3)
+ Me.TabPage2.Size = New System.Drawing.Size(389, 316)
+ Me.TabPage2.TabIndex = 1
+ Me.TabPage2.Text = "Tubes"
+ Me.TabPage2.UseVisualStyleBackColor = True
+ '
+ 'lbuTubeThermalCond
+ '
+ Me.lbuTubeThermalCond.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lbuTubeThermalCond.AutoSize = True
+ Me.lbuTubeThermalCond.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lbuTubeThermalCond.Location = New System.Drawing.Point(311, 146)
+ Me.lbuTubeThermalCond.Name = "lbuTubeThermalCond"
+ Me.lbuTubeThermalCond.Size = New System.Drawing.Size(45, 13)
+ Me.lbuTubeThermalCond.TabIndex = 60
+ Me.lbuTubeThermalCond.Text = "Label31"
+ '
+ 'tbTubeThermalCond
+ '
+ Me.tbTubeThermalCond.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbTubeThermalCond.Location = New System.Drawing.Point(161, 143)
+ Me.tbTubeThermalCond.Name = "tbTubeThermalCond"
+ Me.tbTubeThermalCond.Size = New System.Drawing.Size(144, 20)
+ Me.tbTubeThermalCond.TabIndex = 59
+ Me.tbTubeThermalCond.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'tbTubeDi
+ '
+ Me.tbTubeDi.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbTubeDi.Location = New System.Drawing.Point(161, 13)
+ Me.tbTubeDi.Name = "tbTubeDi"
+ Me.tbTubeDi.Size = New System.Drawing.Size(144, 20)
+ Me.tbTubeDi.TabIndex = 26
+ Me.tbTubeDi.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label5
+ '
+ Me.Label5.AutoSize = True
+ Me.Label5.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label5.Location = New System.Drawing.Point(14, 146)
+ Me.Label5.Name = "Label5"
+ Me.Label5.Size = New System.Drawing.Size(106, 13)
+ Me.Label5.TabIndex = 58
+ Me.Label5.Text = "Thermal Conductivity"
+ '
+ 'Label32
+ '
+ Me.Label32.AutoSize = True
+ Me.Label32.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label32.Location = New System.Drawing.Point(13, 16)
+ Me.Label32.Name = "Label32"
+ Me.Label32.Size = New System.Drawing.Size(87, 13)
+ Me.Label32.TabIndex = 25
+ Me.Label32.Text = "Internal Diameter"
+ '
+ 'lbTubeRoughness
+ '
+ Me.lbTubeRoughness.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lbTubeRoughness.AutoSize = True
+ Me.lbTubeRoughness.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lbTubeRoughness.Location = New System.Drawing.Point(312, 120)
+ Me.lbTubeRoughness.Name = "lbTubeRoughness"
+ Me.lbTubeRoughness.Size = New System.Drawing.Size(45, 13)
+ Me.lbTubeRoughness.TabIndex = 54
+ Me.lbTubeRoughness.Text = "Label31"
+ '
+ 'lbuTubeDi
+ '
+ Me.lbuTubeDi.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lbuTubeDi.AutoSize = True
+ Me.lbuTubeDi.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lbuTubeDi.Location = New System.Drawing.Point(311, 16)
+ Me.lbuTubeDi.Name = "lbuTubeDi"
+ Me.lbuTubeDi.Size = New System.Drawing.Size(45, 13)
+ Me.lbuTubeDi.TabIndex = 28
+ Me.lbuTubeDi.Text = "Label31"
+ '
+ 'tbTubeRoughness
+ '
+ Me.tbTubeRoughness.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbTubeRoughness.Location = New System.Drawing.Point(161, 117)
+ Me.tbTubeRoughness.Name = "tbTubeRoughness"
+ Me.tbTubeRoughness.Size = New System.Drawing.Size(144, 20)
+ Me.tbTubeRoughness.TabIndex = 53
+ Me.tbTubeRoughness.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label30
+ '
+ Me.Label30.AutoSize = True
+ Me.Label30.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label30.Location = New System.Drawing.Point(13, 42)
+ Me.Label30.Name = "Label30"
+ Me.Label30.Size = New System.Drawing.Size(90, 13)
+ Me.Label30.TabIndex = 29
+ Me.Label30.Text = "External Diameter"
+ '
+ 'Label4
+ '
+ Me.Label4.AutoSize = True
+ Me.Label4.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label4.Location = New System.Drawing.Point(13, 120)
+ Me.Label4.Name = "Label4"
+ Me.Label4.Size = New System.Drawing.Size(61, 13)
+ Me.Label4.TabIndex = 52
+ Me.Label4.Text = "Roughness"
+ '
+ 'tbTubeDe
+ '
+ Me.tbTubeDe.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbTubeDe.Location = New System.Drawing.Point(161, 39)
+ Me.tbTubeDe.Name = "tbTubeDe"
+ Me.tbTubeDe.Size = New System.Drawing.Size(144, 20)
+ Me.tbTubeDe.TabIndex = 30
+ Me.tbTubeDe.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'lbuTubePitch
+ '
+ Me.lbuTubePitch.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lbuTubePitch.AutoSize = True
+ Me.lbuTubePitch.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lbuTubePitch.Location = New System.Drawing.Point(311, 224)
+ Me.lbuTubePitch.Name = "lbuTubePitch"
+ Me.lbuTubePitch.Size = New System.Drawing.Size(45, 13)
+ Me.lbuTubePitch.TabIndex = 51
+ Me.lbuTubePitch.Text = "Label19"
+ '
+ 'lbTubeDe
+ '
+ Me.lbTubeDe.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lbTubeDe.AutoSize = True
+ Me.lbTubeDe.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lbTubeDe.Location = New System.Drawing.Point(311, 42)
+ Me.lbTubeDe.Name = "lbTubeDe"
+ Me.lbTubeDe.Size = New System.Drawing.Size(45, 13)
+ Me.lbTubeDe.TabIndex = 31
+ Me.lbTubeDe.Text = "Label29"
+ '
+ 'tbTubePitch
+ '
+ Me.tbTubePitch.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbTubePitch.Location = New System.Drawing.Point(161, 221)
+ Me.tbTubePitch.Name = "tbTubePitch"
+ Me.tbTubePitch.Size = New System.Drawing.Size(144, 20)
+ Me.tbTubePitch.TabIndex = 50
+ Me.tbTubePitch.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label28
+ '
+ Me.Label28.AutoSize = True
+ Me.Label28.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label28.Location = New System.Drawing.Point(13, 68)
+ Me.Label28.Name = "Label28"
+ Me.Label28.Size = New System.Drawing.Size(40, 13)
+ Me.Label28.TabIndex = 32
+ Me.Label28.Text = "Length"
+ '
+ 'Label20
+ '
+ Me.Label20.AutoSize = True
+ Me.Label20.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label20.Location = New System.Drawing.Point(13, 224)
+ Me.Label20.Name = "Label20"
+ Me.Label20.Size = New System.Drawing.Size(74, 13)
+ Me.Label20.TabIndex = 49
+ Me.Label20.Text = "Tube Spacing"
+ '
+ 'tbTubeLength
+ '
+ Me.tbTubeLength.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbTubeLength.Location = New System.Drawing.Point(161, 65)
+ Me.tbTubeLength.Name = "tbTubeLength"
+ Me.tbTubeLength.Size = New System.Drawing.Size(144, 20)
+ Me.tbTubeLength.TabIndex = 33
+ Me.tbTubeLength.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'tbNumberOfTubesPerShell
+ '
+ Me.tbNumberOfTubesPerShell.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbNumberOfTubesPerShell.Location = New System.Drawing.Point(161, 195)
+ Me.tbNumberOfTubesPerShell.Name = "tbNumberOfTubesPerShell"
+ Me.tbNumberOfTubesPerShell.Size = New System.Drawing.Size(144, 20)
+ Me.tbNumberOfTubesPerShell.TabIndex = 42
+ Me.tbNumberOfTubesPerShell.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'lbuTubeLength
+ '
+ Me.lbuTubeLength.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lbuTubeLength.AutoSize = True
+ Me.lbuTubeLength.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lbuTubeLength.Location = New System.Drawing.Point(311, 68)
+ Me.lbuTubeLength.Name = "lbuTubeLength"
+ Me.lbuTubeLength.Size = New System.Drawing.Size(45, 13)
+ Me.lbuTubeLength.TabIndex = 34
+ Me.lbuTubeLength.Text = "Label27"
+ '
+ 'Label22
+ '
+ Me.Label22.AutoSize = True
+ Me.Label22.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label22.Location = New System.Drawing.Point(13, 198)
+ Me.Label22.Name = "Label22"
+ Me.Label22.Size = New System.Drawing.Size(89, 13)
+ Me.Label22.TabIndex = 41
+ Me.Label22.Text = "Number of Tubes"
+ '
+ 'Label26
+ '
+ Me.Label26.AutoSize = True
+ Me.Label26.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label26.Location = New System.Drawing.Point(13, 94)
+ Me.Label26.Name = "Label26"
+ Me.Label26.Size = New System.Drawing.Size(74, 13)
+ Me.Label26.TabIndex = 35
+ Me.Label26.Text = "Fouling Factor"
+ '
+ 'tbTubePassesPerShell
+ '
+ Me.tbTubePassesPerShell.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbTubePassesPerShell.Location = New System.Drawing.Point(161, 169)
+ Me.tbTubePassesPerShell.Name = "tbTubePassesPerShell"
+ Me.tbTubePassesPerShell.Size = New System.Drawing.Size(144, 20)
+ Me.tbTubePassesPerShell.TabIndex = 39
+ Me.tbTubePassesPerShell.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'tbTubeFoulingFactor
+ '
+ Me.tbTubeFoulingFactor.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbTubeFoulingFactor.Location = New System.Drawing.Point(161, 91)
+ Me.tbTubeFoulingFactor.Name = "tbTubeFoulingFactor"
+ Me.tbTubeFoulingFactor.Size = New System.Drawing.Size(144, 20)
+ Me.tbTubeFoulingFactor.TabIndex = 36
+ Me.tbTubeFoulingFactor.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label24
+ '
+ Me.Label24.AutoSize = True
+ Me.Label24.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label24.Location = New System.Drawing.Point(13, 172)
+ Me.Label24.Name = "Label24"
+ Me.Label24.Size = New System.Drawing.Size(93, 13)
+ Me.Label24.TabIndex = 38
+ Me.Label24.Text = "Number of Passes"
+ '
+ 'lbuTubeFoulingFactor
+ '
+ Me.lbuTubeFoulingFactor.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lbuTubeFoulingFactor.AutoSize = True
+ Me.lbuTubeFoulingFactor.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.lbuTubeFoulingFactor.Location = New System.Drawing.Point(311, 94)
+ Me.lbuTubeFoulingFactor.Name = "lbuTubeFoulingFactor"
+ Me.lbuTubeFoulingFactor.Size = New System.Drawing.Size(45, 13)
+ Me.lbuTubeFoulingFactor.TabIndex = 37
+ Me.lbuTubeFoulingFactor.Text = "Label25"
+ '
+ 'TabPage3
+ '
+ Me.TabPage3.Controls.Add(Me.lblElectricalLoad)
+ Me.TabPage3.Controls.Add(Me.tbElecLoad)
+ Me.TabPage3.Controls.Add(Me.Label34)
+ Me.TabPage3.Controls.Add(Me.Label29)
+ Me.TabPage3.Controls.Add(Me.tbElecConv)
+ Me.TabPage3.Controls.Add(Me.Label31)
+ Me.TabPage3.Controls.Add(Me.lblActualAirFlow)
+ Me.TabPage3.Controls.Add(Me.tbActualAF)
+ Me.TabPage3.Controls.Add(Me.Label27)
+ Me.TabPage3.Controls.Add(Me.Label21)
+ Me.TabPage3.Controls.Add(Me.tbActualR)
+ Me.TabPage3.Controls.Add(Me.Label23)
+ Me.TabPage3.Controls.Add(Me.lblRefAirFlow)
+ Me.TabPage3.Controls.Add(Me.tbRefAF)
+ Me.TabPage3.Controls.Add(Me.Label18)
+ Me.TabPage3.Controls.Add(Me.Label15)
+ Me.TabPage3.Controls.Add(Me.tbRefR)
+ Me.TabPage3.Controls.Add(Me.Label16)
+ Me.TabPage3.Location = New System.Drawing.Point(4, 22)
+ Me.TabPage3.Name = "TabPage3"
+ Me.TabPage3.Size = New System.Drawing.Size(389, 316)
+ Me.TabPage3.TabIndex = 2
+ Me.TabPage3.Text = "Fan"
+ Me.TabPage3.UseVisualStyleBackColor = True
+ '
+ 'lblElectricalLoad
+ '
+ Me.lblElectricalLoad.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblElectricalLoad.AutoSize = True
+ Me.lblElectricalLoad.Location = New System.Drawing.Point(326, 146)
+ Me.lblElectricalLoad.Name = "lblElectricalLoad"
+ Me.lblElectricalLoad.Size = New System.Drawing.Size(45, 13)
+ Me.lblElectricalLoad.TabIndex = 67
+ Me.lblElectricalLoad.Text = "Label33"
+ '
+ 'tbElecLoad
+ '
+ Me.tbElecLoad.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbElecLoad.Location = New System.Drawing.Point(151, 143)
+ Me.tbElecLoad.Name = "tbElecLoad"
+ Me.tbElecLoad.ReadOnly = True
+ Me.tbElecLoad.Size = New System.Drawing.Size(167, 20)
+ Me.tbElecLoad.TabIndex = 66
+ Me.tbElecLoad.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label34
+ '
+ Me.Label34.AutoSize = True
+ Me.Label34.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label34.Location = New System.Drawing.Point(12, 146)
+ Me.Label34.Name = "Label34"
+ Me.Label34.Size = New System.Drawing.Size(110, 13)
+ Me.Label34.TabIndex = 65
+ Me.Label34.Text = "Electrical Power Load"
+ '
+ 'Label29
+ '
+ Me.Label29.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Label29.AutoSize = True
+ Me.Label29.Location = New System.Drawing.Point(326, 120)
+ Me.Label29.Name = "Label29"
+ Me.Label29.Size = New System.Drawing.Size(46, 13)
+ Me.Label29.TabIndex = 64
+ Me.Label29.Text = "kW/rpm"
+ '
+ 'tbElecConv
+ '
+ Me.tbElecConv.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbElecConv.Location = New System.Drawing.Point(190, 117)
+ Me.tbElecConv.Name = "tbElecConv"
+ Me.tbElecConv.Size = New System.Drawing.Size(128, 20)
+ Me.tbElecConv.TabIndex = 63
+ Me.tbElecConv.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label31
+ '
+ Me.Label31.AutoSize = True
+ Me.Label31.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label31.Location = New System.Drawing.Point(12, 120)
+ Me.Label31.Name = "Label31"
+ Me.Label31.Size = New System.Drawing.Size(172, 13)
+ Me.Label31.TabIndex = 62
+ Me.Label31.Text = "Electrical Power Conversion Factor"
+ '
+ 'lblActualAirFlow
+ '
+ Me.lblActualAirFlow.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblActualAirFlow.AutoSize = True
+ Me.lblActualAirFlow.Location = New System.Drawing.Point(326, 94)
+ Me.lblActualAirFlow.Name = "lblActualAirFlow"
+ Me.lblActualAirFlow.Size = New System.Drawing.Size(45, 13)
+ Me.lblActualAirFlow.TabIndex = 61
+ Me.lblActualAirFlow.Text = "Label25"
+ '
+ 'tbActualAF
+ '
+ Me.tbActualAF.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbActualAF.Location = New System.Drawing.Point(151, 91)
+ Me.tbActualAF.Name = "tbActualAF"
+ Me.tbActualAF.ReadOnly = True
+ Me.tbActualAF.Size = New System.Drawing.Size(167, 20)
+ Me.tbActualAF.TabIndex = 60
+ Me.tbActualAF.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label27
+ '
+ Me.Label27.AutoSize = True
+ Me.Label27.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label27.Location = New System.Drawing.Point(12, 94)
+ Me.Label27.Name = "Label27"
+ Me.Label27.Size = New System.Drawing.Size(77, 13)
+ Me.Label27.TabIndex = 59
+ Me.Label27.Text = "Actual Air Flow"
+ '
+ 'Label21
+ '
+ Me.Label21.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Label21.AutoSize = True
+ Me.Label21.Location = New System.Drawing.Point(326, 68)
+ Me.Label21.Name = "Label21"
+ Me.Label21.Size = New System.Drawing.Size(24, 13)
+ Me.Label21.TabIndex = 58
+ Me.Label21.Text = "rpm"
+ '
+ 'tbActualR
+ '
+ Me.tbActualR.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbActualR.Location = New System.Drawing.Point(151, 65)
+ Me.tbActualR.Name = "tbActualR"
+ Me.tbActualR.Size = New System.Drawing.Size(167, 20)
+ Me.tbActualR.TabIndex = 57
+ Me.tbActualR.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label23
+ '
+ Me.Label23.AutoSize = True
+ Me.Label23.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label23.Location = New System.Drawing.Point(12, 68)
+ Me.Label23.Name = "Label23"
+ Me.Label23.Size = New System.Drawing.Size(80, 13)
+ Me.Label23.TabIndex = 56
+ Me.Label23.Text = "Actual Rotation"
+ '
+ 'lblRefAirFlow
+ '
+ Me.lblRefAirFlow.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.lblRefAirFlow.AutoSize = True
+ Me.lblRefAirFlow.Location = New System.Drawing.Point(326, 42)
+ Me.lblRefAirFlow.Name = "lblRefAirFlow"
+ Me.lblRefAirFlow.Size = New System.Drawing.Size(45, 13)
+ Me.lblRefAirFlow.TabIndex = 55
+ Me.lblRefAirFlow.Text = "Label17"
+ '
+ 'tbRefAF
+ '
+ Me.tbRefAF.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbRefAF.Location = New System.Drawing.Point(151, 39)
+ Me.tbRefAF.Name = "tbRefAF"
+ Me.tbRefAF.Size = New System.Drawing.Size(167, 20)
+ Me.tbRefAF.TabIndex = 54
+ Me.tbRefAF.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label18
+ '
+ Me.Label18.AutoSize = True
+ Me.Label18.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label18.Location = New System.Drawing.Point(12, 42)
+ Me.Label18.Name = "Label18"
+ Me.Label18.Size = New System.Drawing.Size(97, 13)
+ Me.Label18.TabIndex = 53
+ Me.Label18.Text = "Reference Air Flow"
+ '
+ 'Label15
+ '
+ Me.Label15.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Label15.AutoSize = True
+ Me.Label15.Location = New System.Drawing.Point(326, 18)
+ Me.Label15.Name = "Label15"
+ Me.Label15.Size = New System.Drawing.Size(24, 13)
+ Me.Label15.TabIndex = 52
+ Me.Label15.Text = "rpm"
+ '
+ 'tbRefR
+ '
+ Me.tbRefR.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.tbRefR.Location = New System.Drawing.Point(151, 13)
+ Me.tbRefR.Name = "tbRefR"
+ Me.tbRefR.Size = New System.Drawing.Size(167, 20)
+ Me.tbRefR.TabIndex = 51
+ Me.tbRefR.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
+ '
+ 'Label16
+ '
+ Me.Label16.AutoSize = True
+ Me.Label16.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Label16.Location = New System.Drawing.Point(12, 16)
+ Me.Label16.Name = "Label16"
+ Me.Label16.Size = New System.Drawing.Size(100, 13)
+ Me.Label16.TabIndex = 50
+ Me.Label16.Text = "Reference Rotation"
+ '
+ 'ToolTipChangeTag
+ '
+ Me.ToolTipChangeTag.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info
+ Me.ToolTipChangeTag.ToolTipTitle = "Info"
+ '
+ 'EditingForm_AirCooler
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi
+ Me.ClientSize = New System.Drawing.Size(418, 750)
+ Me.Controls.Add(Me.GroupBox2)
+ Me.Controls.Add(Me.GroupBox1)
+ Me.Controls.Add(Me.GroupBox5)
+ Me.Controls.Add(Me.GroupBox4)
+ Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Name = "EditingForm_AirCooler"
+ Me.Text = "EditingForm_AirCooler"
+ Me.GroupBox1.ResumeLayout(False)
+ Me.GroupBox1.PerformLayout()
+ Me.GroupBox5.ResumeLayout(False)
+ Me.GroupBox5.PerformLayout()
+ Me.GroupBox4.ResumeLayout(False)
+ Me.GroupBox2.ResumeLayout(False)
+ Me.TabControl1.ResumeLayout(False)
+ Me.TabPage1.ResumeLayout(False)
+ Me.TabPage1.PerformLayout()
+ Me.TabPage2.ResumeLayout(False)
+ Me.TabPage2.PerformLayout()
+ Me.TabPage3.ResumeLayout(False)
+ Me.TabPage3.PerformLayout()
+ Me.ResumeLayout(False)
+
+ End Sub
+
+ Public WithEvents GroupBox1 As Windows.Forms.GroupBox
+ Public WithEvents btnCreateAndConnectEnergy As Windows.Forms.Button
+ Public WithEvents btnDisconnectEnergy As Windows.Forms.Button
+ Public WithEvents btnCreateAndConnectOutlet1 As Windows.Forms.Button
+ Public WithEvents Label14 As Windows.Forms.Label
+ Public WithEvents btnCreateAndConnectInlet1 As Windows.Forms.Button
+ Public WithEvents cbEnergy As Windows.Forms.ComboBox
+ Public WithEvents btnDisconnectOutlet1 As Windows.Forms.Button
+ Public WithEvents btnDisconnect1 As Windows.Forms.Button
+ Public WithEvents Label7 As Windows.Forms.Label
+ Public WithEvents cbOutlet1 As Windows.Forms.ComboBox
+ Public WithEvents cbInlet1 As Windows.Forms.ComboBox
+ Public WithEvents Label19 As Windows.Forms.Label
+ Public WithEvents GroupBox5 As Windows.Forms.GroupBox
+ Public WithEvents lblTag As Windows.Forms.TextBox
+ Public WithEvents chkActive As Windows.Forms.CheckBox
+ Public WithEvents lblConnectedTo As Windows.Forms.Label
+ Public WithEvents lblStatus As Windows.Forms.Label
+ Public WithEvents Label13 As Windows.Forms.Label
+ Public WithEvents Label12 As Windows.Forms.Label
+ Public WithEvents Label11 As Windows.Forms.Label
+ Public WithEvents GroupBox4 As Windows.Forms.GroupBox
+ Public WithEvents rtbAnnotations As Extended.Windows.Forms.RichTextBoxExtended
+ Friend WithEvents GroupBox2 As Windows.Forms.GroupBox
+ Friend WithEvents TabControl1 As Windows.Forms.TabControl
+ Friend WithEvents TabPage1 As Windows.Forms.TabPage
+ Friend WithEvents TabPage2 As Windows.Forms.TabPage
+ Friend WithEvents TabPage3 As Windows.Forms.TabPage
+ Public WithEvents tbOutletTemperature As Windows.Forms.TextBox
+ Public WithEvents Label2 As Windows.Forms.Label
+ Public WithEvents tbPressureDrop As Windows.Forms.TextBox
+ Public WithEvents Label3 As Windows.Forms.Label
+ Public WithEvents cbCalcMode As Windows.Forms.ComboBox
+ Public WithEvents Label8 As Windows.Forms.Label
+ Public WithEvents lbuTubeThermalCond As Windows.Forms.Label
+ Public WithEvents tbTubeThermalCond As Windows.Forms.TextBox
+ Public WithEvents tbTubeDi As Windows.Forms.TextBox
+ Public WithEvents Label5 As Windows.Forms.Label
+ Public WithEvents Label32 As Windows.Forms.Label
+ Public WithEvents lbTubeRoughness As Windows.Forms.Label
+ Public WithEvents lbuTubeDi As Windows.Forms.Label
+ Public WithEvents tbTubeRoughness As Windows.Forms.TextBox
+ Public WithEvents Label30 As Windows.Forms.Label
+ Public WithEvents Label4 As Windows.Forms.Label
+ Public WithEvents tbTubeDe As Windows.Forms.TextBox
+ Public WithEvents lbuTubePitch As Windows.Forms.Label
+ Public WithEvents lbTubeDe As Windows.Forms.Label
+ Public WithEvents tbTubePitch As Windows.Forms.TextBox
+ Public WithEvents Label28 As Windows.Forms.Label
+ Public WithEvents Label20 As Windows.Forms.Label
+ Public WithEvents tbTubeLength As Windows.Forms.TextBox
+ Public WithEvents tbNumberOfTubesPerShell As Windows.Forms.TextBox
+ Public WithEvents lbuTubeLength As Windows.Forms.Label
+ Public WithEvents Label22 As Windows.Forms.Label
+ Public WithEvents Label26 As Windows.Forms.Label
+ Public WithEvents tbTubePassesPerShell As Windows.Forms.TextBox
+ Public WithEvents tbTubeFoulingFactor As Windows.Forms.TextBox
+ Public WithEvents Label24 As Windows.Forms.Label
+ Public WithEvents lbuTubeFoulingFactor As Windows.Forms.Label
+ Friend WithEvents lblOutletTemperature As Windows.Forms.Label
+ Friend WithEvents lblPressureDrop As Windows.Forms.Label
+ Friend WithEvents lblActualAirFlow As Windows.Forms.Label
+ Public WithEvents tbActualAF As Windows.Forms.TextBox
+ Public WithEvents Label27 As Windows.Forms.Label
+ Friend WithEvents Label21 As Windows.Forms.Label
+ Public WithEvents tbActualR As Windows.Forms.TextBox
+ Public WithEvents Label23 As Windows.Forms.Label
+ Friend WithEvents lblRefAirFlow As Windows.Forms.Label
+ Public WithEvents tbRefAF As Windows.Forms.TextBox
+ Public WithEvents Label18 As Windows.Forms.Label
+ Friend WithEvents Label15 As Windows.Forms.Label
+ Public WithEvents tbRefR As Windows.Forms.TextBox
+ Public WithEvents Label16 As Windows.Forms.Label
+ Friend WithEvents Label29 As Windows.Forms.Label
+ Public WithEvents tbElecConv As Windows.Forms.TextBox
+ Public WithEvents Label31 As Windows.Forms.Label
+ Friend WithEvents lblElectricalLoad As Windows.Forms.Label
+ Public WithEvents tbElecLoad As Windows.Forms.TextBox
+ Public WithEvents Label34 As Windows.Forms.Label
+ Friend WithEvents lblOutletAirTemperature As Windows.Forms.Label
+ Public WithEvents tbOutletAirTemp As Windows.Forms.TextBox
+ Public WithEvents Label40 As Windows.Forms.Label
+ Friend WithEvents lblInletAirPressure As Windows.Forms.Label
+ Public WithEvents tbInletAirPre As Windows.Forms.TextBox
+ Public WithEvents Label38 As Windows.Forms.Label
+ Friend WithEvents lblInletAirTemperature As Windows.Forms.Label
+ Public WithEvents tbInletAirTemp As Windows.Forms.TextBox
+ Public WithEvents Label36 As Windows.Forms.Label
+ Friend WithEvents lblMaximumHeatExchange As Windows.Forms.Label
+ Public WithEvents tbMaxHeatEx As Windows.Forms.TextBox
+ Public WithEvents Label42 As Windows.Forms.Label
+ Friend WithEvents lblHeatExchanged As Windows.Forms.Label
+ Public WithEvents tbHeatingChange As Windows.Forms.TextBox
+ Public WithEvents Label6 As Windows.Forms.Label
+ Friend WithEvents Label43 As Windows.Forms.Label
+ Public WithEvents tbOverallUA As Windows.Forms.TextBox
+ Public WithEvents Label44 As Windows.Forms.Label
+ Friend WithEvents Label1 As Windows.Forms.Label
+ Public WithEvents tbEff As Windows.Forms.TextBox
+ Public WithEvents Label9 As Windows.Forms.Label
+ Friend WithEvents ToolTipChangeTag As Windows.Forms.ToolTip
+End Class
diff --git a/DWSIM.UnitOperations/EditingForms/EditingForm_AirCooler.resx b/DWSIM.UnitOperations/EditingForms/EditingForm_AirCooler.resx
new file mode 100644
index 000000000..d84d0aad1
--- /dev/null
+++ b/DWSIM.UnitOperations/EditingForms/EditingForm_AirCooler.resx
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAe
+ wQAAHsEBw2lUUwAAAAd0SU1FB9cJGwwnHfk+EwAAAAGHSURBVDhPYxiG4O15h8ZXp+3+vzxp8//lcev/
+ zw9b/n92wOz/kz0m/5/sMnoDVYYdfLniKPL2ou/Vn68m///2sPz/19tF/7/cqvr/6Vrd/+cHXF483mFo
+ BVWKHbw5Yxv59UH1z28P8v9/uuj8/wPQFZ+uVvx/fsjv/5MdBnZQZbjB24tBq78/7fn/+Yrr/w9n7P5/
+ vlb8/92Z1M9Pd1nHQJXgBkD/Kn64mvLn693c/x/PO/9/f8wa6PwuoM0Wz+6v1553d7XG1NvLVafeWqzc
+ A9WCCl4csXr55V7D/++PJ/7/er8H6P+u/1+ud/z/eLEJ6Jqa/2+OFPy/t8rox415CspQLajg+SGLCU/3
+ m059stt46uPtBkteH0/4/PZgwP+3h5P/P9nq8evuCq0pd5coq0KV4wcPNmgbvD4a//Plwbj/D9db3r67
+ QtP9/zFNZqg0fvD/fxDjg42GD57ucP9wZ7na3jtLVbihUsSBe2s0s+6u1rx+d6WGD1SINHBnhboOlDkk
+ AAMDAByV2EYm9P51AAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALISURBVDhPfZJbTFJxHMfZcm6++tQTb61aLVfpkoaX
+ lrVpxbIyzSHaxWs2xZg51C6SgoqdEkkw5EzFW+TRTMQEEYehzWu1JpIt07w1W72kRQ/fzjkbPRj18Plv
+ Zzuf//f8vr/DAfBfHju/+Rkc61z9wBpPbVoSVFIfJHdaZz35+jfmzJpxf5+Sl9bhrwENtnVnvWUFtb2f
+ UN09D4JyQ2Oag5ScQnyZw+xT9EKn5hvsq+gaXUO7YwmNAx+h7Z1DhfEtSgzTiMo3eXyKDHV9y/7E04XN
+ tqEVkP3zqHziQknza9yon8TdllcQltkQltkh8Sl7oWctVRhnUdPtRnWXC3naMWTcH0aBbhQxed04lNgo
+ +EtqsNOF6fU6rVZLMs+pxEgRPetmTu1LFJFjuFBqxdVqB8Ivt2D/KQ3vj9js+BJA2j531nVO/jCbzbBa
+ rVAqlewl9Kz8yGvUhlBmQTphR0qFBQdPa7HnKMH1pvrpLCvuJrqwpsElVNSbflEUBZlMRkql0m1isTiQ
+ l9zKD44nN07mdSAiuRG7j9xz74xQ+LEXaPqWuaqeRXQ4V9FiXwTR9Q7iqp6fSYqhcFom09PTXSKRaHtQ
+ jJpPp37fdaSyc0d4WQDjshcoqXmeknoPg20B5UYXap7NsntOKGjyqFQqtLe3Iy4uziUQCALpVC7jeGGP
+ W80zgpKWGXbHxQ3TuF43Ru95ChLtCBKyyyGXy0HLbB9bYY9czaSkiBYJagZM22mEA0LFAK4o7biosIIf
+ K/OEnihmP3krnCz1hH+K0umR0T9HITmOQv0Ym5xNryq1yoZjmW3YF12T70tm4CQqhj0Z1U7cbpxA7sMX
+ OFvYi+NZRoSJmhByRoe9UQ+cdOM+0xk4MUX9ZqF8EOdvPsfhS62ekHhSciD2kSAoWs1j9kw37udL9MKJ
+ zOkK4KcZzaFJBk/wOb2/r5f+DTi/AcFGp9AV5agvAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAe
+ wQAAHsEBw2lUUwAAAAd0SU1FB9cJGwwnHfk+EwAAAAGHSURBVDhPYxiG4O15h8ZXp+3+vzxp8//lcev/
+ zw9b/n92wOz/kz0m/5/sMnoDVYYdfLniKPL2ou/Vn68m///2sPz/19tF/7/cqvr/6Vrd/+cHXF483mFo
+ BVWKHbw5Yxv59UH1z28P8v9/uuj8/wPQFZ+uVvx/fsjv/5MdBnZQZbjB24tBq78/7fn/+Yrr/w9n7P5/
+ vlb8/92Z1M9Pd1nHQJXgBkD/Kn64mvLn693c/x/PO/9/f8wa6PwuoM0Wz+6v1553d7XG1NvLVafeWqzc
+ A9WCCl4csXr55V7D/++PJ/7/er8H6P+u/1+ud/z/eLEJ6Jqa/2+OFPy/t8rox415CspQLajg+SGLCU/3
+ m059stt46uPtBkteH0/4/PZgwP+3h5P/P9nq8evuCq0pd5coq0KV4wcPNmgbvD4a//Plwbj/D9db3r67
+ QtP9/zFNZqg0fvD/fxDjg42GD57ucP9wZ7na3jtLVbihUsSBe2s0s+6u1rx+d6WGD1SINHBnhboOlDkk
+ AAMDAByV2EYm9P51AAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAe
+ wQAAHsEBw2lUUwAAAAd0SU1FB9cJGwwnHfk+EwAAAAGHSURBVDhPYxiG4O15h8ZXp+3+vzxp8//lcev/
+ zw9b/n92wOz/kz0m/5/sMnoDVYYdfLniKPL2ou/Vn68m///2sPz/19tF/7/cqvr/6Vrd/+cHXF483mFo
+ BVWKHbw5Yxv59UH1z28P8v9/uuj8/wPQFZ+uVvx/fsjv/5MdBnZQZbjB24tBq78/7fn/+Yrr/w9n7P5/
+ vlb8/92Z1M9Pd1nHQJXgBkD/Kn64mvLn693c/x/PO/9/f8wa6PwuoM0Wz+6v1553d7XG1NvLVafeWqzc
+ A9WCCl4csXr55V7D/++PJ/7/er8H6P+u/1+ud/z/eLEJ6Jqa/2+OFPy/t8rox415CspQLajg+SGLCU/3
+ m059stt46uPtBkteH0/4/PZgwP+3h5P/P9nq8evuCq0pd5coq0KV4wcPNmgbvD4a//Plwbj/D9db3r67
+ QtP9/zFNZqg0fvD/fxDjg42GD57ucP9wZ7na3jtLVbihUsSBe2s0s+6u1rx+d6WGD1SINHBnhboOlDkk
+ AAMDAByV2EYm9P51AAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALISURBVDhPfZJbTFJxHMfZcm6++tQTb61aLVfpkoaX
+ lrVpxbIyzSHaxWs2xZg51C6SgoqdEkkw5EzFW+TRTMQEEYehzWu1JpIt07w1W72kRQ/fzjkbPRj18Plv
+ Zzuf//f8vr/DAfBfHju/+Rkc61z9wBpPbVoSVFIfJHdaZz35+jfmzJpxf5+Sl9bhrwENtnVnvWUFtb2f
+ UN09D4JyQ2Oag5ScQnyZw+xT9EKn5hvsq+gaXUO7YwmNAx+h7Z1DhfEtSgzTiMo3eXyKDHV9y/7E04XN
+ tqEVkP3zqHziQknza9yon8TdllcQltkQltkh8Sl7oWctVRhnUdPtRnWXC3naMWTcH0aBbhQxed04lNgo
+ +EtqsNOF6fU6rVZLMs+pxEgRPetmTu1LFJFjuFBqxdVqB8Ivt2D/KQ3vj9js+BJA2j531nVO/jCbzbBa
+ rVAqlewl9Kz8yGvUhlBmQTphR0qFBQdPa7HnKMH1pvrpLCvuJrqwpsElVNSbflEUBZlMRkql0m1isTiQ
+ l9zKD44nN07mdSAiuRG7j9xz74xQ+LEXaPqWuaqeRXQ4V9FiXwTR9Q7iqp6fSYqhcFom09PTXSKRaHtQ
+ jJpPp37fdaSyc0d4WQDjshcoqXmeknoPg20B5UYXap7NsntOKGjyqFQqtLe3Iy4uziUQCALpVC7jeGGP
+ W80zgpKWGXbHxQ3TuF43Ru95ChLtCBKyyyGXy0HLbB9bYY9czaSkiBYJagZM22mEA0LFAK4o7biosIIf
+ K/OEnihmP3krnCz1hH+K0umR0T9HITmOQv0Ym5xNryq1yoZjmW3YF12T70tm4CQqhj0Z1U7cbpxA7sMX
+ OFvYi+NZRoSJmhByRoe9UQ+cdOM+0xk4MUX9ZqF8EOdvPsfhS62ekHhSciD2kSAoWs1j9kw37udL9MKJ
+ zOkK4KcZzaFJBk/wOb2/r5f+DTi/AcFGp9AV5agvAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALISURBVDhPfZJbTFJxHMfZcm6++tQTb61aLVfpkoaX
+ lrVpxbIyzSHaxWs2xZg51C6SgoqdEkkw5EzFW+TRTMQEEYehzWu1JpIt07w1W72kRQ/fzjkbPRj18Plv
+ Zzuf//f8vr/DAfBfHju/+Rkc61z9wBpPbVoSVFIfJHdaZz35+jfmzJpxf5+Sl9bhrwENtnVnvWUFtb2f
+ UN09D4JyQ2Oag5ScQnyZw+xT9EKn5hvsq+gaXUO7YwmNAx+h7Z1DhfEtSgzTiMo3eXyKDHV9y/7E04XN
+ tqEVkP3zqHziQknza9yon8TdllcQltkQltkh8Sl7oWctVRhnUdPtRnWXC3naMWTcH0aBbhQxed04lNgo
+ +EtqsNOF6fU6rVZLMs+pxEgRPetmTu1LFJFjuFBqxdVqB8Ivt2D/KQ3vj9js+BJA2j531nVO/jCbzbBa
+ rVAqlewl9Kz8yGvUhlBmQTphR0qFBQdPa7HnKMH1pvrpLCvuJrqwpsElVNSbflEUBZlMRkql0m1isTiQ
+ l9zKD44nN07mdSAiuRG7j9xz74xQ+LEXaPqWuaqeRXQ4V9FiXwTR9Q7iqp6fSYqhcFom09PTXSKRaHtQ
+ jJpPp37fdaSyc0d4WQDjshcoqXmeknoPg20B5UYXap7NsntOKGjyqFQqtLe3Iy4uziUQCALpVC7jeGGP
+ W80zgpKWGXbHxQ3TuF43Ru95ChLtCBKyyyGXy0HLbB9bYY9czaSkiBYJagZM22mEA0LFAK4o7biosIIf
+ K/OEnihmP3krnCz1hH+K0umR0T9HITmOQv0Ym5xNryq1yoZjmW3YF12T70tm4CQqhj0Z1U7cbpxA7sMX
+ OFvYi+NZRoSJmhByRoe9UQ+cdOM+0xk4MUX9ZqF8EOdvPsfhS62ekHhSciD2kSAoWs1j9kw37udL9MKJ
+ zOkK4KcZzaFJBk/wOb2/r5f+DTi/AcFGp9AV5agvAAAAAElFTkSuQmCC
+
+
+
+ 145, 17
+
+
\ No newline at end of file
diff --git a/DWSIM.UnitOperations/EditingForms/EditingForm_AirCooler.vb b/DWSIM.UnitOperations/EditingForms/EditingForm_AirCooler.vb
new file mode 100644
index 000000000..c5de6597c
--- /dev/null
+++ b/DWSIM.UnitOperations/EditingForms/EditingForm_AirCooler.vb
@@ -0,0 +1,455 @@
+Imports cv = DWSIM.SharedClasses.SystemsOfUnits.Converter
+Imports DWSIM.ExtensionMethods
+Imports DWSIM.Inspector
+Imports System.Windows.Forms
+Imports DWSIM.Interfaces.Enums.GraphicObjects
+
+Public Class EditingForm_AirCooler
+
+ Inherits SharedClasses.ObjectEditorForm
+
+ Public Property SimObject As AirCooler
+
+ Public Loaded As Boolean = False
+
+ Dim units As SharedClasses.SystemsOfUnits.Units
+ Dim nf As String
+
+ Private Sub EditingForm_AirCooler_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+
+ Me.ShowHint = GlobalSettings.Settings.DefaultEditFormLocation
+
+ UpdateInfo()
+
+ End Sub
+
+ Sub UpdateInfo()
+
+ Loaded = False
+
+ nf = SimObject.FlowSheet.FlowsheetOptions.NumberFormat
+
+ If Host.Items.Where(Function(x) x.Name.Contains(SimObject.GraphicObject.Tag)).Count > 0 Then
+ If InspReportBar Is Nothing Then
+ InspReportBar = New SharedClasses.InspectorReportBar
+ InspReportBar.Dock = DockStyle.Bottom
+ AddHandler InspReportBar.Button1.Click, Sub()
+ Dim iwindow As New Inspector.Window2
+ iwindow.SelectedObject = SimObject
+ iwindow.Show(DockPanel)
+ End Sub
+ Me.Controls.Add(InspReportBar)
+ InspReportBar.BringToFront()
+ End If
+ Else
+ If InspReportBar IsNot Nothing Then
+ Me.Controls.Remove(InspReportBar)
+ InspReportBar = Nothing
+ End If
+ End If
+
+ cbCalcMode.SelectedIndex = SimObject.CalculationMode
+
+ Select Case cbCalcMode.SelectedIndex
+ Case 0
+ TabPage2.Enabled = False
+ TabPage3.Enabled = True
+ tbPressureDrop.ReadOnly = False
+ tbOverallUA.ReadOnly = True
+ tbOutletTemperature.ReadOnly = False
+ Case 1
+ TabPage2.Enabled = True
+ TabPage3.Enabled = True
+ tbPressureDrop.ReadOnly = True
+ tbOverallUA.ReadOnly = True
+ tbOutletTemperature.ReadOnly = True
+ Case 2
+ TabPage2.Enabled = False
+ TabPage3.Enabled = True
+ tbPressureDrop.ReadOnly = False
+ tbOverallUA.ReadOnly = False
+ tbOutletTemperature.ReadOnly = True
+ End Select
+
+ Dim su = SimObject.FlowSheet.FlowsheetOptions.SelectedUnitSystem
+
+ lbTubeDe.Text = su.diameter
+ lbuTubeDi.Text = su.diameter
+ lbTubeRoughness.Text = su.diameter
+ lbuTubeFoulingFactor.Text = su.foulingfactor
+ lbuTubeLength.Text = su.distance
+ lbuTubePitch.Text = su.thickness
+ lbuTubeThermalCond.Text = su.thermalConductivity
+
+ lblActualAirFlow.Text = su.volumetricFlow
+ lblElectricalLoad.Text = su.heatflow
+ lblHeatExchanged.Text = su.heatflow
+ lblInletAirPressure.Text = su.pressure
+ lblInletAirTemperature.Text = su.temperature
+ lblMaximumHeatExchange.Text = su.heatflow
+ lblOutletAirTemperature.Text = su.temperature
+ lblOutletTemperature.Text = su.temperature
+ lblPressureDrop.Text = su.deltaP
+ lblRefAirFlow.Text = su.volumetricFlow
+
+ With SimObject
+
+ 'first block
+
+ chkActive.Checked = .GraphicObject.Active
+
+ Me.Text = .GraphicObject.Tag & " (" & .GetDisplayName() & ")"
+
+ lblTag.Text = .GraphicObject.Tag
+ If .Calculated Then
+ lblStatus.Text = .FlowSheet.GetTranslatedString("Calculado") & " (" & .LastUpdated.ToString & ")"
+ lblStatus.ForeColor = System.Drawing.Color.Blue
+ Else
+ If Not .GraphicObject.Active Then
+ lblStatus.Text = .FlowSheet.GetTranslatedString("Inativo")
+ lblStatus.ForeColor = System.Drawing.Color.Gray
+ ElseIf .ErrorMessage <> "" Then
+ If .ErrorMessage.Length > 50 Then
+ lblStatus.Text = .FlowSheet.GetTranslatedString("Erro") & " (" & .ErrorMessage.Substring(50) & "...)"
+ Else
+ lblStatus.Text = .FlowSheet.GetTranslatedString("Erro") & " (" & .ErrorMessage & ")"
+ End If
+ lblStatus.ForeColor = System.Drawing.Color.Red
+ Else
+ lblStatus.Text = .FlowSheet.GetTranslatedString("NoCalculado")
+ lblStatus.ForeColor = System.Drawing.Color.Black
+ End If
+ End If
+
+ lblConnectedTo.Text = ""
+
+ If .IsSpecAttached Then lblConnectedTo.Text = .FlowSheet.SimulationObjects(.AttachedSpecId).GraphicObject.Tag
+ If .IsAdjustAttached Then lblConnectedTo.Text = .FlowSheet.SimulationObjects(.AttachedAdjustId).GraphicObject.Tag
+
+ 'connections
+
+ Dim mslist As String() = .FlowSheet.GraphicObjects.Values.Where(Function(x) x.ObjectType = ObjectType.MaterialStream).Select(Function(m) m.Tag).ToArray
+
+ cbInlet1.Items.Clear()
+ cbInlet1.Items.AddRange(mslist)
+
+ cbOutlet1.Items.Clear()
+ cbOutlet1.Items.AddRange(mslist)
+
+ If .GraphicObject.InputConnectors(0).IsAttached Then cbInlet1.SelectedItem = .GraphicObject.InputConnectors(0).AttachedConnector.AttachedFrom.Tag
+ If .GraphicObject.OutputConnectors(0).IsAttached Then cbOutlet1.SelectedItem = .GraphicObject.OutputConnectors(0).AttachedConnector.AttachedTo.Tag
+
+ Dim eslist As String() = .FlowSheet.SimulationObjects.Values.Where(Function(x) x.GraphicObject.ObjectType = ObjectType.EnergyStream).Select(Function(m) m.GraphicObject.Tag).ToArray
+
+ cbEnergy.Items.Clear()
+ cbEnergy.Items.AddRange(eslist)
+
+ If .GraphicObject.InputConnectors(1).IsAttached Then cbEnergy.SelectedItem = .GraphicObject.InputConnectors(1).AttachedConnector.AttachedFrom.Tag
+
+ 'annotation
+
+ Try
+ rtbAnnotations.Rtf = .Annotation
+ Catch ex As Exception
+
+ End Try
+
+ 'parameters
+
+ tbActualAF.Text = .ActualAirFlow.ConvertFromSI(su.volumetricFlow).ToString(nf)
+ tbActualR.Text = .ActualFanSpeed.ToString(nf)
+ tbEff.Text = .ExchangerEfficiency.ToString(nf)
+ tbElecConv.Text = .ElectricalPowerConversionFactor.ToString(nf)
+ tbElecLoad.Text = .ElectricalPowerLoad.ConvertFromSI(su.heatflow).ToString(nf)
+ tbHeatingChange.Text = .HeatLoad.ConvertFromSI(su.heatflow).ToString(nf)
+ tbInletAirPre.Text = .AirPressure.ConvertFromSI(su.pressure).ToString(nf)
+ tbInletAirTemp.Text = .AirInletTemperature.ConvertFromSI(su.temperature).ToString(nf)
+ tbMaxHeatEx.Text = .MaxHeatExchange.ConvertFromSI(su.heatflow).ToString(nf)
+ tbOutletAirTemp.Text = .AirOutletTemperature.ConvertFromSI(su.temperature).ToString(nf)
+ tbOutletTemperature.Text = .OutletTemperature.ConvertFromSI(su.temperature).ToString(nf)
+ tbOverallUA.Text = .OverallUA.ToString(nf)
+ tbPressureDrop.Text = .PressureDrop.ConvertFromSI(su.deltaP).ToString(nf)
+ tbRefAF.Text = .ReferenceAirFlow.ConvertFromSI(su.volumetricFlow).ToString(nf)
+ tbRefR.Text = .ReferenceFanSpeed.ToString(nf)
+
+ tbNumberOfTubesPerShell.Text = .Tube_NumberPerShell
+ tbTubeDe.Text = Format(cv.ConvertFromSI(su.diameter, .Tube_De), nf)
+ tbTubeDi.Text = Format(cv.ConvertFromSI(su.diameter, .Tube_Di), nf)
+ tbTubeFoulingFactor.Text = cv.ConvertFromSI(su.foulingfactor, .Tube_Fouling)
+ tbTubeLength.Text = Format(cv.ConvertFromSI(su.distance, .Tube_Length), nf)
+ tbTubePassesPerShell.Text = .Tube_PassesPerShell
+ tbTubePitch.Text = Format(cv.ConvertFromSI(su.thickness, .Tube_Pitch), nf)
+ tbTubeRoughness.Text = cv.ConvertFromSI(su.diameter, .Tube_Roughness)
+ tbTubeThermalCond.Text = cv.ConvertFromSI(su.thermalConductivity, .Tube_ThermalConductivity)
+
+ End With
+
+ Loaded = True
+
+ End Sub
+
+ Sub UpdateProps()
+
+ Dim su = SimObject.FlowSheet.FlowsheetOptions.SelectedUnitSystem
+
+ With SimObject
+
+ .ActualFanSpeed = tbActualR.Text.ParseExpressionToDouble
+ .ElectricalPowerConversionFactor = tbElecConv.Text.ParseExpressionToDouble
+ .HeatLoad = tbHeatingChange.Text.ParseExpressionToDouble.ConvertToSI(su.heatflow)
+ .AirPressure = tbInletAirPre.Text.ParseExpressionToDouble.ConvertToSI(su.pressure)
+ .AirInletTemperature = tbInletAirTemp.Text.ParseExpressionToDouble.ConvertToSI(su.temperature)
+ .OutletTemperature = tbOutletTemperature.Text.ParseExpressionToDouble.ConvertToSI(su.temperature)
+ .OverallUA = tbOverallUA.Text.ParseExpressionToDouble
+ .PressureDrop = tbPressureDrop.Text.ParseExpressionToDouble.ConvertToSI(su.deltaP)
+ .ReferenceAirFlow = tbRefAF.Text.ParseExpressionToDouble.ConvertToSI(su.volumetricFlow)
+ .ReferenceFanSpeed = tbRefR.Text.ParseExpressionToDouble
+
+ .Tube_NumberPerShell = tbNumberOfTubesPerShell.Text.ParseExpressionToDouble
+ .Tube_De = cv.ConvertToSI(su.diameter, tbTubeDe.Text.ParseExpressionToDouble)
+ .Tube_Di = cv.ConvertToSI(su.diameter, tbTubeDi.Text.ParseExpressionToDouble)
+ .Tube_Roughness = cv.ConvertToSI(su.diameter, tbTubeRoughness.Text.ParseExpressionToDouble)
+ .Tube_Fouling = cv.ConvertToSI(su.foulingfactor, tbTubeFoulingFactor.Text.ParseExpressionToDouble)
+ .Tube_Length = cv.ConvertToSI(su.distance, tbTubeLength.Text.ParseExpressionToDouble)
+ .Tube_PassesPerShell = tbTubePassesPerShell.Text.ParseExpressionToDouble
+ .Tube_Pitch = cv.ConvertToSI(su.thickness, tbTubePitch.Text.ParseExpressionToDouble)
+ .Tube_ThermalConductivity = cv.ConvertToSI(su.thermalConductivity, tbTubeThermalCond.Text.ParseExpressionToDouble)
+
+ End With
+
+ End Sub
+
+ Private Sub cbCalcMode_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbCalcMode.SelectedIndexChanged
+
+ If Loaded Then
+
+ Select Case cbCalcMode.SelectedIndex
+ Case 0
+ TabPage2.Enabled = False
+ TabPage3.Enabled = True
+ tbPressureDrop.ReadOnly = False
+ tbOverallUA.ReadOnly = True
+ tbOutletTemperature.ReadOnly = False
+ Case 1
+ TabPage2.Enabled = True
+ TabPage3.Enabled = True
+ tbPressureDrop.ReadOnly = True
+ tbOverallUA.ReadOnly = True
+ tbOutletTemperature.ReadOnly = True
+ Case 2
+ TabPage2.Enabled = False
+ TabPage3.Enabled = True
+ tbPressureDrop.ReadOnly = False
+ tbOverallUA.ReadOnly = False
+ tbOutletTemperature.ReadOnly = True
+ End Select
+ SimObject.CalculationMode = cbCalcMode.SelectedIndex
+
+ End If
+
+ End Sub
+
+ Private Sub lblTag_TextChanged(sender As Object, e As EventArgs) Handles lblTag.TextChanged
+
+ If Loaded Then ToolTipChangeTag.Show("Press ENTER to commit changes.", lblTag, New System.Drawing.Point(0, lblTag.Height + 3), 3000)
+
+ End Sub
+
+ Private Sub btnDisconnect1_Click(sender As Object, e As EventArgs) Handles btnDisconnect1.Click
+ If cbInlet1.SelectedItem IsNot Nothing Then
+ SimObject.FlowSheet.DisconnectObjects(SimObject.GraphicObject.InputConnectors(0).AttachedConnector.AttachedFrom, SimObject.GraphicObject)
+ cbInlet1.SelectedItem = Nothing
+ End If
+ End Sub
+
+ Private Sub btnDisconnectOutlet1_Click(sender As Object, e As EventArgs) Handles btnDisconnectOutlet1.Click
+ If cbOutlet1.SelectedItem IsNot Nothing Then
+ SimObject.FlowSheet.DisconnectObjects(SimObject.GraphicObject, SimObject.GraphicObject.OutputConnectors(0).AttachedConnector.AttachedTo)
+ cbOutlet1.SelectedItem = Nothing
+ End If
+ End Sub
+
+ Private Sub btnDisconnectEnergy_Click(sender As Object, e As EventArgs) Handles btnDisconnectEnergy.Click
+ If cbEnergy.SelectedItem IsNot Nothing Then
+ SimObject.FlowSheet.DisconnectObjects(SimObject.GraphicObject.InputConnectors(1).AttachedConnector.AttachedFrom, SimObject.GraphicObject)
+ cbEnergy.SelectedItem = Nothing
+ End If
+ End Sub
+
+ Private Sub cbInlet1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbInlet1.SelectedIndexChanged
+
+ If Loaded Then
+
+ Dim text As String = cbInlet1.Text
+
+ If text <> "" Then
+
+ Dim index As Integer = 0
+
+ Dim gobj = SimObject.GraphicObject
+ Dim flowsheet = SimObject.FlowSheet
+
+ If flowsheet.GetFlowsheetSimulationObject(text).GraphicObject.OutputConnectors(0).IsAttached Then
+ MessageBox.Show(flowsheet.GetTranslatedString("Todasasconexespossve"), flowsheet.GetTranslatedString("Erro"), MessageBoxButtons.OK, MessageBoxIcon.Error)
+ Exit Sub
+ End If
+ If gobj.InputConnectors(index).IsAttached Then flowsheet.DisconnectObjects(gobj.InputConnectors(index).AttachedConnector.AttachedFrom, gobj)
+ flowsheet.ConnectObjects(flowsheet.GetFlowsheetSimulationObject(text).GraphicObject, gobj, 0, index)
+
+ End If
+
+ End If
+
+ End Sub
+
+ Private Sub cbOutlet1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbOutlet1.SelectedIndexChanged
+
+ If Loaded Then
+
+ Dim text As String = cbOutlet1.Text
+
+ If text <> "" Then
+
+ Dim index As Integer = 0
+
+ Dim gobj = SimObject.GraphicObject
+ Dim flowsheet = SimObject.FlowSheet
+
+ If flowsheet.GetFlowsheetSimulationObject(text).GraphicObject.InputConnectors(0).IsAttached Then
+ MessageBox.Show(flowsheet.GetTranslatedString("Todasasconexespossve"), flowsheet.GetTranslatedString("Erro"), MessageBoxButtons.OK, MessageBoxIcon.Error)
+ Exit Sub
+ End If
+ If gobj.OutputConnectors(0).IsAttached Then flowsheet.DisconnectObjects(gobj, gobj.OutputConnectors(0).AttachedConnector.AttachedTo)
+ flowsheet.ConnectObjects(gobj, flowsheet.GetFlowsheetSimulationObject(text).GraphicObject, 0, 0)
+
+ End If
+
+ End If
+
+ End Sub
+
+ Private Sub cbEnergy_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbEnergy.SelectedIndexChanged
+
+ If Loaded Then
+
+ Dim text As String = cbEnergy.Text
+
+ If text <> "" Then
+
+ Dim index As Integer = 1
+
+ Dim gobj = SimObject.GraphicObject
+ Dim flowsheet = SimObject.FlowSheet
+
+ If flowsheet.GetFlowsheetSimulationObject(text).GraphicObject.OutputConnectors(0).IsAttached Then
+ MessageBox.Show(flowsheet.GetTranslatedString("Todasasconexespossve"), flowsheet.GetTranslatedString("Erro"), MessageBoxButtons.OK, MessageBoxIcon.Error)
+ Exit Sub
+ End If
+ If gobj.InputConnectors(index).IsAttached Then flowsheet.DisconnectObjects(gobj.InputConnectors(index).AttachedConnector.AttachedFrom, gobj)
+ flowsheet.ConnectObjects(flowsheet.GetFlowsheetSimulationObject(text).GraphicObject, gobj, 0, index)
+
+ End If
+
+ End If
+
+ End Sub
+
+ Private Sub rtbAnnotations_RtfChanged(sender As Object, e As EventArgs) Handles rtbAnnotations.RtfChanged
+ If Loaded Then SimObject.Annotation = rtbAnnotations.Rtf
+ End Sub
+
+ Private Sub chkActive_CheckedChanged(sender As Object, e As EventArgs) Handles chkActive.CheckedChanged
+ If Loaded Then SimObject.GraphicObject.Active = chkActive.Checked
+ End Sub
+
+ Private Sub btnCreateAndConnectInlet1_Click(sender As Object, e As EventArgs) Handles btnCreateAndConnectInlet1.Click, btnCreateAndConnectOutlet1.Click, btnCreateAndConnectEnergy.Click
+
+ Dim sgobj = SimObject.GraphicObject
+ Dim fs = SimObject.FlowSheet
+
+ If sender Is btnCreateAndConnectInlet1 Then
+
+ Dim obj = fs.AddObject(ObjectType.MaterialStream, sgobj.InputConnectors(0).Position.X - 50, sgobj.InputConnectors(0).Position.Y, "")
+
+ If sgobj.InputConnectors(0).IsAttached Then fs.DisconnectObjects(sgobj.InputConnectors(0).AttachedConnector.AttachedFrom, sgobj)
+ fs.ConnectObjects(obj.GraphicObject, sgobj, 0, 0)
+
+ ElseIf sender Is btnCreateAndConnectOutlet1 Then
+
+ Dim obj = fs.AddObject(ObjectType.MaterialStream, sgobj.OutputConnectors(0).Position.X + 30, sgobj.OutputConnectors(0).Position.Y, "")
+
+ If sgobj.OutputConnectors(0).IsAttached Then fs.DisconnectObjects(sgobj, sgobj.OutputConnectors(0).AttachedConnector.AttachedTo)
+ fs.ConnectObjects(sgobj, obj.GraphicObject, 0, 0)
+
+ ElseIf sender Is btnCreateAndConnectEnergy Then
+
+ Dim obj = fs.AddObject(ObjectType.EnergyStream, sgobj.InputConnectors(1).Position.X - 30, sgobj.InputConnectors(1).Position.Y + 30, "")
+
+ If sgobj.InputConnectors(1).IsAttached Then fs.DisconnectObjects(sgobj.InputConnectors(1).AttachedConnector.AttachedFrom, sgobj)
+ fs.ConnectObjects(obj.GraphicObject, sgobj, 0, 1)
+
+ End If
+
+ UpdateInfo()
+ RequestCalc()
+
+ End Sub
+
+ Private Sub lblTag_KeyPress(sender As Object, e As KeyEventArgs) Handles lblTag.KeyUp
+
+ If e.KeyCode = Keys.Enter Then
+
+ If Loaded Then SimObject.GraphicObject.Tag = lblTag.Text
+ If Loaded Then SimObject.FlowSheet.UpdateOpenEditForms()
+ Me.Text = SimObject.GraphicObject.Tag & " (" & SimObject.GetDisplayName() & ")"
+ DirectCast(SimObject.FlowSheet, Interfaces.IFlowsheetGUI).UpdateInterface()
+
+ End If
+
+ End Sub
+
+ Sub RequestCalc()
+
+ SimObject.FlowSheet.RequestCalculation(SimObject)
+
+ End Sub
+
+ Private Sub tb_TextChanged(sender As Object, e As EventArgs) Handles tbActualR.TextChanged, tbElecConv.TextChanged,
+ tbInletAirPre.TextChanged, tbInletAirTemp.TextChanged, tbNumberOfTubesPerShell.TextChanged,
+ tbOutletTemperature.TextChanged, tbOverallUA.TextChanged, tbPressureDrop.TextChanged, tbRefAF.TextChanged,
+ tbRefR.TextChanged, tbTubeDe.TextChanged, tbTubeDi.TextChanged, tbTubeFoulingFactor.TextChanged,
+ tbTubeLength.TextChanged, tbTubePassesPerShell.TextChanged, tbTubePitch.TextChanged, tbTubeRoughness.TextChanged,
+ tbTubeThermalCond.TextChanged
+
+ Dim tbox = DirectCast(sender, TextBox)
+
+ If tbox.Text.IsValidDoubleExpression Then
+ tbox.ForeColor = System.Drawing.Color.Blue
+ Else
+ tbox.ForeColor = System.Drawing.Color.Red
+ End If
+
+ End Sub
+
+ Private Sub TextBoxKeyDown(sender As Object, e As KeyEventArgs) Handles tbActualR.KeyDown, tbElecConv.KeyDown,
+ tbInletAirPre.KeyDown, tbInletAirTemp.KeyDown, tbNumberOfTubesPerShell.KeyDown,
+ tbOutletTemperature.KeyDown, tbOverallUA.KeyDown, tbPressureDrop.KeyDown, tbRefAF.KeyDown,
+ tbRefR.KeyDown, tbTubeDe.KeyDown, tbTubeDi.KeyDown, tbTubeFoulingFactor.KeyDown,
+ tbTubeLength.KeyDown, tbTubePassesPerShell.KeyDown, tbTubePitch.KeyDown, tbTubeRoughness.KeyDown,
+ tbTubeThermalCond.KeyDown
+
+ If e.KeyCode = Keys.Enter And Loaded And DirectCast(sender, TextBox).ForeColor = System.Drawing.Color.Blue Then
+
+ Try
+ UpdateProps()
+ DirectCast(sender, TextBox).SelectAll()
+ RequestCalc()
+ Catch ex As Exception
+ MessageBox.Show("Error updating property. TextBox ID: " & DirectCast(sender, TextBox).Name & ". Error message: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
+ End Try
+
+ End If
+
+ End Sub
+
+End Class
\ No newline at end of file
diff --git a/DWSIM.UnitOperations/My Project/Resources.Designer.vb b/DWSIM.UnitOperations/My Project/Resources.Designer.vb
index a33627241..67f3a11eb 100644
--- a/DWSIM.UnitOperations/My Project/Resources.Designer.vb
+++ b/DWSIM.UnitOperations/My Project/Resources.Designer.vb
@@ -22,7 +22,7 @@ Namespace My.Resources
'''
''' A strongly-typed resource class, for looking up localized strings, etc.
'''
- _
@@ -450,6 +450,26 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Looks up a localized resource of type System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property icons8_fan() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("icons8_fan", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized resource of type System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property icons8_solar_panel() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("icons8_solar_panel", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
'''
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''
@@ -460,6 +480,16 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Looks up a localized resource of type System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property icons8_wind_turbine() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("icons8_wind_turbine", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
'''
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''
diff --git a/DWSIM.UnitOperations/My Project/Resources.resx b/DWSIM.UnitOperations/My Project/Resources.resx
index cac58f587..55f3af8fb 100644
--- a/DWSIM.UnitOperations/My Project/Resources.resx
+++ b/DWSIM.UnitOperations/My Project/Resources.resx
@@ -490,4 +490,13 @@
..\Resources\lightning.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\icons8-fan.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\icons8-solar_panel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\icons8-wind_turbine.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/DWSIM.UnitOperations/Reactors/PFR.vb b/DWSIM.UnitOperations/Reactors/PFR.vb
index 1b53c449c..befd9f0fe 100644
--- a/DWSIM.UnitOperations/Reactors/PFR.vb
+++ b/DWSIM.UnitOperations/Reactors/PFR.vb
@@ -81,9 +81,9 @@ Namespace Reactors
Public Property Diameter As Double = 0.1
- Public Property Volume() As Double
+ Public Property Volume As Double = 1.0
- Public Property dV() As Double
+ Public Property dV As Double = 0.01
Public Property CatalystLoading As Double = 0.0#
@@ -657,6 +657,8 @@ Namespace Reactors
Public Function Calculate_Internal(dVF As Double, Optional ByVal args As Object = Nothing) As Boolean
+ If dV = 0.0 Then dV = 0.01
+
Dim negative As Boolean = False
Dim negativeflag As Boolean = False
diff --git a/DWSIM.UnitOperations/Resources/icons8-fan.png b/DWSIM.UnitOperations/Resources/icons8-fan.png
new file mode 100644
index 000000000..1e3cf4a8e
Binary files /dev/null and b/DWSIM.UnitOperations/Resources/icons8-fan.png differ
diff --git a/DWSIM.UnitOperations/Resources/icons8-solar_panel.png b/DWSIM.UnitOperations/Resources/icons8-solar_panel.png
new file mode 100644
index 000000000..8880b06d6
Binary files /dev/null and b/DWSIM.UnitOperations/Resources/icons8-solar_panel.png differ
diff --git a/DWSIM.UnitOperations/Resources/icons8-wind_turbine.png b/DWSIM.UnitOperations/Resources/icons8-wind_turbine.png
new file mode 100644
index 000000000..ca816f4cf
Binary files /dev/null and b/DWSIM.UnitOperations/Resources/icons8-wind_turbine.png differ
diff --git a/DWSIM.UnitOperations/UnitOperations/AirCooler.vb b/DWSIM.UnitOperations/UnitOperations/AirCooler.vb
new file mode 100644
index 000000000..1f4c62f7d
--- /dev/null
+++ b/DWSIM.UnitOperations/UnitOperations/AirCooler.vb
@@ -0,0 +1,1495 @@
+Imports DWSIM.Interfaces
+Imports DWSIM.Interfaces.Enums
+Imports DWSIM.UnitOperations.Streams
+Imports DWSIM.Inspector
+Imports DWSIM.Drawing.SkiaSharp.GraphicObjects
+Imports DWSIM.DrawingTools.Point
+Imports DWSIM.Interfaces.Enums.GraphicObjects
+Imports DWSIM.ExtensionMethods
+Imports SkiaSharp
+Imports s = DWSIM.UI.Shared.Common
+Imports Eto.Forms
+Imports cv = DWSIM.SharedClasses.SystemsOfUnits.Converter
+Imports DWSIM.SharedClasses
+Imports System.IO
+Imports DWSIM.Thermodynamics.Streams
+Imports DWSIM.Thermodynamics
+
+Namespace UnitOperations
+
+ Public Class AirCooler
+
+ Inherits DWSIM.UnitOperations.UnitOperations.UnitOpBaseClass
+
+ Implements DWSIM.Interfaces.IExternalUnitOperation
+
+ Public f As EditingForm_AirCooler
+
+ Private calc As DWSIM.Thermodynamics.CalculatorInterface.Calculator
+
+ Private rpp As DWSIM.Thermodynamics.PropertyPackages.RaoultPropertyPackage
+
+ Private _name = "Air Cooler"
+ Private _desc = "Air Cooler Model"
+
+ Public Enum CalcMode
+ SpecifyOutletTemperature = 0
+ SpecifyGeometry = 1
+ SpecifyUA = 2
+ End Enum
+
+ Public Property CalculationMode As CalcMode = CalcMode.SpecifyOutletTemperature
+
+ Public Property PressureDrop As Double = 0.0
+
+ Public Property OutletTemperature As Double = 300
+
+ Public Property OverallUA As Double = 500 'W/K
+
+ Public Property ReferenceFanSpeed As Double = 100.0 'rpm
+
+ Public Property ReferenceAirFlow As Double = 1.0 'm3/s
+
+ Public Property ActualFanSpeed As Double = 100.0 'rpm
+
+ Public Property ActualAirFlow As Double = 1.0 'm3/s
+
+ Public Property AirInletTemperature As Double = 273.15 + 25.0
+
+ Public Property AirPressure As Double = 101325.0
+
+ Public Property AirOutletTemperature As Double = 273.15 + 25.0
+
+ Public Property ElectricalPowerConversionFactor As Double = 1.0 'kW/rpm
+
+ Public Property HeatLoad As Double = 0.0
+
+ Public Property ElectricalPowerLoad As Double = 0.0
+
+ 'tube internal diameter in mm
+ Public Property Tube_Di As Double = 50.0
+
+ 'tube external diameter in mm
+ Public Property Tube_De As Double = 60.0
+
+ 'tube length in m
+ Public Property Tube_Length As Double = 5.0
+
+ 'tube pitch in mm
+ Public Property Tube_Pitch As Double = 40.0
+
+ 'tube fouling in K.m2/W
+ Public Property Tube_Fouling As Double = 0.0#
+
+ 'number of tube passes per shell, integer
+ Public Property Tube_PassesPerShell As Integer = 1
+
+ 'number of tubes per shell, integer
+ Public Property Tube_NumberPerShell As Integer = 160
+
+ 'tube material roughness in mm
+ Public Property Tube_Roughness As Double = 0.000045 * 1000
+
+ 'tube thermal conductivity
+ Public Property Tube_ThermalConductivity As Double = 70.0#
+
+ Public Property MaxHeatExchange As Double = 0.0
+
+ Public Property ExchangerEfficiency As Double = 0.0
+
+ Public Property LMTD As Double = 0.0
+ Public Property LMTD_F As Double = 0.0
+
+
+ Public Overrides Function GetDisplayName() As String
+ Return _name
+ End Function
+
+ Public Overrides Function GetDisplayDescription() As String
+ Return _desc
+ End Function
+
+ Private ImagePath As String = ""
+ Private Image As SKImage
+
+ Public Overrides Property ComponentName As String = _name
+
+ Public Overrides Property ComponentDescription As String = _desc
+
+ Private ReadOnly Property IExternalUnitOperation_Name As String = _name Implements IExternalUnitOperation.Name
+
+ Public ReadOnly Property Prefix As String = "AC-" Implements IExternalUnitOperation.Prefix
+
+ Public ReadOnly Property Description As String = _desc Implements IExternalUnitOperation.Description
+
+ Public Overrides Property ObjectClass As SimulationObjectClass = SimulationObjectClass.Exchangers
+
+ Public Overrides ReadOnly Property MobileCompatible As Boolean = False
+
+ Public Function ReturnInstance(typename As String) As Object Implements IExternalUnitOperation.ReturnInstance
+
+ Return New AirCooler()
+
+ End Function
+
+ Public Overrides Sub DisplayEditForm()
+
+ If f Is Nothing Then
+ f = New EditingForm_AirCooler With {.SimObject = Me}
+ f.ShowHint = GlobalSettings.Settings.DefaultEditFormLocation
+ f.Tag = "ObjectEditor"
+ Me.FlowSheet.DisplayForm(f)
+ Else
+ If f.IsDisposed Then
+ f = New EditingForm_AirCooler With {.SimObject = Me}
+ f.ShowHint = GlobalSettings.Settings.DefaultEditFormLocation
+ f.Tag = "ObjectEditor"
+ Me.FlowSheet.DisplayForm(f)
+ Else
+ f.Activate()
+ End If
+ End If
+
+ End Sub
+
+ Public Overrides Sub UpdateEditForm()
+ If f IsNot Nothing Then
+ If Not f.IsDisposed Then
+ If f.InvokeRequired Then f.BeginInvoke(Sub() f.UpdateInfo())
+ End If
+ End If
+ End Sub
+
+ Public Overrides Function GetIconBitmap() As Object
+ Return My.Resources.icons8_fan
+ End Function
+
+ Public Overrides Sub CloseEditForm()
+ If f IsNot Nothing Then
+ If Not f.IsDisposed Then
+ f.Close()
+ f = Nothing
+ End If
+ End If
+ End Sub
+
+ Public Sub Draw(g As Object) Implements IExternalUnitOperation.Draw
+
+ Dim canvas As SKCanvas = DirectCast(g, SKCanvas)
+
+ If Image Is Nothing Then
+
+ ImagePath = System.IO.Path.GetTempFileName()
+ My.Resources.icons8_fan.Save(ImagePath)
+
+ Using streamBG = New FileStream(ImagePath, FileMode.Open)
+ Using bitmap = SKBitmap.Decode(streamBG)
+ Image = SKImage.FromBitmap(bitmap)
+ End Using
+ End Using
+
+ Try
+ File.Delete(ImagePath)
+ Catch ex As Exception
+ End Try
+
+ End If
+
+ Using p As New SKPaint With {.IsAntialias = GlobalSettings.Settings.DrawingAntiAlias, .FilterQuality = SKFilterQuality.High}
+ canvas.DrawImage(Image, New SKRect(GraphicObject.X, GraphicObject.Y, GraphicObject.X + GraphicObject.Width, GraphicObject.Y + GraphicObject.Height), p)
+ End Using
+
+ End Sub
+
+ Public Sub CreateConnectors() Implements IExternalUnitOperation.CreateConnectors
+
+ Dim myIC1 As New ConnectionPoint
+
+ Dim w, h, x, y As Double
+ w = GraphicObject.Width
+ h = GraphicObject.Height
+ x = GraphicObject.X
+ y = GraphicObject.Y
+
+ myIC1.Position = New Point(x, y)
+ myIC1.Type = ConType.ConIn
+ myIC1.Direction = ConDir.Right
+
+ Dim myIC2 As New ConnectionPoint
+
+ myIC2.Position = New Point(x + 0.5 * w, y + h)
+ myIC2.Type = ConType.ConEn
+ myIC2.Direction = ConDir.Up
+
+ Dim myOC1 As New ConnectionPoint
+ myOC1.Position = New Point(x + w, y)
+ myOC1.Type = ConType.ConOut
+ myOC1.Direction = ConDir.Right
+
+ With GraphicObject.InputConnectors
+ If .Count = 2 Then
+ .Item(0).Position = New Point(x, y)
+ .Item(1).Position = New Point(x + 0.5 * w, y + h)
+ Else
+ .Add(myIC1)
+ .Add(myIC2)
+ End If
+ .Item(0).ConnectorName = "Fluid Inlet"
+ .Item(1).ConnectorName = "Power Inlet"
+ End With
+
+ With GraphicObject.OutputConnectors
+ If .Count = 1 Then
+ .Item(0).Position = New Point(x + w, y)
+ Else
+ .Add(myOC1)
+ End If
+ .Item(0).ConnectorName = "Fluid Outlet"
+ End With
+
+ Me.GraphicObject.EnergyConnector.Active = False
+
+ End Sub
+
+ Public Overrides Function CloneXML() As Object
+ Dim obj As ICustomXMLSerialization = New AirCooler()
+ obj.LoadData(Me.SaveData)
+ Return obj
+ End Function
+
+ Public Overrides Function CloneJSON() As Object
+ Return Newtonsoft.Json.JsonConvert.DeserializeObject(Of AirCooler)(Newtonsoft.Json.JsonConvert.SerializeObject(Me))
+ End Function
+
+ Public Overrides Function LoadData(data As System.Collections.Generic.List(Of System.Xml.Linq.XElement)) As Boolean
+
+ Dim ci As Globalization.CultureInfo = Globalization.CultureInfo.InvariantCulture
+
+ XMLSerializer.XMLSerializer.Deserialize(Me, data)
+
+ Return True
+
+ End Function
+
+ Public Overrides Function SaveData() As System.Collections.Generic.List(Of System.Xml.Linq.XElement)
+
+ Dim elements As System.Collections.Generic.List(Of System.Xml.Linq.XElement) = XMLSerializer.XMLSerializer.Serialize(Me)
+ Dim ci As Globalization.CultureInfo = Globalization.CultureInfo.InvariantCulture
+
+ Return elements
+
+ End Function
+
+ Public Sub New(ByVal Name As String, ByVal Description As String)
+
+ MyBase.CreateNew()
+ Me.ComponentName = Name
+ Me.ComponentDescription = Description
+
+ End Sub
+
+ Public Sub New()
+
+ MyBase.New()
+
+ End Sub
+
+ Public Overrides Sub PerformPostCalcValidation()
+
+ End Sub
+
+ Public Overrides Sub Calculate(Optional args As Object = Nothing)
+
+ Dim IObj As Inspector.InspectorItem = Inspector.Host.GetNewInspectorItem()
+
+ Inspector.Host.CheckAndAdd(IObj, "", "Calculate", If(GraphicObject IsNot Nothing, GraphicObject.Tag, "Temporary Object") & " (" & GetDisplayName() & ")", GetDisplayName() & " Calculation Routine", True)
+
+ IObj?.SetCurrent()
+
+ IObj?.Paragraphs.Add("The Air Cooler model is a subset of the Shell and Tube HX model, with air being the 'shell side' fluid.")
+
+ IObj?.Paragraphs.Add("Input Parameters")
+
+ IObj?.Paragraphs.Add("The Air Cooler model in DWSIM has three calculation modes: ")
+
+ IObj?.Paragraphs.Add("1. Specify Outlet Temperature: you must provide the
+ fluid outlet temperature and DWSIM will calculate Overall UA and Heat Exchanged.")
+
+ IObj?.Paragraphs.Add("2. Specify Tube Geometry: in this mode you must provide
+ the tube geometry and DWSIM will calculate output
+ temperatures, pressure drop at the tubes, overall
+ HTC (U), LMTD, and exchange area. This calculation mode uses a
+ simplified version of Tinker's method for Shell and Tube
+ exchanger calculations, with a modification for the outside heat transfer coefficient (convection). ")
+
+ IObj?.Paragraphs.Add("3. Specify Overall UA: in this mode you must provide the Overall UA and DWSIM will
+ calculate the Heat Exchanged and Outlet Temperature.")
+
+ IObj?.Paragraphs.Add("You can provide the pressure drop for the hot fluid in the exchanger for modes 1 and 3 only.")
+
+ IObj?.Paragraphs.Add("Calculation Mode")
+
+ IObj?.Paragraphs.Add("The heat exchanger in DWSIM is calculated using the simple convection heat equation:")
+
+ IObj?.Paragraphs.Add("Q=UA\Delta T_{ml},")
+
+ IObj?.Paragraphs.Add("where: Q = heat exchanged, A = heat transfer area (external
+ surface) and \Delta T_{ml} = Logarithmic Mean Temperature
+ Difference (LMTD). We also remember that:")
+
+ IObj?.Paragraphs.Add("Q=m\Delta H,")
+
+ IObj?.Paragraphs.Add("where: Q = heat transferred from/to the fluid and \Delta H = outlet-inlet enthalpy difference.")
+
+ IObj?.Paragraphs.Add("Inlet Streams
")
+
+ Dim su = FlowSheet.FlowsheetOptions.SelectedUnitSystem
+
+ Dim Ti1, Ti2, w1, w2, A, Tc1, Th1, Wc, Wh, P1, P2, Th2, Tc2, U As Double
+ Dim Pc1, Ph1, Pc2, Ph2, DeltaHc, DeltaHh, H1, H2, Hc1, Hh1, Hc2, Hh2, CPC, CPH As Double
+ Dim StIn0, StIn1, StOut0, StOut1, StInCold, StInHot, StOutHot, StOutCold As MaterialStream
+ Dim coldidx As Integer = 0
+
+ 'Validate unitop status.
+ Me.Validate()
+
+ StIn0 = Me.GetInletMaterialStream(0)
+ StOut0 = Me.GetOutletMaterialStream(0)
+
+ If calc Is Nothing Then
+ calc = New Thermodynamics.CalculatorInterface.Calculator()
+ calc.Initialize()
+ rpp = New Thermodynamics.PropertyPackages.RaoultPropertyPackage()
+ End If
+
+ StIn1 = calc.CreateMaterialStream({"Air"}, {1.0})
+ StIn1.Phases(0).Properties.temperature = AirInletTemperature
+ StIn1.Phases(0).Properties.pressure = AirPressure
+
+ ActualAirFlow = ReferenceAirFlow / ReferenceFanSpeed * ActualFanSpeed
+
+ StIn1.Phases(0).Properties.massflow = Nothing
+ StIn1.Phases(0).Properties.molarflow = Nothing
+ StIn1.Phases(0).Properties.volumetric_flow = ActualAirFlow
+
+ StOut1 = StIn1.Clone()
+
+ StIn1.PropertyPackage = rpp
+ StOut1.PropertyPackage = rpp
+
+ IObj?.SetCurrent()
+ StIn1.Calculate()
+
+ 'First input stream.
+ Ti1 = StIn0.Phases(0).Properties.temperature.GetValueOrDefault
+ w1 = StIn0.Phases(0).Properties.massflow.GetValueOrDefault
+ P1 = StIn0.Phases(0).Properties.pressure.GetValueOrDefault
+ H1 = StIn0.Phases(0).Properties.enthalpy.GetValueOrDefault
+
+ 'Second input stream.
+ Ti2 = StIn1.Phases(0).Properties.temperature.GetValueOrDefault
+ w2 = StIn1.Phases(0).Properties.massflow.GetValueOrDefault
+ P2 = StIn1.Phases(0).Properties.pressure.GetValueOrDefault
+ H2 = StIn1.Phases(0).Properties.enthalpy.GetValueOrDefault
+
+ 'Let us use properties at the entrance as an initial implementation.
+
+ 'Input2 is the cold stream.
+ Tc1 = Ti2
+ Th1 = Ti1
+ Wc = w2
+ Wh = w1
+ Pc1 = P2
+ Ph1 = P1
+ Hc1 = H2
+ Hh1 = H1
+ coldidx = 1
+ 'Identify cold and hot streams.
+ StInCold = StIn1
+ StInHot = StIn0
+ StOutCold = StOut1
+ StOutHot = StOut0
+
+ IObj?.Paragraphs.Add(String.Format("Cold Stream: {0}
", "Ambient Air"))
+
+ IObj?.Paragraphs.Add(String.Format("Temperature: {0} K", StInCold.Phases(0).Properties.temperature.GetValueOrDefault))
+ IObj?.Paragraphs.Add(String.Format("Pressure: {0} Pa", StInCold.Phases(0).Properties.pressure.GetValueOrDefault))
+ IObj?.Paragraphs.Add(String.Format("Mass Flow: {0} kg/s", StInCold.Phases(0).Properties.massflow.GetValueOrDefault))
+ IObj?.Paragraphs.Add(String.Format("Specific Enthalpy: {0} kJ/kg", StInCold.Phases(0).Properties.enthalpy.GetValueOrDefault))
+
+ IObj?.Paragraphs.Add(String.Format("Hot Stream: {0}
", StInHot.GraphicObject.Tag))
+
+ IObj?.Paragraphs.Add(String.Format("Temperature: {0} K", StInHot.Phases(0).Properties.temperature.GetValueOrDefault))
+ IObj?.Paragraphs.Add(String.Format("Pressure: {0} Pa", StInHot.Phases(0).Properties.pressure.GetValueOrDefault))
+ IObj?.Paragraphs.Add(String.Format("Mass Flow: {0} kg/s", StInHot.Phases(0).Properties.massflow.GetValueOrDefault))
+ IObj?.Paragraphs.Add(String.Format("Specific Enthalpy: {0} kJ/kg", StInHot.Phases(0).Properties.enthalpy.GetValueOrDefault))
+
+ IObj?.Paragraphs.Add("Maximum Heat Exchange
")
+
+ IObj?.Paragraphs.Add("Calculating maximum theoretical heat exchange...")
+
+ IObj?.Paragraphs.Add("The maximum theoretical heat exchange is calculated as the smallest value from")
+
+ IObj?.Paragraphs.Add("Q_{max,hot}=W_{hot}(H_{hot,in}-H_{hot,c})")
+ IObj?.Paragraphs.Add("Q_{max,cold}=W_{cold}(H_{cold,in}-H_{cold,h})")
+
+ IObj?.Paragraphs.Add("where")
+ IObj?.Paragraphs.Add("H_{hot,in} is the hot stream inlet enthalpy")
+ IObj?.Paragraphs.Add("H_{hot,c} is the hot stream enthalpy at cold stream inlet temperature")
+ IObj?.Paragraphs.Add("H_{cold,in} is the cold stream inlet enthalpy ")
+ IObj?.Paragraphs.Add("H_{cold,h} is the cold stream enthalpy at hot stream inlet temperature")
+
+ Pc2 = Pc1
+ Ph2 = Ph1 - PressureDrop
+
+ 'calculate maximum theoretical heat exchange
+ If DebugMode Then AppendDebugLine(String.Format("Doing a PT flash to calculate hot stream outlet enthalpy... P = {0} Pa, T = {1} K", Ph2, Tc1))
+ Dim HHx As Double
+ Dim tmpstr As MaterialStream = StInHot.Clone
+ tmpstr.PropertyPackage = StInHot.PropertyPackage.Clone
+ tmpstr.SetFlowsheet(StInHot.FlowSheet)
+ tmpstr.PropertyPackage.CurrentMaterialStream = tmpstr
+ tmpstr.Phases("0").Properties.temperature = Tc1
+ tmpstr.Phases("0").Properties.pressure = Ph2
+ IObj?.SetCurrent()
+ tmpstr.PropertyPackage.DW_CalcEquilibrium(PropertyPackages.FlashSpec.T, PropertyPackages.FlashSpec.P)
+ IObj?.SetCurrent()
+ tmpstr.Calculate(False, True)
+ HHx = tmpstr.Phases(0).Properties.enthalpy.GetValueOrDefault
+ DeltaHh = Wh * (Hh1 - HHx) 'kW
+
+ If DebugMode Then AppendDebugLine(String.Format("Doing a PT flash to calculate cold stream outlet enthalpy... P = {0} Pa, T = {1} K", Pc2, Th1))
+ tmpstr = StInCold.Clone
+ tmpstr.PropertyPackage = StInCold.PropertyPackage.Clone
+ tmpstr.SetFlowsheet(StInHot.FlowSheet)
+ tmpstr.PropertyPackage.CurrentMaterialStream = tmpstr
+ tmpstr.Phases("0").Properties.temperature = Th1
+ tmpstr.Phases("0").Properties.pressure = Pc2
+ IObj?.SetCurrent()
+ tmpstr.PropertyPackage.DW_CalcEquilibrium(PropertyPackages.FlashSpec.T, PropertyPackages.FlashSpec.P)
+ IObj?.SetCurrent()
+ tmpstr.Calculate(False, True)
+ HHx = tmpstr.Phases(0).Properties.enthalpy.GetValueOrDefault
+ DeltaHc = Wc * (HHx - Hc1) 'kW
+
+ IObj?.Paragraphs.Add("Q_{cold} = " & DeltaHc & " kW")
+
+ MaxHeatExchange = Math.Min(DeltaHc, DeltaHh) 'kW
+
+ IObj?.Paragraphs.Add("Q_{max} = " & MaxHeatExchange & " kW")
+
+ tmpstr.PropertyPackage = Nothing
+ tmpstr.Dispose()
+ tmpstr = Nothing
+
+ If DebugMode Then AppendDebugLine("Maximum possible heat exchange is " & MaxHeatExchange.ToString & " kW.")
+
+ 'Copy properties from the input streams.
+ StOut0.Assign(StIn0)
+ StOut1.Assign(StIn1)
+
+ CPC = StInCold.Phases(0).Properties.heatCapacityCp.GetValueOrDefault
+ CPH = StInHot.Phases(0).Properties.heatCapacityCp.GetValueOrDefault
+
+ IObj?.Paragraphs.Add("Actual Heat Exchange
")
+
+ IObj?.Paragraphs.Add("Calculating heat exchanged...")
+
+ IObj?.Paragraphs.Add(String.Format("Calculation mode: {0}", [Enum].GetName(CalculationMode.GetType, CalculationMode)))
+
+ Select Case CalculationMode
+
+ Case CalcMode.SpecifyOutletTemperature
+
+ Th2 = OutletTemperature
+
+ StInHot.PropertyPackage.CurrentMaterialStream = StInHot
+ If DebugMode Then AppendDebugLine(String.Format("Doing a PT flash to calculate hot stream outlet enthalpy... P = {0} Pa, T = K", Ph2, Th2))
+ IObj?.SetCurrent()
+ Dim tmp = StInHot.PropertyPackage.CalculateEquilibrium2(FlashCalculationType.PressureTemperature, Ph2, Th2, 0.0#)
+ Hh2 = tmp.CalculatedEnthalpy
+ HeatLoad = -Wh * (Hh2 - Hh1)
+
+ DeltaHc = HeatLoad / Wc
+ Hc2 = Hc1 + DeltaHc
+ StInCold.PropertyPackage.CurrentMaterialStream = StInCold
+ If DebugMode Then AppendDebugLine(String.Format("Doing a PH flash to calculate cold stream outlet temperature... P = {0} Pa, H = {1} kJ/[kg.K]", Pc2, Hc2))
+ IObj?.SetCurrent()
+ tmp = StInCold.PropertyPackage.CalculateEquilibrium2(FlashCalculationType.PressureEnthalpy, Pc2, Hc2, Tc1)
+ Tc2 = tmp.CalculatedTemperature
+ If DebugMode Then AppendDebugLine(String.Format("Calculated cold stream outlet temperature T2 = {0} K", Tc2))
+
+ LMTD = ((Th1 - Tc2) - (Th2 - Tc1)) / Math.Log((Th1 - Tc2) / (Th2 - Tc1))
+
+ OverallUA = HeatLoad / LMTD * 1000
+
+ AirOutletTemperature = Tc2
+
+ If HeatLoad > MaxHeatExchange Then
+ Throw New Exception("Invalid Outlet Temperature (Heat Exchanged higher than the theoretical maximum)")
+ End If
+
+ Case CalcMode.SpecifyGeometry
+
+ 'Shell and Tube HX calculation using Tinker's method.
+
+ IObj?.Paragraphs.Add("Shell and Tube HX calculation uses Tinker's method, more details on this link, Chapter 5 (Capitulo 5).")
+
+ Dim Tc2_ant, Th2_ant As Double
+ Dim U_ant, fx, Fant, F As Double
+ Dim DTm, Tcm, Thm, R, Sf, P As Double
+
+ 'initial estimates for R and P to calculate outlet temperatures
+
+ R = 0.4
+ P = 0.6
+
+ 'hot
+ Th2 = P * (Tc1 - Th1) + Th1
+ Tc2 = Tc1 - R * (Th2 - Th1)
+
+ If Th2 <= Tc2 Then Th2 = Tc2 * 1.2
+
+ Pc2 = Pc1
+ Ph2 = Ph1
+ F = 1.0#
+ U = 500.0#
+
+ IObj?.Paragraphs.Add("Initial Estimates
")
+
+ IObj?.Paragraphs.Add("T_{c,out} = " & Tc2 & " K")
+ IObj?.Paragraphs.Add("T_{h,out} = " & Th2 & " K")
+ IObj?.Paragraphs.Add("U = " & U & " W/[m2.K]")
+
+ Dim rhoc, muc, kc, rhoh, muh, kh, rt, di, de, L, hi, nt, vt, Ret, Prt As Double
+
+ Dim icnt As Integer = 0
+
+ Do
+
+ IObj?.Paragraphs.Add("Convergence Loop #" & icnt & "
")
+
+ LMTD = ((Th1 - Tc2) - (Th2 - Tc1)) / Math.Log((Th1 - Tc2) / (Th2 - Tc1))
+
+ 'hot
+ R = (Tc1 - Tc2) / (Th2 - Th1)
+ P = (Th2 - Th1) / (Tc1 - Th1)
+
+ Fant = F
+
+ If R <> 1.0# Then
+ Dim alpha As Double
+ alpha = ((1 - R * P) / (1 - P))
+ Sf = (alpha - 1) / (alpha - R)
+ F = (R ^ 2 + 1) ^ 0.5 * Math.Log((1 - Sf) / (1 - R * Sf)) / ((R - 1) * Math.Log((2 - Sf * (R + 1 - (R ^ 2 + 1) ^ 0.5)) / (2 - Sf * (R + 1 + (R ^ 2 + 1) ^ 0.5))))
+ Else
+ Sf = P
+ F = Sf * 2 ^ 0.5 / ((1 - Sf) * Math.Log((2 * (1 - Sf) + Sf * 2 ^ 0.5) / (2 * (1 - Sf) - Sf * 2 ^ 0.5)))
+ End If
+ If Double.IsNaN(F) Then
+ F = Fant
+ End If
+ DTm = F * LMTD
+
+ IObj?.Paragraphs.Add("\Delta T_{ml} = " & LMTD & " K")
+
+ '3
+ Tcm = (Tc2 - Tc1) / 2 + Tc1
+ Thm = (Th1 - Th2) / 2 + Th2
+
+
+ IObj?.Paragraphs.Add("F = " & F)
+ IObj?.Paragraphs.Add("\Delta T_m = " & DTm & " K")
+ IObj?.Paragraphs.Add("T_{c,m} = " & Tcm & " K")
+ IObj?.Paragraphs.Add("T_{h,m} = " & Thm & " K")
+
+ '4, 5
+
+ StInCold.PropertyPackage.CurrentMaterialStream = StInCold
+ Dim tmp = StInCold.PropertyPackage.CalculateEquilibrium2(FlashCalculationType.PressureTemperature, Pc2, Tc2, 0)
+ Dim tms As MaterialStream = StInCold.Clone
+ tms.SetFlowsheet(StInCold.FlowSheet)
+ tms.Phases(0).Properties.temperature = Tcm
+ With tms.PropertyPackage
+ .CurrentMaterialStream = tms
+ IObj?.SetCurrent()
+ .DW_CalcEquilibrium(PropertyPackages.FlashSpec.T, PropertyPackages.FlashSpec.P)
+ If tms.Phases(3).Properties.molarfraction.GetValueOrDefault > 0 Then
+ IObj?.SetCurrent()
+ .DW_CalcPhaseProps(PropertyPackages.Phase.Liquid1)
+ Else
+ IObj?.SetCurrent()
+ .DW_ZerarPhaseProps(PropertyPackages.Phase.Liquid1)
+ End If
+ If tms.Phases(2).Properties.molarfraction.GetValueOrDefault > 0 Then
+ IObj?.SetCurrent()
+ .DW_CalcPhaseProps(PropertyPackages.Phase.Vapor)
+ Else
+ .DW_ZerarPhaseProps(PropertyPackages.Phase.Vapor)
+ End If
+ If tms.Phases(2).Properties.molarfraction.GetValueOrDefault >= 0 And tms.Phases(2).Properties.molarfraction.GetValueOrDefault <= 1 Then
+ IObj?.SetCurrent()
+ .DW_CalcPhaseProps(PropertyPackages.Phase.Liquid)
+ Else
+ IObj?.SetCurrent()
+ .DW_ZerarPhaseProps(PropertyPackages.Phase.Liquid)
+ End If
+ IObj?.SetCurrent()
+ tms.PropertyPackage.DW_CalcPhaseProps(PropertyPackages.Phase.Mixture)
+ End With
+ rhoc = tms.Phases(0).Properties.density.GetValueOrDefault
+ CPC = tms.Phases(0).Properties.heatCapacityCp.GetValueOrDefault
+ kc = tms.Phases(0).Properties.thermalConductivity.GetValueOrDefault
+ muc = tms.Phases(1).Properties.viscosity.GetValueOrDefault * tms.Phases(1).Properties.molarfraction.GetValueOrDefault + tms.Phases(2).Properties.viscosity.GetValueOrDefault * tms.Phases(2).Properties.molarfraction.GetValueOrDefault
+ tms = StInHot.Clone
+ tms.SetFlowsheet(StInHot.FlowSheet)
+ tms.Phases(0).Properties.temperature = Thm
+ tms.PropertyPackage.CurrentMaterialStream = tms
+ With tms.PropertyPackage
+ .CurrentMaterialStream = tms
+ IObj?.SetCurrent()
+ .DW_CalcEquilibrium(PropertyPackages.FlashSpec.T, PropertyPackages.FlashSpec.P)
+ If tms.Phases(3).Properties.molarfraction.GetValueOrDefault > 0 Then
+ IObj?.SetCurrent()
+ .DW_CalcPhaseProps(PropertyPackages.Phase.Liquid1)
+ Else
+ IObj?.SetCurrent()
+ .DW_ZerarPhaseProps(PropertyPackages.Phase.Liquid1)
+ End If
+ If tms.Phases(2).Properties.molarfraction.GetValueOrDefault > 0 Then
+ IObj?.SetCurrent()
+ .DW_CalcPhaseProps(PropertyPackages.Phase.Vapor)
+ Else
+ IObj?.SetCurrent()
+ .DW_ZerarPhaseProps(PropertyPackages.Phase.Vapor)
+ End If
+ If tms.Phases(2).Properties.molarfraction.GetValueOrDefault >= 0 And tms.Phases(2).Properties.molarfraction.GetValueOrDefault <= 1 Then
+ IObj?.SetCurrent()
+ .DW_CalcPhaseProps(PropertyPackages.Phase.Liquid)
+ Else
+ IObj?.SetCurrent()
+ .DW_ZerarPhaseProps(PropertyPackages.Phase.Liquid)
+ End If
+ IObj?.SetCurrent()
+ tms.PropertyPackage.DW_CalcPhaseProps(PropertyPackages.Phase.Mixture)
+ End With
+
+ rhoh = tms.Phases(0).Properties.density.GetValueOrDefault
+ CPH = tms.Phases(0).Properties.heatCapacityCp.GetValueOrDefault
+ kh = tms.Phases(0).Properties.thermalConductivity.GetValueOrDefault
+ muh = tms.Phases(1).Properties.viscosity.GetValueOrDefault * tms.Phases(1).Properties.molarfraction.GetValueOrDefault + tms.Phases(2).Properties.viscosity.GetValueOrDefault * tms.Phases(2).Properties.molarfraction.GetValueOrDefault
+
+ '6
+ Dim pitch As Double, n As Integer
+
+ rt = Tube_Fouling
+ de = Tube_De / 1000
+ di = Tube_Di / 1000
+ L = Tube_Length
+ pitch = Tube_Pitch / 1000
+ n = Tube_NumberPerShell
+ nt = n / Tube_PassesPerShell
+ A = n * Math.PI * de * (L - 2 * de)
+
+ 'If pitch < de Then Throw New Exception("Invalid input: tube spacing (pitch) is smaller than the tube's external diameter.")
+
+ 'hot
+ vt = Wh / (rhoh * nt * Math.PI * di ^ 2 / 4)
+ Ret = rhoh * vt * di / muh
+ Prt = muh * CPH / kh * 1000
+
+ IObj?.Paragraphs.Add("Re_{tube} = " & Ret)
+ IObj?.Paragraphs.Add("Pr_{tube} = " & Prt)
+
+ 'calcular DeltaP
+
+ Dim dpt As Double
+ 'tube
+ dpt = 0.0#
+ Dim fric As Double = 0
+ Dim epsilon As Double = Tube_Roughness / 1000
+ If Ret > 3250 Then
+ Dim a1 = Math.Log(((epsilon / di) ^ 1.1096) / 2.8257 + (7.149 / Ret) ^ 0.8961) / Math.Log(10.0#)
+ Dim b1 = -2 * Math.Log((epsilon / di) / 3.7065 - 5.0452 * a1 / Ret) / Math.Log(10.0#)
+ fric = (1 / b1) ^ 2
+ Else
+ fric = 64 / Ret
+ End If
+
+ 'hot
+ dpt = fric * L * Tube_PassesPerShell / di * vt ^ 2 / 2 * rhoh
+
+ IObj?.Paragraphs.Add("\Delta P_{tube} = " & dpt & " Pa")
+
+ 'tube heat transfer coeff
+ hi = UnitOperations.Pipe.hint_petukhov(kh, di, fric, Ret, Prt)
+
+ IObj?.Paragraphs.Add("h_{int,tube} = " & hi & " W/[m2.K]")
+
+ 'air heat transfer coeff
+ Dim he As Double = 0.0
+
+ 'shell internal diameter
+ Dim Dsi, Dsf, nsc As Double
+
+ nsc = 1.1 * n ^ 0.5
+
+ Dsf = (nsc - 1) * pitch + de
+ Dsi = Dsf / 1.075
+
+ Dim Gsf, Np, Fp, Ss, Ssf, Cb, Ca, Res, Prs, aa, bb, cc, xx, yy, Nh, Y As Double
+ xx = Dsi / L
+ yy = pitch / de
+ aa = 0.9078565328950694
+ bb = 0.66331106126564476
+
+ cc = -4.4329764639656482
+ Nh = aa * xx ^ bb * yy ^ cc
+ aa = 5.3718559074820611
+ bb = -0.33416765138071414
+ cc = 0.7267144209289168
+ Y = aa * xx ^ bb * yy ^ cc
+ aa = 0.53807650470841084
+ bb = 0.3761125784751041
+ cc = -3.8741224386187474
+ Np = aa * xx ^ bb * yy ^ cc
+
+ Fp = 1 / (0.8 + Np * (Dsi / pitch) ^ 0.5)
+ Cb = 0.97
+ Ca = Cb * (pitch - de) / pitch
+ Ss = Ca * L * Dsf
+ Ssf = Ss / Fp
+
+ Gsf = Wc / Ssf
+ Res = Gsf * de / muc
+ Prs = muc * CPC / kc * 1000
+
+ IObj?.Paragraphs.Add("Re_{ext} = " & Res)
+ IObj?.Paragraphs.Add("Pr_{ext} = " & Prs)
+
+ 'ho*Do/k = 0.287 * (Do * G / mu) ^ 0.61 * (cp * mu / k) ^ 0.33 * Fa
+
+ Dim G = ActualAirFlow / A * rhoc
+
+ he = (1 / de) * kc * 0.287 * (de * G / muc) ^ 0.61 * (CPC * 1000 * muc / kc) ^ 0.33
+
+ he = UnitOperations.Pipe.hext_holman(kc, de, Res, Prs)
+
+ IObj?.Paragraphs.Add("h_{ext} = " & he & " W/[m2.K]")
+
+ 'global HTC (U)
+ Dim kt As Double = Tube_ThermalConductivity
+ Dim f1, f2, f3, f4, f5 As Double
+ f1 = de / (hi * di)
+ f2 = rt * de / di
+ f3 = de / (2 * kt) * Math.Log(de / di)
+ f4 = 0.0
+ f5 = 1 / he
+
+ U_ant = U
+ U = f1 + f2 + f3 + f4 + f5
+ U = 1 / U
+
+ HeatLoad = U * A * F * LMTD / 1000
+ If HeatLoad > MaxHeatExchange Then HeatLoad = MaxHeatExchange
+
+ 'hot
+ DeltaHc = HeatLoad / Wc
+ DeltaHh = -HeatLoad / Wh
+
+ Hc2 = Hc1 + DeltaHc
+ Hh2 = Hh1 + DeltaHh
+ StInCold.PropertyPackage.CurrentMaterialStream = StInCold
+ IObj?.SetCurrent()
+ tmp = StInCold.PropertyPackage.CalculateEquilibrium2(FlashCalculationType.PressureEnthalpy, Pc2, Hc2, Tc2)
+ Tc2_ant = Tc2
+ Tc2 = tmp.CalculatedTemperature
+ Tc2 = 0.1 * Tc2 + 0.9 * Tc2_ant
+ StInHot.PropertyPackage.CurrentMaterialStream = StInHot
+ IObj?.SetCurrent()
+ tmp = StInHot.PropertyPackage.CalculateEquilibrium2(FlashCalculationType.PressureEnthalpy, Ph2, Hh2, Th2)
+ Th2_ant = Th2
+ Th2 = tmp.CalculatedTemperature
+ Th2 = 0.1 * Th2 + 0.9 * Th2_ant
+
+ Ph2 = Ph1 - dpt
+
+ OverallUA = U * A
+
+ IObj?.Paragraphs.Add("Q = " & HeatLoad & " kW")
+ IObj?.Paragraphs.Add("U = " & U & " W/[m2.K]")
+ IObj?.Paragraphs.Add("A = " & A & " m2")
+ IObj?.Paragraphs.Add("UA = " & OverallUA & " W/K")
+
+ IObj?.Paragraphs.Add("T_{c,out} = " & Tc2 & " K")
+ IObj?.Paragraphs.Add("T_{h,out} = " & Th2 & " K")
+
+ Me.LMTD_F = F
+ fx = Math.Abs((Th2 - Th2_ant) ^ 2 + (Tc2 - Tc2_ant) ^ 2)
+
+ IObj?.Paragraphs.Add("Temperature error = " & fx)
+
+ FlowSheet.CheckStatus()
+
+ icnt += 1
+
+ PressureDrop = dpt
+
+ AirOutletTemperature = Tc2
+
+ OutletTemperature = Th2
+
+ Loop Until fx < 0.01 Or icnt > 100
+
+ Case CalcMode.SpecifyUA
+
+ Dim Qi, Q_old, PIc1, PIc2, PIh1, PIh2 As Double
+ Dim NTUh, NTUc, WWh, WWc, RRh, RRc, PPh, PPc As Double
+ Dim tmp As IFlashCalculationResult
+ Dim count As Integer
+ Qi = MaxHeatExchange
+ Q_old = 10000000000.0
+
+ If DebugMode Then AppendDebugLine(String.Format("Start with Max Heat Exchange Q = {0} KW", Qi))
+
+ Do
+
+ If DebugMode Then AppendDebugLine(String.Format("======================================================"))
+ If DebugMode Then AppendDebugLine(String.Format("Iteration loop: {0}", count))
+
+ Hc2 = Qi / Wc + Hc1
+ Hh2 = Hh1 - Qi / Wh
+ StInCold.PropertyPackage.CurrentMaterialStream = StInCold
+ IObj?.SetCurrent()
+ tmp = StInCold.PropertyPackage.CalculateEquilibrium2(FlashCalculationType.PressureEnthalpy, Pc2, Hc2, Tc2)
+ Tc2 = tmp.CalculatedTemperature
+ PIc2 = (1 + tmp.GetLiquidPhase1MoleFraction) * (1 + tmp.GetVaporPhaseMoleFraction * (1 + tmp.GetSolidPhaseMoleFraction)) 'phase indicator cold stream
+ If DebugMode Then AppendDebugLine(String.Format("Doing a PH flash to calculate cold stream outlet temperature... P = {0} Pa, H = {1} kJ/[kg.K] ===> Tc2 = {2} K", Pc2, Hc2, Tc2))
+
+ StInHot.PropertyPackage.CurrentMaterialStream = StInHot
+ IObj?.SetCurrent()
+ tmp = StInHot.PropertyPackage.CalculateEquilibrium2(FlashCalculationType.PressureEnthalpy, Ph2, Hh2, Th2)
+ Th2 = tmp.CalculatedTemperature
+ PIh2 = (1 + tmp.GetLiquidPhase1MoleFraction) * (1 + tmp.GetVaporPhaseMoleFraction * (1 + tmp.GetSolidPhaseMoleFraction)) 'phase indicator hot stream
+ If DebugMode Then AppendDebugLine(String.Format("Doing a PH flash to calculate hot stream outlet temperature... P = {0} Pa, H = {1} kJ/[kg.K] ===> Th2 = {2} K", Ph2, Hh2, Th2))
+
+ If Math.Abs((Qi - Q_old) / Q_old) < 0.001 Or count > 100 Then Exit Do
+
+ WWc = Wc * (Hc2 - Hc1) / (Tc2 - Tc1) * 1000 'Heat Capacity Rate cold side
+ WWh = Wh * (Hh2 - Hh1) / (Th2 - Th1) * 1000 'Heat Capacity Rate hot side
+ NTUc = OverallUA / WWc 'Numbers of transfer units - cold side
+ NTUh = OverallUA / WWh 'Numbers of transfer units - hot side
+ RRc = WWc / WWh 'Heat capacity ratio cold side
+ RRh = WWh / WWc 'Heat capacity ratio hot side
+
+ If DebugMode Then AppendDebugLine(String.Format("Calculating heat exchanger"))
+ If DebugMode Then AppendDebugLine(String.Format("Number of Transfer Units - NTU_cold :{0} NTU_hot: {1}", NTUc, NTUh))
+ If DebugMode Then AppendDebugLine(String.Format("Heat Capacity Rates - W_cold :{0} W_hot: {1}", WWc, WWh))
+ If DebugMode Then AppendDebugLine(String.Format("Heat Capacity Ratios - R_cold :{0} R_hot: {1}", RRc, RRh))
+
+ PPc = (1 - Math.Exp((RRc - 1) * NTUc)) / (1 - RRc * Math.Exp((RRc - 1) * NTUc))
+ PPh = (1 - Math.Exp((RRh - 1) * NTUh)) / (1 - RRh * Math.Exp((RRh - 1) * NTUh))
+
+ If DebugMode Then AppendDebugLine(String.Format("Dimensionless Temp Change - P_cold :{0} P_hot: {1}", PPc, PPh))
+
+ If Double.IsNaN(PPc) Then PPc = 0
+ If Double.IsNaN(PPh) Then PPh = 0
+ Tc2 = Tc1 + PPc * (Th1 - Tc1)
+ Th2 = Th1 - PPh * (Th1 - Tc1)
+ If DebugMode Then AppendDebugLine(String.Format("Outlet Temperatures - Tc2 :{0} K Th2: {1} K", Tc2, Th2))
+
+ If (Th1 - Tc2) / (Th2 - Tc1) = 1 Then
+ LMTD = ((Th1 - Tc2) + (Th2 - Tc1)) / 2
+ Else
+ LMTD = ((Th1 - Tc2) - (Th2 - Tc1)) / Math.Log((Th1 - Tc2) / (Th2 - Tc1))
+ End If
+
+ Q_old = Qi
+ If LMTD > 0 Then
+ Qi = OverallUA * LMTD / 1000
+ Else
+ Qi = Wh * (Hh1 - Hh2)
+ LMTD = Qi / OverallUA * 1000
+ End If
+
+ If DebugMode Then
+ AppendDebugLine(String.Format("Logarithmic Temperature Difference :{0} K", LMTD))
+ AppendDebugLine(String.Format("Heat Exchange Q = {0} KW", Qi))
+ End If
+
+ count += 1
+
+ Loop
+
+ If HeatLoad > MaxHeatExchange Then
+ Throw New Exception("Invalid Outlet Temperature (Heat Exchanged higher than the theoretical maximum)")
+ End If
+
+ AirOutletTemperature = Tc2
+ OutletTemperature = Th2
+
+ HeatLoad = Qi
+
+ If count > 100 Then Throw New Exception("Reached maximum number of iterations! Final Q change: " & Qi - Q_old & " kW ; " & Math.Abs((Qi - Q_old) / Q_old * 100) & " % ")
+
+ PIc1 = (1 + StInCold.Phases(1).Properties.molarfraction.GetValueOrDefault) * (1 + StInCold.Phases(2).Properties.molarfraction.GetValueOrDefault) * (1 + StInCold.Phases(7).Properties.molarfraction.GetValueOrDefault)
+ PIh1 = (1 + StInHot.Phases(1).Properties.molarfraction.GetValueOrDefault) * (1 + StInHot.Phases(2).Properties.molarfraction.GetValueOrDefault) * (1 + StInHot.Phases(7).Properties.molarfraction.GetValueOrDefault)
+
+ If (PIc1 = 2 And PIc2 > 2) Or (PIc1 > 2 And PIc2 = 2) Then FlowSheet.ShowMessage(Me.GraphicObject.Tag & ": Phase change in cold stream detected! Heat exchange result is an aproximation.", IFlowsheet.MessageType.Warning)
+ If (PIh1 = 2 And PIh2 > 2) Or (PIh1 > 2 And PIh2 = 2) Then FlowSheet.ShowMessage(Me.GraphicObject.Tag & ": Phase change in hot stream detected! Heat exchange result is an aproximation.", IFlowsheet.MessageType.Warning)
+
+ End Select
+
+ IObj?.Paragraphs.Add("Results
")
+
+ IObj?.Paragraphs.Add("T_{c,out} = " & Tc2 & " K")
+ IObj?.Paragraphs.Add("T_{h,out} = " & Th2 & " K")
+ IObj?.Paragraphs.Add("P_{c,out} = " & Pc2 & " Pa")
+ IObj?.Paragraphs.Add("P_{h,out} = " & Ph2 & " Pa")
+
+ IObj?.Paragraphs.Add("Q = " & HeatLoad & " kW")
+
+ IObj?.Paragraphs.Add("U = " & U & " W/[m2.K]")
+
+ IObj?.Paragraphs.Add("\Delta T_{ml} = " & LMTD & " K")
+
+ ExchangerEfficiency = HeatLoad / MaxHeatExchange * 100
+
+ IObj?.Paragraphs.Add("Q/Q_{max} = " & ExchangerEfficiency & " %")
+
+ 'ElectricalPowerConversionFactor = HeatLoad / ActualFanSpeed
+
+ If Not DebugMode Then
+
+ ElectricalPowerLoad = ElectricalPowerConversionFactor * ActualFanSpeed
+
+ GetInletEnergyStream(1).EnergyFlow = ElectricalPowerLoad
+
+ 'Define new calculated properties.
+ StOutHot.Phases(0).Properties.temperature = Th2
+ StOutCold.Phases(0).Properties.temperature = Tc2
+ StOutHot.Phases(0).Properties.pressure = Ph2
+ StOutCold.Phases(0).Properties.pressure = Pc2
+ StOutHot.Phases(0).Properties.enthalpy = Hh2
+ StOutCold.Phases(0).Properties.enthalpy = Hc2
+
+ If Th2 < Tc1 Or Tc2 > Th1 Then
+ FlowSheet.ShowMessage(Me.GraphicObject.Tag & ": Temperature Cross", IFlowsheet.MessageType.Warning)
+ End If
+
+ Else
+
+ AppendDebugLine("Calculation finished successfully.")
+
+ End If
+
+
+
+ End Sub
+
+ Public Overrides Sub DeCalculate()
+
+ Dim es As EnergyStream
+ Dim cp As IConnectionPoint
+ For Each cp In Me.GraphicObject.OutputConnectors
+ If cp.IsAttached Then
+ es = FlowSheet.SimulationObjects(cp.AttachedConnector.AttachedTo.Name)
+ es.EnergyFlow = Nothing
+ End If
+ Next
+
+ End Sub
+
+ Public Sub PopulateEditorPanel(ctner As Object) Implements IExternalUnitOperation.PopulateEditorPanel
+
+ Dim container As DynamicLayout = ctner
+
+ Dim su = GetFlowsheet().FlowsheetOptions.SelectedUnitSystem
+ Dim nf = GetFlowsheet().FlowsheetOptions.NumberFormat
+
+ Dim cmodes As String() = {"Specify Outlet Temperature", "Specify Tube Geometry", "Specify Overall UA"}
+
+ s.CreateAndAddDropDownRow(container, "Calculation Mode", cmodes.ToList, CalculationMode, Sub(dd, e)
+ CalculationMode = dd.SelectedIndex
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddLabelRow(container, "Main Properties")
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Pressure Drop ({0})", su.deltaP),
+ PressureDrop.ConvertFromSI(su.deltaP),
+ Sub(tb, e)
+ PressureDrop = tb.Text.ParseExpressionToDouble.ConvertToSI(su.deltaP)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Fluid Outlet Temperature ({0})", su.temperature),
+ OutletTemperature.ConvertFromSI(su.temperature),
+ Sub(tb, e)
+ OutletTemperature = tb.Text.ParseExpressionToDouble.ConvertToSI(su.temperature)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ Dim tbx = s.CreateAndAddTextBoxRow(container, nf, String.Format("Heat Load ({0})", su.heatflow),
+ HeatLoad.ConvertFromSI(su.heatflow),
+ Sub(tb, e)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+ tbx.ReadOnly = True
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Overall UA ({0})", "W/K"),
+ OverallUA,
+ Sub(tb, e)
+ OverallUA = tb.Text.ParseExpressionToDouble
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Air Inlet Temperature ({0})", su.temperature),
+ AirInletTemperature.ConvertFromSI(su.temperature),
+ Sub(tb, e)
+ AirInletTemperature = tb.Text.ParseExpressionToDouble.ConvertToSI(su.temperature)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Air Inlet Pressure ({0})", su.pressure),
+ AirPressure.ConvertFromSI(su.temperature),
+ Sub(tb, e)
+ AirPressure = tb.Text.ParseExpressionToDouble.ConvertToSI(su.pressure)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ Dim tbx2 = s.CreateAndAddTextBoxRow(container, nf, String.Format("Air Outlet Temperature ({0})", su.temperature),
+ AirOutletTemperature.ConvertFromSI(su.temperature),
+ Sub(tb, e)
+ AirOutletTemperature = tb.Text.ParseExpressionToDouble.ConvertToSI(su.temperature)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+ tbx2.ReadOnly = True
+
+ Dim tbx3 = s.CreateAndAddTextBoxRow(container, nf, String.Format("Heat Load ({0})", su.heatflow),
+ HeatLoad.ConvertFromSI(su.heatflow),
+ Sub(tb, e)
+ HeatLoad = tb.Text.ParseExpressionToDouble.ConvertToSI(su.heatflow)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+ tbx3.ReadOnly = True
+
+ Dim tbx4 = s.CreateAndAddTextBoxRow(container, nf, String.Format("Maximum Heat Load ({0})", su.heatflow),
+ MaxHeatExchange.ConvertFromSI(su.heatflow),
+ Sub(tb, e)
+ MaxHeatExchange = tb.Text.ParseExpressionToDouble.ConvertToSI(su.heatflow)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+ tbx4.ReadOnly = True
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Exchanger Efficiency ({0})", "%"),
+ ExchangerEfficiency,
+ Sub(tb, e)
+ ExchangerEfficiency = tb.Text.ParseExpressionToDouble
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddLabelRow(container, "Fan Properties")
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Reference Fan Speed ({0})", "rpm"),
+ ReferenceFanSpeed,
+ Sub(tb, e)
+ ReferenceFanSpeed = tb.Text.ParseExpressionToDouble
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Reference Air Flow ({0})", su.volumetricFlow),
+ ReferenceAirFlow.ConvertFromSI(su.volumetricFlow),
+ Sub(tb, e)
+ ReferenceAirFlow = tb.Text.ParseExpressionToDouble.ConvertToSI(su.volumetricFlow)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Actual Fan Speed ({0})", "rpm"),
+ ActualFanSpeed,
+ Sub(tb, e)
+ ActualFanSpeed = tb.Text.ParseExpressionToDouble
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Actual Air Flow ({0})", su.volumetricFlow),
+ ActualAirFlow.ConvertFromSI(su.volumetricFlow),
+ Sub(tb, e)
+ ActualAirFlow = tb.Text.ParseExpressionToDouble.ConvertToSI(su.volumetricFlow)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Electrical Power Conversion Factor ({0})", "kW/rpm"),
+ ElectricalPowerConversionFactor,
+ Sub(tb, e)
+ ElectricalPowerConversionFactor = tb.Text.ParseExpressionToDouble
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ Dim tbx5 = s.CreateAndAddTextBoxRow(container, nf, String.Format("Electrical Power Load ({0})", su.heatflow),
+ ElectricalPowerLoad.ConvertFromSI(su.heatflow),
+ Sub(tb, e)
+ ElectricalPowerLoad = tb.Text.ParseExpressionToDouble.ConvertToSI(su.heatflow)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+ tbx5.ReadOnly = True
+
+ s.CreateAndAddLabelRow(container, "Tube Properties")
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Tube Internal Diameter ({0})", su.diameter),
+ Tube_Di.ConvertFromSI(su.diameter),
+ Sub(tb, e)
+ Tube_Di = tb.Text.ParseExpressionToDouble.ConvertToSI(su.diameter)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Tube External Diameter ({0})", su.diameter),
+ Tube_De.ConvertFromSI(su.diameter),
+ Sub(tb, e)
+ Tube_De = tb.Text.ParseExpressionToDouble.ConvertToSI(su.diameter)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Tube Length ({0})", su.distance),
+ Tube_Length.ConvertFromSI(su.distance),
+ Sub(tb, e)
+ Tube_Length = tb.Text.ParseExpressionToDouble.ConvertToSI(su.distance)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Tube Pitch ({0})", su.thickness),
+ Tube_Pitch.ConvertFromSI(su.thickness),
+ Sub(tb, e)
+ Tube_Length = tb.Text.ParseExpressionToDouble.ConvertToSI(su.thickness)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Tube Fouling Factor ({0})", su.foulingfactor),
+ Tube_Fouling.ConvertFromSI(su.foulingfactor),
+ Sub(tb, e)
+ Tube_Fouling = tb.Text.ParseExpressionToDouble.ConvertToSI(su.foulingfactor)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Tube Roughness ({0})", su.distance),
+ Tube_Roughness.ConvertFromSI(su.distance),
+ Sub(tb, e)
+ Tube_Roughness = tb.Text.ParseExpressionToDouble.ConvertToSI(su.distance)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Tube Thermal Conductivity ({0})", su.thermalConductivity),
+ Tube_ThermalConductivity.ConvertFromSI(su.thermalConductivity),
+ Sub(tb, e)
+ Tube_ThermalConductivity = tb.Text.ParseExpressionToDouble.ConvertToSI(su.thermalConductivity)
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Number of Tubes"),
+ Tube_NumberPerShell,
+ Sub(tb, e)
+ Tube_NumberPerShell = tb.Text.ParseExpressionToDouble
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ s.CreateAndAddTextBoxRow(container, nf, String.Format("Tube Passes"),
+ Tube_PassesPerShell,
+ Sub(tb, e)
+ Tube_PassesPerShell = tb.Text.ParseExpressionToDouble
+ End Sub, Sub() FlowSheet.RequestCalculation())
+
+ End Sub
+
+ Private Sub CallSolverIfNeeded()
+ If GlobalSettings.Settings.CallSolverOnEditorPropertyChanged Then
+ FlowSheet.RequestCalculation()
+ End If
+ End Sub
+
+ Public Overrides Function GetPropertyDescription(p As String) As String
+ Return p
+ End Function
+
+ Public Overrides Function GetPropertyValue(ByVal prop As String, Optional ByVal su As Interfaces.IUnitsOfMeasure = Nothing) As Object
+
+ If su Is Nothing Then su = New SystemsOfUnits.SI
+
+ Select Case prop
+ Case "Pressure Drop"
+ Return PressureDrop.ConvertFromSI(su.deltaP)
+ Case "Outlet Temperature"
+ Return OutletTemperature.ConvertFromSI(su.temperature)
+ Case "Overall UA"
+ Return OverallUA
+ Case "Reference Fan Speed"
+ Return ReferenceFanSpeed
+ Case "Reference Air Flow"
+ Return ReferenceAirFlow.ConvertFromSI(su.volumetricFlow)
+ Case "Actual Fan Speed"
+ Return ActualFanSpeed
+ Case "Actual Air Flow"
+ Return ActualAirFlow.ConvertFromSI(su.volumetricFlow)
+ Case "Air Inlet Temperature"
+ Return AirInletTemperature.ConvertFromSI(su.temperature)
+ Case "Air Pressure"
+ Return AirPressure.ConvertFromSI(su.pressure)
+ Case "Air Outlet Temperature"
+ Return AirOutletTemperature.ConvertFromSI(su.temperature)
+ Case "Electrical Power Conversion Factor"
+ Return ElectricalPowerConversionFactor
+ Case "Heat Load"
+ Return HeatLoad.ConvertFromSI(su.heatflow)
+ Case "Electrical Power Load"
+ Return ElectricalPowerLoad.ConvertFromSI(su.heatflow)
+ Case "Tube Internal Diameter"
+ Return Tube_Di.ConvertFromSI(su.diameter)
+ Case "Tube External Diameter"
+ Return Tube_De.ConvertFromSI(su.diameter)
+ Case "Tube Length"
+ Return Tube_Length.ConvertFromSI(su.distance)
+ Case "Tube Pitch"
+ Return Tube_Pitch.ConvertFromSI(su.thickness)
+ Case "Tube Fouling"
+ Return Tube_Fouling.ConvertFromSI(su.foulingfactor)
+ Case "Tube Passes"
+ Return Tube_PassesPerShell
+ Case "Tube Number"
+ Return Tube_NumberPerShell
+ Case "Tube Roughness"
+ Return Tube_Roughness.ConvertFromSI(su.distance)
+ Case "Tube Thermal Conductivity"
+ Return Tube_ThermalConductivity.ConvertFromSI(su.thermalConductivity)
+ Case "Max Heat Exchange"
+ Return MaxHeatExchange.ConvertFromSI(su.heatflow)
+ Case "Exchanger Efficiency"
+ Return ExchangerEfficiency
+ Case Else
+ Return 0
+ End Select
+
+ End Function
+
+ Public Overloads Overrides Function GetProperties(ByVal proptype As Interfaces.Enums.PropertyType) As String()
+
+ Dim list As New List(Of String)
+
+ list.Add("Pressure Drop")
+ list.Add("Outlet Temperature")
+ list.Add("Overall UA")
+ list.Add("Reference Fan Speed")
+ list.Add("Reference Air Flow")
+ list.Add("Actual Fan Speed")
+ list.Add("Actual Air Flow")
+ list.Add("Air Inlet Temperature")
+ list.Add("Air Pressure")
+ list.Add("Air Outlet Temperature")
+ list.Add("Electrical Power Conversion Factor")
+ list.Add("Heat Load")
+ list.Add("Electrical Power Load")
+ list.Add("Tube Internal Diameter")
+ list.Add("Tube External Diameter")
+ list.Add("Tube Length")
+ list.Add("Tube Pitch")
+ list.Add("Tube Fouling")
+ list.Add("Tube Passes")
+ list.Add("Tube Number")
+ list.Add("Tube Roughness")
+ list.Add("Tube Thermal Conductivity")
+ list.Add("Max Heat Exchange")
+ list.Add("Exchanger Efficiency")
+
+ Return list.ToArray
+
+ End Function
+
+ Public Overloads Overrides Function GetDefaultProperties() As String()
+
+ Dim list As New List(Of String)
+
+ list.Add("Outlet Temperature")
+ list.Add("Overall UA")
+ list.Add("Heat Load")
+ list.Add("Electrical Power Load")
+ list.Add("Actual Air Flow")
+ list.Add("Air Inlet Temperature")
+ list.Add("Air Outlet Temperature")
+ list.Add("Max Heat Exchange")
+ list.Add("Exchanger Efficiency")
+
+ Return list.ToArray
+
+ End Function
+
+ Public Overrides Function SetPropertyValue(ByVal prop As String, ByVal propval As Object, Optional ByVal su As Interfaces.IUnitsOfMeasure = Nothing) As Boolean
+
+ If su Is Nothing Then su = New SystemsOfUnits.SI
+
+ Select Case prop
+ Case "Pressure Drop"
+ PressureDrop = propval.ConvertToSI(su.deltaP)
+ Case "Outlet Temperature"
+ OutletTemperature = propval.ConvertToSI(su.temperature)
+ Case "Overall UA"
+ OverallUA = propval
+ Case "Reference Fan Speed"
+ ReferenceFanSpeed = propval
+ Case "Reference Air Flow"
+ ReferenceAirFlow = propval.ConvertToSI(su.volumetricFlow)
+ Case "Actual Fan Speed"
+ ActualFanSpeed = propval
+ Case "Actual Air Flow"
+ ActualAirFlow = propval.ConvertToSI(su.volumetricFlow)
+ Case "Air Inlet Temperature"
+ AirInletTemperature = propval.ConvertToSI(su.temperature)
+ Case "Air Pressure"
+ AirPressure = propval.ConvertToSI(su.pressure)
+ Case "Air Outlet Temperature"
+ AirOutletTemperature = propval.ConvertToSI(su.temperature)
+ Case "Electrical Power Conversion Factor"
+ ElectricalPowerConversionFactor = propval
+ Case "Heat Load"
+ HeatLoad = propval.ConvertToSI(su.heatflow)
+ Case "Electrical Power Load"
+ ElectricalPowerLoad = propval.ConvertToSI(su.heatflow)
+ Case "Tube Internal Diameter"
+ Tube_Di = propval.ConvertToSI(su.diameter)
+ Case "Tube External Diameter"
+ Tube_De = propval.ConvertToSI(su.diameter)
+ Case "Tube Length"
+ Tube_Length = propval.ConvertToSI(su.distance)
+ Case "Tube Pitch"
+ Tube_Pitch = propval.ConvertToSI(su.thickness)
+ Case "Tube Fouling"
+ Tube_Fouling = propval.ConvertToSI(su.foulingfactor)
+ Case "Tube Passes"
+ Tube_PassesPerShell = propval
+ Case "Tube Number"
+ Tube_NumberPerShell = propval
+ Case "Tube Roughness"
+ Tube_Roughness = propval.ConvertToSI(su.distance)
+ Case "Tube Thermal Conductivity"
+ Tube_ThermalConductivity = propval.ConvertToSI(su.thermalConductivity)
+ Case "Max Heat Exchange"
+ MaxHeatExchange = propval.ConvertToSI(su.heatflow)
+ Case "Exchanger Efficiency"
+ ExchangerEfficiency = propval
+ End Select
+
+ Return True
+
+ End Function
+
+ Public Overrides Function GetPropertyUnit(ByVal prop As String, Optional ByVal su As Interfaces.IUnitsOfMeasure = Nothing) As String
+
+ If su Is Nothing Then su = New SystemsOfUnits.SI
+
+ Select Case prop
+ Case "Pressure Drop"
+ Return su.deltaP
+ Case "Outlet Temperature"
+ Return su.temperature
+ Case "Overall UA"
+ Return "W/K"
+ Case "Reference Fan Speed"
+ Return "rpm"
+ Case "Reference Air Flow"
+ Return su.volumetricFlow
+ Case "Actual Fan Speed"
+ Return "rpm"
+ Case "Actual Air Flow"
+ Return su.volumetricFlow
+ Case "Air Inlet Temperature"
+ Return su.temperature
+ Case "Air Pressure"
+ Return su.pressure
+ Case "Air Outlet Temperature"
+ Return su.temperature
+ Case "Electrical Power Conversion Factor"
+ Return ""
+ Case "Heat Load"
+ Return su.heatflow
+ Case "Electrical Power Load"
+ Return su.heatflow
+ Case "Tube Internal Diameter"
+ Return su.diameter
+ Case "Tube External Diameter"
+ Return su.diameter
+ Case "Tube Length"
+ Return su.distance
+ Case "Tube Pitch"
+ Return su.thickness
+ Case "Tube Fouling"
+ Return su.foulingfactor
+ Case "Tube Passes"
+ Return ""
+ Case "Tube Number"
+ Return ""
+ Case "Tube Roughness"
+ Return su.distance
+ Case "Tube Thermal Conductivity"
+ Return su.thermalConductivity
+ Case "Max Heat Exchange"
+ Return su.heatflow
+ Case "Exchanger Efficiency"
+ Return "%"
+ Case Else
+ Return ""
+ End Select
+
+ End Function
+
+ Public Overrides Function GetReport(su As IUnitsOfMeasure, ci As Globalization.CultureInfo, numberformat As String) As String
+
+ Dim str As New Text.StringBuilder
+
+ Dim istr, ostr As MaterialStream
+ istr = Me.GetInletMaterialStream(0)
+ ostr = Me.GetOutletMaterialStream(0)
+
+ istr.PropertyPackage.CurrentMaterialStream = istr
+
+ str.AppendLine("Air Cooler: " & Me.GraphicObject.Tag)
+ str.AppendLine("Property Package: " & Me.PropertyPackage.ComponentName)
+ str.AppendLine()
+ str.AppendLine("Inlet conditions")
+ str.AppendLine()
+ str.AppendLine(" Temperature: " & SystemsOfUnits.Converter.ConvertFromSI(su.temperature, istr.Phases(0).Properties.temperature.GetValueOrDefault).ToString(numberformat, ci) & " " & su.temperature)
+ str.AppendLine(" Pressure: " & SystemsOfUnits.Converter.ConvertFromSI(su.pressure, istr.Phases(0).Properties.pressure.GetValueOrDefault).ToString(numberformat, ci) & " " & su.pressure)
+ str.AppendLine(" Mass flow: " & SystemsOfUnits.Converter.ConvertFromSI(su.massflow, istr.Phases(0).Properties.massflow.GetValueOrDefault).ToString(numberformat, ci) & " " & su.massflow)
+ str.AppendLine(" Volumetric flow: " & SystemsOfUnits.Converter.ConvertFromSI(su.volumetricFlow, istr.Phases(0).Properties.volumetric_flow.GetValueOrDefault).ToString(numberformat, ci) & " " & su.volumetricFlow)
+ str.AppendLine(" Vapor fraction: " & istr.Phases(2).Properties.molarfraction.GetValueOrDefault.ToString(numberformat, ci))
+ str.AppendLine(" Compounds: " & istr.PropertyPackage.RET_VNAMES.ToArrayString)
+ str.AppendLine(" Molar composition: " & istr.PropertyPackage.RET_VMOL(PropertyPackages.Phase.Mixture).ToArrayString())
+ str.AppendLine()
+ str.AppendLine("Results")
+ str.AppendLine()
+ str.AppendLine(" Pressure drop: " & SystemsOfUnits.Converter.ConvertFromSI(su.pressure, Me.PressureDrop).ToString(numberformat, ci) & " " & su.deltaP)
+ str.AppendLine(" Fluid outlet temperature: " & SystemsOfUnits.Converter.ConvertFromSI(su.temperature, Me.OutletTemperature).ToString(numberformat, ci) & " " & su.temperature)
+ str.AppendLine(" Air outlet temperature: " & SystemsOfUnits.Converter.ConvertFromSI(su.temperature, Me.AirOutletTemperature).ToString(numberformat, ci) & " " & su.temperature)
+ str.AppendLine(" Heat load: " & SystemsOfUnits.Converter.ConvertFromSI(su.heatflow, Me.HeatLoad).ToString(numberformat, ci) & " " & su.heatflow)
+
+ Return str.ToString
+
+ End Function
+
+ Public Overrides Function GetStructuredReport() As List(Of Tuple(Of ReportItemType, String()))
+
+ Dim su As IUnitsOfMeasure = GetFlowsheet().FlowsheetOptions.SelectedUnitSystem
+ Dim nf = GetFlowsheet().FlowsheetOptions.NumberFormat
+
+ Dim list As New List(Of Tuple(Of ReportItemType, String()))
+
+ list.Add(New Tuple(Of ReportItemType, String())(ReportItemType.Label, New String() {"Results Report for Air Cooler '" & Me.GraphicObject.Tag + "'"}))
+ list.Add(New Tuple(Of ReportItemType, String())(ReportItemType.SingleColumn, New String() {"Calculated successfully on " & LastUpdated.ToString}))
+
+ list.Add(New Tuple(Of ReportItemType, String())(ReportItemType.Label, New String() {"Calculation Parameters"}))
+
+ list.Add(New Tuple(Of ReportItemType, String())(ReportItemType.DoubleColumn,
+ New String() {"Calculation Mode",
+ CalculationMode.ToString}))
+
+ list.Add(New Tuple(Of ReportItemType, String())(ReportItemType.Label, New String() {"Results"}))
+
+ list.Add(New Tuple(Of ReportItemType, String())(ReportItemType.TripleColumn,
+ New String() {"Pressure Drop",
+ Me.PressureDrop.ConvertFromSI(su.deltaP).ToString(nf),
+ su.deltaP}))
+
+ list.Add(New Tuple(Of ReportItemType, String())(ReportItemType.TripleColumn,
+ New String() {"Fluid Outlet Temperature",
+ Me.OutletTemperature.ConvertFromSI(su.temperature).ToString(nf),
+ su.temperature}))
+
+ list.Add(New Tuple(Of ReportItemType, String())(ReportItemType.TripleColumn,
+ New String() {"Air Outlet Temperature",
+ Me.AirOutletTemperature.ConvertFromSI(su.temperature).ToString(nf),
+ su.temperature}))
+
+ list.Add(New Tuple(Of ReportItemType, String())(ReportItemType.TripleColumn,
+ New String() {"Heat Load",
+ Me.HeatLoad.ConvertFromSI(su.heatflow).ToString(nf),
+ su.heatflow}))
+
+ Return list
+
+ End Function
+
+
+End Class
+
+End Namespace
diff --git a/DWSIM.UnitOperations/UnitOperations/CleanEnergy/CleanEnergyUnitOpBase.vb b/DWSIM.UnitOperations/UnitOperations/CleanEnergy/CleanEnergyUnitOpBase.vb
new file mode 100644
index 000000000..77f515847
--- /dev/null
+++ b/DWSIM.UnitOperations/UnitOperations/CleanEnergy/CleanEnergyUnitOpBase.vb
@@ -0,0 +1,77 @@
+Imports DWSIM.Interfaces
+Imports DWSIM.Interfaces.Enums
+
+Namespace UnitOperations
+
+ Public MustInherit Class CleanEnergyUnitOpBase
+
+ Inherits DWSIM.UnitOperations.UnitOperations.UnitOpBaseClass
+
+ Implements DWSIM.Interfaces.IExternalUnitOperation
+
+ Public Overrides ReadOnly Property IsSource As Boolean
+ Get
+ Return True
+ End Get
+ End Property
+
+ Private _name = ""
+ Private _desc = ""
+
+ Public Overrides Function GetDisplayName() As String
+ Return _name
+ End Function
+
+ Public Overrides Function GetDisplayDescription() As String
+ Return _desc
+ End Function
+
+ Public Overrides Property ComponentName As String = _name
+
+ Public Overrides Property ComponentDescription As String = _desc
+
+ Private ReadOnly Property IExternalUnitOperation_Name As String = _name Implements IExternalUnitOperation.Name
+
+ Public MustOverride Property Prefix As String Implements IExternalUnitOperation.Prefix
+
+ Public ReadOnly Property Description As String = _desc Implements IExternalUnitOperation.Description
+
+ Public Overrides Property ObjectClass As SimulationObjectClass = SimulationObjectClass.CleanPowerSources
+
+ Public Overrides ReadOnly Property MobileCompatible As Boolean = False
+
+ Public MustOverride Function ReturnInstance(typename As String) As Object Implements IExternalUnitOperation.ReturnInstance
+
+ Public MustOverride Sub Draw(g As Object) Implements IExternalUnitOperation.Draw
+
+ Public MustOverride Sub CreateConnectors() Implements IExternalUnitOperation.CreateConnectors
+
+ Public Sub New(ByVal Name As String, ByVal Description As String)
+
+ MyBase.CreateNew()
+ Me.ComponentName = Name
+ Me.ComponentDescription = Description
+
+ End Sub
+
+ Public Sub New()
+
+ MyBase.New()
+
+ End Sub
+
+ Public Overrides Sub PerformPostCalcValidation()
+
+ End Sub
+
+ Public MustOverride Sub PopulateEditorPanel(ctner As Object) Implements IExternalUnitOperation.PopulateEditorPanel
+
+ Private Sub CallSolverIfNeeded()
+ If GlobalSettings.Settings.CallSolverOnEditorPropertyChanged Then
+ FlowSheet.RequestCalculation()
+ End If
+ End Sub
+
+ End Class
+
+End Namespace
diff --git a/DWSIM.UnitOperations/UnitOperations/Electrolyzers/PEMElectrolyzerBase.vb b/DWSIM.UnitOperations/UnitOperations/Electrolyzers/PEMElectrolyzerBase.vb
new file mode 100644
index 000000000..eb4610325
--- /dev/null
+++ b/DWSIM.UnitOperations/UnitOperations/Electrolyzers/PEMElectrolyzerBase.vb
@@ -0,0 +1,79 @@
+
+Imports DWSIM.Interfaces.Enums
+
+Namespace UnitOperations
+
+ Public MustInherit Class PEMElectrolyzerUnitOpBase
+
+ Inherits DWSIM.UnitOperations.UnitOperations.UnitOpBaseClass
+
+ Implements DWSIM.Interfaces.IExternalUnitOperation
+
+ Public Overrides ReadOnly Property IsSource As Boolean
+ Get
+ Return True
+ End Get
+ End Property
+
+ Private _name = ""
+ Private _desc = ""
+
+ Public Overrides Function GetDisplayName() As String
+ Return _name
+ End Function
+
+ Public Overrides Function GetDisplayDescription() As String
+ Return _desc
+ End Function
+
+ Public Overrides Property ComponentName As String = _name
+
+ Public Overrides Property ComponentDescription As String = _desc
+
+ Private ReadOnly Property IExternalUnitOperation_Name As String = _name Implements IExternalUnitOperation.Name
+
+ Public MustOverride Property Prefix As String Implements IExternalUnitOperation.Prefix
+
+ Public ReadOnly Property Description As String = _desc Implements IExternalUnitOperation.Description
+
+ Public Overrides Property ObjectClass As SimulationObjectClass = SimulationObjectClass.CleanPowerSources
+
+ Public Overrides ReadOnly Property MobileCompatible As Boolean = False
+
+ Public MustOverride Function ReturnInstance(typename As String) As Object Implements IExternalUnitOperation.ReturnInstance
+
+ Public MustOverride Sub Draw(g As Object) Implements IExternalUnitOperation.Draw
+
+ Public MustOverride Sub CreateConnectors() Implements IExternalUnitOperation.CreateConnectors
+
+ Public Sub New(ByVal Name As String, ByVal Description As String)
+
+ MyBase.CreateNew()
+ Me.ComponentName = Name
+ Me.ComponentDescription = Description
+
+ End Sub
+
+ Public Sub New()
+
+ MyBase.New()
+
+ End Sub
+
+ Public Overrides Sub PerformPostCalcValidation()
+
+ End Sub
+
+ Public MustOverride Sub PopulateEditorPanel(ctner As Object) Implements IExternalUnitOperation.PopulateEditorPanel
+
+ Private Sub CallSolverIfNeeded()
+ If GlobalSettings.Settings.CallSolverOnEditorPropertyChanged Then
+ FlowSheet.RequestCalculation()
+ End If
+ End Sub
+
+ End Class
+
+
+End Namespace
+
diff --git a/DWSIM/Forms/FlowsheetComponents/FlowsheetSurfaceSkiaSharp/FlowsheetSurface_SkiaSharp.en.resx b/DWSIM/Forms/FlowsheetComponents/FlowsheetSurfaceSkiaSharp/FlowsheetSurface_SkiaSharp.en.resx
index 53beaa756..b8445bc81 100644
--- a/DWSIM/Forms/FlowsheetComponents/FlowsheetSurfaceSkiaSharp/FlowsheetSurface_SkiaSharp.en.resx
+++ b/DWSIM/Forms/FlowsheetComponents/FlowsheetSurfaceSkiaSharp/FlowsheetSurface_SkiaSharp.en.resx
@@ -286,16 +286,16 @@
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIPSURBVEhL7ZE/aBNRHMcziLuLgULb5OKke72zB4oIgkun
- rHYSUYRMTVAsgjg4OKjNnYOLhLo4WFARQpAzIW1Ken/acJfcy70DCx21pjmXYODne+XOyOWdMbbd+oEv
- 78G73+f37v1ixxwaqnteVB2hpGHe1Rz+me7yV0zz7En/+P8ZiAUIp45mdsn6Rnf4641t8ZRf8m/8TcwM
- mulrbaFK9jnDmT3na4YZWxwOaUKfz9cNODJxQB2JnIqFDG1Sx0KPKWFllJgFHRhplFYxX6hsXfZY4ofv
- 78GZrNKfyG5ZCfnH/JTcGW/IXL4rxu/b6PTNCqSyZZiTl+Fl+QY8eLcIqYUKxO/UYPLRF0hKXUjKHiSX
- Ov2E5FUTUjeXynvRQ6bi6fxeab+IRtqDycc7MHHXhPjttd/ihOyLQ6FNyDr8ZENiViSaMcUB5A058lGG
- NpnKd3phQVRGilnQgZGiNLltgXvR9f4UBrm6/A2efmz+LK4a1kYTzzca2+MNedN2RaWuoRWlBs+LFtx6
- uwMXXn2Ha6+/wlLRhA/ldajqJhgtBwwbg2Ghvma1q2SfMywneshUTIpK+0UkOhGsbVrwaV0n0tpA7J+H
- Q5voyB1+srA4MsGNQ4kUBzQQ4vQWztAmqo17LAkrI8Us6MAM20kbLVxQbbR7aGIWiqKcIH91iUifqHYb
- kfWz3mxf9I+POSix2C/pbepL8lj/ngAAAABJRU5ErkJggg==
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIPSURBVEhL7ZE/iNNQHMc7iLuLhYNq/zjpfJhoQBFBcHHq
+ 6k3HoQidbFEUQRwcHPRs4uAi5VwcFPQcSjliS72ebZrUkrTvNS/gwY169RqXYuHne0diJX2xVs/tPvDl
+ PXj5fX4v7xfZZ8/QnJOSZoulJhGcpi080h3hvGkeP+gd/z1jsQjB1PH8Nl1f6LZwub0pHfJK/ozfiblB
+ 86NmT6zSfc6wT5/wNJPMLA6GNmHP5+nG/DexTx1LSY2IGdbkAxGHXAkv08Q82MBoo7RGhEKldc7lie++
+ uQnHsupoLvvRiivfFo4oX2cbcjI/kKK3ED68VIFUtgyXlBV4Wl6EO69vQ+p6BaLXahC79wkS8gASiguJ
+ 5f4oLrvVuDzIpfJu+JCZ+Gh+p7RbxCLvQOz+FszdMCF6df2nOK544kBYE7pOPtmEmBeZZUaxD33DJP0o
+ w5rE8v1hUBCWqWIebGC0KE1vW0g8Gbi/Cv1cWPkCD992vhffG1ajQxba7c3ZhtxCjqTWNfxKrcFy0YIr
+ L7fg1LM+XHz+GR4XTVgtb0BVN8Ho2mAgAoaJRk2rV6X7nGHZ4UNmYlpU2i2i0algvWXB2oZOpbWx2DsP
+ hjXRsTP5ZEFxaPwbBxIq9mljnNS7JMOaNBAZ8iS8TBXzYAMzkJ02uqTQQHh7z8Q8VFU9QP/qLJU+0FAP
+ 0/Wd3umd8Y73+VcikR+h3eo7YxH4agAAAABJRU5ErkJggg==
@@ -307,32 +307,32 @@
iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAXESURBVHhe7ZxLTxtXGIbdTSVQty3EmHUSrpG66Q7irqp2
- 2QA2++4bIQQ4Ev+gAjWb7hrZm0YKarmFi1ElFll1AcbwA5pWChgCRJFggTQ9J3yE0fB+4xnPhR7P90jP
- BmZkzvNKJhlCUoIgCIIgCIIgCIIgCKnUw9LRWLZ0cDxYOpj77pd/W+nDQlwMFA/Ps6UjK1s61G7ICDFz
- Gf/jANZg6XBz4Pn+Z/RpIWqcA8gIMYMGkBFihBtARogJtwG0MkLE1BtAKyNEiJcBtDJCRHgdQBvLCIPF
- 028Hiif/ZIvvLOypD098eOzd0luPXsX1Io4OjPYva9lfT1/j8Fei0JwoNCcIzQljI1FoThibcT+6EXB0
- uyg0JwrNCUJzwthIFJoTheasqbejWjRvRzi6XRSaE4XmBKE5YWwkCs2JQnPWPhjJCDi6XRSaE4XmBKE5
- YWwkCs2JQnNeDhDJCDi6XRSaE4XmBKE5YWwkCs2JQnNeD3Dp/sZXv/3dQgmDgaPbRaE5UWhOEJoTxkai
- 0JwoNKdzAGWxNksJg4Gj20WhOVFoThCaE8ZGotCcKDTnzQEGnr05SVnWJ5SxcXB0uyg0JwrNCUJzwthI
- FJoThea8OUD22Zu3MsANUWhOFJrz5gAPS7UZShgMHN0uCs2JQnOC0JwwNhKF5kShOZ0DyDdhRhSaE4Xm
- vI4vfwx1FYXmRKE5I4qvwdHtotCcKDQnCM0JYyNRaE4UmlMeRXgUheZEobGRxdfg6HZRaE4UmhOE5oSx
- kSg0J47tNPKfCTyY3LMM8b2y2j+xN9M3uddDX75v/AwQyw9kHIc0wt7J6sWDid2nXdPVT+kYnvE6QGw/
- kkQHNMgNvyN4GSDWnweDQxnm7s90FE/UGyDW+Jp+dQiT7VFvR/3ju910nLq4DRB7fA06lGn2Tez+RMep
- CzfArcTX9E/uqkMY7vjODh2nLmiAW4uvgQcyzso7Ok5dnAPcanxN/5Q6QBNIx6mLin9mG+D2f0GjT33x
- zSAdpy5fF48eZ5/VatniwYv/xW/HoMOYKB3HPNBhTJSOYx7oMCZKxzEPdBgTpeOYR2duwQrk0O/v07mF
- amZkfiYztNDwU8orese3M30TO8sospt0u3nAqI17oXza9ei576eUdroLO529U1XLj3SreTgChmImt7AR
- dAQU2U26zTw6c4sqWgSOLPp6SukERXaTbjMPGC8cLzpH/vD8lNIJiuwm3WYeIFxoqrciz08pnaDIbtJt
- 5pH5ECoa07lFz08pnfQUqpYf6TbzyOSWVKyIHFny/JTSCYrsJt1mHpmh+dcwXkjSy/gGRXaTbjOPjuGl
- b6IcgV7GNyiym3RbcugYXc6ob7LLmbwK7SJd7hsU2U26LVmkh1c6M/llFZqXLvWN+tuw5Ue6LXmg6Hbp
- MhYVb6y7sHXuDBrYia2zrkLlMb1M84Ki26XLWFSoIxgwFLcO6WWaFxTdLl3G0lXYmcPxgnt/avsFvUzz
- 0pF/ablJl7F8Of1Xq4pVdsYLwc2u6ert/WuHuEDR7dJlrkQwQjLia1B0u3RZXfQI6u2orLQCmpz4GhTd
- Ll3miRBGSFZ8TUd+RYXmpcs883GEJyqoH5MYX4Oi26XLfHE5QkWNUFFxPVioJDO+BkW3S5f5xvMISY6v
- QdHt0mUNoUe4q0a4r0Ij1eeSHV+Tzq9abtJlDcONIPEJFN0uXRaIzI+vWu492Z69O1k51t6bqszoj9Gn
- kw2KbpcuC4kQ/nsYU0nnV8ba8qvnKLIf24aXz9K51eZ/Shk2bfm1o3R+TUUMbtvwy+Z/Shk26dzaXHpU
- BQzF1eZ/Shk2d36Yb23PrZRxUB/m1jY/f/Sn/OmlEQKPIPGDcznCuhphXUX1ocQPj6sR7qiwXvxC4oeP
- 1xEkfoTUG0Hix8DlCGU1QllFv1bix0jm+1ct7aPl2baR1WNte359Rn+MPi3ER4Kf1QiCIAiCIAiCkHBS
- qf8AcF7XQTki50QAAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAXJSURBVHhe7ZxNTxtXFIbdTSVQt6XEmHUSIBCpm64ocVdV
+ uywfNvvuGyFqcCT+QQVqNl01lb1ppFAlfJQPo0ossqpEMYYf0LRqiSFAFAkWSNN740MYDe8Zz9gzQ6/n
+ PNKzgRmZ+7ySSYaQhCAIgiAIgiAIgiAIQiJxr3g4kS7uHw0VX85/+cPf7fRhISoGCwdn6eKhlS4eaDdk
+ hIipxX83gDVUPNj89PH+B/RpIWycA8gIEYMGkBEihBtARogItwG0MkLI1BtAKyOEiJcBtDJCSHgdQBvJ
+ CEOFky8GC8d/pQuvLeyJD499eOTd4iuPXsT1Io4ODPcva+kfT17g8Bei0JwoNCcIzQljI1FoThibcT+8
+ EXB0uyg0JwrNCUJzwthIFJoTheasqrejajhvRzi6XRSaE4XmBKE5YWwkCs2JQnNW3xrKCDi6XRSaE4Xm
+ BKE5YWwkCs2JQnPWBghlBBzdLgrNiUJzgtCcMDYSheZEoTkvB6i5v/HJz3+2UcLmwNHtotCcKDQnCM0J
+ YyNRaE4UmtM5gLJQnaOEzYGj20WhOVFoThCaE8ZGotCcKDTn1QEGf/rnOGFZ71HGxsHR7aLQnCg0JwjN
+ CWMjUWhOFJrz6gDpR/++kgGuiEJzotCcVwe4V6zOUsLmwNHtotCcKDQnCM0JYyNRaE4UmtM5gHwTZkSh
+ OVFozsv48sdQV1FoThSaM6T4GhzdLgrNiUJzgtCcMDYSheZEoTnlUYRHUWhOFBobWnwNjm4XheZEoTlB
+ aE4YG4lCc+LYTkP/mcDdqT3LEN8oKwO5vdn+qb0++vJ942eASH4g4zikEfZNVc7v5nYf9sxU3qdjeMbr
+ AJH9SBId0CA3/I7gZYBIfx4MDmWYu9/TUTxRb4BI42sG1CFMtle9HQ1M7vbSceriNkDk8TXoUKbZn9v9
+ jo5TF26Aa4mvGZjaVYcw3MmdHTpOXdAA1xZfAw9knNuv6Th1cQ5wrfE1A9PqAC0gHacuKv6pbYDr/wWN
+ fvXFt4J0nLp8Vji8n35UraYLL5/8L347Bh3GROk45oEOY6J0HPNAhzFROo55oMOYKB3HPLozC1ZTDv/y
+ JplZqKTGns2mRhYafkp5wZ3J7VR/bmcZRXaTbjcPGLVxz5UPe4Yf+35Kaac3v9N9Z7pi+ZFuNQ9HwEBM
+ ZRY2mh0BRXaTbjOP7syiihaCY4u+nlI6QZHdpNvMA8YLxvPusaeen1I6QZHdpNvMA4QLTPVW5PkppRMU
+ 2U26zTxSb0OFYzKz6PkppZO+fMXyI91mHqnMkooVkmNLnp9SOkGR3aTbzCM18vQFjBeQ9DK+QZHdpNvM
+ o2t06fMwR6CX8Q2K7CbdFh+6xpdT6pvsciqrQrtIl/sGRXaTbosXydGV7lR2WYXmpUt9o/42bPmRbosf
+ KLpduoxFxZvozW+dOYM27bdbpz358n16mdYFRbdLl7H05rYOYcBA/OOAXqZ1QdHt0mUsPfmdeRyveW9P
+ bz+hl2ldurK/Wm7SZSwfz/zermKVnPECcLNnpnJ9/9ohKlB0u3SZKyGMEI/4GhTdLl1WFz2CejsqKa0m
+ jU98DYpuly7zRAAjxCu+piu7okLz0mWeeTfCAxXUj3GMr0HR7dJlvqiNUFYjlFVcD+bL8YyvQdHt0mW+
+ 8TxCnONrUHS7dFlD6BFuqhFuq9BI9bl4x9cks6uWm3RZw3AjSHwCRbdLlzVF6pvnbbcebM/dzJWPtLem
+ y7P6Y/TpeIOi26XLAiKA/x7GVJLZlYmO7OoZiuzHjpGl02RmtfWfUgZNR3btMJldUxGbt2N0ufWfUgZN
+ MrM2nxxXAQNxtfWfUgbNja+ftXdmVko4qA8za5sfDv8mf3pphKZHkPjNUxthXY2wrqL6UOIHx8UIN1RY
+ L3ZI/ODxOoLED5F6I0j8CKiNUFIjlFT0SyV+hKS+et7WOV6a+2h05UjbmV2f1R+jTwvREeNnNYIgCIIg
+ CIIgxJxE4j8QV9ch5FNr6wAAAABJRU5ErkJggg==
diff --git a/DWSIM/Forms/FlowsheetComponents/FlowsheetSurfaceSkiaSharp/FlowsheetSurface_SkiaSharp.resx b/DWSIM/Forms/FlowsheetComponents/FlowsheetSurfaceSkiaSharp/FlowsheetSurface_SkiaSharp.resx
index 6157e680c..84c073d61 100644
--- a/DWSIM/Forms/FlowsheetComponents/FlowsheetSurfaceSkiaSharp/FlowsheetSurface_SkiaSharp.resx
+++ b/DWSIM/Forms/FlowsheetComponents/FlowsheetSurfaceSkiaSharp/FlowsheetSurface_SkiaSharp.resx
@@ -130,9 +130,6 @@
Conectar a...
-
- SplitContainerHorizontal
-
1
@@ -222,9 +219,6 @@
338, 22
-
- 120, 24
-
100%
@@ -261,8 +255,8 @@
System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Live Flow
+
+ Inserir Figura
33, 290
@@ -288,6 +282,9 @@
23, 22
+
+ False
+
System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -300,9 +297,6 @@
317
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
ToolStripSeparator14
@@ -381,8 +375,8 @@
23, 22
-
- System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ToolStripMenuItem6
Inserir Caixa de Texto
@@ -462,6 +456,9 @@
True
+
+ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
ToolStripMenuItem1
@@ -510,6 +507,9 @@
40, 27
+
+ ToolStripContainer1
+
HorizontalmenteToolStripMenuItem
@@ -552,6 +552,9 @@
Dock Top
+
+ designSurfacePrintDocument
+
DesconectarDeToolStripMenuItem
@@ -567,9 +570,6 @@
tsbControlPanelMode
-
- 96
-
ToolStripSeparator5
@@ -609,6 +609,9 @@
196, 22
+
+ 23, 22
+
System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -624,9 +627,6 @@
False
-
- SplitToolStripMenuItem
-
UpgradeDistillationColumnToProToolStripMenuItem
@@ -663,6 +663,9 @@
tssepPro2
+
+ Live Flow
+
ToolStripButton3
@@ -681,15 +684,15 @@
116, 22
+
+ ToolStripLabel1
+
Magenta
False
-
- 197, 224
-
Magenta
@@ -711,8 +714,8 @@
23, 22
-
- Tamanho do Texto
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
0
@@ -729,6 +732,9 @@
ToolStripButton17
+
+ System.Windows.Forms.PrintPreviewDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -744,8 +750,8 @@
tsbAlignVertical
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -762,9 +768,6 @@
System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- DockTopToolStripMenuItem
-
96, 96
@@ -780,6 +783,9 @@
Clonar
+
+ 0, 0, 0, 0
+
Mostrar Grid de Encaixe
@@ -804,9 +810,6 @@
Flat
-
- 3, 0
-
Desconectar de...
@@ -837,8 +840,8 @@
6, 25
-
- ToolStripMenuItem6
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
23, 22
@@ -891,8 +894,8 @@
System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- SplitAndInsertValveTSMI
+
+ 2
Document
@@ -900,12 +903,12 @@
6, 25
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 6, 27
+
3
@@ -954,6 +957,9 @@
System.Windows.Forms.ToolStripPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ToolStripMenuItem13
+
Segoe UI, 9pt
@@ -990,9 +996,6 @@
False
-
- Dock Right Auto-Hide
-
Dock Bottom
@@ -1104,6 +1107,9 @@
System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Misturar Correntes
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
@@ -1119,9 +1125,6 @@
srDnTkDWX/RpuzlDyY7pAAAAAElFTkSuQmCC
-
- System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
24, 251
@@ -1167,15 +1170,15 @@
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- LayoutAutomaticoToolStripMenuItem
-
System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
tbFontSize
+
+ tsmiLiveFlow
+
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -1233,9 +1236,6 @@
Configurar Página
-
- 2
-
tsbPrint
@@ -1287,6 +1287,9 @@
Right
+
+ 1
+
False
@@ -1326,8 +1329,8 @@
998, 417
-
- 6, 25
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
ToolStripButton19
@@ -1380,12 +1383,12 @@
Ativar Modo de Multiseleção
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ False
+
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -1440,11 +1443,8 @@
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 3
-
-
- 0, 0, 0, 0
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
932, 24
@@ -1476,8 +1476,8 @@
Alinhar centros
-
- System.Windows.Forms.PrintPreviewDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ SplitToolStripMenuItem
ToolStripContainer1
@@ -1485,11 +1485,8 @@
0
-
- 1
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ToolStripSeparator18
Fluxograma
@@ -1503,6 +1500,9 @@
Alinhar direitas
+
+ Fill
+
System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -1515,8 +1515,8 @@
196, 22
-
- False
+
+ System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Fill
@@ -1539,6 +1539,9 @@
Magenta
+
+ Dividir Corrente e Inserir Reciclo
+
183, 24
@@ -1617,9 +1620,6 @@
121, 23
-
- System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -1671,6 +1671,9 @@
System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ System.Windows.Forms.ToolStripTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
338, 22
@@ -1719,8 +1722,8 @@
Magenta
-
- tsbAlignMiddles
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Heatmap Layers
@@ -1803,12 +1806,6 @@
140, 27
-
- ToolStripSeparator18
-
-
- Copiar como Imagem (300%)
-
338, 22
@@ -1830,8 +1827,8 @@
Fill
-
- Inserir Figura
+
+ Tamanho do Texto
3
@@ -1851,14 +1848,14 @@
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- ToolStripLabel1
+
+ Dock Right Auto-Hide
Magenta
-
- Dividir Corrente e Inserir Reciclo
+
+ 120, 24
SplitContainerVertical.Panel1
@@ -1905,6 +1902,9 @@
System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ tsbAlignMiddles
+
0, 0
@@ -2001,8 +2001,11 @@
DepurarObjetoToolStripMenuItem
-
- Fill
+
+ False
+
+
+ SplitAndInsertValveTSMI
tsbAlignCenters
@@ -2010,7 +2013,7 @@
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vQAADr0BR/uQrQAAAgNJREFUOE+lkutLk2EYxvePhJaHShFBUTEPiCieQOmDiEZgrEbpYGiCQxkqA80I
+ vAAADrwBlbxySQAAAgNJREFUOE+lkutLk2EYxvePhJaHShFBUTEPiCieQOmDiEZgrEbpYGiCQxkqA80I
RUkUEZ0YRMS+DDI70MkTmzJnDc8iU8QT2mAEItnle90wHwTDyBduXnie5/rd133Q4ZKfAJqHFs9E08A8
zD1emDpmYXjqRlnTFIrMk8iuGkNaxWekGEaQrHecBfw+/vPXODw6hj9whN2fh/Bt/8LSRgA3cxr/DeBZ
9kvmTNMoHGNbIrYN+3Aj23IxgJkpds0doP3VstgmsNexhutZ9QrAms8T0zYzU5xXM46kcjsmvfvoeL2i
@@ -2140,17 +2143,14 @@
998, 417
-
- None
+
+ ToolStripMenuItem12
System.Windows.Forms.ToolStripLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ DockTopToolStripMenuItem
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
@@ -2209,11 +2209,11 @@
DockTopAutoHideToolStripMenuItem
-
- 23, 22
+
+ LayoutAutomaticoToolStripMenuItem
-
- System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ None
196, 22
@@ -2230,11 +2230,11 @@
System.Windows.Forms.ToolStripTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- ToolStripContainer1
+
+ SplitContainerHorizontal
-
- designSurfacePrintDocument
+
+ 96
0
@@ -2251,8 +2251,8 @@
335, 6
-
- ToolStripMenuItem12
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
ToolStripButton20
@@ -2278,14 +2278,14 @@
System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 6, 27
+
+ 3
Magenta
-
- tsmiLiveFlow
+
+ System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
False
@@ -2305,8 +2305,8 @@
335, 6
-
- Misturar Correntes
+
+ Copiar como Imagem (300%)
338, 22
@@ -2314,14 +2314,14 @@
False
-
- ToolStripMenuItem13
+
+ 6, 25
0, 0
-
- System.Windows.Forms.ToolStripTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 197, 224
tsbDisplayGrid
@@ -2332,8 +2332,8 @@
Manter aspecto
-
- False
+
+ System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
ToolStripSeparator12
@@ -2362,8 +2362,8 @@
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- False
+
+ 3, 0
23, 22
diff --git a/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.Designer.vb b/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.Designer.vb
index fc5d5dadc..3fef745ab 100644
--- a/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.Designer.vb
+++ b/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.Designer.vb
@@ -42,7 +42,8 @@ Partial Class SimulationObjectsPanel
Me.TabPage8 = New System.Windows.Forms.TabPage()
Me.PanelSolids = New System.Windows.Forms.FlowLayoutPanel()
Me.TabPage9 = New System.Windows.Forms.TabPage()
- Me.PanelCO = New System.Windows.Forms.FlowLayoutPanel()
+ Me.PanelCE = New System.Windows.Forms.FlowLayoutPanel()
+ Me.TabPage15 = New System.Windows.Forms.TabPage()
Me.TabPage10 = New System.Windows.Forms.TabPage()
Me.PanelUser = New System.Windows.Forms.FlowLayoutPanel()
Me.TabPage11 = New System.Windows.Forms.TabPage()
@@ -53,6 +54,7 @@ Partial Class SimulationObjectsPanel
Me.PanelControllers = New System.Windows.Forms.FlowLayoutPanel()
Me.TabPage12 = New System.Windows.Forms.TabPage()
Me.PanelOther = New System.Windows.Forms.FlowLayoutPanel()
+ Me.PanelELEC = New System.Windows.Forms.FlowLayoutPanel()
Me.TabControl1.SuspendLayout()
Me.TabPage1.SuspendLayout()
Me.TabPage2.SuspendLayout()
@@ -63,6 +65,7 @@ Partial Class SimulationObjectsPanel
Me.TabPage7.SuspendLayout()
Me.TabPage8.SuspendLayout()
Me.TabPage9.SuspendLayout()
+ Me.TabPage15.SuspendLayout()
Me.TabPage10.SuspendLayout()
Me.TabPage11.SuspendLayout()
Me.TabPage13.SuspendLayout()
@@ -87,6 +90,7 @@ Partial Class SimulationObjectsPanel
Me.TabControl1.Controls.Add(Me.TabPage7)
Me.TabControl1.Controls.Add(Me.TabPage8)
Me.TabControl1.Controls.Add(Me.TabPage9)
+ Me.TabControl1.Controls.Add(Me.TabPage15)
Me.TabControl1.Controls.Add(Me.TabPage10)
Me.TabControl1.Controls.Add(Me.TabPage11)
Me.TabControl1.Controls.Add(Me.TabPage13)
@@ -189,14 +193,21 @@ Partial Class SimulationObjectsPanel
'TabPage9
'
resources.ApplyResources(Me.TabPage9, "TabPage9")
- Me.TabPage9.Controls.Add(Me.PanelCO)
+ Me.TabPage9.Controls.Add(Me.PanelCE)
Me.TabPage9.Name = "TabPage9"
Me.TabPage9.UseVisualStyleBackColor = True
'
- 'PanelCO
+ 'PanelCE
'
- resources.ApplyResources(Me.PanelCO, "PanelCO")
- Me.PanelCO.Name = "PanelCO"
+ resources.ApplyResources(Me.PanelCE, "PanelCE")
+ Me.PanelCE.Name = "PanelCE"
+ '
+ 'TabPage15
+ '
+ resources.ApplyResources(Me.TabPage15, "TabPage15")
+ Me.TabPage15.Controls.Add(Me.PanelELEC)
+ Me.TabPage15.Name = "TabPage15"
+ Me.TabPage15.UseVisualStyleBackColor = True
'
'TabPage10
'
@@ -258,11 +269,15 @@ Partial Class SimulationObjectsPanel
resources.ApplyResources(Me.PanelOther, "PanelOther")
Me.PanelOther.Name = "PanelOther"
'
+ 'PanelELEC
+ '
+ resources.ApplyResources(Me.PanelELEC, "PanelELEC")
+ Me.PanelELEC.Name = "PanelELEC"
+ '
'SimulationObjectsPanel
'
resources.ApplyResources(Me, "$this")
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi
-Me.AutoScaleDimensions = New System.Drawing.SizeF(96, 96)
Me.BackColor = System.Drawing.Color.White
Me.Controls.Add(Me.TabControl1)
Me.Name = "SimulationObjectsPanel"
@@ -276,6 +291,7 @@ Me.AutoScaleDimensions = New System.Drawing.SizeF(96, 96)
Me.TabPage7.ResumeLayout(False)
Me.TabPage8.ResumeLayout(False)
Me.TabPage9.ResumeLayout(False)
+ Me.TabPage15.ResumeLayout(False)
Me.TabPage10.ResumeLayout(False)
Me.TabPage11.ResumeLayout(False)
Me.TabPage13.ResumeLayout(False)
@@ -305,7 +321,7 @@ Me.AutoScaleDimensions = New System.Drawing.SizeF(96, 96)
Friend WithEvents PanelReactors As FlowLayoutPanel
Friend WithEvents PanelColumns As FlowLayoutPanel
Friend WithEvents PanelSolids As FlowLayoutPanel
- Friend WithEvents PanelCO As FlowLayoutPanel
+ Friend WithEvents PanelCE As FlowLayoutPanel
Friend WithEvents PanelUser As FlowLayoutPanel
Friend WithEvents PanelLogical As FlowLayoutPanel
Friend WithEvents PanelOther As FlowLayoutPanel
@@ -313,4 +329,6 @@ Me.AutoScaleDimensions = New System.Drawing.SizeF(96, 96)
Friend WithEvents PanelIndicators As FlowLayoutPanel
Friend WithEvents TabPage14 As TabPage
Friend WithEvents PanelControllers As FlowLayoutPanel
+ Friend WithEvents TabPage15 As TabPage
+ Friend WithEvents PanelELEC As FlowLayoutPanel
End Class
diff --git a/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.en.resx b/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.en.resx
index a0d9be412..c95c1571a 100644
--- a/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.en.resx
+++ b/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.en.resx
@@ -126,15 +126,12 @@
7, 6, 7, 6
- 1944, 216
+ 1952, 238
True
-
- 8, 40
-
7, 6, 7, 6
@@ -142,7 +139,7 @@
7, 6, 7, 6
- 1958, 228
+ 1966, 250
Streams
@@ -154,14 +151,11 @@
7, 6, 7, 6
- 1944, 176
+ 1952, 238
True
-
- 8, 40
-
7, 6, 7, 6
@@ -169,7 +163,7 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Pressure Changers
@@ -178,19 +172,16 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Separators/Tanks
@@ -199,19 +190,16 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Mixers/Splitters
@@ -220,19 +208,16 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Exchangers
@@ -241,19 +226,16 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Reactors
@@ -262,19 +244,16 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Columns
@@ -283,58 +262,79 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Solids
-
- 7, 6, 7, 6
+
+ True
-
- 1958, 188
+
+ Fill
-
- True
+
+ 7, 6, 7, 6
-
- 8, 40
+
+ 1966, 250
7, 6, 7, 6
- 1958, 188
+ 1966, 250
+
+
+ Clean Energy
+
+
+ True
+
+
+ Fill
+
+
+ 0, 0
+
+
+ 7, 6, 7, 6
+
+
+ 1966, 250
+
+
+ 5
+
+
+ 1966, 250
+
+
+ Electrolyzers
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
User Models
@@ -343,19 +343,16 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Logical Blocks
@@ -364,19 +361,16 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Indicators
@@ -385,19 +379,16 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Controllers
@@ -406,19 +397,16 @@
7, 6, 7, 6
- 1958, 188
+ 1966, 250
True
-
- 8, 40
-
7, 6, 7, 6
- 1958, 188
+ 1966, 250
Other
@@ -429,9 +417,6 @@
1974, 276
-
- 13, 26
-
7, 6, 7, 6
diff --git a/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.resx b/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.resx
index 8c3350555..880399b35 100644
--- a/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.resx
+++ b/DWSIM/Forms/FlowsheetComponents/SimulationObjectsPanel.resx
@@ -117,809 +117,869 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 6
+
+ Energia Limpa
+
+
+
+ 1109, 137
-
- True
+
+ False
-
- Separadores/Tanques
+
+ 4, 22
-
- 9
+
+ 1109, 137
-
- False
+
+ 11
-
- 4
+
+ 0
-
- 4
+
+ 1109, 137
-
-
- 4, 22
+
+ 0
-
- PanelMixers
+
+ 0, 0
-
- System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ False
-
- 903, 92
+
+ PanelPressure
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 0
-
- 903, 92
+
+ 3
-
- TabPage4
+
+ TabPage8
-
- TabControl1
+
+ System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Indicadores
+
+ 3
-
- 0
+
+ True
-
+
0
-
- CAPE-OPEN
-
-
- 903, 92
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
Fill
-
- 3
+
+ TabControl1
-
- 13
+
+ 0
-
- 903, 92
+
+ Eletrolisadores
-
- PanelReactors
+
+ Fill
-
- 0, 0
+
+ TabControl1
TabControl1
-
- 0, 0
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- TabPage11
+
+ 4, 22
-
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 14
+
+
+ Fill
+
+
3
-
- 903, 92
+
+ 0, 0
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ TabPage10
-
+
+ Pressão
+
+
+ 4, 22
+
+
0
-
- TabPage13
+
+ PanelExchangers
-
- TabPage1
+
+ Fill
-
- 0
+
+ PanelSeparators
-
- 903, 92
+
+ TabControl1
-
- 903, 92
+
+ Fill
-
- 3, 3, 3, 3
+
+ TabPage12
-
- PanelPressure
+
+ 4
-
- System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ True
-
- Fill
+
+ 3, 3
-
- Outros
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
+ 0, 0
+
+
System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 903, 92
+
+ TabPage12
-
- 0
+
+ 3
-
- True
+
+ 3, 3
-
- 903, 92
+
+ 3
-
- TabPage9
+
+ 1109, 137
-
- System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 12
-
- False
+
+ TabPage7
-
- Fill
+
+ TabPage10
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 1117, 163
-
- 903, 92
+
+ Outros
-
- True
+
+ 11
-
+
True
-
- 0
+
+ Térmicos
-
- TabControl1
+
+ True
-
- System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ SimulationObjectsPanel
-
- TabPage5
+
+ PanelELEC
-
- 3, 3, 3, 3
+
+ 0
-
- 0, 0
+
+ 0
-
- 96, 96
+
+ PanelOther
-
- 903, 92
+
+ 7
-
- 0, 0
+
+ 1109, 137
-
+
+ TabControl1
+
+
False
-
- Fill
+
+ 0
-
- TabPage12
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
TabControl1
-
- TabPage6
+
+ True
-
- TabPage6
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Fill
+
+ 1109, 137
-
- 897, 86
+
+ 3
-
- False
+
+ 4, 22
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 6
-
- 8
+
+ 0, 0
-
- 1
+
+ TabControl1
-
+
Fill
-
- TabControl1
+
+ 4
-
- TabPage12
+
+ 10
-
+
False
-
- 10
+
+ False
-
- 0
+
+ TabPage9
-
- 2
+
+ 4
-
- TabPage1
+
+ 4, 22
-
- False
+
+ 1109, 137
-
- 3
+
+ 10
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 1109, 137
-
- Misturadores/Divisores
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
0
-
- PanelControllers
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- TabPage2
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
PanelStreams
-
- TabControl1
+
+ 5
-
+
+ Usuário/CAPE-OPEN
+
+
+ 1109, 137
+
+
+ 0
+
+
+ 1103, 131
+
+
4, 22
-
- 12
+
+ 0, 0
+
+
+ PanelCE
+
+
+ 5
4, 22
-
- False
+
+ TabPage8
-
- Térmicos
+
+ 8
-
- True
+
+ Microsoft Sans Serif, 8.25pt
-
- True
+
+ 0
-
+
+ TabPage9
+
+
+ PanelControllers
+
+
+ 4
+
+
TabControl1
-
- 897, 86
+
+ 3, 3, 3, 3
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 1103, 131
-
- SimulationObjectsPanel
+
+ False
-
+
+ 5
+
+
+ 1109, 137
+
+
Fill
-
+
False
-
- TabPage7
-
-
+
3
-
- TabControl1
+
+ 96, 96
-
+
System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 0
+
+ 1109, 137
-
- 903, 92
+
+ 3
-
- 5
+
+ PanelMixers
-
- System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ $this
-
- 903, 92
+
+ 1109, 137
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 0
-
- 10
+
+ True
-
- 11
+
+ Sólidos
-
- Reatores
+
+ 2
-
- 4
+
+ 1109, 137
-
+
4, 22
-
- False
+
+ TabPage13
-
- Fill
+
+ 2
-
- True
+
+ Misturadores/Divisores
-
- Fill
+
+ 1
-
+
System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 903, 92
+
+ Reatores
-
- 0
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 9
-
- TabPage14
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 3, 3
+
+ System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 4, 22
+
+ True
-
- TabControl1
+
+ 4
TabPage3
-
- 3
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 2
-
- 4, 22
+
+ 12
-
- TabControl1
+
+ TabPage5
-
- 3
+
+ 1117, 163
-
- 0
+
+ 0, 0
-
- False
+
+ True
-
+
TabControl1
-
- TabPage4
+
+ 1
-
- PanelCO
+
+ 3
-
- PanelLogical
+
+ Separadores/Tanques
-
- 0
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 903, 92
+
+ TabPage11
-
- Microsoft Sans Serif, 8.25pt
+
+ 14
-
- 8
+
+ TabPage5
-
+
+ 4, 22
+
+
TabPage14
-
- 13
+
+ False
-
- TabPage11
+
+ Colunas
-
- True
+
+ 0, 0
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 1109, 137
-
- Controladores
+
+ 0, 0
-
- TabPage10
+
+ TabPage3
-
- Fill
+
+ False
-
- 0
+
+ TabPage4
-
- 0, 0
+
+ 1109, 137
-
- 4, 22
+
+ 1109, 137
-
- 0, 0
+
+ True
-
- System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ TabPage2
-
- 0, 0
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- TabPage5
+
+ TabPage2
-
- TabControl1
+
+ 3
-
+
+ False
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
True
-
+
False
-
- 911, 118
+
+ 4
-
- 4, 22
+
+ PanelReactors
-
+
True
-
- System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 1109, 137
-
- PanelOther
+
+ 0, 0
-
- TabPage10
+
+ 0, 0
-
- 4, 22
+
+ 3, 3, 3, 3
-
+
TabControl1
-
- 903, 92
-
-
- System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 1109, 137
-
- TabControl1
+
+ True
-
- $this
+
+ TabPage1
-
- Sólidos
+
+ 6
-
- TabPage9
+
+ Fill
-
- System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 0
-
- Colunas
+
+ 6
-
- 3, 3
+
+ System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 903, 92
+
+ PanelIndicators
-
- 4, 22
+
+ 0, 0
-
+
0
-
- System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ PanelUser
-
- 3
+
+ 4, 22
-
- 0
+
+ TabPage1
-
- Pressão
+
+