Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 139 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
139
Dung lượng
2,02 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA - NGUYỄN NGỌC TIẾN MỘT NGHIÊN CỨU VỀ BÀI TOÁN VỠ ĐẬP NƯỚC Chun ngành: Tốn Giải Tích Ứng Dụng Mã số ngành: 60.46.36 LUẬN VĂN THẠC SĨ TOÁN HỌC THÀNH PHỐ HỒ CHÍ MINH - THÁNG 11 NĂM 2006 ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA - NGUYỄN NGỌC TIẾN MỘT NGHIÊN CỨU VỀ BÀI TOÁN VỠ ĐẬP NƯỚC Chun ngành: Tốn Giải Tích Ứng Dụng Mã số ngành: 60.46.36 LUẬN VĂN THẠC SĨ TOÁN HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC: TS MAI ĐỨC THÀNH THÀNH PHỐ HỒ CHÍ MINH - THÁNG 11 NĂM 2006 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học: Cán chấm nhận xét 1: Cán chấm nhận xét 2: Luận văn thạc sĩ bảo vệ tại: HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày .tháng .năm TRƯỜNG ĐẠI HỌC BÁCH KHOA PHÒNG ĐÀO TẠO SĐH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP – TỰ DO – HẠNH PHÚC Tp HCM, ngày 15 tháng 11 năm 2006 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: .NGUYỄN NGỌC TIẾN Phái: Nam Ngày, tháng, năm sinh: 15/05/1975 Nơi sinh: Bình Thuận Chun ngành: .Tốn Giải Tích Ứng Dụng MSHV: 02405543 I- TÊN ĐỀ TÀI: MỘT NGHIÊN CỨU VỀ BÀI TOÁN VỠ ĐẬP NƯỚC II- NHIỆM VỤ VÀ NỘI DUNG: Xây dựng toán vỡ đập nước dựa hệ phương trình nước nơng dạng luật bảo tồn Giải toán trường hợp 1D phương pháp giải tích Giải tốn hai trường hợp 1D 2D phương pháp số cho hệ luật bảo tồn Thực mơ trường hợp tốn ngơn ngữ lập trình tính tốn MATLAB III- NGÀY GIAO NHIỆM VỤ (Ngày bắt đầu thực LV ghi Quyết định giao đề tài): 15/06/2006 IV- NGÀY HOÀN THÀNH NHIỆM VỤ: 15/11/2006 V- CÁN BỘ HƯỚNG DẪN (Ghi rõ học hàm, học vị, họ, tên): Tiến sĩ MAI ĐỨC THÀNH CÁN BỘ HƯỚNG DẪN (Học hàm, học vị, họ tên chữ ký) TS Mai Đức Thành CN BỘ MƠN QL CHUN NGÀNH PGS-TS Nguyễn Đình Huy Nội dung đề cương luận văn thạc sĩ Hội đồng chun ngành thơng qua TRƯỞNG PHỊNG ĐT – SĐH Ngày tháng năm TRƯỞNG KHOA QL NGÀNH Lời cam đoan Tơi cam đoan cơng trình nghiên cứu riêng tôi, số liệu kết nghiên cứu nêu luận văn trung thực chưa công bố công trình khác Nguyễn Ngọc Tiến iv Lời cảm ơn Đầu tiên, tơi xin bày tỏ lịng biết ơn chân thành sâu sắc đến Thầy hướng dẫn tơi, TS MAI ĐỨC THÀNH, nhiệt tình giúp đỡ, động viên dìu dắt suốt trình học tập, định hướng cho nhiều đường nghiên cứu, thực luận văn Tiếp đến, xin chân thành cảm ơn thầy đọc cho ý kiến nhận xét sâu sắc luận văn Tôi xin chân thành cảm ơn Ban Giám Hiệu, Phòng Đào Tạo Sau Đại Học, đặc biệt thầy Bộ Mơn Tốn Ứng Dụng - Khoa Khoa Học Ứng Dụng trường Đại Học Bách Khoa thành phố Hồ Chí Minh tạo điều kiện thuận lợi cho suốt trình học tập, nghiên cứu thực luận văn Cuối cùng, xin chân thành cảm ơn đến bạn khóa học, thành viên gia đình tơi giúp đỡ, động viên tơi nhiều để luận văn hoàn thành Một lần xin chân thành cảm ơn! Nguyễn Ngọc Tiến v Lời giới thiệu Việc nghiên cứu lan truyền sóng sốc nghiên cứu thú vị mang tính thực tế cao có nhiều ứng dụng rộng rãi bao gồm ứng dụng lĩnh vực khí động học, đàn hồi học, chuyển pha động học Hệ luật bảo toàn dùng để mơ tả lan truyền sóng sốc Một số mơ hình điển hình thu hút quan tâm nhiều nhà học tốn học ứng dụng mơ hình dịng chảy lưu chất ống có tiết diện ngang thay đổi, phương trình nước nơng có đáy gián đoạn, dịng chảy đa pha, Bài tốn vỡ đập nước dạng toán nghiên cứu lan truyền sóng sốc Bài tốn xem xét góc độ tính tốn hàm thơng số dịng nước vận tốc nước, lưu lượng nước, độ cao mực nước, áp suất sinh , để từ ta nắm quy luật vận động chúng áp dụng vào toán lĩnh vực thủy lợi hay áp dụng mô hình tương tự việc giải số vấn đề sóng sốc Luận văn chia làm bốn chương Trong chương đầu tiên, xây dựng lại phương trình nước nơng sở hệ phương trình chuyển dộng lưu chất lý tưởng hệ tọa độ Euler Hệ phương trình nước nơng dạng đặc biệt hệ phương trình Navier-Stock Đồng thời chương đưa số khái niệm, định lý có liên quan việc ứng dụng giải tốn xét mà tơi khơng chứng minh, việc chứng minh nằm tài tiệu tham khảo Trong chương thứ hai, giới thiệu phương pháp số để giải toán Riemann, với việc khảo sát số lược đồ 1D 2D đặc trưng cho việc giải hệ luật bảo toàn lược đồ Lax-Friedrichs, Lax-Wendroff, upwind, Godunov , nêu điều kiện hội tụ, ổn định lược đồ [2] [3] Tiếp đến chương ba, thực giải toán trường hợp chiều phương pháp giải tích để minh chứng so sánh với phương pháp số phần cách sử dụng lược đồ khảo sát Và cuối chương bốn, tơi giải tốn trường hợp thực tế trường hợp hai chiều việc sử dụng lược đồ phân rã, phương pháp trực tiếp đặc biệt phương pháp FVM (Finite Volume Method - Phương pháp thể tích hữu hạn) cho dộ xác cao, lưới nghiệm trơn Tơi lập trình tính tốn ngơn ngữ MATLAB tấc trường hợp, thể kết dạng hình luận văn vi Mục lục trang Lời cam đoan iv Lời cảm ơn v Lời giới thiệu vi Mục lục Quy ước Ký hiệu Chương 1: Mơ hình hóa tốn vỡ đập nước 1.1 Thiết lập hệ phương trình nước nơng 1.1.1 Phương trình tổng quát chuyển động 1.1.2 Rút phương trình liên tục 1.1.3 Thiết lập hệ phương trình nước nơng 1.2 Bài tốn Riemann cho hệ luật bảo toàn 1.2.1 Sóng lan 1.2.2 Bất biến Riemann 1.2.3 Sóng sốc gián đoạn tiếp xúc 5 12 12 13 14 Chương 2: Các lược đồ số áp dụng cho hệ luật bảo toàn 2.1 Hạn chế lược đồ sai phân 2.1.1 Lược đồ sai phân trung tâm 2.1.2 Lược đồ sai phân phía 2.2 Các lược đồ sai phân 1D 2.2.1 Lược đồ Lax-Friedrichs 2.2.2 Lược đồ Godunov 2.2.3 Lược đồ TVD 2.2.4 Lược đồ Upwind 2.2.5 Ước lượng sai số 2.2.6 Sự hội tụ lược đồ 2.2.7 Sự ổn định lược đồ 2.3 Lược đồ sai phân bậc cao 2.3.1 Lược đồ Lax-Wendroff 15 15 15 15 16 16 16 19 19 20 20 21 21 21 2.4 2.3.2 Các lược đồ flux-limitter Các lược đồ sai phân 2D 2.4.1 Lược đồ sai phân theo cách tiếp cận trực tiếp 2.4.2 Sự phân rã chiều lược đồ số 2.4.3 Lược đồ thể tích hữu hạn 2.4.4 Các kỹ thuật tạo lưới thích nghi FVM Chương 3: Nghiệm giải tích nghiệm số tốn 1-D 3.1 Nghiệm giải tích 3.2 Khảo sát nghiệm số toán theo số lược đồ 3.2.1 Lược đồ Lax-Friedrichs 3.2.2 Lược đồ Upwind bậc 3.2.3 Lược đồ Lax-Wendroff bậc hai 3.2.4 Lược đồ Lax-Wendroff với flux-limiter 3.3 Các ví dụ điển hình MATLAB 3.3.1 Lược đồ Lax-Friedrichs 3.3.2 Lược đồ Upwind bậc 3.3.3 Lược đồ Lax-Wendroff bậc hai 3.3.4 Lược đồ Lax-Wendroff với flux-limiter Chương 4: Nghiệm số toán trường hợp 2D 4.1 Nghiệm số toán theo số lược đồ 4.1.1 Lược đồ Lax-Friedrichs phân rã chiều 4.1.2 Lược đồ Lax-Friedrichs trực tiếp 4.1.3 Lược đồ Lax-Wendroff hai bước 4.1.4 Lược đồ điểm 4.2 Nghiệm số toán theo lược đồ thể tích hữu hạn 4.2.1 Lược đồ FVM với tế bào tam giác 4.2.2 Lược đồ FVM với tế bào chữ nhật 4.3 Các ví dụ điển hình MATLAB 4.3.1 Lược đồ Lax-Friedrichs phân rã chiều 4.3.2 Lược đồ Lax-Friedrichs trực tiếp 4.3.3 Lược đồ FVM với tế bào chữ nhật 22 24 24 27 29 33 36 36 46 46 46 47 47 47 47 50 52 53 58 58 58 59 59 60 60 60 62 64 64 66 68 Kết luận hướng phát triển 80 Tài liệu tham khảo 80 Danh sách hình vẽ 83 Phụ lục A: Chương trình A.1 Dambreak1D.fig A.2 dambreakfig.m A.3 Dambreak1D.m lược đồ 1D 85 86 87 92 A.4 f.m A.5 exact.m A.6 alpha.m Phụ lục B: Chương trình B.1 Lược đồ 2D trực tiếp B.1.1 di_SW2D.m B.1.2 di_schemes2D.m B.1.3 di_initial.m B.1.4 di_illus2D.m B.1.5 di_Fa.m B.1.6 di_Ga.m B.2 Lược đồ 2D phân rã B.2.1 sp_SW2D.m B.2.2 sp_schemes2D.m B.2.3 sp_initial.m B.2.4 sp_illus2D.m B.2.5 sp_Fa.m B.2.6 sp_Ga.m B.3 Lược đồ FVM B.3.1 FVM4s.m B.3.2 prehalf.m B.3.3 mimodf.m B.3.4 mxmodf.m B.3.5 tb2d.m B.3.6 tbmab.m B.3.7 tbmas.m B.3.8 solwall.m Chỉ mục lược đồ 2D 95 96 97 98 98 99 101 102 103 104 105 106 107 109 111 112 113 114 115 116 123 124 125 126 128 129 131 132 118 97 98 99 100 101 102 103 dhC dhE duC duE dvC dvE = = = = = = dh(:,1); dh(:,2); du(:,1); du(:,2); dv(:,1); dv(:,2); 104 105 106 107 108 % –––––-TINH TOAN CAC MAT–––––––––––––––––––––– % Ti‘m cac gia tri [hN,hS,hE,hW];[uN,uS,uE,uW],[vN,vS,vE,vW],[pN,pS,pE,pW]; % Va tinh cac gia tri tren moi te bao 109 110 111 112 uN = u05 - 0.5.*duE; uS = u05 + 0.5.*duE; vN = v05 - 0.5.*dvE; vS = v05 + 0.5.*dvE; hN = h05 - 0.5.*dhE; hS = h05 + 0.5.*dhE; 113 114 115 116 uE = u05 - 0.5.*duC; uW = u05 + 0.5.*duC; vE = v05 - 0.5.*dvC; vW = v05 + 0.5.*dvC; hE = h05 - 0.5.*dhC; hW = h05 + 0.5.*dhC; 117 118 119 120 121 122 123 % tinh toan gia tri u o*? mo^~i te bao %%%%%%%%%%%%%%%%%%%%%%%%%%%% % C––B (ui + vj)_North la‘ ti’ch vo^ hu*o*’ng (u_N).(AD), % | | (ui + vj)_South la‘ ti’ch vo^ hu*o*’ng (u_S).(CB), % | | (ui + vj)_East la‘ ti’ch vo^ hu*o*’ng (u_E).(CD), % D––A (ui + vj)_West la‘ ti’ch vo^ hu*o*’ng (u_W).(AB), %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 124 125 126 127 128 uN_p uS_p uE_p uW_p = = = = uN.*cos(phi(:,4)) uS.*cos(phi(:,2)) uE.*cos(phi(:,3)) uW.*cos(phi(:,1)) + + + + vN.*sin(phi(:,4)); vS.*sin(phi(:,2)); vE.*sin(phi(:,3)); vW.*sin(phi(:,1)); 129 130 solwall; 131 132 133 N = tbmas([u05,v05],-[duE,dvE],ID,2,2,phi(:,2)); un = N(:,1); = N(:,2); un_p = N(:,3); 134 135 136 S = tbmas([u05,v05],[duE,dvE],ID,2,4,phi(:,4)); us = S(:,1); vs = S(:,2); us_p = S(:,3); 137 138 139 hn = tbmas(h05,-dhE,ID,1,2,phi(:,2)); hs = tbmas(h05,dhE,ID,1,4,phi(:,4)); 140 141 142 E = tbmas([u05,v05],-[duC,dvC],ID,2,1,phi(:,1)); ue = E(:,1); ve = E(:,2); ue_p = E(:,3); 143 144 145 W = tbmas([u05,v05],[duC,dvC],ID,2,3,phi(:,3)); uw = W(:,1); vw = W(:,2); uw_p = W(:,3); 119 146 147 148 he = tbmas(h05,-dhC,ID,1,1,phi(:,1)); hw = tbmas(h05,dhC,ID,1,3,phi(:,3)); 149 150 151 % Tinh F_| tu‘ U + F(U) = 0, bai toan di.a phuong 1-D 152 153 154 155 FE(:,1)=[(uE_p.*hE)]; FE(:,2)=[(uE.*hE.*uE_p)+(g/2).*(hE.^2).*cos(phi(:,3))]; FE(:,3)=[(vE.*hE.*uE_p)+(g/2).*(hE.^2).*sin(phi(:,3))]; 156 157 158 159 Fe(:,1)=[ue_p.*he]; Fe(:,2)=[ue.*he.*ue_p + (g/2).*(he.^2).*cos(phi(:,1))]; Fe(:,3)=[ve.*he.*ue_p + (g/2).*(he.^2).*sin(phi(:,1))]; 160 161 162 163 FW(:,1) = [(uW_p.*hW)]; FW(:,2) = [(uW.*uW_p.*hW)+(g/2).*(hW.^2).*cos(phi(:,1))]; FW(:,3) = [(vW.*uW_p.*hW)+(g/2).*(hW.^2).*sin(phi(:,1))]; 164 165 166 167 Fw(:,1) = [uw_p.*hw]; Fw(:,2) = [uw.*uw_p.*hw + (g/2).*(hw.^2).*cos(phi(:,3))]; Fw(:,3) = [vw.*uw_p.*hw + (g/2).*(hw.^2).*sin(phi(:,3))]; 168 169 170 171 FN(:,1)=[(uN_p.*hN)]; FN(:,2)=[(uN.*hN.*uN_p)+(g/2).*(hN.^2).*cos(phi(:,4))]; FN(:,3)=[(vN.*hN.*uN_p)+(g/2).*(hN.^2).*sin(phi(:,4))]; 172 173 174 175 Fn(:,1)=[un_p.*hn]; Fn(:,2)=[un.*hn.*un_p + (g/2).*(hn.^2).*cos(phi(:,2))]; Fn(:,3)=[vn.*hn.*un_p + (g/2).*(hn.^2).*sin(phi(:,2))]; 176 177 178 179 FS(:,1) = [(uS_p.*hS)]; FS(:,2) = [(uS.*uS_p.*hS)+(g/2).*(hS.^2).*cos(phi(:,2))]; FS(:,3) = [(vS.*uS_p.*hS)+(g/2).*(hS.^2).*sin(phi(:,2))]; 180 181 182 183 Fs(:,1) = [us_p.*hs]; Fs(:,2) = [us.*us_p.*hs + (g/2).*(hs.^2).*cos(phi(:,4))]; Fs(:,3) = [vs.*us_p.*hs + (g/2).*(hs.^2).*sin(phi(:,4))]; 184 185 186 187 188 189 % Tinh ca’c UE(:,1)=hE; UW(:,1)=hW; UN(:,1)=hN; US(:,1)=hS; Ui’s UE(:,2)=(uE.*hE); UW(:,2)=(uW.*hW); UN(:,2)=(uN.*hN); US(:,2)=(uS.*hS); Ue(:,1)=he; Uw(:,1)=hw; Un(:,1)=hn; Us(:,1)=hs; Ue(:,2)=ue.*he; Uw(:,2)=uw.*hw; Un(:,2)=un.*hn; Us(:,2)=us.*hs; UE(:,3)=(vE.*hE); UW(:,3)=vW.*hW; UN(:,3)=(vN.*hN); US(:,3)=(vS.*hS); 190 191 192 193 194 Ue(:,3)=ve.*he; Uw(:,3)=vw.*hw; Un(:,3)=vn.*hn; Us(:,3)=vs.*hs; 120 195 196 197 198 199 h_AB = sqrt(hW.*he); u_AB = (hW.^0.5.*uW_p+he.^0.5.*ue_p)./(hW.^0.5+he.^0.5); c_AB = sqrt(g.*h_AB); 200 201 202 203 h_BC = sqrt(hS.*hn); u_BC = (hS.^0.5.*uS_p+hn.^0.5.*un_p)./(hS.^0.5+hn.^0.5); c_BC = sqrt(g.*h_BC); 204 205 206 207 h_CD = sqrt(hE.*hw); u_CD = (hE.^0.5.*uE_p+hw.^0.5.*uw_p)./(hE.^0.5+hw.^0.5); c_CD = sqrt(g.*h_CD); 208 209 210 211 h_DA = sqrt(hN.*hs); u_DA = (hN.^0.5.*uN_p+hs.^0.5.*us_p)./(hN.^0.5+hs.^0.5); c_DA = sqrt(g.*h_DA); 212 213 214 215 216 217 218 219 220 221 LamdAB_up=abs(u_AB+c_AB).*(abs(u_AB+c_AB)>=0.01); *(abs(u_AB-c_AB)>=0.01); LamdBC_up=abs(u_BC+c_BC).*(abs(u_BC+c_BC)>=0.01); *(abs(u_BC-c_BC)>=0.01); LamdCD_up=abs(u_CD+c_CD).*(abs(u_CD+c_CD)>=0.01); *(abs(u_CD-c_CD)>=0.01); LamdDA_up=abs(u_DA+c_DA).*(abs(u_DA+c_DA)>=0.01); *(abs(u_DA-c_DA)>=0.01); LamdAB_dn=abs(u_AB-c_AB) LamdBC_dn=abs(u_BC-c_BC) LamdCD_dn=abs(u_CD-c_CD) LamdDA_dn=abs(u_DA-c_DA) 222 223 224 225 226 227 228 229 230 231 232 % Ca.nh AB %%%%%%%%%% ind1=find(LamdAB_up==0); ind2=find(LamdAB_dn==0); if ~isempty(ind1), dLamAB = (uW_p(ind1) + sqrt(g.*hW(ind1)))-(ue_p(ind1) + sqrt(g.*he(ind1))); LamdAB_up(ind1) = LamdAB_up(ind1).^2./(4*dLamAB) + dLamAB; end if ~isempty(ind2), dLamAB = (uW_p(ind2) - sqrt(g.*hW(ind2)))-(ue_p(ind2) - sqrt(g.*he(ind2))); LamdAB_dn(ind2) = LamdAB_dn(ind2).^2./(4*dLamAB) + dLamAB; end 233 234 235 236 237 238 239 240 241 242 243 % Ca.nh BC %%%%%%%%%% ind1=find(LamdBC_up==0); ind2=find(LamdBC_dn==0); if ~isempty(ind1), dLamBC = (un_p(ind1) + sqrt(g.*hn(ind1)))-(uS_p(ind1) + sqrt(g.*hS(ind1))); LamdBC_up(ind1) = LamdBC_up(ind1).^2./(4*dLamBC) + dLamBC; end if ~isempty(ind2), dLamBC = (un_p(ind2) - sqrt(g.*hn(ind2)))-(uS_p(ind2) - sqrt(g.*hS(ind2))); LamdBC_dn(ind2) = LamdBC_dn(ind2).^2./(4*dLamBC) + dLamBC; end 121 244 245 246 247 248 249 250 251 252 253 254 % Ca.nh CD %%%%%%%%%% ind1=find(LamdCD_up==0); ind2=find(LamdCD_dn==0); if ~isempty(ind1), dLamCD = (uw_p(ind1) + sqrt(g.*hw(ind1)))-(uE_p(ind1) + sqrt(g.*hE(ind1))); LamdCD_up(ind1) = LamdCD_up(ind1).^2./(4*dLamCD) + dLamCD; end if ~isempty(ind2), dLamCD = (uw_p(ind2) - sqrt(g.*hw(ind2)))-(uE_p(ind2) - sqrt(g.*hE(ind2))); LamdCD_dn(ind2) = LamdCD_dn(ind2).^2./(4*dLamCD) + dLamCD; end 255 256 257 258 259 260 261 262 263 264 265 266 % Ca.nh DA %%%%%%%%%% ind1=find(LamdDA_up==0); ind2=find(LamdDA_dn==0); if ~isempty(ind1), dLamDA = (uN_p(ind1) + sqrt(g.*hN(ind1)))-(us_p(ind1) + sqrt(g.*hs(ind1))); LamdDA_up(ind1) = LamdDA_up(ind1).^2./(4*dLamDA) + dLamDA; end if ~isempty(ind2), dLamDA = (uN_p(ind2) - sqrt(g.*hN(ind2)))-(us_p(ind2) - sqrt(g.*hs(ind2))); LamdDA_dn(ind2) = LamdDA_dn(ind2).^2./(4*dLamDA) + dLamDA; end 267 268 269 270 271 alfa_AB=max(abs(LamdAB_up),abs(LamdAB_dn)); alfa_BC=max(abs(LamdBC_up),abs(LamdBC_dn)); alfa_CD=max(abs(LamdCD_up),abs(LamdCD_dn)); alfa_DA=max(abs(LamdDA_up),abs(LamdDA_dn)); 272 273 274 275 %%%%%%%% Xap xi ma tran Jacobian co he so hang theo phuong phap ROE %%%%% %%%%%%%%%%%%%%% FI = 0.5(FE + FW - Alpha*|(uE - uW)|) %%%%%%%%%%%%%%%%% 276 277 278 279 280 F_AB F_BC F_CD F_AD = = = = 0.5*(Fe 0.5*(Fn 0.5*(Fw 0.5*(Fs + + + + FW FS FE FN - [alfa_AB,alfa_AB,alfa_AB].*(Ue [alfa_BC,alfa_BC,alfa_BC].*(Un [alfa_CD,alfa_CD,alfa_CD].*(UE [alfa_DA,alfa_DA,alfa_DA].*(UN - UW)); US)); Uw)); Us)); 281 282 283 284 % ––––––––––––––– BUOC CORRECTOR ––––––––––––% U(n+1) = U(n)-(dt/deltaV) x SUM(F.s) 285 286 FI = F_AB.*SURF1 + F_BC.*SURF2 - F_CD.*SURF3 - F_AD.*SURF4; 287 288 289 290 % Lam tron cac gia tri nho % FI(find(abs(FI)(0.01*tot), velU(:,dimm)=u(:,i+1); velV(:,dimm)=v(:,i+1); hight(:,dimm)=h(:,i+1); 305 tout(dimm)=T; 306 307 dimm = dimm+1; t=0; fprintf(’Da tinh duoc %3.1f%% \n’, T/tot*100) 308 309 310 311 end 312 313 314 315 T=T+dt; t =t+dt; 316 317 318 319 320 h(:,i)=h(:,i+1); u(:,i)=u(:,i+1); v(:,i)=v(:,i+1); U(:,i)=U(:,i+1); 321 322 end % KET THUC VONG LAP CHINH 323 324 time = cputime-time; 325 326 fprintf(’Thoi gian tinh la: %3.1f \n’, time) 327 328 eval([’save ’,fileout]); %de ve~ mot vai mo phong 329 330 return 123 B.3.2 prehalf.m function [h05,u05,v05,dh,du,dv,dt] = prehalf(h,u,v,z,Xc,Yc,xc,yc,ID, Ch,Et,dCr,dEr,dcntrX,dcntrY); g=9.81; CFL=1; [dhC,dhE,dhc,dhe]=tb2d(h,ID,dcntrX,dcntrY); [duC,duE,duc,due]=tb2d(u,ID,dcntrX,dcntrY); [dvC,dvE,dvc,dve]=tb2d(v,ID,dcntrX,dcntrY); 10 11 Etx = Et(:,1); Ety = Et(:,2); Chx = Ch(:,1); Chy = Ch(:,2); 12 13 14 15 % Tinh toan van toc theo huong Eta va Chi uEt = u.*Etx + v.*Ety; uCh = u.*Chx+v.*Chy; 16 17 18 19 lamC = max(abs(uCh+sqrt(g.*h)),abs(uCh-sqrt(g.*h))); lamE = max(abs(uEt+sqrt(g.*h)),(uEt-sqrt(g.*h))); dt= CFL/max(lamC./dCr+lamE./dEr); 20 21 22 %% Su dung phuong trinh da.ng khong bao toan theo U=(h,u,v), %% Tinh theo Eta va‘ Chi 23 24 25 26 27 h05 = h - dt/2*((uEt.*dhe + uCh.*dhc)+h.*(Etx.*due + Ety.*dve + Chx.*duc + Chy.*dvc)); u05 = u - dt/2*(uCh.*duc + uEt.*due + g*(Chx.*dhc + Etx.*dhe)); v05 = v - dt/2*(uCh.*dvc + uEt.*dve + g*(Chy.*dhc + Ety.*dhe)); 28 29 30 31 dh = [dhC,dhE]; du = [duC,duE]; dv = [dvC,dvE]; 32 33 return 124 B.3.3 mimodf.m function [z]=mimodf(d) z=sign(d(:,1)).*max(0,min(abs(d(:,1)),sign(d(:,1)).*d(:,2))); return 125 B.3.4 mxmodf.m function [z]=mxmodf(d) z=sign(d(:,1)).*max(sign(d(:,1)).*d(:,2), abs(d(:,1))).*max(0, sign(d(:,1)).*sign(d(:,2))); return 126 B.3.5 tb2d.m function [dCh,dEt,dch,det]=tb2d(UVH,adj,dcntrX,dcntrY) SuprB=1; ENWS = tbmab(UVH,adj); DR = sqrt(dcntrX.^2+dcntrY.^2); 10 11 12 % Tru*‘ UVH(i+1)-UVH(i) va‘ UVH(i)-UVH(i-1) % theo huong Eta ( truong hop cua truc nam - bac) % -(j - j+1)_North va‘ (j-j-1)_South deltaEt = [UVH,UVH] - ENWS(:,[2,4]); deltaEt(:,1) = -deltaEt(:,1); 13 14 15 16 17 % theo huong Chi ( truong hop cua truc dong - tay) % -(i - i+1)_East va‘ (i - i-1)_West deltaCh = [UVH,UVH] - ENWS(:,[1,3]); deltaCh(:,1) = -deltaCh(:,1); 18 19 20 21 var1=mxmodf(deltaCh); var2=mimodf(SuprB*deltaCh); dCh=mimodf([var1,var2]); 22 23 24 25 trCh1 = [deltaCh] == [dCh,dCh] & [dCh,dCh]~=0; trCh2 = [SuprB*deltaCh] == [dCh,dCh] & [dCh,dCh]~=0; EW = DR(:,[1,3]); 26 27 28 29 30 31 East = zeros(length(DR),1); West = East; East(trCh1(:,1)==1 | trCh2(:,1)==1)=1; West(trCh1(:,2)==1 | trCh2(:,2)==1)=1; West(East==0 & West==0) = 1; West(East==1 & West==1) = 0; 32 33 ddCh = EW([East,West]==1); 34 35 36 37 var1=mxmodf(deltaEt); var2=mimodf(SuprB*deltaEt); dEt=mimodf([var1,var2]); 38 39 40 41 trEt1 = [SuprB*deltaEt] == [dEt,dEt] & [dEt,dEt]~=0; trEt2 = [SuprB*deltaEt] == [dEt,dEt] & [dEt,dEt]~=0; NS = DR(:,[2,4]); 42 43 North = zeros(length(DR),1); South = North; 44 45 46 47 North(trEt1(:,1)==1 | trEt2(:,1)==1)=1; South(trEt1(:,2)==1 | trEt2(:,2)==1)=1; South(South==0 & North==0) = 1; 127 48 49 South(South==1 & North==1)=0; ddEt = NS([North,South]==1); 50 51 52 det = dEt./ddEt; return dch = dCh./ddCh; 128 B.3.6 tbmab.m function [ENWS] = tbmab(UVH,ID); % Cac te bao bien co index la‘ IDtemp = ID==0; tmp = (1:1:length(UVH))’; IDtemp = IDtemp.*[tmp,tmp,tmp,tmp] + ID; varID = UVH(IDtemp); ENWS = varID; return 129 B.3.7 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 tbmas.m function [UDLR] = tbmas(UVH,Dd,ID,type,dir,phi); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ham tbmas.m tinh toan cac bien cac te bao % ke nhau, va cac dieu kien bien tuong ung cho cac te bao ma nhu sau: % h(g) = h(i), dh(g) = -dh(i) g: ghost % u(g) = -u(i), du(g) = du(i) v cu~ng tuong tu % Inputs: % (IF la h ) % UVH = velocity hay height % ID = ma tran ID % Dd = Dch, hay Det - vi phan theo huong cua Chi va Eta cua UVH % type = tinh chat (u,v hay h) % huong = E,N,W,S % % (IF la van toc) % UVH = [u,v] - van toc theo hai huong, % Dd = [+/-du,+/-dv] - gradient cua u va v theo huong Eta va Chi % Output: % (IF h )==> UDLR la vecto chua cac gia tri ke^‘ voi te bao dang xet % (IF velo) ==> UDLR la ma tran [Uexrap,Vextrap,Uperpendicular] % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Cac te bao ma (ghost cells) co index la‘ % DK bien su dung cac gia tri +/- o^ can ke^‘ 25 26 27 28 29 id = ID(:,dir); IDtemp = id==0; tmp = (1:1:length(UVH))’; IDtemp = IDtemp.*tmp + id; 30 31 %%%%%%%%%%%%%%% XAC DINH LOAI BIEN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32 33 34 % Neu h thi‘ type = if type ==1, 35 36 37 38 39 40 41 42 43 44 45 46 47 varID = UVH(IDtemp); derivID = Dd(IDtemp); varID = varID + 0.5*derivID; % h(g) = h(i); varID(id==0)=varID(id==0) - 0.5*derivID(id==0); % dh(g) = -dh(i); UDLR = varID; elseif type ==2 , %u hay v thi‘ type=2 u = UVH(IDtemp,1); v = UVH(IDtemp,2); du = Dd(IDtemp,1); dv = Dd(IDtemp,2); uadj = u + 0.5*du; vadj = v + 0.5*dv; u_p = uadj.*cos(phi) + vadj.*sin(phi); 130 ug = u(id==0).*(sin(phi(id==0)).^2-cos(phi(id==0)).^2) -2.*v(id==0) *sin(phi(id==0)).*cos(phi(id==0)); vg = -2*u(id==0).*sin(phi(id==0)).*cos(phi(id==0)) + v(id==0) *(cos(phi(id==0)).^2-sin(phi(id==0))); 48 49 50 51 52 53 dug = du(id==0).*(cos(phi(id==0)).^2-sin(phi(id==0)).^2)+2*dv(id==0) *sin(phi(id==0)).*cos(phi(id==0)); dvg = 2*du(id==0).*sin(phi(id==0)).*cos(phi(id==0))+dv(id==0) *(sin(phi(id==0)).^2-cos(phi(id==0)).^2); 54 55 56 57 58 uadj(id==0) = ug + 0.5*dug; vadj(id==0) = vg + 0.5*dvg; 59 60 61 u_p(id==0) = 0; 62 UDLR = [uadj,vadj,u_p]; 63 64 end 65 66 67 return 131 B.3.8 solwall.m tempid = ID; 10 11 12 13 14 15 % van toc =0 tai walls for k = 1:4, Sol = find(tempid(:,k)==0); if k == 1, uW_p(Sol) = 0; elseif k==2, uS_p(Sol) = 0; elseif k==3, uE_p(Sol) = 0; else uN_p(Sol) = 0; end end Chỉ mục đường cong sóng lan, 38 sốc, 39, 43 tích phân, 38, 39 điền kiện ổn định, 22 điều kiện CFL, 47 ổn định, 22, 28 ước lượng, 21 lỗi, 34 sai số, 21 Tadmor, 34 MAPLE, 45 MATLAB, 83, 96 minmod, 48, 56 phân rã, 28 phương trình liên tục, 7, phương trình nước nơng, 5, 8, 12 sai phân phía, 16 trung tâm, 16 thông lượng Harten-Lax-van Leer, 62 Lax-Friedrichs, 17, 27, 59 Lax-Wendroff, 23 số, 17, 21, 23 toán Riemann, 11, 12 entropy điều kiện, 16 nghiệm, 17, 21, 22, 29 hệ luật bảo toàn, 5, 12 lực khối, lực mặt, lược đồ, 16 điểm, 27 điểm, 26, 28 2D, 25 sai phân, 16 bậc cao, 22 flux-limitter, 23 Godunov, 17 Lax-Friedrichs, 17 Lax-Wendroff, 22 phân rã, 59, 64 phân rã chiều, 58 sai phân, 16 Strang, 58 TVD, 19 upwind, 20 132 ... MỘT NGHIÊN CỨU VỀ BÀI TOÁN VỠ ĐẬP NƯỚC II- NHIỆM VỤ VÀ NỘI DUNG: Xây dựng toán vỡ đập nước dựa hệ phương trình nước nơng dạng luật bảo tồn Giải toán. .. dịng chảy đa pha, Bài tốn vỡ đập nước dạng toán nghiên cứu lan truyền sóng sốc Bài tốn xem xét góc độ tính tốn hàm thơng số dịng nước vận tốc nước, lưu lượng nước, độ cao mực nước, áp suất sinh... Nghiệm giải tích đập nước hl hr Hình 3.1: Bài toán Riemann 1D Ta xét đập nước hình phần mực nước cao tượng trưng cho nước giữ đập nước Phần mực nước thấp tượng trưng cho mực nước ổn định Ta xét