Advertisement
Graf_Rav

mpi fuck dick penis

Jan 19th, 2021
2,073
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.31 KB | None | 0 0
  1. uses crt;
  2. const mf=102;
  3. type
  4.  vector1=array[1..mf] of real;
  5.  vector2=array[1..mf,1..mf] of real;
  6. var {раздел описания переменных, которые мы будем использовать в
  7. программе}
  8.  i, j, Nx, Ny : integer;
  9.  T : vector2;
  10.  alfa, beta : vector1;
  11.  ai, bi, ci, fi : real;
  12.  a, lamda, ro, c : real;
  13.  hx, hy, tau, t_end, time : real;
  14.  T0, L, H, Th, Tc : real;
  15.  f, g : text;
  16. begin
  17.  clrscr;
  18. {с клавиатуры вводим все необходимые входные параметры}
  19.  Writeln('Введите количество пространственных узлов в пластине по оси х, Nx');
  20.  Readln(Nx);
  21.  Writeln('Введите количество пространственных узлов в пластине по оси y, Ny');
  22.  Readln(Ny);
  23.  Writeln('Введите окончание по времени, t_end');
  24.  Readln(t_end);
  25.  Writeln('Введите длину пластины, L');
  26.  Readln(L);
  27.  Writeln('Введите толщину пластины, H');
  28.  Readln(H);
  29.  Writeln('Введите коэффициент теплопроводности материала пластины, lamda');
  30.  Readln(lamda);
  31.  Writeln('Введите плотность материала пластины, ro');
  32.  Readln(ro);
  33.  Writeln('Введите теплоемкость материала пластины, c');
  34.  Readln(c);
  35.  Writeln('Введите температуру на границе х = 0 области решения, Th');
  36.  Readln(Th);
  37.  Writeln('Введите температуру на границе х = L области решения, Tc');
  38.  Readln(Tc);
  39.  Writeln('Введите начальную температуру, T0');
  40.  Readln(T0);
  41. {определяем расчетные шаги сетки по пространственным координатам}
  42.  hx:=L/(Nx-1);
  43.  hy:=H/(Ny-1);
  44. {определяем коэффициент температуропроводности}
  45.  a:=lamda/(ro*c);
  46. {определяем расчетный шаг сетки по времени}
  47.  tau:=t_end/100.0;
  48. {определяем поле температуры в начальный момент времени}
  49.  for i:= 1 to Nx do
  50.  for j:= 1 to Ny do
  51.  T[i,j]:=T0;
  52. {проводим интегрирование нестационарного уравнения
  53. теплопроводности}
  54. time:=0;
  55. while time<t_end do {используем цикл с предусловием}
  56. begin
  57.     {увеличиваем переменную времени на шаг τ}
  58.     time:=time+tau;
  59.     {решаем СЛАУ в направлении оси Ох для определения поля температуры на промежуточном временном слое}
  60.     for j:=1 to Ny do
  61.     begin
  62.         {определяем начальные прогоночные коэффициенты на основе левого граничного условия}
  63.          alfa[1]:=0.0;
  64.          beta[1]:=Th;
  65.         {цикл с параметром для определения прогоночных коэффициентов по формуле (8)}
  66.          for i:= 2 to Nx-1 do
  67.          begin
  68.             {ai, bi, ci, fi – коэффициенты канонического представления СЛАУ с трехдиагональной матрицей}
  69.              ai:=lamda/sqr(hx);
  70.              bi:=2.0*lamda/sqr(hx)+ro*c/tau;
  71.              ci:=lamda/sqr(hx);
  72.              fi:=-ro*c*T[i,j]/tau;
  73.             {alfa[i], beta[i] – прогоночные коэффициенты}
  74.              alfa[i]:=ai/(bi-ci*alfa[i-1]);
  75.              beta[i]:=(ci*beta[i-1]-fi)/(bi-ci*alfa[i-1]);
  76.          end;
  77.         {определяем значение температуры на правой границе на основе правого граничного условия}
  78.          T[Nx,j]:=Tc;
  79.         {используя соотношение (7) определяем неизвестное поле температуры на промежуточном временном слое}
  80.          for i:= Nx-1 downto 1 do
  81.             T[i,j]:=alfa[i]*T[i+1,j]+beta[i];
  82.     end;
  83.     решаем СЛАУ в направлении оси Оу для определения поля температуры на целом временном слое}
  84.     for i:=2 to Nx-1 do
  85.     begin
  86.         {определяем начальные прогоночные коэффициенты на основе нижнего граничного условия, используя соотношения (20) при условии, что q1 = 0}
  87.          alfa[1]:=2.0*a*tau/(2.0*a*tau+sqr(hy));
  88.          beta[1]:=sqr(hy)*T[i,1]/(2.0*a*tau+sqr(hy));
  89.         {цикл с параметром для определения прогоночных коэффициентов по формуле (8)}
  90.          for j:= 2 to Ny-1 do
  91.          begin
  92.             {ai, bi, ci, fi – коэффициенты канонического представления СЛАУ с трехдиагональной матрицей}
  93.              ai:=lamda/sqr(hy);
  94.              bi:=2.0*lamda/sqr(hy)+ro*c/tau;
  95.              ci:=lamda/sqr(hy);
  96.              fi:=-ro*c*T[i,j]/tau;
  97.             {alfa[j], beta[j] – прогоночные коэффициенты}
  98.              alfa[j]:=ai/(bi-ci*alfa[j-1]);
  99.              beta[j]:=(ci*beta[j-1]-fi)/(bi-ci*alfa[j-1]);
  100.          end;
  101.         {определяем значение температуры на верхней границе, используя соотношение (21) при условии, что q2 = 0}
  102.          T[i,Ny]:=(2.0*a*tau*beta[Ny-1]+sqr(hy)*T[i,Ny])/(2.0*a*tau
  103.          *(1.0-alfa[Ny-1])+sqr(hy));
  104.          {используя соотношение (7) определяем неизвестное поле температуры на промежуточном временном слое}
  105.          for j:= Ny-1 downto 1 do
  106.             T[i,j]:=alfa[j]*T[i,j+1]+beta[j];
  107.     end;
  108. end; {цикл с предусловием окончен}
  109. {выводим результат в файл}
  110. Assign(f,'res.txt');
  111. Rewrite(f);
  112. Writeln(f,'Длина пластины L = ',L:6:4);
  113. Writeln(f,'Толщина пластины H = ',H:6:4);
  114. Writeln(f,'Число узлов по пространственной координате x в пластине Nx = ',Nx);
  115. Writeln(f,'Число узлов по пространственной координате y в пластине Ny = ',Ny);
  116. Writeln(f,'Коэффициент теплопроводности материала пластины lamda =',lamda:6:4);
  117. Writeln(f,'Плотность материала пластины ro = ',ro:6:4);
  118. Writeln(f,'Теплоемкость материала пластины с = ',c:6:4);
  119. Writeln(f,'Начальная температура T0 = ',T0:6:4);
  120. Writeln(f,'Температура на границе x = 0 области решения Th = ',Th:6:4);
  121. Writeln(f,'Температура на границе x = L области решения Tc = ',Tc:6:4);
  122. Writeln(f,'Результат получен с шагом по координате x hx = ',hx:6:4);
  123. Writeln(f,'Результат получен с шагом по координате y hy = ',hy:6:4);
  124. Writeln(f,'Результат получен с шагом по времени tau = ',tau:6:4);
  125. Writeln(f,'Температурное поле в момент времени t = ',t_end:6:4);
  126. close(f);
  127. Assign(g,'tempr.txt');
  128. Rewrite(g);
  129. for i:=1 to Nx do
  130. for j:=1 to Ny do
  131. writeln(g,' ',hx*(i-1):10:8,' ',hy*(j-1):10:8,' ',T[i,j]:8:5);
  132. close(g);
  133. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement