Slab Thermal Profile during Reheating


Language: Excel/VisualBasic.

Objective: This spreadsheet calculates the thermal profile of a slab as it is being reheated along a continuous furnace in a hot strip mill or plate mill line. Its temperatures accross its thickness are calculated from the set-points of the furnace and slab start temperature. A graphical output of the results is available.

Notes: This program considers only the radiative heat transfer from the furnace walls to the slab surface. The conductive heat transfer through the slab thickness is considered to be symmetric. The effect of the water cooled skids on slab temperature is not considered.


Click here to download the Excel file or use the Visual Basic for Applications listing below.


***** Begin of Program Listing *****

'
'                PROGRAMA PARA CÁLCULO DO PERFIL TÉRMICO DA PLACA REAQUECIDA
'
'            Placa Semi-Finita, Cálculo através do Método das Diferenças Finitas
'                      Temperatura Superficial Calculada por Radiação
'
'                             Fundamentos do Modelo Matemático:
'                      KREITH, F.: "Princípios da Transmissão de Calor",
'                      Editora Edgard Blücher Ltda., 1977, pág. 144-164
'
'                          Breve Descrição da Memória de Cálculo em:
'                      GORNI, A.A. et al.: "Comparação entre Abordagens para o
'                  Modelamento Matemático do Perfil Térmico de Placas durante seu
'                  Reaquecimento", Revista da Escola de Minas, Julho-Setembro 2000.
'
'                                     Desenvolvido por:
'                      Bruno Vincenzo Formica/Antonio Augusto Gorni
'                        - Versão Original MBasic:    15.01.1993
'                        - Versão QBasic:             11.02.1998
'                        - Versão Visual Basic:       29.03.2004
'
'                                     www.gorni.eng.br
'

Option Explicit
Dim i, iC, iL, iR, j, NroDivEsp, NroDivForno, NroTotInt As Integer
Dim iLine, n As Integer, iTM As Integer
Dim E, TInic, FatorForma, Deltat_i, NMin, Deltat_AQ, Deltat_Min, dx, TPreAq As Single
Dim Deltat, Deltat_AL, TMediaPlaca, Deltat_Burn, VelPlaca, x, HR, f01, f02, f03 As Single
Dim FD, DeltaT_SupNucl, DTIR, K01, DTC, ST, ComprFP As Single
Dim KAtual, CPAtual, RoAtual, TForno As Single
Dim TFornoVector(20), LimiteZonasFP(20), A(20), B(20), T(2, 50) As Single
Dim Tx(30) As Single, K(30) As Single, CP(30) As Single, Ro(30) As Single
Dim iLineDebug As Integer
Dim Aux1, Aux2 As Single
Dim FlagDebug, FirstDebug As Boolean

'
' Main Program.
'

Sub Aquecimento()
FlagDebug = False
FirstDebug = True
Application.ScreenUpdating = False
Sheets("Thermal Profile").Select
E = Cells(3, "F") / 1000
TInic = [F4]
Deltat_AQ = [F5]
Sheets("Parameters").Select
NroDivEsp = [A3]
FatorForma = [A4]
Deltat_i = [A5]
TPreAq = 300
ComprFP = 60
i = 3
LimiteZonasFP(0) = 0
Do While Cells(i, "H") <> ""
LimiteZonasFP(i - 2) = Cells(i, "H")
i = i + 1
Loop
NroDivForno = i - 3
For j = 0 To NroDivEsp / 2
T(0, j) = TInic
Next j
TMediaPlaca = TInic
Deltat_AQ = Deltat_AQ * 60
i = 5
Do While Cells(i, "N") <> ""
Tx(i - 5) = Cells(i, "M")
K(i - 5) = Cells(i, "N")
CP(i - 5) = Cells(i, "O")
Ro(i - 5) = Cells(i, "P")
i = i + 1
Loop
iTM = i - 6
Sheets("Thermal Profile").Select
i = 12
TFornoVector(0) = TPreAq
TFornoVector(1) = [H5]
TFornoVector(2) = [I5]
TFornoVector(3) = TFornoVector(2)
TFornoVector(4) = [J5]
TFornoVector(5) = TFornoVector(4)
TFornoVector(6) = [K5]
TFornoVector(7) = TFornoVector(6)
For iR = 1 To NroDivForno
A(iR) = (TFornoVector(iR - 1) - TFornoVector(iR)) / (LimiteZonasFP(iR - 1) - LimiteZonasFP(iR))
B(iR) = (LimiteZonasFP(iR) * TFornoVector(iR - 1) - LimiteZonasFP(iR - 1) * TFornoVector(iR)) / (LimiteZonasFP(iR) - LimiteZonasFP(iR - 1))
Next iR
Sheets("Thermal Profile").Select
Range("C9:IV10").Select
Selection.ClearContents
Range("A11:IV65536").Select
Selection.ClearContents
Deltat_Burn = 0
Cells(11, 1) = Deltat_Burn
Cells(11, 2) = TFornoVector(0)
For i = 0 To NroDivEsp / 2
Cells(9, i + 3) = i * (E * 1000 / NroDivEsp)
Cells(10, i + 3) = "[mm]"
Cells(11, i + 3) = T(0, i)
Next i
Cells(9, NroDivEsp / 2 + 4) = "Average"
Cells(10, NroDivEsp / 2 + 4) = "[°C]"
Cells(11, NroDivEsp / 2 + 4) = TMediaPlaca
Cells(2, "AH").Select
Selection.Copy
Cells(9, NroDivEsp / 2 + 5).Select
ActiveSheet.Paste
Cells(10, NroDivEsp / 2 + 5) = "[°C]"
Cells(11, NroDivEsp / 2 + 5) = 0
VelPlaca = ComprFP / Deltat_AQ
iLine = 12
dx = E / NroDivEsp
iC = 0
Deltat_AL = Deltat_i
Do While Deltat_Burn <= Deltat_AQ
Deltat_Burn = Deltat_Burn + Deltat_AL
x = VelPlaca * Deltat_Burn
For iL = 1 To NroDivForno
If x < LimiteZonasFP(iL) Then TForno = A(iL) * x + B(iL): Exit For
Next iL
HR = FatorForma * 5.674 * (((TForno + 273) / 100) ^ 4 - ((T(0, 0) + 273) / 100) ^ 4) / (TForno - T(0, 0))
KAtual = Lagrange(Tx, K, T(0, 0), iTM)
CPAtual = Lagrange(Tx, CP, T(0, 0), iTM)
RoAtual = Lagrange(Tx, Ro, T(0, 0), iTM)
Deltat_Min = 0.5 * dx ^ 2 / (KAtual / CPAtual / RoAtual) / (1 + (HR * dx / KAtual))
Do While Deltat_AL > Deltat_Min
Deltat_Burn = Deltat_Burn - Deltat_AL
Deltat_AL = Deltat_Min * 0.8
Deltat_Burn = Deltat_Burn + Deltat_AL
x = VelPlaca * Deltat_Burn
For iL = 1 To NroDivForno
If x < LimiteZonasFP(iL) Then TForno = A(iL) * x + B(iL): Exit For
Next iL
HR = FatorForma * 5.674 * (((TForno + 273) / 100) ^ 4 - ((T(0, 0) + 273) / 100) ^ 4) / (TForno - T(0, 0))
Deltat_Min = 0.5 * dx ^ 2 / (KAtual / CPAtual / RoAtual) / (1 + (HR * dx / KAtual))
Loop
f01 = T(0, 0) * (1 - 2 * Deltat_AL / (CPAtual * RoAtual * dx) * (KAtual / dx + HR))
f02 = 2 * HR * Deltat_AL / (CPAtual * RoAtual * dx) * TForno
f03 = 2 * KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2) * T(0, 1)
T(1, 0) = f01 + f02 + f03
ST = T(1, 0)
For j = 1 To NroDivEsp / 2 - 1
KAtual = (Lagrange(Tx, K, T(0, j), iTM))
CPAtual = (Lagrange(Tx, CP, T(0, j), iTM))
RoAtual = (Lagrange(Tx, Ro, T(0, j), iTM))
f01 = KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2) * T(0, j - 1)
f02 = (1 - 2 * KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2)) * T(0, j)
f03 = KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2) * T(0, j + 1)
T(1, j) = f01 + f02 + f03
ST = ST + T(1, j)
Next j
KAtual = Lagrange(Tx, K, T(0, NroDivEsp / 2), iTM)
CPAtual = Lagrange(Tx, CP, T(0, NroDivEsp / 2), iTM)
RoAtual = Lagrange(Tx, Ro, T(0, NroDivEsp / 2), iTM)
f01 = KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2) * T(0, NroDivEsp / 2 - 1)
f02 = (1 - 2 * KAtual * Deltat_AL / (CPAtual * RoAtual * dx ^ 2)) * T(0, NroDivEsp / 2)
T(1, NroDivEsp / 2) = 2 * f01 + f02
ST = ST + T(1, NroDivEsp / 2)
TMediaPlaca = ST / (NroDivEsp / 2 + 1)
DeltaT_SupNucl = T(1, 0) - T(1, NroDivEsp / 2)
For j = 0 To NroDivEsp / 2
T(0, j) = T(1, j)
Next j
If Int(Deltat_Burn / Deltat_i) > iC Then
Cells(iLine, 1) = Deltat_Burn / 60
Cells(iLine, 2) = TForno
For i = 0 To NroDivEsp / 2
Cells(iLine, i + 3) = T(1, i)
Next i
Cells(iLine, NroDivEsp / 2 + 4) = TMediaPlaca
Cells(iLine, NroDivEsp / 2 + 5) = DeltaT_SupNucl
iLine = iLine + 1
iC = iC + 1
End If
Loop
Range("A3").Select
End Sub

'
' Lagrange Interpolation Function.
'

Function Lagrange(x() As Single, y() As Single, z As Single, n As Integer) As Single
Dim i, j As Integer
Dim c1, m, s As Single
Dim X1(10), Y1(10) As Single
i = 0
If z >= x(n) Then Lagrange = y(n): Exit Function
While z > x(i)
i = i + 1
Wend
If i < 2 Then
For j = 0 To 3
X1(j) = x(j): Y1(j) = y(j)
Next
Else
If i > n - 1 Then
c1 = n - 2
For j = -1 To 2
X1(j + 1) = x(c1 + j): Y1(j + 1) = y(c1 + j)
Next
Else
c1 = i - 1
For j = -1 To 2
X1(j + 1) = x(c1 + j): Y1(j + 1) = y(c1 + j)
Next
End If
End If
s = 0
For i = 0 To 3
m = 1
For j = 0 To 3
If j <> i Then m = m * (z - X1(j)) / (X1(i) - X1(j))
Next j
s = s + m * Y1(i)
Next i
Lagrange = s
End Function

***** End of Program Listing ******


Return to the Software Menu.

Last Update: 31 March 2004
© Antonio Augusto Gorni