Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 1
1

Решение явной четырехточечной схемой методом конечных разностей

07.06.2017, 01:13. Показов 714. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, пытаюсь решить задачу с курсовой на паскале ,методом явной четырехточечной схемы. Суть задачи состоит в определении давления при кипении.
- постановка задачи



Pascal
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
//uses crt;
const
  mf = 500;
 
type
  vector = array[0..mf] of real;
 
var{раздел описания переменных, которые мы будем использовать в
  программе}
  i, N: integer;
  T, TT, ro, roro, u, uu, P, PP: vector;
  h, tau, beta, lambda: real;
  T1, T0, Tr, ro1, ro0, ror, u1, u0, ur, P1, Pr, L, t_end, time, c, a, q, P0, k, Tz, Ty: real;
  f, g: text;
 
begin
  //clrscr;
  
  L := 0.05;
  
  {с клавиатуры вводим все необходимые входные параметры}
  Writeln('Введите количество узлов по пространственной координате,N');
  //N := 10;
  Readln(N);
  //Writeln('Введите окончание по времени, t_end');
  //Readln(t_end); 
  t_end := 480;
  
  Writeln('Производим расчет');
  
  
  
  {определяем расчетный шаг сетки по пространственной координате}
  h := L / (N - 1); 
  
  {начальная скорость}
  u1 := 0.0;
  {"нулевая" температура}
  T0 := 293.15;
  //T0:=20;
  {ро первая}
  ro1 := 998.23;
  {тепловой поток}
  q := -10000;
  {коэффициент объемного расширения}
  beta := 1.82 / 10000;
  {теплоемкость}
  c := 4200;
  {плотность нулевая}
  ro0 := 998.23;
  {теплопроводность}
  lambda := 0.599;
  {давление первое}
  P1 := 0.0;
  {скорость первая}
  u1 := 0.0;
  {скорость на границе}
  ur := 0.0;
  {давление на границе}
  Pr := 0.0;
  {плотность на границе}
  ror := 998.23;
  {первое значение температуры после отчета времени и начала шага}
  T1 := (q * h - T0) * -1;
  Tr := T0;
  {значения давления на глубине}
  
  
  {определяем коэффициент температуропроводности}
  a := lambda / (ror * c);
  {определяем расчетный шаг сетки по времени, руководствуясь
  условием устойчивости}
  //tau := ((ro0 * c * sqr(h)) /( 2 * lambda))*0.25;
  tau:=0.001;
  Writeln('цикл 1');
  
  ro[0] := ro1;
  T[0] := T1;
  u[0] := u1;
  P[0] := ro1 * 9.8 * (L - h);
  {определяем поле температуры в начальный момент времени}
  for i := 1 to N - 2 do
  begin
    T[i] := T0;
    ro[i] := ro0;
    u[i] := u0;
    P[i] := ro0 * 9.81 * (L - (h * i));
    //  print(P[i])
  end;
  {определяем значения температуры на границе}
  
  T[N - 1] := Tr;
  ro[N - 1] := ror;
  u[N - 1] := u0;
  P[N - 1] := 0;
  
  {задаем коэффициент k}
  k := 2193361.0;
  
  {проводим интегрирование слау}
  time := 0;
  
  Assign(g, 'E:\kursovaya\pressure.txt'); 
  Rewrite(g);
  writeln(g, 'Distance'#9'temperature'#9'pressure'#9'density'#9'speed'#9'time');
  
  while time < t_end do {используем цикл с предусловием}
  begin
    time := time + tau;
    {запоминаем поле температуры на предыдущем слое по времени}
    Writeln('цикл 2');
    Writeln('Time:' + time);
    Writeln('цикл расчета');
    for i := 0 to N - 1 do
    begin
      if i = 0 then
      begin
        TT[i] := T[i];
        TT[0] := (q * h - T[1]) * -1;
        P[0]:=P[1];
      end
      else
        TT[i] := T[i];
          TT[0] := (q * h - T[1]) * -1;
      uu[i] := u[i];
      roro[i] := ro[i];
    end;   
    
    
    
    for i := 1 to N - 2 do
    begin
     if time>= 2*tau then
      begin
     
      PP[i] := (roro[i] - ro0 * (1.0 - beta * (TT[i] - T0))) * k;
       WriteLn(PP[i]);
       end;
      u[i] := ((-1 / roro[i]) * ((P[i + 1] - P[i]) / h) - uu[i] * ((uu[i + 1] - uu[i]) / h)) * tau + uu[i];
      ro[i] := -(roro[i + 1] * uu[i + 1] - roro[i] * uu[i]) / h * tau + roro[i];
      Tz := (TT[i + 1] - 2.0 * TT[i] + TT[i - 1]) / sqr(h);
      Ty := (TT[i + 1] - TT[i]) / h;
      T[i] := (a * Tz - uu[i] * Ty) * tau + TT[i];
      if i=N-2 then 
      begin
      a:=lambda/ro[i]*c;
      end;
       end;
 
    
    
     
    writeln(g, (h * i):6:3, #9, T[i]:6:3, #9, PP[i]:6:3, #9, ro[i]:6:3, #9, u[i]:6:3, #9, time:6:3);
  end;
  close(g);
end.
При этом на первый шаг давления выбираются из уравнения ro*g*h. Каким образом подобрать давления на второй шаг неясно, но это вопрос к математике задачи. Пока я пытался просчитать с константными давлениями по началу все итерации. Непонятно, почему уже на втором шаге и далее получаются чудовищные значения температур,скоростей и плотностей. В то время, как условие сходимости выполняется.

Кто может подсказать или дать пример , где решается именно такая система уравнений и что не так в коде?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2017, 01:13
Ответы с готовыми решениями:

Решение задач методом конечных разностей
Всем здравствуйте. Прошу помочь разобраться с задачей, может есть у кого похожие примеры хотя бы?...

Решение задачи методом конечных разностей
Доброе время суток, прошу помочь решить задачку методом конечных разностей в маткад, или хотя бы...

Решение уравнения теплопроводности методом конечных разностей
Всем доброго времени суток! Подскажите, пожалуйста, каким образом корректно задавать краевые и...

Решение уравнения теплопроводности методом конечных разностей
Всем доброго время суток. Подскажите пожалуйста: составил программу для вычисления одномерного...

3
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
07.06.2017, 05:25 2
Ещё бы знать математические выкладки!

Не по теме:

Я, где-то больше десяти лет назад, напрочь забыл, как решается квадратное уравнение через дискриминант…
(Нужно было помочь ребёнку по домашке ;–)

А вы, caffelatte, тут нам про какие-то „явные четырёхточечные схемы“…
Да я и не знал про таковые до сегодняшнего дня!

0
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
07.06.2017, 08:22 3
JuriiMW, Если честно, то как-то не радует то,что это не знали =)...
0
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
07.06.2017, 08:57 4
Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
как-то не радует то,что это не знали
Это к чему?
К решению квадратных или к явным четырёхклеточным?

Не по теме:

Я вот вам расскажу анекдот (да простят меня модераторы):

Встречаются как-то главный инженер завода и его бывший преподаватель высшей математики из ВУЗа.
Разговорились.
И в процессе разговора преподаватель спрашивает:
— А скажите мне, батенька, пригодились ли вам в жизни знания моего предмета?
Инженер задумался и говорит:
— Да. Был такой случай…
— Ну-ну! Скорее расскажите. Я его буду в качестве примера рассказывать своим студентам.
— Однажды в очень ветреную погоду у меня с головы шляпу сдуло прямо в лужу. Вот я отыскал кусок проволоки. Изогнул его в виде интеграла и вытащил шляпу!

Вот такие вот дела ;–)

0
07.06.2017, 08:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2017, 08:57
Помогаю со студенческими работами здесь

Решение двухточечных краевых задач методом конечных разностей
x2*y''-12y=0 ; x на отрезке , у(1)=1;у(2)=16. Точное решение у(х)=х4; Шаг h=0.2 Получил исходное...

Решение неоднородного уравнения теплопроводности методом конечных разностей
Дано дифференциальное уравнение вида p(x)u''(x)+q(x)u'(x)+r(x)u(x)=f(x) определенное на интервале...

Методом конечных разностей найти решение краевой задачи
Методом конечных разностей найти решение краевой задачи y''-7*x*y'-y=5*x^2 u(0)-u'(0)=0; u(1)=1...

решение уравнения параболического типа методом конечных разностей
Помогите дорешать лабораторную работу, не могу найти граничные условия (разностная схема может тоже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru