41 / 1 / 2
Регистрация: 11.10.2011
Сообщений: 112
1

Уравнение движения жидкости

27.10.2014, 22:17. Показов 401. Ответов 1
Метки нет (Все метки)

Доброго времени суток. Суть задачи: в некоторой трубе движутся два потока жидкости, один слева, другой снизу, скорости которых заданы по параболе необходимо найти скорости в проекциях на оси х и у. Все условия вроде задал так а скорости почему то отрицательные, кто знает, можете взглянуть на код)Исходный код.txt
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2014, 22:17
Ответы с готовыми решениями:

уравнение движения двух мат. точек
Задача. Составить уравнение движения двух материальных точек, соединенных стержнем. Подскажите...

Имитация движения жидкости в трубе
Изображение в окне приложения должно имитировать движение жидкости в трубе. Окно настройки...

Законы движения, механика жидкости
Помогите с решением: В ртути плавает металлический куб со стороной a=4 см и плотностью ρ=8.8...

Законы движения, механика жидкости
Из пожарного брандспойта, имеющего поперечное сечение S=13 см 2 , бьет струя воды с объемной...

1
Всегда онлайн
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,359
28.10.2014, 06:38 2
kompnet, Можно было код пряма тут подставит, чтобы легче было.
Кликните здесь для просмотра всего текста
C++
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
#include <stdio.h>
#include <math.h>
 
const double XX=5.0;//размеры поля по оси Х
const double YY=2.0;//размера поля по оси У
const double Uxmax=0.5;//максимальная скорость на границе 1 потока
const double Uymax=0.05;//максимальная скорость на границе 2 потока
const double psi0=0.1;//
const double h=0.2;
const double tau=0.001;
const double nu=1.0;
const double tmax=0.01;
const double theta=1.85;//для метода верхней релаксации
 
const int x0=5;//границы 2 потока от 5 узла
const int l=6;//длиной 6 узлов
 
int main(){
    FILE *f = fopen("res.txt","w");
    int X=(int)(XX/h);
    int Y=(int)(YY/h);
    int j, i;//коородинаты
    double t = 0;//начальное время
    double **ux=new double*[Y+1]; //скорости
    double **uy=new double*[Y+1]; //скорости
    double **psi=new double*[Y+1];//функции тока
    double **w=new double*[Y+1];//завихренность
    for (i=0;i<=Y;i++)
        ux[i]=new double[X+1];
    for (i=0;i<=Y;i++)
        uy[i]=new double[X+1];
    for (i=0;i<=Y;i++)
        psi[i]=new double[X+1];
    for (i=0;i<=Y;i++)
        w[i]=new double[X+1];
 
 
    //начальные скорости
    for (i=0; i<=Y; i++)
        for (j=0; j<=X; j++){
            ux[i][j]=0.0;
            uy[i][j]=0.0;
        }
 
 
    for (i=0; i<=Y; i++){
        ux[i][0] = 4*Uxmax*i*(Y-i)/(Y*Y);//скорость 1 потока
        ux[i][X] = 4*Uxmax*i*(Y-i)/(Y*Y);
    }
    
    for (j=0; j<=X; j++){
        if (j < x0)
            uy[Y][j] = 0.0;//A1A6
        if ((j >= x0) && (j <= x0+l))
            uy[Y][j] = 4*Uymax*(j-x0)*(l-(j-x0))/(l*l);//скорость 2 потока
        if (j > x0+l)
            uy[Y][j] = 0.0;
 
        uy[0][j] = 0.0;
    }
    
    //функции тока
    for (i=0; i<=Y; i++)
        for (j=0; j<=X; j++)
            psi[i][j] = 0.0;
    
    
    for (j=X; j>=0; j--){
        if (j > x0+l)
            psi[Y][j] = 0.0;
        if ((j >= x0) && (j <= x0+l))
            psi[Y][j]=(psi0 + (psi[Y][j+1]+uy[Y][j]*h));
        if (j < x0)
            psi[Y][j]=psi[Y][j+1];
    }
    for (i=Y-1; i>=0; i--)
        psi[i][0]= (psi[i+1][0]+ux[i][0]*h);
 
    for (j=1; j<=X; j++)      
        psi[0][j]=psi[0][j-1];
 
    for (i=Y-1; i>=0; i--)
        psi[i][X]= (psi[i][0]);
 
 
    //Начальная завихренность
    for (i=1; i<=Y; i++)
        for (j=1; j<=X; j++)
            w[i][j] = 0.0;
 
    for (j=0; j<X; j++){
        w[0][j]=-(psi[1][j]-2*psi[0][j])/(h*h);
        w[Y][j]=-(psi[Y-1][j]-2*psi[Y][j])/(h*h);
    }
 
    for (i=0; i<Y; i++){
        w[i][0]=-(psi[i][1]-2*psi[i][0])/(h*h);
        w[i][X]=-(psi[i][X-1]-2*psi[i][X])/(h*h);
    }
 
    
    //уравнение гельмгольца(противоточные производные)
    do {
    double dux, duy;
    for (i=1; i<Y; i++)
            for (j=1; j<X; j++){
                if (ux[i][j]<0)
                    dux=(w[i+1][j]-w[i][j])/h;
                if (ux[i][j]>=0)
                    dux=(w[i][j]-w[i-1][j])/h;
                if (uy[i][j]<0)
                    duy=(w[i][j+1]-w[i][j])/h;
                if (uy[i][j]>=0)
                    duy=(w[i][j]-w[i][j-1])/h;
 
                w[i][j]=w[i][j] + tau*(ux[i][j]*dux + uy[i][j]*duy + nu*((w[i+1][j]+w[i-1][j]+w[i][j+1]+w[i][j-1]-4*w[i][j])/(h*h)));
            }
 
 
        //уравнение пуассона (метод верхней релаксации)
        for (i=1; i<Y; i++)
            for (j=1; j<X; j++)
                psi[i][j]=(1-theta)*psi[i][j] + theta/4.0*(psi[i+1][j] + psi[i-1][j] + psi[i][j+1] + psi[i][j-1] + h*h*w[i][j]);
 
        //нахождение поля скоростей
        for (i=1; i<Y; i++)
            for (j=1; j<X; j++){
                ux[i][j]= (psi[i+1][j+1] + psi[i-1][j+1] - psi[i+1][j-1] - psi[i-1][j-1])/(4*h);
                uy[i][j]=-(psi[i+1][j+1] - psi[i-1][j+1] + psi[i+1][j-1] - psi[i-1][j-1])/(4*h);
            }
 
        t+=tau;
 
    } while(t<=tmax);
        
    for (i=0; i<=Y; i++){
        for (j=0; j<=X; j++)
            fprintf(f,"%8.3f ",ux[i][j]);
        fprintf(f,"\n");
    }
 
    fprintf(f,"\n\n");
    
    for (i=0; i<=Y; i++){
        for (j=0; j<=X; j++)
            fprintf(f,"%8.3f ",uy[i][j]);
        fprintf(f,"\n");
    }
 
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2014, 06:38

Найти уравнение движения парашютиста массой m, если сила сопротивления воздуха f пропорциональна скорости движения
Найти уравнение движения парашютиста массой m, если сила сопротивления воздуха f пропорциональна...

Вязкость жидкости, уравнение колебаний
Прошу помочь. К вертикальной спиральной пружине подвешен стальной шарик радиусом 2см. Циклическая...

Напишите уравнение движения и уравнение моментов шара
скатывающегося без проскальзывания с наклонной плоскости с углом альфа. определить ускорение его...

Найти уравнение траектории точки. Нарисовать траекторию движения точки и показать направление её движения
Материальная точка участвует одновременно в двух взаимно перпендикулярных колебаниях, выраженных...


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

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

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