Екі араласпайтын және сығылмайтын сұйықтардың канал бойындағы қозғалысы үшін Навье - Стокс теңдеуі және оны жоғары ретті дәлдікпен сандық әдістермен зерттеу жолдары

КІРІСПЕ ...3

1. ЕКІ АРАЛАСПАЙТЫН СҰЙЫҚТЫҢ ҚОЗҒАЛЫСЫ 4
1.1.Екі араласпайтын сұйықтың қозғалыс теңдеуі 4
1.2.Ақырлы айырымдар әдісі 5
1.3.Бастапқы және шекаралық шарттар 5
1.4. F функциясының аппроксимациясы ... ... ... ... ... ... ... ... ... ... ... ..6

2. САНДЫҚ ӘДІСТЕР 7
2.1.Монотонды схема (upwind) ..7
2.2.ENO (Essentially non . oscillatory) схемасы. ... ... ... 8
2.3. Екінші ретті TVD Runge.Kutta әдісі. ... ... ... ... ... ... ... ... ... ... ..9

3.НӘТИЖЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .10

ҚОРЫТЫНДЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .12

ПАЙДАЛЫНЫЛҒАН ӘДЕБИЕТТЕР ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..13

ҚОСЫМША А ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 14
Жұмыстың негізі мақсаты екі сығылмайтын және араласпайтын сұйықтың құбыр бойындағы қозғалысы үшін Навье-Стокс теңдеуін жазып, оны жоғарғы ретті дәлдікпен сандық тәсілдермен шешу және алынған нәтижелерді өзара салыстыра отырып ең тиімді әдісті анықтау.
Бұл жұмыста өте қарапайым есеп қарастырылды, яғни екі сұйықтың арасында беттік керілу күші ескерілмеді. Екі сұйықтың құбыр бойындағы қозғалысы үшін Навье-Стокс теңдеуі жазылып, оның бірінші ретті (upwind схемасы) және екінші ретті (ENO схемасы) дәлдікпен сандық әдістермен есептеу жолдары қарастырылды.
1. Роуч П. «Вычислительная гидромеханика» М:Мир,1980. — 618с.
2. Андерсон Д., Таннехилл Дж., Плетчер Р. А65 Вычислительная гидромеханика и теплообмен: В 2-х т. Т. 1: Пер. с англ. —М.: Мир, 1990. —384 с, ил.
3. Mech4480 CFD: Introduction to Flux Corrected Transport M. N. Macrossan, Mechanical Engineering University of Queensland.
4. С. К. Годунов «Разностный метод численного расчета разрывных решений уравнений гидродинамики» М:Мир,1959. —306c.
5. «ESSENTIALLY NON-OSCILLATORY» Division of Applied Mathematics. Brown University. Providence, Rhode Island 02912,U.S.A.
        
        МАЗМҰНЫ
КІРІСПЕ...3
1. ЕКІ АРАЛАСПАЙТЫН СҰЙЫҚТЫҢ ҚОЗҒАЛЫСЫ4
1.1.Екі араласпайтын сұйықтың қозғалыс теңдеуі4
1.2.Ақырлы айырымдар әдісі5
1.3.Бастапқы және шекаралық шарттар5
1.4. F функциясының аппроксимациясы..............................................6
2. САНДЫҚ ӘДІСТЕР ... ... ... ... non - ... схемасы.............8
2.3. Екінші ретті TVD Runge-Kutta әдісі. ..........................................9
3.НӘТИЖЕ.............................................................................................................10
ҚОРЫТЫНДЫ.................................................................................12
ПАЙДАЛЫНЫЛҒАН ӘДЕБИЕТТЕР......................................................................13
ҚОСЫМША А............................................................................................................14
КІРІСПЕ
Жұмыстың негізі мақсаты екі сығылмайтын және ... ... ... ... ... үшін Навье-Стокс теңдеуін жазып, оны жоғарғы ретті дәлдікпен сандық тәсілдермен шешу және ... ... ... ... ең ... ... ... жұмыста өте қарапайым есеп қарастырылды, яғни екі сұйықтың арасында беттік керілу күші ... Екі ... ... ... қозғалысы үшін Навье-Стокс теңдеуі жазылып, оның бірінші ретті (upwind схемасы) және екінші ... (ENO ... ... ... ... ... жолдары қарастырылды.
* ЕКІ АРАЛАСПАЙТЫН СҰЙЫҚТЫҢ ҚОЗҒАЛЫСЫ
Екі араласпайтын ... үшін ... ... ... ... теңдеуі.
- массалардың ... ... ... бұл ... өте қарапайым есепті қарастырамыз. Беттік керілу күшін
ескермейміз.
1.1 Екі араласпайтын сұйықтың қозғалыс теңдеуі:
Екі араласпайтын сұйық берілген. Бірінші сұйық ... ... ... көк ... Олар ... ... Осы екі ... қозғалысын сандық әдістермен зерттеймін.
Екі сұйық болғандықтан тығыздықтары бірдей емес. Сондықтан біз тығыздықты айнымалы деп ... Егер F=1 ... ... ... ал егер F=0 ... ... ... болады.
F=
- құйын
1.2 ... ... ... ... u және v - жылдамдық кампоненттері, ω - құйын, ψ − ағын функциясы.
+ Бастапқы және шекаралық ... ... ... ... екі ... ... ... шарттар:
Ағынның қозғалыс солдан оңға қарай бағытталған. Бірінші және үшінші шекарада ... ... ... ... орындалады. Жылдамдылығы 0-ге тең. Жылдамджықты интегралдау арқылы ағын функциясын табамыз. Ол тұрақты санға тең болады. Ал интегралдау арқылы ... ... ... ... ... ағын ... мәнін 0-ге тең деп аламыз. Екінші шекарада ағынды параболалық профиль аламыз. Егер біз түзу ... деп ... онда ... ... шарт дұрыс қойылмаған болады. Себебі біз y=0 және y=H болғанда жылдамдық екі ... ие ...
B3. ... F ... аппроксимациясы.
Теңдеудің екінші қосылғышын тор көздерде dy,dx бойынша интегралдаймыз. Ал бірінші қосылғышты уақыт бойынша аппроксимациялаймыз.
* САНДЫҚ ӘДІСТЕР.
2.1 ... ... ... ... ... ... онда - ... монотолды функция болады. Монотонды схеманың бір мысалы: upwind схемасы.
Upwind схемасын қолданғанда бізде сандық диффуция пайда ... ... ... үшін біз FCT ( Flux ... ... )-ны ... FCT ( Flux Corrected Transport )-ның негізгі мақсаты локальді максимум мен локальді минимум жоқ жерлерден сандық ... алып ... Егер ... ... мен ... ... бар жерден де сандық диффузияны алып тастаса, онда максимум жер ... ... ал ... бар жер ... ... FCT ( Flux ... ... ) локальді максимум мен локальді минимум бар жерде бірінші ретті ... ал ... ... мен локальді минимум жоқ жерде екінші ретті дәлдікпен есептейді. Сол себепті бұл схемада бізге дәл ... ... ... ... минимум ) ... ... ENO ... non - ... схемасы [5].
ENO (Essentially non - oscillatory) схемасы жоғарғы ... ... ... ... ... ... ретті дәлдікпен есептеу үшін біз сызықты F=ax+b функциясын қолданамыз.
ENO ... ... ... ... ... дәлдікпен, ал уақыт бойынша бірінші ретті дәлдікпен есептейді.ENO(Essentially non-oscillatory) -
. Сол ... ... ... ... аз да ... бар ... Енді осы диффузиядан құтылу үшін келесі тәсілді қарастырамыз.
2.3 Екінші ретті TVD Runge-Kutta әдісі.
Екінші ретті TVD Runge-Kutta ... ... ... ... ... ...
бұл формуланы келесі түрде жазуға болады :
Себебі: - ... ... Енді осы ... ... ... ... ... есепке қойсақ:
1) Бірінші қадамда біз - ді есептейміз:
2) ... ... - ді ... ... ENO ... ... ... және кеңістік бойынша да екінші ретті дәлдікпен есептейді.
* НӘТИЖЕ.
- UPWIND 1-st order
- ENO -
- ENO ... бұл ... ... ... екі араласпайтын және сығылмайтын сұйықтардың канал бойындағы қозғалысы үшін ... - ... ... ... және оны жоғары ретті дәлдікпен сандық әдістермен зерттеу жолдарын: монотонды схема (upwind), FCT(Flux Corrected Transport) және ENO(Essentially non - ... ... ... ... ... тек ... ... дәлдікпен есептегендіктен онда сандық диффузия пайда болатынын ... ... non - ... ... ... ретті дәлдікпен есептегендіктен салыстырмалы түрде шешім дәлірек болатынын көрдім.
ПАЙДАЛЫНЫЛҒАН ӘДЕБИЕТТЕР
* Роуч П. М:Мир,1980. -- ... ... Д., ... Дж., Плетчер Р. А65 Вычислительная гидромеханика и теплообмен: В 2-х т. Т. 1: Пер. с англ. -- М.: Мир, 1990. -- 384 с, ил.
* Mech4480 CFD: ... to Flux ... ... M. N. ... Mechanical Engineering University of Queensland.
* С. К. Годунов ... -- ... Division of Applied ... Brown University. Providence, Rhode Island 02912,U.S.A.
ҚОСЫМША А
/*
ENO_2-order
*/
#define _USE_MATH_DEFINES
#define SQR(A) (A*A)
#include
#include
#include ... ... ... flow {
double u;
double v;
};
const double Re = 10.0;
const double alpha = -1.0;
const double CFL = ... double CFLD = ... double L = ... double H = ... double Lp = ... double U0 = ... double dx = ... double dy = 0.01;
const int Nx = L/dx + ... int Ny = H/dy + ... int Npx = Lp/dx + ... double dt1 = ... + ... double dt2 = ... + 1/dy/dy);
const double dt = min(dt1, dt2);
const double epsilon = ... flow** ... ... int ... ... flow ... = (struct flow **)malloc(row_count*sizeof(*massive));
for(int i = 0; i < ... i++) ... = (struct flow ... ... ... flow **massive, int row_count, int col_count) {
for(int i = 0; i < row_count; i++) {
free(massive[i]);
}
free(massive);
}
double** create_massive_simple(int row_count, int ... ... ... = (double ... i = 0; i < ... i++) {
massive[i] = (double *)malloc(col_count*sizeof(**massive));
}
return massive;
}
void destroy_massive_simple(double **massive, int row_count, int col_count) {
for(int i = 0; i < ... i++) ... ... psi, int nx, int ny, double dx, double dy) {
// 1 - Bottom boundary condition (no-slip condition) - ... i = 1; i < nx; i++) ... = ... 2 - Top boundary ... (no-slip ... - B3
for(int i = 1; i < nx; i++) {
psi[i][ny-1] = -alpha*H*H*H/6;
}
// 3 - Left boundary condition (in-flow ... - ... j = 0; j < ny; j++) ... = ... - 3*H)/6;
}
// 4 - Right boundary condition (out-flow ... - ... j = 1; j < ny-1; j++) ... = ... - psi[nx-3][j];
}
}
void boundary_condition_omega(double **omega, double** psi, int nx, int ny, double dx, double dy) {
// 1 - Bottom boundary ... (no-slip ... - ... i = 1; i < nx; i++) ... = 2*(psi[i][1] - psi[i][0])/dy/dy;
}
// 2 - Top boundary condition (no-slip condition) - B3
for(int i = 1; i < nx; i++) ... = ... - ... 3 - Left boundary ... (in-flow ... - ... j = 0; j < ny; j++) {
omega[0][j] = alpha*(2*j*dy - H);
}
// 4 - Right boundary ... ... ... - ... j = 1; j < ny-1; j++) ... = ... boundary_condition_fp(struct flow **fp, int nx, int ny, double dx, double dy) {
// 1 - Bottom boundary ... (no-slip ... - ... i = 1; i < nx; i++) {
fp[i][0].u = 0;
fp[i][0].v = 0;
}
// 2 - Top boundary condition (no-slip condition) - ... i = 1; i < nx; i++) ... = ... = ... 3 - Left boundary ... (in-flow ... - ... j = 0; j < ny; j++) {
fp[0][j].u = ... 4 - Right boundary ... ... ... - B4
for(int j = 1; j < ny-1; j++) {
fp[nx-1][j].u = fp[nx-2][j].u;
fp[nx-1][j].v = ... ... s, struct flow **fp, int nx, int ny, double dx, double dy) {
// 1 - Bottom boundary ... (no-slip ... - B1
for(int i = 1; i < nx; i++) {
double SR = ... >= 0) ? s[i][0] : ... SL = ... < 0) ? ... : ... SU = (fp[i][0].v >= 0) ? s[i][0] : s[i][1];
double SD = (fp[i][0].v < 0) ? 2*s[i][0]-s[i][1] : s[i][0];
s[i][0] = s[i][0] - ... - ... 2 - Top boundary ... (no-slip ... - ... i = 1; i < nx; i++) ... SR = (fp[i][ny-1].u >= 0) ? s[i][ny-1] : ... SL = ... < 0) ? ... : ... SU = (fp[i][ny-1].v >= 0) ? s[i][ny-1] : 2*s[i][ny-1] - ... SD = ... < 0) ? ... : ... = ... - fp[i][ny-1].u*(SR-SL)*dt/dx - fp[i][ny-1].v*(SU-SD)*dt/dy;
}
// 3 - Left boundary ... (in-flow ... - ... j = 0; j < ny; j++) ... = ... 4 - Right boundary ... ... ... - ... j = 1; j < ny-1; j++) ... = s[nx-2][j];
}
}
int solve_laplacian_by_cgm(double **omega, double** psi, double **p, double** z, double** r, int nx, int ny, double dx, double dy, double epsilon) ... iter = ... betta = ... ... of r and ... i = 1; i < nx-1; i++) ... j = 1; j < ny-1; j++) {
r[i][j] = -omega[i][j]*dx*dx + psi[i+1][j] - ... + ... + ... - ... + ... = r[i][j];
}
}
for(int i = 0; i < nx; i++) r[i][0] = ... = p[i][0] = ... = ... j = 1; j < ny-1; j++) r[0][j] = ... = p[0][j] = ... = ... rr = ... r, 1, nx-2, 1, ny-2);
while(sqrt(rr) > epsilon) {
for(int i = 1; i < nx-1; i++) {
for(int j = 1; j < ny-1; j++) ... = ... + ... - ... - ... - ... + ... = scalar_product(r, r, 1, nx-2, 1, ny-2);
double pz = scalar_product(p, z, 1, nx-2, 1, ... nu = ... i = 1; i < nx-1; i++) ... j = 1; j < ny-1; j++) ... = ... + ... = r[i][j] - nu*z[i][j];
}
}
double rr1 = scalar_product(r, r, 1, nx-2, 1, ... mu = ... i = 1; i < nx-1; i++) ... j = 1; j < ny-1; j++) ... = r[i][j] + ... ... ... i, int j, double** S, double dx, int nx) {
double v;
double Sp1 = i == nx-1 ? 2*S[nx-1][j] - S[nx-2][j] : ... Sm1 = i == 0 ? ... - S[1][j] : ... vl = (S[i][j] - ... vr = (Sp1 - ... < abs(vr)) v = S[i][j] + ... v = S[i][j] + vr*dx/2;
return v;
}
double eno_reconstruction_second_order_y(int i, int j, double** S, double dy, int ny) {
double v;
double Sp1 = j == ny-1 ? ... - ... : ... Sm1 = j == 0 ? ... - S[i][1] : ... vl = (S[i][j] - ... vr = (Sp1 - ... < abs(vr)) v = S[i][j] + vl*dy/2;
else v = S[i][j] + vr*dy/2;
return v;
}
void print_result(int num, struct flow** fp, double** s, int nx, int ny, double dx, double dy) ... ... ... ... ... = ... "w");
fprintf(pFile, "TITLE=\"%s\"\n", "The lid driven cavity problem");
fprintf(pFile, "VARIABLES=\"X\", \"Y\", \"U\", \"V\", ... "ZONE T=\"Time - %d\", I=%d, J=%d, ... num, nx, ... j = 0; j < ny; j++) ... i = 0; i < nx; i++) {
fprintf(pFile, "%1.3f %1.3f %1.3f %1.3f ... i*dx, j*dy, ... ... ... main(int argc, char** argv) {
char dirName[200];
sprintf(dirName, "./results(L=%1.3f, H=%1.3f, dx=%1.3f; dy=%1.3f; Re=%3.3f; alpha=%1.3f)", L, H, dx, dy, Re, alpha);
int res = ... = ... flow **fp = ... Ny);
double **omega = create_massive_simple(Nx, Ny);
double** psi = create_massive_simple(Nx, Ny);
double** s = create_massive_simple(Nx, Ny);
double ... = ... ... new_psi = create_massive_simple(Nx, Ny);
double** new_s = create_massive_simple(Nx, Ny);
double *c = (double *)malloc(max(Nx, Ny)*sizeof(double));
double *f = (double *)malloc(max(Nx, Ny)*sizeof(double));
double **z = ... ... **r = ... ... Initial ... i = 0; i < Nx; i++) ... j = 0; j < Ny; j++) ... = 0;
fp[i][j].v = 0;
psi[i][j] = 0;
omega[i][j] = 0;
if(i 0) ? omega[i][j] : omega[i+1][j];
double OmegaL = (Ul > 0) ? ... : ... OmegaU = (Vu > 0) ? ... : ... OmegaD = (Vd > 0) ? omega[i][j-1] : omega[i][j];
int ir = Ur > 0 ? i : i+1;
int il = Ul > 0 ? i-1 : ... ju = Vu > 0 ? j : ... jd = Vd > 0 ? j-1 : ... SR = ... j, s, dx, ... SL = ... j, s, dx, ... SU = eno_reconstruction_second_order_y(i, ju, s, dy, Ny);
double SD = eno_reconstruction_second_order_y(i, jd, s, dy, ... = ... - ... - ... - ... - ... + ... - 2*omega[i][j] + omega[i-1][j])/dx/dx + (omega[i][j+1] - 2*omega[i][j] + omega[i][j-1])/dy/dy)*dt/Re;
new_s[i][j] = s[i][j] - (Ur*SR - ... - (Vu*SU - ... Refresh data of ... **temp = ... = ... = ... Refresh data of ... = new_s;
new_s = s;
s = temp;
boundary_condition_psi(psi, Nx, Ny, dx, dy);
boundary_condition_omega(omega, psi, Nx, Ny, dx, ... Nx, Ny, dx, ... fp, Nx, Ny, dx, ... == 0) ... fp, s, Nx, Ny, dx, ... print_result(k, fp, s, Nx, Ny, dx, dy);
}
printf("Push enter ... Nx, ... Nx, ... Nx, ... Nx, ... Nx, Ny);
destroy_massive_simple(new_psi, Nx, Ny);
destroy_massive_simple(new_s, Nx, Ny);
destroy_massive_simple(r, Nx, Ny);
destroy_massive_simple(z, Nx, Ny);
free(c);
free(f);
}

Пән: Автоматтандыру, Техника
Жұмыс түрі: Іс-тәжірибеден есеп беру
Көлемі: 9 бет
Бұл жұмыстың бағасы: 1 000 теңге









Ұқсас жұмыстар
Тақырыб Бет саны
«Медеу бөгетінің суағытқыштары» ТУ абж үшін ОРС-серверді Masterscada құралдарымен жобалау және баптау44 бет
Ток функциясы, құйын24 бет
1905-1917 жж. қазақ интеллегенциясының әлеуметтік қозғалысы21 бет
1917-1920 жылдардағы қазақ жастар қозғалысының тарихы мен тағылымдары32 бет
Fast Ethernet стандартындағы жоғары жылдамдықты жергілікті есептеуіш желісін жобалау64 бет
Gigabit Ethernet жоғары жылдамдықты технологиясы24 бет
n-ші ретті, коэффициенттері айнымалы біртекті сызықтық дифференциалдық теңдеулерді жалпыланған Абель формуласын пайдаланып шешу36 бет
Turbo Pascal - жоғары деңгейлі программалау жүйесі22 бет
«Алаш» либералдық-демократиялық қозғалысы идеологиясының маңыздылығы47 бет
«Жоғары мектепте тәрбие жұмыстарын ұйымдастыру бағыттары мен тәрбие жұмыстарын жоспарлау13 бет


Исходниктер
Пәндер
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить


Зарабатывайте вместе с нами

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Сіз үшін аптасына 5 күн жұмыс істейміз.
Жұмыс уақыты 09:00 - 18:00

Мы работаем для Вас 5 дней в неделю.
Время работы 09:00 - 18:00

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь