VBA Code For Colebrook Equation
VBA Code For Colebrook Equation
/ Math.Sqr(f(i)))
f_1 = -(3.4165 * D * Math.Sqr(f(i))) / (3.4165 * D * f(i) ^ (3 / 2) + f(i) ^ 2 *
R) - (1.70825 * D) / (3.4165 * D * f(i) ^ (3 / 2) + f(i) ^ 2 * R) - (0.5 * Math
.Sqr(f(i)) * R) / (3.4165 * D * f(i) ^ (3 / 2) + f(i) ^ 2 * R)
fr0(i + 1) = fr0(i) - f_0 / f_1
Next i
If var = 1 Then
colebrook = f(10) * 1000 * 1.204 * V ^ 2 / (2 * D)
ElseIf var = 2 Then
colebrook = f(10) - f(9)
ElseIf var = 3 Then
colebrook = f(10)
Else
colebrook = MsgBox("Invalid value for var, Enter 1 for Pressure loss, Enter 2 fo
r error term, Enter 3 for friction factor")
End If
End Function
Function colebrook_circ(Dia As Double, V As Double, var As Integer) As Variant
Dim D As Double
Dim R As Double
Dim f(1 To 11) As Variant
Dim fr0(1 To 11) As Variant
Dim f_0 As Double
Dim f_1 As Double
Dim fr1 As Double
Dim frc As Double
frc = 0.09 'Roughness factor of the duct
D = Dia 'Hydraulic diameter of the duct
R = 66.4 * D * V 'Reynolds number of the flow
fr0(1) = 0.01 'Initial guess value of the friction factor
For i = 1 To 10
f(i) = fr0(i)
f_0 = 1 / Math.Sqr(f(i)) + 2 * WorksheetFunction.Log10(frc / 3.7 / D + 2.51 / R
/ Math.Sqr(f(i)))
f_1 = -(3.4165 * D * Math.Sqr(f(i))) / (3.4165 * D * f(i) ^ (3 / 2) + f(i) ^ 2 *
R) - (1.70825 * D) / (3.4165 * D * f(i) ^ (3 / 2) + f(i) ^ 2 * R) - (0.5 * Math
.Sqr(f(i)) * R) / (3.4165 * D * f(i) ^ (3 / 2) + f(i) ^ 2 * R)
fr0(i + 1) = fr0(i) - f_0 / f_1
Next i
If var = 1 Then
colebrook_circ = f(10) * 1000 * 1.204 * V ^ 2 / (2 * D)
ElseIf var = 2 Then
colebrook_circ = f(10) - f(9)
ElseIf var = 3 Then
colebrook_circ = f(10)
Else
colebrook_circ = MsgBox("Invalid value for var, Enter 1 for Pressure loss, Enter
2 for error term, Enter 3 for friction factor")
End If
End Function