include stdio include iostream const double 10657 const double 0002 co

  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
 95
 96
 97
 98
 99
100
101
102
103
104
105
#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 М = 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 с = 717.0; // удельная теплоемкоть
const double = 1127.0; // плотность
const double C = с*; // объемная теплоемкость
const int dt = 2; // шаг дескритизации в секундах ( дельта t )
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;
}
int main(int argc, char *argv[])
{
int tn = 0; // начальное время в секундах
int tk; // конечное время в секундах
double h1 = 0.001;
double h2 = 0.001;
int T0 = 20; // начальное значение температуры
for (int i = 1; i <= N1 - 1; i++)
for (int j = 1; i < 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 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]);
}
return 0;
}