Recalling yesterday’s initial heat balance equation for each node:

it should be noted that the values of both the specific heat and the thermal conductivity of steel are themselves functions of temperature. That means that these values need to be calculated for every node, every time a temperature matrix is loaded and solved. Finding those values means interpolating from a table of values as a function of temperature (English units). The values of the other constants are shown as well.

The values for view factors are affected by shadowing caused by the structures the workpieces are sitting on (typically beams, a solid hearth, or rollers) and the workpieces each piece is sitting beside, if there is a gap between them. The values for the bottom and side views assume a solid hearth and notional effects of shading from neighboring pieces. I have written systems that considered a changing configuration of support structure over the length of a furnace and variable-width gaps between workpieces.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
var coeffEfurnace = 0.90; var coeffEsteel = 0.79; var coeffKRad = 0.1713E-8 / (3600.0 * 144.0); var coeffRad = coeffEfurnace * coeffEsteel * coeffKRad; var coeffRho = 0.2835; var Tabs = 459.67; var coeffCp = new Array; var coeffK = new Array; for (var i=0; i<12; i++) { coeffCp[i] = new Array; coeffK[i] = new Array; for (var j=0; j<2; j++) { coeffCp[i][j] = 0.0; coeffK[i][j] = 0.0; } } function initCurveFits() { coeffCp[ 0][0] = 10; coeffCp[ 0][1] = 9; coeffCp[ 1][0] = 212.0; coeffCp[ 1][1] = 0.118; coeffCp[ 2][0] = 572.0; coeffCp[ 2][1] = 0.132; coeffCp[ 3][0] = 932.0; coeffCp[ 3][1] = 0.157; coeffCp[ 4][0] = 1292.0; coeffCp[ 4][1] = 0.200; coeffCp[ 5][0] = 1312.0; coeffCp[ 5][1] = 0.721917; coeffCp[ 6][0] = 1362.0; coeffCp[ 6][1] = 0.721917; coeffCp[ 7][0] = 1382.0; coeffCp[ 7][1] = 0.137; coeffCp[ 8][0] = 1652.0; coeffCp[ 8][1] = 0.137; coeffCp[ 9][0] = 2002.0; coeffCp[ 9][1] = 0.130; coeffK[ 0][0] = 12; coeffK[ 0][1] = 11; coeffK[ 1][0] = 40.0; coeffK[ 1][1] = 0.000625; coeffK[ 2][0] = 212.0; coeffK[ 2][1] = 0.000621; coeffK[ 3][0] = 572.0; coeffK[ 3][1] = 0.000565; coeffK[ 4][0] = 932.0; coeffK[ 4][1] = 0.000475; coeffK[ 5][0] = 1292.0; coeffK[ 5][1] = 0.000386; coeffK[ 6][0] = 1312.0; coeffK[ 6][1] = 0.000386; coeffK[ 7][0] = 1362.0; coeffK[ 7][1] = 0.000380; coeffK[ 8][0] = 1382.0; coeffK[ 8][1] = 0.000379; coeffK[ 9][0] = 1652.0; coeffK[ 9][1] = 0.000358; coeffK[10][0] = 2002.0; coeffK[10][1] = 0.000386; coeffK[11][0] = 2600.0; coeffK[11][1] = 0.000394; } //initCurveFits initCurveFits(); function findCpofT(T) { var a; var max; var result; a = 1; //curve fit data start element 1 max = Math.floor(coeffCp[0][0] + 0.5); //1st element says how may fit elements while ((T > coeffCp[a][0]) && (a <= max)) { //find spot in table a++; } if (a == 1) { //less than first independent value result = coeffCp[1][1]; //Cp gets lowest dependent } else if (a > max) { result = coeffCp[max][1]; //more than highest independent value } else { //Cp gets highest dependent //independent variable ALWAYS INCREASES between steps result = (T - coeffCp[a-1][0])/ //interpolate on independent (coeffCp[a][0] - coeffCp[a-1][0]); result = result * (coeffCp[a][1] - coeffCp[a-1][1]) + coeffCp[a-1][1]; //interpolate on dependent + dep. base } return result; //set Cp } //findCpofT function findKofT(T) { var a; var max; var result; a = 1; //curve fit data start at index 1 max = Math.floor(coeffK[0][0] + 0.5); //1st element says how may fit elements while ((T > coeffK[a][0]) && (a <= max)) { //find spot in table a++; } if (a == 1) { //less than first independent value result = coeffK[1][1]; //K gets lowest dependent } else if (a > max) { result = coeffK[max][1]; //more than highest independent value } else { //K gets highest dependent //independent variable ALWAYS INCREASES between steps result = (T - coeffK[a-1][0])/ //interpolate on independent (coeffK[a][0] - coeffK[a-1][0]); result = result * (coeffK[a][1] - coeffK[a-1][1]) + coeffK[a-1][1]; //interpolate on dependent + dep. base } return result; //set K } //findKofT |