Программа расчёта нагрева рубашки плазмотрона
Расчёт температур и скорости выхода на стационарный режим плазмотрона.
Программа для курсового проекта по специальности "Электротехнологии".
Контакт с автором
#include <iostream>
#include <iomanip>
#include <vector>
int main()
{ const unsigned int LayersNumber=10;
std::vector <float> v(LayersNumber); // Массив представляющий слои стенки
const unsigned int TimeAccuracy=1000000;
float S=.010, // Толщина
T0=20, T1=20, a1=4e4, T2=3000, a2=1.5e3, TimeEnd=3;
float HeatCapacity=3.44e4; // Объёмная теплоёмкость - проверить!
float LayerHC=HeatCapacity*S/LayersNumber; // Теплоёмкость слоя
float TermalConduction=401;
float TCL=TermalConduction/S*LayersNumber; // Теплопроводность слоя
float TimeStep=TimeEnd/TimeAccuracy;
for (int i=0; i<LayersNumber; ++i) // Инициализация слоёв
{ v[i]=T0+(T1-T0)/LayersNumber*(i+.5); // Линейное распределение температуры
std::cout << v[i] << " ";
}
std::cout << std::endl << "===========================" << std::endl;
for (int t=0, f=1; t<TimeAccuracy; ++t) // Интегрирование теплоты по времени
{ for (int i=0; i<LayersNumber; ++i) // Проход по слоям
{ float Plus, //Теплота поступающая от предыдущего слоя
Minus; //Теплота отдаваемая следующему слою
if (i==0) Plus=a2*(T2-v[i]);
else Plus=TCL*(v[i-1]-v[i]);
if (i<LayersNumber-1) Minus=TCL*(v[i]-v[i+1]);
else Minus=a1*(v[i]-T1);
v[i]+=(Plus-Minus)*TimeStep/LayerHC;
// Корректировка грубого расчёта температуры нагрева
// при большом шаге интегрирования по времени:
if (i==0) if (v[i]>T2) v[i]=T2;
else ;
else if (v[i]>v[i-1]) v[i]=v[i-1];
else ;
}
//if (t%(TimeAccuracy/10)==0) { for (int i=0; i<LayersNumber; ++i) std::cout << v[i] << " "; std::cout << std::endl; }
if (t==f*10) f=t; // Изменение счётчика для увеличения периода вывода промежуточных расчётов
if (t%f==0) // Промежуточный Вывод температуры слоя
{ std::cout << "/" << TimeEnd/TimeAccuracy*(t+1) << "/ ";
for (int i=0; i<LayersNumber; ++i) std::cout << v[i] << " ";
std::cout << std::endl;
}
}
std::cout << "===========================" << std::endl;
for (int i=0; i<LayersNumber; ++i) // Вывод температуры
{ //v[i]=T0+(T1-T0)/LayersNumber*(i+.5); // Линейное распределение температуры
std::cout << v[i] << " ";
}
std::cout << std::endl << "===========================" << std::endl;
//Оценочные проверки мощности и возможного нагрева, стационар
std::cout << "Входной, проходной и выходной потоки " << (T2-(v[0]+(v[0]-v[1])/2))*a2 <<
" " << (v[0]-v[LayersNumber-1])*TermalConduction/(S*(LayersNumber-1)/LayersNumber) <<
" " << (v[LayersNumber-1]-(v[LayersNumber-2]-v[LayersNumber-1])/2-T1)*a1 << std::endl;
float A,B,C,D,E,x,y;
A=T2;
B=a2;
C=TermalConduction/S;
D=a1;
E=T1;
x=(A*B*(D+C)+C*E*D)/((B+C)*(D+C)-C*C);
y=(E*D+C*x)/(D+C);
std::cout << "Температуры поверхностей " << x << " " << y << std::endl;
std::cout << "Балланс " << (T2-x)*a2 << " " << (x-y)*TermalConduction/S << " " << (y-T1)*a1 << std::endl;
}
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию