You are on page 1of 9

Sub Main_Calc()

Tw = 29 'deg C
g = 9.81 ' m/s2
Pi = 3.141592654
Qbp = 0.234
Qst = 0.154
Qh2sl = Qbp - Qst
Qh2 = 0.072
Qsl = Qh2sl - Qh2
'initial guess
Qrhr = Qh2 / 4
Qrhf = Qh2 / 4
Qlhr = Qh2 / 4
Qlhf = Qh2 / 4
'initial guess
Qbr = Qsl / 4
Qtr = Qsl / 4
Qbl = Qsl / 4
Qtl = Qsl / 4
'Stator cooler
Do
LN0: Worksheets("Stator Coolers").Range("H7").Value = 1000 * Qst
iL1 = delQL1
iL2 = delQL2
Dst = Worksheets("Stator Coolers").Range("H4").Value
Lst = Worksheets("Stator Coolers").Range("H3").Value
kst = Worksheets("Stator Coolers").Range("H5").Value
Call WaterProp(Tw, Qst, Dst, Lst, Re, rhow)
Call Friction(Dst, kst, Re, f)
Worksheets("Stator Coolers").Range("J3").Value = f
Call Hardy(f, Lst, Dst, Qst, kkst, hst)
Worksheets("Stator Coolers").Range("K3").Value = kkst
Worksheets("Stator Coolers").Range("L3").Value = hst
Qh2sl = Qh2 + Qsl
'H2 & Slipring coolers's common supply en return
Worksheets("Stator Coolers").Range("H17").Value = 1000 * Qh2sl

Dh2sl = Worksheets("Stator Coolers").Range("H12").Value


Lh2sl = Worksheets("Stator Coolers").Range("H11").Value
kh2sl = Worksheets("Stator Coolers").Range("H15").Value
Call WaterProp(Tw, Qh2sl, Dh2sl, Lh2sl, Re, rhow)
Call Friction(Dh2sl, kh2sl, Re, f)
Worksheets("Stator Coolers").Range("J11").Value = f
Call Hardy(f, Lh2sl, Dh2sl, Qh2sl, kkh2sl, hh2sl)
Worksheets("Stator Coolers").Range("K11").Value = kkh2sl
Worksheets("Stator Coolers").Range("L11").Value = hh2sl
'Loop 1
Do
If (Qrhr + Qrhf + Qlhr + Qlhf - Qh2) > 0 And Abs(Qrhr + Qrhf + Qlhr + Qlhf - Qh2
) > 0.0001 Then
Qrhr = Qrhr - 0.0001
Qrhf = Qrhf - 0.0001
Qlhr = Qlhr - 0.0001
Qlhf = Qlhf - 0.0001
ElseIf (Qrhr + Qrhf + Qlhr + Qlhf - Qh2) < 0 And Abs(Qrhr + Qrhf + Qlhr + Qlhf -
Qh2) > 0.0001 Then
Qrhr = Qrhr + 0.0001
Qrhf = Qrhf + 0.0001
Qlhr = Qlhr + 0.0001
Qlhf = Qlhf + 0.0001
End If
'Right hand rear cooler
LN4: ih21 = delQh21
Worksheets("Hydrogen Coolers").Range("H7").Value = 1000 * Qrhr
Worksheets("Hydrogen Coolers").Range("H13").Value = 1000 * Qrhf
Drhr = Worksheets("Hydrogen Coolers").Range("H5").Value
Lrhr = Worksheets("Hydrogen Coolers").Range("H4").Value
krhr = Worksheets("Hydrogen Coolers").Range("H6").Value
Call WaterProp(Tw, Qrhr, Drhr, Lrhr, Re, rhow)
Call Friction(Drhr, krhr, Re, f)
Worksheets("Hydrogen Coolers").Range("J4").Value = f
Call Hardy(f, Lrhr, Drhr, Qrhr, kkrhr, hrhr)
Worksheets("Hydrogen Coolers").Range("K4").Value = kkrhr
Worksheets("Hydrogen Coolers").Range("L4").Value = hrhr

'Right hand front cooler


Drhf = Worksheets("Hydrogen Coolers").Range("H11").Value
Lrhf = Worksheets("Hydrogen Coolers").Range("H10").Value
krhf = Worksheets("Hydrogen Coolers").Range("H12").Value
Call WaterProp(Tw, Qrhf, Drhf, Lrhf, Re, rhow)
Call Friction(Drhf, krhf, Re, f)
Worksheets("Hydrogen Coolers").Range("J10").Value = f
Call Hardy(f, Lrhf, Drhf, Qrhf, kkrhf, hrhf)
Worksheets("Hydrogen Coolers").Range("K10").Value = kkrhf
Worksheets("Hydrogen Coolers").Range("L10").Value = hrhf
hh21 = hrhr - hrhf
kQh21 = 2 * kkrhr * Qrhr + 2 * kkrhf * Qrhf
delQh21 = hh21 / kQh21
Worksheets("Hydrogen Coolers").Range("N4").Value = delQh21
xh21 = Abs(ih21 - delQh21)
Worksheets("Hydrogen Coolers").Range("O4").Value = xh21
If xh21 < 0.000000000001 And ih21 <> 0 Then
xxh21 = True
ElseIf delQh21 > 0 Then
Qrhf = Qrhf + Abs(delQh21)
GoTo LN4
ElseIf delQh21 < 0 Then
Qrhr = Qrhr + Abs(delQh21)
GoTo LN4
End If

'Loop 2
'Left hand rear cooler
ih22 = delQh22

Worksheets("Hydrogen Coolers").Range("H26").Value = 1000 * Qlhr


Dlhr = Worksheets("Hydrogen Coolers").Range("H24").Value
Llhr = Worksheets("Hydrogen Coolers").Range("H23").Value
klhr = Worksheets("Hydrogen Coolers").Range("H25").Value
Call WaterProp(Tw, Qlhr, Dlhr, Llhr, Re, rhow)
Call Friction(Dlhr, klhr, Re, f)
Worksheets("Hydrogen Coolers").Range("J23").Value = f
Call Hardy(f, Llhr, Dlhr, Qlhr, kklhr, hlhr)
Worksheets("Hydrogen Coolers").Range("K23").Value = kklhr
Worksheets("Hydrogen Coolers").Range("L23").Value = hlhr
hh22 = hrhf - hlhr
kQh22 = 2 * kklhr * Qlhr + 2 * kkrhf * Qrhf
delQh22 = hh2 / kQh22
Worksheets("Hydrogen Coolers").Range("N17").Value = delQh22
xh22 = Abs(ih22 - delQh22)
Worksheets("Hydrogen Coolers").Range("O17").Value = xh22

If xh22 < 0.000000000001 And ih22 <> 0 Then


xxh22 = True
ElseIf delQh22 > 0 Then
Qrhr = Qrhr + Abs(delQh22)
GoTo LN4
ElseIf delQh22 < 0 Then
Qrhf = Qrhf + Abs(delQh22)
GoTo LN4
End If
'Loop 3
'Left hand front
ih23 = delQh23
Worksheets("Hydrogen Coolers").Range("H39").Value = 1000 * Qlhf
Dlhf = Worksheets("Hydrogen Coolers").Range("H37").Value
Llhf = Worksheets("Hydrogen Coolers").Range("H36").Value
klhf = Worksheets("Hydrogen Coolers").Range("H38").Value
Call WaterProp(Tw, Qlhf, Dlhf, Llhf, Re, rhow)
Call Friction(Dlhf, klhf, Re, f)
Worksheets("Hydrogen Coolers").Range("J30").Value = f
Call Hardy(f, Llhf, Dlhf, Qlhf, kklhf, hlhf)
Worksheets("Hydrogen Coolers").Range("K36").Value = kklhf
Worksheets("Hydrogen Coolers").Range("L36").Value = hlhf

hh23 = hlhr - hlhf


kQh23 = 2 * kklhr * Qlhr + 2 * kklhf * Qlhf
delQh23 = hh23 / kQh23
Worksheets("Hydrogen Coolers").Range("N30").Value = delQh23
xh23 = Abs(ih23 - delQh23)
Worksheets("Hydrogen Coolers").Range("O30").Value = xh23

If xh23 < 0.000000000001 And ih23 <> 0 Then


xxh23 = True
ElseIf delQh23 > 0 Then
Qlhf = Qlhf + Abs(delQh23)
GoTo LN4
ElseIf delQh23 < 0 Then
Qlhr = Qlhr + Abs(delQh23)
GoTo LN4
End If
Loop Until Abs(Qrhr + Qrhf + Qlhr + Qlhf - Qh2) <= 0.0001

'SLIPRING COOLERS
'Slipring coolers's supply & return
Worksheets("Stator Coolers").Range("H25").Value = 1000 * Qsl
Dsl = Worksheets("Stator Coolers").Range("H22").Value
Lsl = Worksheets("Stator Coolers").Range("H21").Value
ksl = Worksheets("Stator Coolers").Range("H23").Value
Call WaterProp(Tw, Qsl, Dsl, Lsl, Re, rhow)
Call Friction(Dsl, ksl, Re, f)
Worksheets("Stator Coolers").Range("J21").Value = f
Call Hardy(f, Lsl, Dsl, Qsl, kksl, hsl)
Worksheets("Stator Coolers").Range("K21").Value = kksl
Worksheets("Stator Coolers").Range("L21").Value = hsl
'Loop 1
Do
If ((Qsl3rc + Qbl) - Qsl) > 0 And Abs(Qsl3rc + Qbl - Qsl) > 0.0001 Then
Qbr = Qbr - 0.0001
Qtr = Qtr - 0.0001
Qbl = Qbl - 0.0001
Qtl = Qtl - 0.0001
ElseIf ((Qsl3rc + Qbl) - Qsl) < 0 And Abs(Qsl3rc + Qbl - Qsl) > 0.0001 Then
Qbr = Qbr + 0.0001
Qtr = Qtr + 0.0001
Qbl = Qbl + 0.0001
Qtl = Qtl + 0.0001
End If
'Bottom right cooler
LN1: i1 = delQ1
Worksheets("Slipring Coolers").Range("H7").Value = 1000 * Qbr
Worksheets("Slipring Coolers").Range("H13").Value = 1000 * Qtr
Dbr = Worksheets("Slipring Coolers").Range("H5").Value
Lbr = Worksheets("Slipring Coolers").Range("H4").Value
kbr = Worksheets("Slipring Coolers").Range("H6").Value
Call WaterProp(Tw, Qbr, Dbr, Lbr, Re, rhow)
Call Friction(Dbr, kbr, Re, f)
Worksheets("Slipring Coolers").Range("J4").Value = f
Call Hardy(f, Lbr, Dbr, Qbr, kkbr, hbr)
Worksheets("Slipring Coolers").Range("K4").Value = kkbr
Worksheets("Slipring Coolers").Range("L4").Value = hbr

'Top right cooler


Dtr = Worksheets("Slipring Coolers").Range("H11").Value
Ltr = Worksheets("Slipring Coolers").Range("H10").Value
ktr = Worksheets("Slipring Coolers").Range("H12").Value
Call WaterProp(Tw, Qtr, Dtr, Ltr, Re, rhow)
Call Friction(Dtr, ktr, Re, f)
Worksheets("Slipring Coolers").Range("J10").Value = f
Call Hardy(f, Ltr, Dtr, Qtr, kktr, htr)
Worksheets("Slipring Coolers").Range("K10").Value = kktr
Worksheets("Slipring Coolers").Range("L10").Value = htr
h1 = hbr - htr
kQ1 = 2 * kkbr * Qbr + 2 * kktr * Qtr
delQ1 = h1 / kQ1
Worksheets("Slipring Coolers").Range("N4").Value = delQ1
x1 = Abs(i1 - delQ1)
Worksheets("Slipring Coolers").Range("O4").Value = x1
If x1 < 0.000000000001 And i1 <> 0 Then
xx1 = True
ElseIf delQ1 > 0 Then
Qtr = Qtr + Abs(delQ1)
GoTo LN1
ElseIf delQ1 < 0 Then
Qbr = Qbr + Abs(delQ1)
GoTo LN1
End If
Qsl2rc = Qtr + Qbr
'Loop 2
'Top left cooler
i2 = delQ2
Worksheets("Slipring Coolers").Range("H26").Value = 1000 * Qtl
Worksheets("Slipring Coolers").Range("H32").Value = 1000 * Qsl2rc
Dtl = Worksheets("Slipring Coolers").Range("H24").Value
Ltl = Worksheets("Slipring Coolers").Range("H23").Value
ktl = Worksheets("Slipring Coolers").Range("H25").Value
Call WaterProp(Tw, Qtl, Dtl, Ltl, Re, rhow)
Call Friction(Dtl, ktl, Re, f)
Worksheets("Slipring Coolers").Range("J23").Value = f
Call Hardy(f, Ltl, Dtl, Qtl, kktl, htl)
Worksheets("Slipring Coolers").Range("K23").Value = kktl
Worksheets("Slipring Coolers").Range("L23").Value = htl
'Qsl2rc supply and return
Dsl2rc = Worksheets("Slipring Coolers").Range("H30").Value
Lsl2rc = Worksheets("Slipring Coolers").Range("H29").Value
ksl2rc = Worksheets("Slipring Coolers").Range("H31").Value
Call WaterProp(Tw, Qsl2rc, Dsl2rc, Lsl2rc, Re, rhow)
Call Friction(Dsl2rc, ksl2rc, Re, f)
Worksheets("Slipring Coolers").Range("J29").Value = f
Call Hardy(f, Lsl2rc, Dsl2rc, Qsl2rc, kksl2rc, hsl2rc)
Worksheets("Slipring Coolers").Range("K29").Value = kksl2rc
Worksheets("Slipring Coolers").Range("L29").Value = hsl2rc

h2 = 2 * hsl2rc + htr - htl


kQ2 = 2 * kktl * Qtl + 2 * kktr * Qtr + 4 * kksl2rc * Qsl2rc
delQ2 = h2 / kQ2
Worksheets("Slipring Coolers").Range("N17").Value = delQ2
x2 = Abs(i2 - delQ2)
Worksheets("Slipring Coolers").Range("O17").Value = x2
If x2 < 0.000000000001 And i2 <> 0 Then
xx2 = True
ElseIf delQ2 < 0 Then
Qtr = Qtr + Abs(delQ2)
Qsl2rc = Qsl2rc + Abs(delQ2)
GoTo LN1
ElseIf delQ2 > 0 Then
Qtl = Qtl + Abs(delQ2)
GoTo LN1
End If
Qsl3rc = Qtl + Qtr + Qbr
'Loop 3
'Bottom left cooler
i3 = delQ3
Worksheets("Slipring Coolers").Range("H45").Value = 1000 * Qbl
Worksheets("Slipring Coolers").Range("H57").Value = 1000 * Qsl3rc
Dbl = Worksheets("Slipring Coolers").Range("H43").Value
Lbl = Worksheets("Slipring Coolers").Range("H42").Value
kbl = Worksheets("Slipring Coolers").Range("H44").Value
Call WaterProp(Tw, Qbl, Dbl, Lbl, Re, rhow)
Call Friction(Dbl, kbl, Re, f)
Worksheets("Slipring Coolers").Range("J42").Value = f
Call Hardy(f, Lbl, Dbl, Qbl, kkbl, hbl)
Worksheets("Slipring Coolers").Range("K42").Value = kkbl
Worksheets("Slipring Coolers").Range("L42").Value = hbl
'Qsl3rc supply and return
Dsl3rc = Worksheets("Slipring Coolers").Range("H55").Value
Lsl3rc = Worksheets("Slipring Coolers").Range("H54").Value
ksl3rc = Worksheets("Slipring Coolers").Range("H56").Value
Call WaterProp(Tw, Qsl3rc, Dsl3rc, Lsl3rc, Re, rhow)
Call Friction(Dsl3rc, ksl3rc, Re, f)
Worksheets("Slipring Coolers").Range("J54").Value = f
Call Hardy(f, Lsl3rc, Dsl3rc, Qsl3rc, kksl3rc, hsl3rc)
Worksheets("Slipring Coolers").Range("K54").Value = kksl3rc
Worksheets("Slipring Coolers").Range("L54").Value = hsl3rc

h3 = 2 * hsl3rc + htl - hbl


kQ3 = 2 * kktl * Qtl + 2 * kkbl * Qbl + 4 * kksl3rc * Qsl3rc
delQ3 = h3 / kQ3
Worksheets("Slipring Coolers").Range("N42").Value = delQ3
x3 = Abs(i3 - delQ3)
Worksheets("Slipring Coolers").Range("O42").Value = x3
If x3 < 0.000000000001 And i3 <> 0 Then
xx3 = True
ElseIf delQ3 < 0 Then
Qtl = Qtl + Abs(delQ3)
Qsl3rc = Qsl3rc + Abs(delQ3)
GoTo LN1
ElseIf delQ3 > 0 Then
Qbl = Qbl + Abs(delQ3)
GoTo LN1
End If
Loop Until Abs(Qbr + Qtr + Qtl + Qbl - Qsl) <= 0.0001 And Abs(Qsl2rc - Qtr - Qbr
) < 0.0001 And Abs(Qsl3rc - Qsl2rc - Qtl) < 0.0001
'H2 & slipring coolers LOOP
hL1 = 2 * hsl + hbl - hrhr
kQL1 = 2 * 2 * kksl * Qsl + 2 * kkbl * Qbl + 2 * kkrhr * Qrhr
delQL1 = hL1 / kQL1
xL1 = Abs(iL1 - delQL1)
If xL1 < 0.000000000001 And iL1 <> 0 Then
xL1 = True
ElseIf delQL1 < 0 Then
Qsl = Qsl + 4 * Abs(delQL1)
Qbr = Qsl / 4
Qtr = Qsl / 4
Qbl = Qsl / 4
Qtl = Qsl / 4
GoTo LN0
ElseIf delQL1 > 0 Then
Qh2 = Qh2 + 4 * Abs(delQL1)
Qrhr = Qh2 / 4
Qrhf = Qh2 / 4
Qlhr = Qh2 / 4
Qlhf = Qh2 / 4
GoTo LN0
End If
'H2 & stator coolers LOOP
hL2 = 2 * hh2sl + hrhr - hst
kQL2 = 2 * 2 * kkh2sl * Qh2sl + 2 * kkrhr * Qrhr + 2 * kkst * Qst
delQL2 = hL2 / kQL2
xL2 = Abs(iL2 - delQL2)
If xL2 < 0.000000000001 And iL2 <> 0 Then
xL2 = True
ElseIf delQL2 < 0 Then
Qh2 = Qh2 + 4 * Abs(delQL2)
Qrhr = Qh2 / 4
Qrhf = Qh2 / 4
Qlhr = Qh2 / 4
Qlhf = Qh2 / 4
GoTo LN0
ElseIf delQL2 > 0 Then
Qst = Qst + Abs(delQL2)
GoTo LN0
End If
Loop Until Abs((Qsl + Qh2 + Qst) - Qbp) <= 0.0001
End Sub
Public Sub WaterProp(Tw, Q, d, L, Re, rhow)
Pi = 3.141592654
mu = 0.00075
T = Tw + 273.15
v = 4 * Q / (Pi * (d * 0.001) ^ 2)
rhow = 1 / (0.00149343 - 0.0000037164 * T + 0.00000000709782 * T ^ 2 - 1.903
21E-20 * T ^ 6)
Re = rhow * v * L / mu
End Sub
Public Sub Friction(d, k, Re, f)
For f = 0.000001 To 0.1 Step 0.000001
If f >= 0.1 Then MsgBox "No value of f could be found"
LHS = 1 / Sqr(f)
RHS = -2 * Log(((k / d) / 3.7) + (2.51 / (Re * Sqr(f)))) / Log(10)
x = Abs(LHS - RHS) / LHS
If Abs(x) < 0.0001 Then Exit For
Next f
End Sub
Public Sub Hardy(f, L, d, Q, k, h)
Pi = 3.141592654
g = 9.81
k = 8 * f * L / (g * (d * 0.001) ^ 5 * Pi ^ 2)
h = k * Q ^ 2
End Sub

You might also like