ứng dụng chương trình matlab trong việc giải một số bài toán tính đường mặt nước dòng chảy trong kênh hở Ks.. Nguyễn viết thanh Bộ môn Thuỷ lực - Thuỷ văn Khoa Công trình Trường Đại họ
Trang 1ứng dụng chương trình matlab trong việc giải
một số bài toán tính đường mặt nước dòng chảy
trong kênh hở
Ks Nguyễn viết thanh
Bộ môn Thuỷ lực - Thuỷ văn Khoa Công trình
Trường Đại học Giao thông Vận tải
Tóm tắt: ứng dụng phần mềm để giải quyết các bμi toán kỹ thuật lμ một xu hướng tất yếu
hiện nay Matlab lμ một trong những phần mềm có khả năng ứng dụng cao vμ rất tiện ích trong
các trường đại học trên thế giới hiện nay Bμi báo nμy giới thiệu một số ứng dụng của Matlab
tính toán đường mặt nước dòng chảy trong kênh hở
Summary: Using software to solve the technical problems is a current tendency
The Matlab program is one of some software which are usually applied by many universities
in the world This article presents some applications of Matlab in the open channel flow
problems
CT 2
I Đặt vấn đề
Matlab là tổ hợp một cấu trúc chương trình với các hàm toán học đã xác định trước ứng
dụng của Matlab rất đa dạng ta có thể xây dựng các chương trình khác nhau để giải các bài
toán kỹ thuật, cụ thể đối với bài toán tính và vẽ đường mặt nước trong kênh hở ta có thể viết
chương trình theo sơ đồ khối:
Tính chiều sâu
dọc theo dòng
chảy
Nhập
dữ liệu
Tính toán các yếu tố thuỷ lực (bán kính, chu vi, diện tích)
Tính chiều dài kênh
Vẽ đường mặt nước
In kết quả
Khi tính toán đường mặt nước thường phải áp dụng phương pháp gần đúng trong đó có
phương pháp cộng trực tiếp song việc tính toán cho khối lượng tính toán lớn và độ chính xác
không cao Vì vậy sử dụng Matlab để giải các bài toán này sẽ làm cho việc tính nhanh hơn và
mức độ chính xác theo yêu cầu
II Tiếp cận vấn đề
Ta xét bài toán dòng chảy không áp trong cống tròn:
Trang 2Mặt cắt ngang i-i
• Phương pháp 1
Từ công thức tính lưu lượng của Sêdi-Manning rút ra:
A S R n
1
Q= H23 012
3 4 H
2 2 2 3 4 H
2 2 0
R
V n A R
Q n
CT 2
Từ phương trình vi phân cơ bản của dòng chảy ổn định, thay đổi dần không áp:
3 2
2 3 4 H
2 2 0 2
3 4 H
2 2 0 2 0
gA
B Q 1
A R
Q n S
gA
B V 1 R
V n S
Fr 1
S S dx dy
ư
ư
=
ư
ư
=
ư
ư
trong đó: S0 - độ dốc đáy kênh;
n - hệ số nhám Manning;
V - vận tốc trung bình mặt cắt,
A
Q
V = ;
RH - bán kính thuỷ lực;
B - chiều rộng mặt thoáng;
A - diện tích mặt cắt ướt;
Fr - số Frút,
gy
V
Q - lưu lượng (m3/s)
Trang 3Sai phân ta có: y
A R
Q n S gA
B Q 1 L
2 3 4 H
2 2 0
3 2
Δ
⎥
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎢
⎣
⎡
−
−
=
Sơ đồ khối:
Kết thúc
Bắt đầu
y Δ
y y
yi+1= i+Δ
i
i Hi i
2 2 i
2 i
2 i
P
A R
180 / 2 r P
) 2 sin(
2
r 360
2 r A
) y ( r 2 B
=
π
ì θ
ì
=
θ
− θ π
=
−
−
ì
=
2
R R R , 2
B B B , 2
A A
= +
= +
y
A R
Q n S
A 81 , 9
B Q 1 L
2 i 3 4 Hi
2 2 0
3 i i 2
1
⎥
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎢
⎣
⎡
−
ì
−
=
1 i i
1 i 1
Vẽ quan hệ L = f(y)
In kết quả
CT 2
Trang 4• Phương pháp 2
Từ phương trình vi phân S0 Sf
dx
de
ư
= chuyển thành phương trình sai phân S0 Sf
L
e
ư
= Δ
Δ
f
S
e L
ư
Δ
= Δ
trong đó: e - năng lượng đơn vị mặt cắt,
2 i
2 i i
gA 2
Q y
e = + ; Sf - độ dốc thuỷ lực trung bình
Sơ đồ khối: cấu trúc chương trình Matlab về cơ bản không thay đổi ta chỉ thay đổi công thức tính độ tăng chiều dài ΔLi
Bắt đầu
y Δ
y y
yi+1= i+Δ
i
i Hi 2
2 i
i
2 i
2 i
P
A R
; ) 2 sin(
2
r 360
2 r A
180 / 2 r P
; ) y ( r 2 B
= θ
ư θ π
=
π
ì θ
ì
=
ư
ư
ì
=
2
R R R , 2
B B B , 2
A A
= +
= +
=
⎥
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎢
⎣
⎡
ư
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛ +
ư
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛ +
=
+ +
3 Hi
2 i
2 2 0
2 i
2 i 2 1 i
2 1
i 1 i
R A
Q n S
gA 2
Q y gA
2
Q y
L
1 i i
1 i 1
L+ =∑Δ +Δ +
Vẽ quan hệ L= f(y); In kết quả
Kết thúc
CT 2
Trang 5• Phương pháp 3: Phương pháp tính lặp (TRAP)
[F(i) F(i 1)]
l 2
1 y
yi+1= i+ Δi+1 + +
) 1 i ( F ) i ( F
y 2
+ +
Δ
ì
=
Δ +
với
i 3 i
2 fi 0
B gA
Q 1
S S ) i ( F
ư
ư
=
Chương trình Matlab chỉ thay đổi công thức tính Δ : Li
Bắt đầu
y Δ
y y
yi+1= i+Δ
i
i Hi i
2 2 i
2 i 2 i
P
A R
180 / 2 r P
) 2 sin(
2
r 360
2 r A
) y ( r 2 B
=
π
ì
ì
=
θ
ư θ π
=
ư
ư
ì
=
i 3 i
2 fi 0
B gA
Q 1
S S ) i ( F
ư
ư
=
) 1 i ( F ) i ( F
y 2
+ +
Δ
ì
=
1 i i
1 i 1
Vẽ quan hệ L = f(y)
In kết quả
Kết thúc
CT 2
Trang 6Ví dụ:
Một dòng chảy có lưu lượng 10 m3/s dọc theo một cống tròn có bán kính r = 1 m Nếu tại mặt cắt 1, chiều sâu dòng chảy là 0,8 m Tính chiều dài kênh từ mặt cắt 1 đến mặt cắt 2 có độ sâu 1,2 m về phía hạ lưu? Kênh làm bằng bêtông (n = 0,014) có độ dốc dọc không đổi S0 = 0,003
• Chương trình Matlab 1
% -Tinh duong mat nuoc trong kenh ho - clear all;close all;
c=pi./180;
delta_y=input('do tang chieu sau(m)\n');
r=input('ban kinh mat cat kenh(m)\n');
n=input('do nham kenh\n');
q=input('luu luong kenh m^3/s\n');
so=input('do doc day kenh\n');
y=[0.80: delta_y: 1.20];
%chieu sau dong chay thay doi tu 0.8 den 1.2m
for i=1:length(y);
al_pha=(180./pi)*acos((y(i)-r)/r);
the_ta=180-al_pha;
b(i)=2*sqrt(r.^2-(y(i)-r).^2);
%chieu rong dinh mat cat kenh
A(i)=r.^2*the_ta*c-r.^2/2.*sin(2*the_ta*c);
%dien tich mat cat ngang
P(i)=r.*2.*the_ta*c;
%chu vi uot cua mat cat kenh
rh(i)=A(i)./P(i);
%ban kinh thuy luc
delta_l(1)=0;
l(1)=0;
%cac gia tri ban dau trong day "delta_l" va "l" bang 0
for i=1:length(y)-1;
A_av(i)=(A(i)+A(i+1))./2;
b_av(i)=(b(i)+b(i+1))./2;
rh_av(i)=(rh(i)+rh(i+1))./2;
%gia tri trung binh dt,be rong dinh,ban kinh thuy luc
delta_l(i+1)=((1-(q.^2.*b_av(i))./(9.81.*A_av(i).^3))./(so-(n).^2.*(q.^2./(rh_av(i).^(4./3).*A_av(i).^2)))).*delta_y;
%xac dinh chieu dai theo y va delta_y dua tren cac gia tri trung binh l(i+1)=sum(delta_l(1:i))+delta_l(i+1);
%chieu dai kenh
end
plot(l,y);%Ve quan he l va y
grid;
xlabel('chieu dai kenh');
ylabel('chieu cao chat long');
title('dong chay trong kenh ho');
axis([0 100 2 4]);
fprintf('\n\n\nsection y, m delta_y, m delta_l, m l, m\n');
for i=1:length(y);
fprintf('%1.0f %2.2f %1.2f %4.2f %4.2f\n', i, y(i), delta_y, delta_l(i), l(i));
end
% -Ket thuc -
Trang 7• NhËp d÷ liÖu:
do tang chieu sau (m): 0.1
ban kinh mat cat kenh (m): 1
do nham kenh: 0.014
luu luong kenh m^3/s: 10
do doc day kenh: 0.003
KÕt qu¶:
Section y(m) delta_y(m) delta_l(m) l(m)
1 0.80 0.10 0.00 0.00
2 0.90 0.10 27.09 27.09
3 1.00 0.10 25.79 52.88
4 1.10 0.10 23.98 76.86
5 1.20 0.10 21.51 98.37
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
chieu dai kenh
dong chay trong kenh ho
CT 2
• Ch−¬ng tr×nh Mablab 2:
% -Tinh duong mat nuoc trong kenh ho -
clear all;close all;
c=pi./180;
delta_y=input('do tang chieu sau(m)\n');
r=input('ban kinh mat cat kenh(m)\n');
n=input('do nham kenh\n');
Trang 8q=input('luu luong kenh m^3/s\n');
so=input('do doc day kenh\n');
y=[0.80: delta_y: 1.20];
%chieu sau dong chay thay doi tu 0.8 den 1.2m
for i=1:length(y);
al_pha=(180./pi)*acos((y(i)-r)/r);
the_ta=180-al_pha;
b(i)=2*sqrt(r.^2-(y(i)-r).^2);
%chieu rong dinh mat cat kenh
A(i)=r.^2*the_ta*c-r.^2/2.*sin(2*the_ta*c);
%dien tich mat cat ngang
P(i)=r.*2.*the_ta*c;
%chu vi uot cua mat cat kenh
rh(i)=A(i)./P(i);
%ban kinh thuy luc
end
delta_l(1)=0;
l(1)=0;
%cac gia tri ban dau trong day "delta_l" va "l" bang 0
for i=1:length(y)-1;
A_av(i)=(A(i)+A(i+1))./2;
b_av(i)=(b(i)+b(i+1))./2;
rh_av(i)=(rh(i)+rh(i+1))./2;
%gia tri trung binh dt,be rong dinh,ban kinh thuy luc
y(i+1)=y(i)+delta_y;
delta_l(i+1)=(((y(i+1)+q.^2./(2*9.81.*A(i+1).^2))-
(y(i)+q.^2./(2*9.81*A(i).^2)))/(so-(n.^2*q.^2./(A_av(i).^2*rh_av(i).^(4./3)))));
%xac dinh chieu dai theo y va delta_y dua tren cac gia tri trung binh
CT 2
l(i+1)=sum(delta_l(1:i))+delta_l(i+1);
%chieu dai kenh
end
plot(l,y);%Ve quan he l va y
grid;
xlabel('chieu dai kenh');
ylabel('chieu cao chat long');
title('dong chay trong kenh ho');
axis([0 100 0 2]);
fprintf('\n\n\nsection y, m delta_y, m delta_l, m l, m\n');
for i=1:length(y);
fprintf('%1.0f %2.2f %1.2f %4.2f %4.2f\n', i, y(i), delta_y, delta_l(i), l(i));
end
% -Ket thuc -
• NhËp d÷ liÖu:
do tang chieu sau (m): 0.1 ban kinh mat cat kenh (m): 1
do nham kenh: 0.014 luu luong kenh m^3/s: 10
Trang 9do doc day kenh: 0.003
KÕt qu¶:
Section y(m) delta_y(m) delta_l(m) l(m)
1 0.80 0.10 0.00 0.00
2 0.90 0.10 27.48 27.48
3 1.00 0.10 26.10 53.58
4 1.10 0.10 24.23 77.81
5 1.20 0.10 21.72 99.53
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
chieu dai kenh
dong chay trong kenh ho
CT 2
• Ch−¬ng tr×nh Matlab 3:
% -Tinh duong mat nuoc trong kenh ho -
clear all;close all;
c=pi./180;
delta_y=input('do tang chieu sau(m)\n');
r=input('ban kinh mat cat kenh(m)\n');
n=input('do nham kenh\n');
q=input('luu luong kenh m^3/s\n');
so=input('do doc day kenh\n');
y=[0.80: delta_y: 1.20];
%chieu sau dong chay thay doi tu 0.8 den 1.2m
for i=1:length(y);
al_pha=(180./pi)*acos((y(i)-r)/r);
the_ta=180-al_pha;
b(i)=2*sqrt(r.^2-(y(i)-r).^2);
%chieu rong dinh mat cat kenh
Trang 10A(i)=r.^2*the_ta*c-r.^2/2.*sin(2*the_ta*c);
%dien tich mat cat ngang
P(i)=r.*2.*the_ta*c;
%chu vi uot cua mat cat kenh
rh(i)=A(i)./P(i);
%ban kinh thuy luc
F(i)=(so-(n).^2.*(q.^2./(rh(i).^(4./3).*A(i).^2)))./((1-(q.^2.*b(i))./(9.81.*A(i).^3)));
end
delta_l(1)=0;
l(1)=0;
%cac gia tri ban dau trong day "delta_l" va "l" bang 0
for i=1:length(y)-1;
delta_l(i+1)=2*delta_y./(F(i)+F(i+1));
%xac dinh chieu dai theo y va delta_y
l(i+1)=sum(delta_l(1:i))+delta_l(i+1);
%chieu dai kenh
end
plot(l,y);%Ve quan he l va y
grid;
xlabel('chieu dai kenh');
ylabel('chieu cao chat long');
title('dong chay trong kenh ho');
axis([0 100 0 2]);
fprintf('\n\n\nsection y, m delta_y, m delta_l, m l, m\n');
for i=1:length(y);
fprintf('%1.0f %2.2f %1.2f %4.2f %4.2f\n', i, y(i), delta_y, delta_l(i), l(i));
CT 2
end
% -Ket thuc -
NhËp d÷ liÖu:
do tang chieu sau (m): 0.1 ban kinh mat cat kenh (m): 1
do nham kenh: 0.014 luu luong kenh m^3/s: 10
do doc day kenh: 0.003
Section y (m) delta_y (m) delta_l (m) l (m)
1 0.80 0.10 0.00 0.00
2 0.90 0.10 27.11 27.11
3 1.00 0.10 25.79 52.90
4 1.10 0.10 23.93 76.83
5 1.20 0.10 21.38 98.21
Trang 110 10 20 30 40 50 60 70 80 90 100 0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
chieu dai kenh
dong chay trong kenh ho
Phương pháp 1 và 3 cho kết quả khá giống nhau; phương pháp 1 cho kết quả l = 98,37 m,
phương pháp 3 cho kết quả l = 98,21 m
Như vậy, cùng một cấu trúc chung của chương trình Matlab tính toán đường mặt nước có
thể được cải biến đưa vào nhiều phương pháp giải khác nhau để so sánh, đánh giá và chọn 1
phương pháp thích hợp
Ví dụ trên ta thấy được sự lợi ích của chương trình máy tính, nó có thể giúp ta giải quyết
hàng loạt bài toán tương tự bằng cách thay đổi dữ kiện đầu vào và thay đổi công thức tính phù
hợp với bài toán, ưu điểm của việc giải bài toán trên máy tính là cho kết quả khá chi tiết và hình
ảnh trực quan sinh động qua đó giúp cho người học tiếp cận dần với phương pháp học mới
Tài liệu tham khảo
[1] Irving H Shames Mechanics of Fluid NXB Mc Graw – Hill, 2003
[2] Young W Hwon & Hyochoong Bang The Finite Element Method Using Matlab, 2000
[3] Phùng Văn Khương, Trần Đình Nghiên (chủ biên), Bùi Thị Vinh Thuỷ lực NXB Giao thông
Vận tải, 1994Ă