Академический Документы
Профессиональный Документы
Культура Документы
Option Explicit
Function FlashPt(T10 As Double) As Variant
'
' Function to estimate the flash point temperature based on API Procedure 2B7.
1.
'
' Written 08/29/2003 (JL Jechura).
'
Dim T10R As Double
'
'
'
'
End Function
Function MolWt(SpGr As Double, BPT_degR As Double) As Variant
Attribute MolWt.VB_Description = "Estimates molecular weight of a petroleum frac
tion using Riazzi-Daubert method. Input values are Specific Gravity (60/60) and
the normal boiling point (R)."
'
' REF: API TECHNICAL DATA BOOK -- PETROLEUM REFINING, 4TH ED.
'
PP. 2.15, 4.57, 4.65, 7.133-134
MolWt = 20.486 * BPT_degR ^ 1.26007 * SpGr ^ 4.98308 * _
Exp(0.0001165 * BPT_degR + (-7.78712 + 0.0011582 * BPT_degR) * SpGr)
End Function
Function CriticalPressure(SpGr As Double, BPT_degR As Double) As Variant
Attribute CriticalPressure.VB_Description = "Estimates critical pressure (psia)
of a petroleum fraction using Riazzi-Daubert method. Input values are Specific G
ravity (60/60) and normal boiling point (R)."
'
' REF: API TECHNICAL DATA BOOK -- PETROLEUM REFINING, 4TH ED.
'
PP. 2.15, 4.57, 4.65, 7.133-134
CriticalPressure = 6162000# / BPT_degR ^ 0.4844 * SpGr ^ 4.0846 * _
Exp(-0.004725 * BPT_degR + (-4.8014 + 0.0031939 * BPT_degR) * SpGr)
End Function
Function CriticalTemperature(SpGr As Double, BPT_degR As Double) As Variant
Attribute CriticalTemperature.VB_Description = "Estimates critical temperature (R
) of a petroleum fraction using Riazzi-Daubert method. Input values are Specific
Gravity (60/60) and normal boiling point (R)."
'
' REF: API TECHNICAL DATA BOOK -- PETROLEUM REFINING, 4TH ED.
'
PP. 2.15, 4.57, 4.65, 7.133-134
CriticalTemperature = 10.6443 * BPT_degR ^ 0.81067 * SpGr ^ 0.53691 * _
Exp(-0.00051747 * BPT_degR + (-0.54444 + 0.00035995 * BPT_degR) * SpGr)
End Function
'
'
'
Functions for gross & net heats of combustion are from API Procedure 14A1.3
from the API Technical Data Book -- Refining.
Units on the heats of combustion are Btu/lb.
WPC_Ine
heating
(enter
if unkn
As Double
As Double
As Double
ity
'
As Double
As Double
As Double
ity
'
Else
InertsCorrection = WPC_Inerts - AveInerts(APIGravity)
End If
Heat = Heat * (1 - 0.01 * (WPC_Water + SulfurCorrection + InertsCorrection))
+ 40.5 * SulfurCorrection - 10.53 * WPC_Water
NetHeatCombustion = Heat
End Function
Private Function AveSulfur(APIGravity As Double) As Double
Dim G
As Double
As Double
j = LBound(Values)
Min = Values(j)
For i = (j + 1) To UBound(Values)
If Values(i) < Min Then
Min = Values(i)
End If
Next i
End Function