0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 6
1

Реализация метода характеристик (расчет волновых процессов в гидролиниях)

09.04.2016, 21:13. Показов 1312. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Подскажите, кто знает.
Составил код для расчета волновых процессов в гидролиниях (решаю задачу методом характеристик).
Если считать один цикл (без оператора while), то считает. При добавлении оператора while выдает пустое множество
Код программы ниже. Результат того, что примерно должно получиться, см. фото
Matlab M
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
clear all; clc;
diam = 50*10^-3;%input('Введите внутренний диаметр трубы, мм: ')/1000;
Area = (pi/4)*diam*diam;   %* [m2] *
q0 = 3/(1000*60);%input('Введите значение расхода, л/мин: ')/(1000*60);
v0 = q0/(Area);        % средняя скорость * [m/s] *
len = 800; %input('Введите длину трубы, м: ');
cel = 1000; %input('Введите скорость звуковой волны, м/с: ');
n = 1000; % Число узлов (number of computational sections)
ds = len/n; % шаг по длине (шаг дискритизации пространства - spatial discretization step)
dt = ds/cel; % шаг по времени
h0 = 100; % напор в баке, м
Roughness = 0.0125;
g = 9.806; %Ускорение свободного падения, м/с2
Lambda = 124.528/(power((1/Roughness),2)*power(diam,(1/3)));
tc = 0; %время включения клапана на выходе, с
m = 1; % Показатель степени закона закрытия задвижки
tmax = 15; %Время вычисления
 
 
Vp = 0;
vp = 0;
Hp = 0;
hp = 0;
NegligibleHeadlosses = 0;
     t = 0;
     while t < tmax 
          t = t + dt;
            if NegligibleHeadlosses == 1
                for i = 1:n+1
                    h(i) = h0;
                    v(i) = v0;
                    Lambda = 0;
                end;
            else
                for i = 1:n+1
                    hf = Lambda*ds*v0*v0/(2*g*diam);
                    h(i) = h0-i*hf;
                    v(i) = v0;
                end;
            end;
        for i = 2:n
          vp(i) = 0.5*(v(i-1)+v(i+1)+(g/cel)*(h(i-1)-h(i+1))-(Lambda*dt/(2*diam))*(v(i-1)*abs(v(i-1))+v(i+1)*abs(v(i+1))));
          hp(i) = 0.5*(h(i-1)+h(i+1)+(v(i-1)-v(i+1))/(g/cel)-(Lambda*dt/(2*diam))*(v(i-1)*abs(v(i-1))-v(i+1)*abs(v(i+1)))/(g/cel));
        end;
 %(* Reservoir positioned upstream *)
     hp(1) = h0;
     vp(1) = v(2)+g*(h(1)-hp(2))/cel-Lambda*v(2)*abs(v(2))*dt/(2*diam);     
 
     
%(* Valve positioned downstream *)
     if t < tc
          tau = power((1-t/tc),m);
          vp(n+1) = v0*tau;
          hp(n+1) = h(n)-cel*(vp(n+1)-v(n))/g-Lambda*cel*v(n)*abs(v(n))*dt/(2*g*diam);
     else
          tau = 0;
          vp(n+1) = 0;
          hp(n+1) = h(n)+cel*v(n)/g-Lambda*cel*v(n)*abs(v(n))*dt/(2*g*diam);
     end;
     
          for i = 1:n+1
%                v(end+1,: ) = vp(i);
%                h(end+1,: ) = hp(i);
          end;
%           Vp = vp(i) + Vp;
%           Hp = h(i) + Hp;
     end;
   
t = 1:dt:tmax;     
figure;
plot(t,h,'r');
axis([0 tmax 0 220]);
grid on;
hold on;
Миниатюры
Реализация метода характеристик (расчет волновых процессов в гидролиниях)  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2016, 21:13
Ответы с готовыми решениями:

Расчет характеристик БТ
Нужно провести расчет по биполярному транзистору КТ635Б, то есть: - объемное сопротивление базы...

Расчет характеристик трехфазного трансформатора
помогите пожалуйста Правила форума: 4.7. Как можно более полно описывайте суть...

Расчет входных характеристик отрезка коаксиальной линий
В ходе работы нужно было рассчитать значение модуля входного коэффицента отражеиния и КСВ. Вопрос...

Нужно перевести программу из паскаль в делфи . Сама программа этот реализация метода гауса и метода зейделя
Это все в паскале сделано. В программе идет в начале описание меня а аотом сама подпрограмма...

5
59 / 59 / 13
Регистрация: 01.03.2016
Сообщений: 142
09.04.2016, 21:50 2
Fst404, в этом куске кода у вас длина вектора t и h не совпадают, вывести график не возможно. Закомментированные строки я не трогал. Очень много лишних циклов.
Взять допустим первый for его можно убрать и сделать так:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
if NegligibleHeadlosses == 1
k=1:n+1;
h= h0.*k;
v = v0.*k;
Lambda = 0;
else 
k=1:n+1;
hf = (Lambda*ds*v0*v0/(2*g*diam)).*k;
h = h0-k.*hf;
v = v0.* ones(1,n+1);
end;
В остальных местах думаю тоже можно убрать циклы.
0
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 6
09.04.2016, 23:29  [ТС] 3
идея расчета такова, для каждого момента времени мы определяем массив h и v внутри цикла по времени.
Идею взял из книжки, где рассматривается данный метод.
шаг по времени dt = ds/cel;
шаг по сетки ds = Len/n;
они могут быть разными!
0
59 / 59 / 13
Регистрация: 01.03.2016
Сообщений: 142
10.04.2016, 01:35 4
Fst404, сетку можете выводить какую угодно, но результаты не выйдет. Прочтите внимательнее что делает функция plot. Она строит график по координатам X,Y. И если вы введете Х от 1 до 50, а Y от 1 до 10, то ничего не выйдет.
Цитата Сообщение от Fst404 Посмотреть сообщение
для каждого момента времени мы определяем массив h и v внутри цикла по времени.
Матлабу для этого не всегда нужны циклы.
0
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 6
10.04.2016, 09:33  [ТС] 5
А каким образом тогда получить график.
В задаче каждому времени ds, соответствует массив из точек h и v?
0
59 / 59 / 13
Регистрация: 01.03.2016
Сообщений: 142
10.04.2016, 10:32 6
Цитата Сообщение от Fst404 Посмотреть сообщение
А каким образом тогда получить график.
В задаче каждому времени ds, соответствует массив из точек h и v?
Выводить нужно каждый массив по отдельности и собирать из них видимо график.
Matlab M
1
2
3
4
figure
plot(x,y)
hold on
plot(x,y)
Ну или в цикл это уже убирать, если много точек.
0
10.04.2016, 10:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2016, 10:32
Помогаю со студенческими работами здесь

Статистический расчет числовых характеристик интервального статистического ряда
Статистический расчет числовых характеристик интервального статистического ряда Правила, 5.18....

Расчет переходных процессов
Помогите написать(пока без значений) Uc=Uссв+Uсу Свободная Uсу=U Ucсв=icв*R+1/C ʃ(iсвdt)=0...

Расчет переходных процессов в цепи
прошу помочь решить вот эти задачи, даже очень прошу) хотя бы 2 и 3 задачи , помогите плиииз

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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