REM *** Detta program beräknar temperatur i bädd och temperatur i gasen REM *** med avseende pĺ höjd och tiden i varje zoon DEFDBL A-Z DECLARE FUNCTION TL (h, T, TGasIN, tbedin) DECLARE FUNCTION TB (h, T, TGasIN, tbedin) COMMON SHARED k1, k3, pi CLS pi = 4 * ATN(1) vmgas = 1.5 * 280 / (17.5 * 3.5 * 3 * 1.0000003831#) alpha = 7.2 * vmgas ^ .79 * 20 ^ .16 rk = .005 Ak = rk ^ 2 * pi * 4 Vk = rk ^ 3 * pi * 4 / 3 k1 = alpha * Ak / (450 * Vk * 7850) k3 = alpha * Ak / (Vk * vmgas * 1000) REM PRINT k1, k3: END N = 400 bh = 300 DeltaT = 150 TinL = 20 TbIN = 20 DIM Tbed(N - 1), Tbederr(N - 1), TGas(N) Tbedmax = 500 INPUT "Temperatur vid slutet av firing :", Tbedmax INPUT "B„dd tjocklek (mm) :", bh INPUT "Tid ”ver en zoon :", DeltaT bh = bh / 1000 lap = DeltaT / 25 FOR i = 0 TO N - 1 Tbed(i) = Tbedmax - (Tbedmax - TinL) / N * i NEXT i REM ************************************************************************* WHILE (ABS(Tbed(N - 1) - Tbederr(N - 1)) > .001) varv = varv + 1 LOCATE (5), (1) PRINT "Iteration nr :"; varv PRINT PRINT "Bedtemp mellan slutet F och b”rjan av C1 Error" PRINT FOR i = 0 TO N - 1 STEP 25 LOCATE (9 + i / 25), (1) PRINT USING "#####.###"; Tbed(i) LOCATE (9 + i / 25), (50) PRINT USING "#####.###"; ABS(Tbed(i) - Tbederr(i)) NEXT FOR i = 0 TO N - 1 Tbederr(i) = Tbed(i) NEXT i REM *********** BERŽKNAR GASTEMP TILL UDD ************* TGas(N) = TinL FOR j = 0 TO DeltaT STEP lap FOR i = N - 1 TO 0 STEP -1 TGas(i) = TL(bh / N, (3 * DeltaT + j), TGas(i + 1), Tbed(i)) NEXT i TGas(0) = TL(bh / N, (3 * DeltaT + j), TGas(1), Tbed(0)) TGasUDD = TGasUDD + TGas(0) NEXT j TGasUDD = TGasUDD / (DeltaT / lap + 1) REM ************************************************************************* REM *********** BERŽKNAR GASTEMP TILL DDD ************* TGas(N) = TinL FOR j = 0 TO DeltaT STEP lap FOR i = N - 1 TO 0 STEP -1 TGas(i) = TL(bh / N, (2 * DeltaT + j), TGas(i + 1), Tbed(i)) NEXT i TGas(0) = TL(bh / N, (2 * DeltaT + j), TGas(1), Tbed(0)) TGasDDD = TGasDDD + TGas(0) NEXT j TGasDDD = TGasDDD / (DeltaT / lap + 1) REM ************************************************************************* REM *********** BERŽKNAR GASTEMP TILL PH ************* TGas(N) = TinL FOR j = 0 TO DeltaT STEP lap FOR i = N - 1 TO 0 STEP -1 TGas(i) = TL(bh / N, (DeltaT + j), TGas(i + 1), Tbed(i)) NEXT i TGas(0) = TL(bh / N, (DeltaT + j), TGas(1), Tbed(0)) TGasPH = TGasPH + TGas(0) NEXT j TGasPH = TGasPH / (DeltaT / lap + 1) REM ************************************************************************* REM *********** BERŽKNAR GASTEMP TILL F ************* TGas(N) = TinL FOR j = 0 TO DeltaT STEP lap FOR i = N - 1 TO 0 STEP -1 TGas(i) = TL(bh / N, j, TGas(i + 1), Tbed(i)) NEXT i TGas(0) = TL(bh / N, j, TGas(1), Tbed(0)) TGasF = TGasF + TGas(0) NEXT j TGasF = TGasF / (DeltaT / lap + 1) REM ************************************************************************* REM ************ Ber„knar UDD ************* FOR i = 0 TO N - 1 Tbed(N - i - 1) = TB(bh * i / N, DeltaT, TGasUDD, TbIN) NEXT REM ************************************************************************* REM ************ Ber„knar DDD ************* TGas(0) = TGasDDD FOR i = 1 TO N - 1 TGas(i) = TL(bh / N, DeltaT, TGas(i - 1), Tbed(i)) NEXT FOR i = 0 TO N - 1 Tbed(i) = TB(bh / N, DeltaT, TGas(i), Tbed(i)) NEXT REM ************************************************************************* REM ************ Ber„knar PH ************* TGas(0) = TGasPH FOR i = 1 TO N - 1 TGas(i) = TL(bh / N, DeltaT, TGas(i - 1), Tbed(i)) NEXT FOR i = 0 TO N - 1 Tbed(i) = TB(bh / N, DeltaT, TGas(i), Tbed(i)) NEXT REM ************************************************************************* REM ************ Ber„knar F ************* TGF = (Tbed(0) - (Tbedmax / EXP(-k1 * DeltaT))) / (1 - EXP(k1 * DeltaT)) TGas(0) = TGF FOR i = 1 TO N - 1 TGas(i) = TL(bh / N, DeltaT, TGas(i - 1), Tbed(i)) NEXT FOR i = 0 TO N - 1 Tbed(i) = TB(bh / N, DeltaT, TGas(i), Tbed(i)) NEXT REM ************************************************************************* WEND varv = varv + 1 LOCATE (5), (1) PRINT "Iteration nr :"; varv PRINT PRINT "Bedtemp mellan slutet F och b”rjan av C1 Error" PRINT FOR i = 0 TO N - 1 STEP 25 LOCATE (9 + i / 25), (1) PRINT USING "#####.###"; Tbed(i) LOCATE (9 + i / 25), (50) PRINT USING "#####.###"; ABS(Tbed(i) - Tbederr(i)) NEXT REM ************************************************************************* REM *************** Printar ut data till sk„rm ************ PRINT PRINT "Skriver datafil VBAL3.DAT och VBAL3.TXT" REM ************************************************************************* OPEN "vbal3.dat" FOR OUTPUT AS #1 REM ************ Ber„knar UDD ************* TGasUDDE = 0 FOR j = 0 TO DeltaT STEP lap FOR i = 0 TO N - 1 Tbed(N - i - 1) = TB(bh * i / N, j, TGasUDD, TbIN) NEXT i PRINT #1, j, Tbed(N - 1), Tbed(.8 * N - 1), Tbed(.6 * N - 1), Tbed(.4 * N - 1), Tbed(.2 * N - 1), Tbed(0) TGasUDDE = TGasUDDE + TL(bh, j, TGasUDD, TbIN) NEXT j TGasUDDE = TGasUDDE / (DeltaT / lap + 1) REM ************************************************************************* REM ************ Ber„knar DDD ************* TGas(0) = TGasDDD FOR j = lap TO DeltaT STEP lap FOR i = 1 TO N - 1 TGas(i) = TL(bh / N, lap, TGas(i - 1), Tbed(i)) NEXT i TGasDDDE = TGasDDDE + TGas(N - 1) FOR i = 0 TO N - 1 Tbed(i) = TB(bh / N, lap, TGas(i), Tbed(i)) NEXT i PRINT #1, DeltaT + j, Tbed(N - 1), Tbed(.8 * N - 1), Tbed(.6 * N - 1), Tbed(.4 * N - 1), Tbed(.2 * N - 1), Tbed(0) NEXT j TGasDDDE = TGasDDDE / (DeltaT / lap) REM ************************************************************************* REM ************ Ber„knar PH ************* TGas(0) = TGasPH FOR j = lap TO DeltaT STEP lap FOR i = 1 TO N - 1 TGas(i) = TL(bh / N, lap, TGas(i - 1), Tbed(i)) NEXT i TGasPHE = TGasPHE + TGas(N - 1) FOR i = 0 TO N - 1 Tbed(i) = TB(bh / N, lap, TGas(i), Tbed(i)) NEXT i PRINT #1, 2 * DeltaT + j, Tbed(N - 1), Tbed(.8 * N - 1), Tbed(.6 * N - 1), Tbed(.4 * N - 1), Tbed(.2 * N - 1), Tbed(0) NEXT j TGasPHE = TGasPHE / (DeltaT / lap) REM ************************************************************************* REM ************ Ber„knar F ************* TGas(0) = TGF FOR j = lap TO DeltaT STEP lap FOR i = 1 TO N - 1 TGas(i) = TL(bh / N, lap, TGas(i - 1), Tbed(i)) NEXT i TGasFE = TGasFE + TGas(N - 1) FOR i = 0 TO N - 1 Tbed(i) = TB(bh / N, lap, TGas(i), Tbed(i)) NEXT i PRINT #1, 3 * DeltaT + j, Tbed(N - 1), Tbed(.8 * N - 1), Tbed(.6 * N - 1), Tbed(.4 * N - 1), Tbed(.2 * N - 1), Tbed(0) NEXT j TGasFE = TGasFE / (DeltaT / lap) REM ************************************************************************* REM ************ Ber„knar COOLING *********** TBmedel = 0 TGas(N) = TinL FOR j = lap TO 4 * DeltaT STEP lap FOR i = N - 1 TO 0 STEP -1 TGas(i) = TL(bh / N, lap, TGas(i + 1), Tbed(i)) NEXT i TGas(0) = TL(bh / N, lap, TGas(1), Tbed(0)) FOR i = 0 TO N - 1 Tbed(i) = TB(bh / N, lap, TGas(i), Tbed(i)) IF j = 4 * DeltaT THEN TBmedel = TBmedel + Tbed(i) NEXT i PRINT #1, 4 * DeltaT + j, Tbed(N - 1), Tbed(.8 * N - 1), Tbed(.6 * N - 1), Tbed(.4 * N - 1), Tbed(.2 * N - 1), Tbed(0) NEXT j TBmedel = TBmedel / N CLOSE #1 REM ************************************************************************* OPEN "vbal3.txt" FOR OUTPUT AS #1 PRINT #1, "Max b„dd temp :"; Tbedmax PRINT #1, "B„dd h”jd (mm) :"; bh * 1000 PRINT #1, "Tid ”ver en zoon :"; DeltaT PRINT #1, PRINT #1, "Temp kylzoon 4 :"; CINT(TGasUDD) PRINT #1, "Temp kylzoon 3 :"; CINT(TGasDDD) PRINT #1, "Temp kylzoon 2 :"; CINT(TGasPH) PRINT #1, "Temp kylzoon 1 :"; CINT(TGasF) PRINT #1, PRINT #1, "Avgas temp F :"; CINT(TGF) PRINT #1, PRINT #1, "Temp efter UDD :"; CINT(TGasUDDE) PRINT #1, "Temp efter DDD :"; CINT(TGasDDDE) PRINT #1, "Temp efter PH :"; CINT(TGasPHE) PRINT #1, "Temp efter F :"; CINT(TGasFE) PRINT #1, PRINT #1, "Medeltemp utg b„dd :"; CINT(TBmedel) PRINT #1, "Medeltemp skorsten :"; CINT((TGasUDDE + TGasDDDE + TGasPHE + TGasFE) / 4) CLOSE #1 CLS PRINT "Max b„dd temp :"; Tbedmax PRINT "B„dd h”jd (mm) :"; bh * 1000 PRINT "Tid ”ver en zoon :"; DeltaT PRINT PRINT "Temp kylzoon 4 :"; CINT(TGasUDD) PRINT "Temp kylzoon 3 :"; CINT(TGasDDD) PRINT "Temp kylzoon 2 :"; CINT(TGasPH) PRINT "Temp kylzoon 1 :"; CINT(TGasF) PRINT PRINT "Avgas temp F :"; CINT(TGF) PRINT PRINT "Temp efter UDD :"; CINT(TGasUDDE) PRINT "Temp efter DDD :"; CINT(TGasDDDE) PRINT "Temp efter PH :"; CINT(TGasPHE) PRINT "Temp efter F :"; CINT(TGasFE) PRINT PRINT "Medeltemp utg b„dd :"; CINT(TBmedel) PRINT "Medeltemp skorsten :"; CINT((TGasUDDE + TGasDDDE + TGasPHE + TGasFE) / 4) FUNCTION TB (h, T, TGasIN, tbedin) merr = .00001 C1 = 1000 C11 = 0 C2 = 1000 C22 = 0 WHILE (ABS(C1 - C11) > merr AND ABS(C2 - C22) > merr) C11 = C1 C22 = C2 C1 = EXP(-k1 * T) * (tbedin - C2 + EXP(k1 * T) * C2) C2 = C1 - (C1 - TGasIN) * EXP(-k3 * h) WEND TB = C1 END FUNCTION FUNCTION TL (h, T, TGasIN, tbedin) merr = .00001 C1 = 1000 C11 = 0 C2 = 1000 C22 = 0 WHILE (ABS(C1 - C11) > merr AND ABS(C2 - C22) > merr) C11 = C1 C22 = C2 C1 = EXP(-k1 * T) * (tbedin - C2 + EXP(k1 * T) * C2) C2 = C1 - (C1 - TGasIN) * EXP(-k3 * h) WEND TL = C2 END FUNCTION