#include <stdio.h>
#include <iostream>
const double A = 0.10657; //
const double B = 0.0002; //
const int N1 = 100;
const int N2 = 30;
const int M = 3600;
double Tm[N1 + 1][N2 + 1]; // значения температуры в момент времени tm
double Tm1[N1 + 1][N2 + 1]; //значения температуры в момент времени tm+1
double Lm[N1 + 1][N2 + 1]; // массив значений функции (лямбда T) в момент времени tm
// размеры области G в метрах
const double L = 0.1;
const double H = 0.03;
const double c = 717.0; // удельная теплоемкоть
const double ro = 1127.0; // плотность
const double C = c*ro; // объемная теплоемкость
double lam(double T)
{
return (A* T - B / 2.0*T*T);
}
/*
* Мы будем считать это значение температуры равным 150 °С.
* Вообще говоря это значение может зависеть от времени,
* поэтому нужно будет оформить вычисление граничного значения температуры
*/
double Tgr()
{
double Tg = 150.0;
return Tg;
}
/*
* Мы будем считать тепловыделение равным нулю,
* но нужно оформить вычисление в виде подпрограммы
*/
double Q()
{
double q = 0.0;
return q;
}
const int dt = 2; // øàã äåñêðèòèçàöèè â ñåêóíäàõ ( äåëüòà t )
int main(int argc, char *argv[])
{
int tn = 0; // начальное время в секундах
int tk=90*60; // конечное время в секундах
double h1 = 0.001;
double h2 = 0.001;
int T0 = 20; // начальное значение температуры
for (int i = 1; i <= N1 - 1; i++)
for (int j = 1; j < N2 - 1; j++)
Tm[i][j] = T0;
// задаем граничные значения температуры
for (int j = 0; j <= N2; j++)
Tm[0][j] = Tgr();
for (int j = 0; j <= N2; j++)
Tm[N1][j] = Tgr();
for (int i = 0; i <= N1; i++)
Tm[i][0] = Tgr();
for (int i = 0; i <= N1; i++)
Tm[i][N2] = Tgr();
// задаем начальные значения для Lm
for (int i = 0; i <= N1; i++)
for (int j = 0; j <= N2; j++)
Lm[i][j] = lam(Tm[i][j]);
for (int m = 1; m*dt <= tk; m++)
{
for (int i = 1; i < N1; i++)
for (int j = 1; j < N2; j++)
{
Tm1[i][j] = Tm[i][j] + dt / C *(
(lam(Tm[i + 1][j]) - 2 * lam(Tm[i][j]) + lam(Tm[i - 1][j])) / (h1*h1) +
(lam(Tm[i][j + 1]) - 2 * lam(Tm[i][j]) + lam(Tm[i][j - 1])) / (h2*h2) +
Q()
);
}
for (int j = 0; j <=N2; j++)
{Tm1[0][j]= Tgr( );
Tm1[N1][j]= Tgr( );
}
for (int i = 1; i < N1; i++)
{Tm1[i][0]= Tgr( );
Tm1[i][N2]= Tgr( );
}
for (int i = 0; i <= N1; i++)
for (int j = 0; j <= N2; j++)
{
Tm[i][j] = Tm1[i][j];
Lm[i][j] = lam(Tm[i][j]);
}
}
FILE *fout;
fout =fopen("Температура.dat", "w");
for(int i=0;i<=N1;i++)
for(int j=0;j<=N2;j++)
fprintf(fout, "%.3f %.3f %.3f \n", h1*i, h2*j, Tm[i][j]);
fclose (fout);
return 0;
}