## Excel and Steam Tables

## Excel and Steam Tables

(OP)

There must be a way to use Excel with steam tables.

I have downloaded Water97 v13.xla. Freeware based on IAPWS-IF97. It's in metric units. I have converted the numbers back and forth. Not a problem, just a hassel.

But it's not obvious how to get at something like superheated pressure when only temperature and specific volume are known.

Anyone know the way though this in Water 97?

Is there an American units version of Water 97 available?

I can see using my own table and functions for the saturated part, but superheated is out of my league.

Thanks for the help.

Pete Jansen

I have downloaded Water97 v13.xla. Freeware based on IAPWS-IF97. It's in metric units. I have converted the numbers back and forth. Not a problem, just a hassel.

But it's not obvious how to get at something like superheated pressure when only temperature and specific volume are known.

Anyone know the way though this in Water 97?

Is there an American units version of Water 97 available?

I can see using my own table and functions for the saturated part, but superheated is out of my league.

Thanks for the help.

Pete Jansen

## RE: Excel and Steam Tables

Barring that, I can recommend Archon Engineering's steam table program. That one I know gives you the option of providing any two parameters out of five (temperature, pressure, density, enthalphy or entropy) and it calculates the rest.

## RE: Excel and Steam Tables

A=A(density, Temperature), where A=helmholz function. So all the other properties are derived as derivatives of A.

If you know spec vol & T, you are using the natural coodinates for the correlation. The Excel table you referenced should have some background baisis which should allow you to access all properties from density + Temp. I suggest contacting the office that issued the excel functions.

## RE: Excel and Steam Tables

## RE: Excel and Steam Tables

I read thru the programming for the excel add-in water97_v13, and found that it is based on a different equation of state, where the primary properties are P + T. See <www.cheresources.com/iapwsif97.shtml>;.

If you download the add-in , and open it in excel using the visual basic key, you can view ( and modify) the program to accept US units in lieu of metric units. . Also, there are over 44 public functions provided with the add-in, and not the dozen or so listed on the comon webpages.

## RE: Excel and Steam Tables

1) I downloaded the Archon steam program demo. Nice program, but it doesn't have an input for steam quality. A great website for economical software.

2) I contacted that office initially, but the person is in Germany and it's freeware, so he may not get back.

3) Techware is an interesting site. Their product "XLInterp" may be new since you were there. It's an add-in for Excel that may just handle it straight away. Designed to interpolate forwards and backwards, without data being in ascending order. It seems to be advertised to work on any user designed table.

4) Embarassed to say I don't know enough Visual Basic to do either of the suggestions you made. But if you care to elaborate, fantastic.

Thanks to you all.

## RE: Excel and Steam Tables

Hope it helps.

Dim qDataCache(100), Cnst(100)

'____________________________ Specific Volume _______________________________

Function fnVsh(P, F)

If Cnst(1) = 0 Then Initialize

B = P / 3208.234759 'Beta (ratio of P/Pcrit)

Th = (F + 459.67) / 1165.14 'Theta (ratio of degR/degRcrit)

Chi = 4.260321148 * Th / B ' Initialize Chi (ratio of v/vCrit)

Kount1 = 7

For M = 1 To 5

Call Sum2(Sum, Kount1, 0)

Chi = Chi - Sum * M * B ^ (M - 1)

Next

Kount1 = 36: Kount2 = 59

For M = 6 To 8

Call Sum2(Sum, Kount1, 0)

Top = Sum * (M - 2) * B ^ (1 - M)

Call Sum2(Sum, Kount2, 0)

Bot = (Sum + B ^ (2 - M)) ^ 2

Chi = Chi - Top / Bot

Next

Call Sum3(Sum, Bl, 0)

Chi = Chi + 11 * Sum * (B / Bl) ^ 10

fnVsh = Chi * 0.0507785289

End Function

'____________________________________________________________________________

'______________________________ Entropy _____________________________________

Function fnSsh(P, F)

' Private B, Sig, Sum, Kount1, Kount2, Kount3, Kount4, Top, Bot, Bl, M

If Cnst(1) = 0 Then Initialize

B = P / 3208.234759 'Beta (ratio of P/Pcrit)

Th = (F + 459.67) / 1165.14 'Theta (ratio of degR/degRcrit)

Sig = -4.260321148 * Log(B) + Cnst(1) * Log(Th) ' Initialize Sig

' which is Sigma

Call Sum1(Sum, 0) ' s/sCrit

Sig = Sig - Sum

Kount1 = 7

For M = 1 To 5

Call Sum2(Sum, Kount1, -1)

Sig = Sig - Sum * bLil * B ^ M

Next

Kount1 = 59: Kount2 = 36: Kount3 = 59: Kount4 = 36

For M = 6 To 8

Call Sum2(Top, Kount1, -1)

Call Sum2(Sum, Kount2, 0)

Top = Top + Sum

Call Sum2(Sum, Kount3, 0)

Bot = Sum + B ^ (2 - M)

Call Sum2(Sum, Kount4, -1)

Sig = Sig - bLil * (Sum - Top / Bot) / Bot

Next

Call Sum3(Sum, Bl, 1)

Sig = Sig + B * Sum * (B / Bl) ^ 10

fnSsh = Sig * 0.02587358228

End Function

'____________________________________________________________________________

'_________________________________ Enthalpy _________________________________

Function fnHsh(P, F)

'Private B, Eps, Sum, Kount1, Kount2, Kount3, Kount4, Top, Bot, Buv, Bl, M

If Cnst(1) = 0 Then Initialize

B = P / 3208.234759 'Beta (ratio of P/Pcrit)

Th = (F + 459.67) / 1165.14 'Theta (ratio of degR/degRcrit)

Eps = Cnst(1) * Th ' Initialize Eps which is Epselon (h/hCrit)

Call Sum1(Sum, -1)

Eps = Eps - Sum

Kount1 = 7: Kount2 = 7

For M = 1 To 5

Call Sum2(Sum, Kount1, 0)

Top = Sum

Call Sum2(Sum, Kount2, -1)

Eps = Eps - (Top + bLil * Th * Sum) * B ^ M

Next

Kount1 = 59: Kount2 = 59: Kount3 = 36: Kount4 = 36

For M = 6 To 8

Call Sum2(Top, Kount1, -1)

Call Sum2(Sum, Kount2, 0)

Bot = Sum + B ^ (2 - M)

Call Sum2(Buv, Kount3, 0)

Eps = Eps - (Buv + bLil * Th * Sum - Buv * bLil * Th * Top / Bot) / Bot

Next

Call Sum3(Sum, Bl, 2)

Eps = Eps + Sum * B * (B / Bl) ^ 10

fnHsh = Eps * 30.14634566

End Function

'____________________________________________________________________________

'______________________________ Sat Pressure ________________________________

Function fnPSat(F)

If F < 32 Then Beep: qPrint "Bad Data": Exit Function

B = P / 3208.234759 'Beta (ratio of P/Pcrit)

Th = (F + 459.67) / 1165.14 'Theta (ratio of degR/degRcrit)

temp = 1 - Th

Top = temp * (temp * (temp * (temp * (temp * -118.9646225 + 64.23285504) _

- 168.1706546) - 26.08023696) - 7.691234564)

Bot = 1 + temp * (temp * 20.9750676 + 4.16711732)

fnPSat = 3208.234759 * Exp(Top / (Th * Bot) - temp / (1000000000# * temp ^ 2 + 6))

End Function

'____________________________________________________________________________

'_______________________________ Sat Temperature ____________________________

Function fnTSat(P)

'Fit by Bize Not ASME Steam Tables

If P < 0.0886 Then Beep: qPrint "Bad Data : exit function"

temp = -268.633 - 0.0054 * P + 2.4417 * Sqr(P) + 32.558 * Sqr(Sqr(P)) _

+ 50.338 * Sqr(Sqr(Sqr(P))) + 285.04 * Sqr(Sqr(Sqr(Sqr(P))))

If P > 1400 Then

Del = P - 1400

temp = temp - Del * (0.000106 + Del * (0.000000343 + Del * 0.00000000013))

End If

fnTSat = temp

End Function

'____________________________________________________________________________

Sub Initialize() ' Reads ASME constants into Cnst() and bLil

'B sub 0,v ===> Cnst(1) thru (6)

qData 16.83599274, 28.56067796, -54.38923329

qData 0.4330662834, -0.6547711697, 0.08565182058

'B sub u,v and z sub u,v where u = 1 to 5

'========> Cnst(7) thru (35) (zero is flag to end loop)

qData 0.06670375918, 13, 1.388983801, 3, 0

qData 0.08390104328, 18, 0.02614670893, 2, -0.03373439453, 1, 0

qData 0.4520918904, 18, 0.1069036614, 10, 0

qData -0.5975336707, 25, -0.08847535804, 14, 0

qData 0.5958051609, 32, -0.5159303373, 28, 0.2075021122, 24, 0

'B sub u,v and z sub u,v where u = 6 to 8

'========> Cnst(36) thru (50) (zero is flag to end loop)

qData 0.1190610271, 12, -0.09867174132, 11, 0

qData 0.1683998803, 24, -0.05809438001, 18, 0

qData 0.006552390126, 24, 0.0005710218649, 14, 0

'B sub 9,v =======> Cnst(51) thru (57) bLil = Cnst(58)

qData 193.6587558, -1388.522425, 4126.607219, -6508.211677

qData 5745.984054, -2693.088365, 523.5718623, 0.7633333333 ' bLil

'b sub u,lambda and x sub u,lambda

'=====> Cnst(59) thru (69) (zero is flag to end loop)

qData 0.4006073948, 14, 0

qData 0.08636081627, 19, 0

qData -0.8532322921, 54, 0.3460208861, 27, 0

For I = 1 To 69

qRead Cnst(I)

Next I

bLil = Cnst(58)

End Sub

Sub NonDim(Psia, degF, Beta, Theta)

' Changes Psia and degF into Non-dimensional parameters

' Beta is ratio of pressure/pressure at critical point of steam

' Theta is ratio of degR/degR at critical point

Beta = Psia / 3208.234759

Theta = (degF + 459.67) / 1165.14

End Sub

Sub Sum1(Sum1, iFlag)

'Sum1 is sum of (N1*Beta(0,v)*Theta^N2) for v = 1 to 5

' where if

' iFlag = -1 then N1 = v-1

' N2 = v-2

' else N1 = v-2

' N2 = v-1

'Private LilV, N1, N2

Sum1 = 0

For LilV = 1 To 5

If iFlag Then

N1 = LilV - 2: N2 = LilV - 1

Else

N1 = LilV - 1: N2 = LilV - 2

End If

Sum1 = Sum1 + N1 * Cnst(LilV + 1) * Th ^ N2

Next

End Sub

Sub Sum2(Sum2, K, iFlag)

'Private Prod

Sum2 = 0

While Cnst(K) <> 0

Prod = Cnst(K) * Exp(Cnst(K + 1) * bLil * (1 - Th))

If iFlag Then Prod = Prod * Cnst(K + 1)

Sum2 = Sum2 + Prod

K = K + 2

Wend

K = K + 1

End Sub

Sub Sum3(Sum3, Bl, iFlag)

'Private LilV, Prod, temp, L1, L2, Blprime

L1 = -34.17061978: L2 = 19.31380707

Bl = 15.74373327 + Th * (L1 + Th * L2)

Blprime = L1 + 2 * L2 * Th

Sum3 = 0

For LilV = 0 To 6

Prod = Cnst(51 + LilV) * Exp(LilV * bLil * (1 - Th))

If iFlag <> 0 Then

temp = 10 * Blprime / Bl + LilV * bLil

If iFlag = 1 Then Prod = Prod * temp

If iFlag = 2 Then Prod = Prod * (1 + Th * temp)

End If

Sum3 = Sum3 + Prod

Next

End Sub

## RE: Excel and Steam Tables

Calm down, check this:

http://www.chemicalogic.com/steamtab/companion/default....

Your welcome.

Dracula