Exemplo n.º 1
0
        private Double GetHeatCapacityBySteelType(Double temp, SteelTypeProperty steelType)
        {
            if (steelType == SteelTypeProperty.HighCarbon || steelType == SteelTypeProperty.MiddleCarbon || steelType == SteelTypeProperty.LowCarbon)
            {
                return(temp < 800 ? (0.2679 * temp + 444.71) : (-0.0286 * temp + 719));
            }
            else if (steelType == SteelTypeProperty.Stainless)
            {
                return(-0.0002 * Math.Pow(temp, 2) + 0.4275 * temp + 405.57);
            }
            else if (steelType == SteelTypeProperty.Heatproof)
            {
                return(0.0808 * temp + 500.19);
            }

            return(Double.NaN);
        }
Exemplo n.º 2
0
        private Double GetThermalConductivityBySteelType(Double temp, SteelTypeProperty steelType)
        {
            switch (steelType)
            {
            case SteelTypeProperty.LowCarbon: return(268.55 * Math.Pow((temp), -0.315));

            case SteelTypeProperty.MiddleCarbon: return(0.00000005 * Math.Pow(temp, 3) - 0.00007 * Math.Pow(temp, 2) + 0.0036 * temp + 49.748);

            case SteelTypeProperty.HighCarbon: return(0.00003 * Math.Pow(temp, 2) - 0.0578 * temp + 54.196);

            case SteelTypeProperty.Stainless: return(0.000000008 * Math.Pow(temp, 3) - 0.000009 * Math.Pow(temp, 2) - 0.0007 * temp + 28.189);

            case SteelTypeProperty.Heatproof: return(0.0161 * temp + 13.269);

            default: return(Double.NaN);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Вычисляет продолжительность выдержки в сечении 3
        /// </summary>
        /// <param name="t3m">Температура массы заготовки в сечении 3</param>
        /// <param name="t2m">Температура массы заготовки в сечении 2</param>
        /// <param name="t3pv">Температура верхней поверхности заготовки в сечении 3</param>
        /// <param name="t3pn">Температура нижней поверхности заготовки в сечении 3</param>
        /// <param name="t2p">Температура поверхности заготовки в сечении 2</param>
        /// <param name="t2c">Минимальная температура заготовки перед заходом на сплошной под (в сечении 2)</param>
        /// <param name="S">Толщина заготовки</param>
        /// <param name="steelType">Тип стали: 0 - литая кипящая, 1 - литая спокойная, 2 - кованая или прокатанная</param>
        /// <returns></returns>
        public Double GetTimeForZone3(Double t3m, Double t2m, Double t3pv, Double t3pn, Double t2p, Double t2c, Double S, SteelTypeForDensity steelType, SteelTypeProperty steel)
        {
            //ПОКА ТОЛЬКО МАЛОУГЛЕРОДИСТАЯ СТАЛЬ
            //Средняя теплоемкость заготовки
            Double Cm3 = GetHeatCapacityBySteelType(t3m, steel);
            Double Cm2 = GetHeatCapacityBySteelType(t2m, steel);
            Double Cm  = (Cm3 * t3m - Cm2 * t2m) / (t3m - t2m);
            //Средняя теплопроводность заготовки
            Double lambda = (GetThermalConductivityBySteelType(t3m - 100, steel) + GetThermalConductivityBySteelType(t2m - 100, steel)) / 2;
            //Средняя температуропроводность
            Int32 p;

            switch (steelType)
            {
            case SteelTypeForDensity.CastBoiling: p = 6600; break;

            case SteelTypeForDensity.CastQuiet: p = 7600; break;

            case SteelTypeForDensity.ForgedLaminated: p = 7850; break;

            default: throw new InvalidOperationException("Неверно задан тип стали");
            }
            Double Am = lambda / Cm / p;
            //Прогреваемая сверху толщина заготовки
            Double Sv = (-0.92 * 0.5 + 1.052) * S;
            Double Sn = S - Sv;

            return((Math.Pow(S, 2) / 2.467 / Am) * Math.Log(1.621 * (Math.Pow(S / Sv, 2) * 0.637 - S * Sn / Math.Pow(Sv, 2)) * ((t2p - t2c) / (t3pv - t3pn))));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Вычисляет время нагрева заготовки в зоне 2
        /// </summary>
        /// <param name="S">Высота заготовки</param>
        /// <param name="t1">Температура заготовки в сечении 1</param>
        /// <param name="t2">Температура заготовки в сечении 2</param>
        /// <param name="q">Средний тепловой поток в зоне 2</param>
        /// <param name="steelType">Тип стали: 0 - литая кипящая, 1 - литая спокойная, 2 - кованая или прокатанная</param>
        /// <returns></returns>
        public Double GetHeatingTimeinZone2(Double S, Double t1, Double t2, Double q, SteelTypeForDensity steelType, SteelTypeProperty steel)
        {
            //Верхняя прогреваемая толщина заготовки
            Double Sv  = (-0.92 * 0.5 + 1.052) * S; //0.5 - тепловая мощность низа печи
            Double Cm2 = GetHeatCapacityBySteelType(t2, steel);
            Double Cm1 = GetHeatCapacityBySteelType(t1, steel);
            Double Cm  = (Cm2 * t2 - Cm1 * t1) / (t2 - t1);
            //Плотность нагреваемой стали
            Double p;

            switch (steelType)
            {
            case SteelTypeForDensity.CastBoiling: p = 6600; break;

            case SteelTypeForDensity.CastQuiet: p = 7600; break;

            case SteelTypeForDensity.ForgedLaminated: p = 7850; break;

            default: throw new InvalidOperationException("Неверно задан тип стали");
            }
            return(Sv * Cm * p * (t2 - t1) / q);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Вычисляет температуру массы верхней части заготовки в сечении 1
        /// </summary>
        /// <param name="S">Высота заготовки</param>
        /// <param name="surfaceT">Температуры верхней поверхности заготовки</param>
        /// <param name="qm">Суммарный тепловой поток в сечении 1</param>
        /// <returns></returns>
        public Double GetMetalTemperatureInSection1(Double S, Double surfaceT, Double qm, SteelTypeProperty steeltype)
        {
            //Верхняя прогреваемая толщина заготовки
            //Double Sv = (-0.92 * 0.5 + 1.052) * S; //0.5 - тепловая мощность низа печи
            ////Минимальная температура перед его заходом на сплошной под
            //Double tc = surfaceT - ((qm * Sv) / (2 * (268.55 * Math.Pow((surfaceT - 75), -0.315))));
            Double tc = GetMinimumMetalTemperatureInSection2(S, surfaceT, qm, steeltype);

            return(surfaceT - 2 * (surfaceT - tc) / 3);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Вычисляет минимальную температуру заготовки перед заходом на сплошной под (в сечении 2)
        /// </summary>
        /// <param name="S">Высота заготовки</param>
        /// <param name="surfaceT">Температура верхней поверхности заготовки</param>
        /// <param name="qm">Суммарный тепловой поток в сечении 2</param>
        /// <returns></returns>
        public Double GetMinimumMetalTemperatureInSection2(Double S, Double surfaceT, Double qm, SteelTypeProperty steelType)
        {
            //Верхняя прогреваемая толщина заготовки
            Double Sv = (-0.92 * 0.5 + 1.052) * S; //0.5 - тепловая мощность низа печи

            return(surfaceT - ((qm * Sv) / (2 * (GetThermalConductivityBySteelType(surfaceT - 75, steelType)))));
        }