BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP & PTNT TRƯỜNG ĐẠI HỌC THỦY LỢI NGUYỄN VĂN THÌN NGHIÊN CỨU SÓNG TRÀN QUA ĐÊ BIỂN CÓ TƯỜNG ĐỈNH Ở BẮC BỘ LUẬN ÁN TIẾN SĨ KỸ THUẬT HÀ NỘI, NĂM 2014 Luận án tiến sĩ Kỹ thuật BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP & PTNT TRƯỜNG ĐẠI HỌC THỦY LỢI NGUYỄN VĂN THÌN NGHIÊN CỨU SĨNG TRÀN QUA ĐÊ BIỂN CÓ TƯỜNG ĐỈNH Ở BẮC BỘ Chun ngành: Xây dựng cơng trình thủy Mã số: 62-58-40-01 NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Nguyễn Bá Quỳ GS.TS Ngơ Trí Viềng HÀ NỘI, NĂM 2014 Luận án tiến sĩ Kỹ thuật LỜI CAM ĐOAN Tác giả xin cam đoan cơng trình nghiên cứu thân tác giả Các kết nghiên cứu kết luận luận án trung thực, không chép từ nguồn hình thức Việc tham khảo nguồn tài liệu (nếu có) thực trích dẫn ghi nguồn tài liệu tham khảo theo quy định Tác giả luận án Nguyễn Văn Thìn i Luận án tiến sĩ Kỹ thuật LỜI CẢM ƠN Có kết nghiên cứu hơm ngồi cống gắng thân, tác giả xin trân trọng gửi lời cảm ơn sâu sắc đến PGS.TS Nguyễn Bá Quỳ, GS.TS Ngơ Trí Viềng hướng dẫn tận tình Tác giả xin chân thành cảm ơn PGS.TS Thiều Quang Tuấn, PGS.TS Trịnh Minh Thụ, PGS.TS Nguyễn Trung Việt tận tình giúp đỡ mặt trình tác giả thực luận án Tác giả xin bày tỏ lòng biết ơn Ban Giám hiệu nhà trường, phòng Đào tạo ĐH&SĐH, mơn Thủy cơng, khoa Cơng trình, khoa Kỹ thuật biển, phịng Khoa học cơng nghệ đồng nghiệp giúp đỡ tác giả để hoàn thành luận án Tác giả xin cảm ơn Vụ Giáo dục Đại học - Bộ Giáo dục & Đào tạo, Bộ Nông nghiệp PTNT tạo điều kiện cho tác giả trình thực luận án Tác giả xin bày tỏ lịng biết ơn tới gia đình ln sát cánh, động viên tác giả vượt qua khó khăn thực luận án ii Luận án tiến sĩ Kỹ thuật MỤC LỤC DANH MỤC CÁC HÌNH ẢNH vi DANH MỤC CÁC BẢNG BIỂU viii DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ ix MỞ ĐẦU 1 Tính cấp thiết đề tài Mục tiêu nghiên cứu Đối tượng phạm vi nghiên cứu Nội dung nghiên cứu Cách tiếp cận phương pháp nghiên cứu Ý nghĩa khoa học thực tiễn Những đóng góp luận án Cấu trúc luận án CHƯƠNG TỔNG QUAN NGHIÊN CỨU SÓNG TRÀN QUA ĐÊ BIỂN CÓ TƯỜNG ĐỈNH THẤP Tổng quan nghiên cứu sóng tràn qua đê biển .5 Tổng quan nghiên cứu sóng tràn giới Tổng quan nghiên cứu sóng tràn Việt Nam .6 Nguyên nhân, chế phá hoại đê biển giải pháp giảm thiểu Nguyên nhân hư hỏng đê biển Cơ chế phá hoại đê biển sóng tràn Giải pháp giảm thiểu sóng tràn cho đê biển Bắc 12 Tổng quan đê biển có tường đỉnh thấp Miền Bắc 12 Khái quát chung 12 Đê biển có tường đỉnh thấp Hà Tĩnh 14 Đê biển có tường đỉnh thấp Thanh Hóa 16 Đê biển có tường đỉnh thấp Nam Định 16 Đê biển có tường đỉnh thấp Hải Phòng 18 Tổng quan nghiên cứu sóng tràn qua đê biển có tường đỉnh thấp 18 Ở giới 18 Ở Việt Nam 20 iii Luận án tiến sĩ Kỹ thuật Kết luận chương 26 CHƯƠNG MƠ HÌNH VẬT LÝ MÁNG SÓNG NGHIÊN CỨU ẢNH HƯỞNG CỦA TƯỜNG ĐỈNH THẤP ĐẾN SÓNG TRÀN QUA ĐÊ BIỂN 28 Mục đích nghiên cứu 28 Cơ sở lý thuyết tương tự 28 Tương tự hình học 28 Tương tự động học .29 Tương tự động lực học 29 Mơ tả thí nghiệm sóng .29 Máng sóng 29 Mơ hình đê tham số thí nghiệm .31 Chương trình thí nghiệm 32 Trình tự thí nghiệm tham số đo đạc .34 Phân tích kết thí nghiệm 37 Ảnh hưởng tường đỉnh đến lưu lượng sóng tràn trung bình .37 Ảnh hưởng tường đến chiều cao sóng bắn 40 Kết luận chương 42 CHƯƠNG TƯƠNG TÁC SĨNG – TƯỜNG VÀ DỊNG CHẢY SĨNG TRÀN QUA ĐÊ BIỂN CÓ TƯỜNG ĐỈNH THẤP 43 Đặt vấn đề 43 Mơ hình NLSW (Tuấn Oumeraci, 2010) 46 Hệ phương trình 46 Sóng tràn sóng ngẫu nhiên 47 Mơ hình RANS-VOF (COBRAS-UC, máng sóng số) 52 Giới thiệu máng sóng số 52 Hệ phương trình 54 Sóng tràn sóng ngẫu nhiên 55 Sóng tràn sóng 57 Kết luận chương 72 CHƯƠNG ÁP DỤNG KẾT QUẢ NGHIÊN CỨU TÍNH TỐN SĨNG TRÀN QUA ĐÊ BIỂN GIAO THỦY, TỈNH NAM ĐỊNH 74 Giới thiệu cơng trình 74 iv Luận án tiến sĩ Kỹ thuật Tính tốn sóng tràn 75 Các công thức 75 Thiết lập bảng tính tốn sóng tràn 75 Xây dựng phần mềm tính tốn sóng tràn 79 Kết tính tốn sóng tràn đề xuất mặt cắt ngang đê biển 81 Kết tính sóng tràn qua đê biển Giao Thủy, tỉnh Nam Định .81 Đề xuất mặt cắt ngang đê biển 83 Phạm vi áp dụng 83 Kết luận chương 85 KẾT LUẬN VÀ KIẾN NGHỊ .86 I Kết đạt luận án 86 II Những đóng góp luận án 88 III Tồn hướng phát triển 89 IV Kiến nghị .89 DANH MỤC CƠNG TRÌNH ĐÃ CƠNG BỐ 90 TÀI LIỆU THAM KHẢO 91 PHỤ LỤC 99 v Luận án tiến sĩ Kỹ thuật DANH MỤC CÁC HÌNH ẢNH Hình 1.1 Đê biển vịnh Isahaya, Nagasaki, Nhật Hình 1.2 Sóng tràn gây phá hoại đê biển Nam Định [1] Hình 1.3 Sóng tràn qua đê biển Nam Định bão số 7/2005[1] Hình 1.4 Thí nghiệm CHLB Đức .10 Hình 1.5 Thí nghiệm Viện KHTL Việt Nam 10 Hình 1.6 Đê biển Hậu Lộc, Thanh Hóa sau bão số 7/2005 11 Hình 1.7 Cây cố hư hỏng đê biển [1] 11 Hình 1.8 Cơng trình giảm sóng trước đê Giao Thủy, Nam Định (3/2014) 12 Hình 1.9 Một số hình dạng tường đỉnh thấp Việt Nam 13 Hình 1.10 Đê biển Hội Thống, Nghi Xuân, Hà Tĩnh [3] 15 Hình 1.11 Đê biển Phúc Long Nhượng, Cẩm Xuyên, Hà Tĩnh [3] 15 Hình 1.12 Đê biển Hậu Lộc, Thanh Hóa [7] 16 Hình 1.13 Đê biển Giao Thủy, Nam Định 17 Hình 1.14 Đê biển Quất Lâm, Nam Định 17 Hình 1.15 Đê biển Cát Hải, Hải Phòng 18 Hình 1.16 Xác định độ dốc mái đê quy đổi có tường đỉnh thấp [9] 19 Hình 1.17 Ảnh hưởng tường đỉnh thấp đê tham số chi phối [56] 21 Hình 1.18 Thí nghiệm sóng tràn qua đê biển nghiên cứu [56] 21 Hình 1.19 Chiết giảm sóng tràn tường đỉnh thấp: sóng vỡ [56] 22 Hình 1.20 Chiết giảm sóng tràn tường đỉnh thấp: sóng khơng vỡ [56] 22 Hình 1.21 Sơ đồ thí nghiệm sóng tràn qua đê biển có tường đỉnh thấp [58] 24 Hình 1.22 Các tham số đê tường tính tốn sóng tràn [58] 24 Hình 1.23 Hệ số ảnh hưởng chiều cao tường w [58] .25 Hình 1.24 Hệ số ảnh hưởng chiều rộng thềm trước tường s [58] 25 Hình 2.1 Tồn cảnh máng sóng sử dụng thí nghiệm .30 Hình 2.2 Máy tạo sóng 30 Hình 2.3 Máng sóng 31 Hình 2.4 Khu vực điều khiển máy tạo sóng 31 Hình 2.5 Mơ hình thí nghiệm sóng 32 Hình 2.6 Xử lý chống thấm qua đê thí nghiệm 33 Hình 2.7 Máy tính, thiết bị nhận lưu trữ tín hiệu 34 Hình 2.8 Kiểm tra đầu đo sóng chân đê 35 Hình 2.9 Mơ hình xác định lưu lượng sóng tràn 36 Hình 2.10 Mơ hình xác định chiều cao sóng bắn 36 Hình 2.11 Mơ hình xác định chiều sâu dịng chảy tràn 36 Hình 2.12 Hệ số ảnh hưởng tổng hợp tường đỉnh thấp v (đo đạc - tính tốn) .38 Hình 2.13 Biểu đồ quan hệ (Hb/H) với (S.H/g.W.T2) 40 Hình 3.1 Mơ tả tường thẳng đứng qua mái nghiêng (TAW-2002) – PA1 48 vi Luận án tiến sĩ Kỹ thuật Hình 3.2 Mơ tả tường chiều cao lưu không tương đương – PA2 49 Hình 3.3 Kết tính tốn sóng tràn mơ hình NLSW (PA1) 51 Hình 3.4 Kết tính tốn sóng tràn mơ hình NLSW (PA2) 52 Hình 3.5 Sóng tràn qua đê (MH vật lý) 53 Hình 3.6 Sóng tràn qua đê (MH máng sóng số) 53 Hình 3.7 Lưu lượng sóng tràn trung bình (Sóng ngẫu nhiên, COBRAS-UC) 57 Hình 3.8 Lưu lượng sóng tràn trung bình (Sóng đều, COBRAS-UC) 59 Hình 3.9 Sóng bắn sóng va vào tường (MH Vật lý) .61 Hình 3.10 Sóng đổ lên đỉnh tường mặt đê (MH Vật lý) 61 Hình 3.11 Sóng chảy thành dịng (MH Vật lý) 62 Hình 3.12 Sóng rút (MH Vật lý) 62 Hình 3.13 Sóng bắn sóng va vào tường t= 27.1s ( MH vật lý) 63 Hình 3.14 Sóng đổ lên đỉnh tường mặt đê t=27.3s ( MH vật lý) 63 Hình 3.15 Sóng chảy thành dịng t = 27.5s ( MH vật lý) .64 Hình 3.16 Sóng rút t=27.8s ( MH vật lý) .64 Hình 3.17 Chiều cao sóng bắn lớn (đặc MH toán, rỗng MH vật lý) .65 Hình 3.18 Chiều sâu chảy tràn lớn đỉnh tường 67 Hình 3.19 Ảnh hưởng chiều rộng thềm đến chiều cao sóng bắn 70 Hình 3.20 Phân bố áp lực sóng lên tường xung quanh thời điểm t* 71 Hình 3.21 Lực sóng tác dụng lên tường 71 Hình 4.1 Đê biển Giao Thủy tỉnh Nam Định 74 Hình 4.2 Giao diện phầm mềm 79 Hình 4.3 Giao diện nhập tham số thiết kế 80 Hình 4.4 Giao diện tính tốn tham số sóng thiết kế 80 Hình 4.5 Giao diện tính tốn sóng tràn qua đê 81 Hình 4.6 Kết tính tốn cho kịch (W,S) khác 83 Hình 4.7 Mặt cắt ngang đê biển theo dự thảo TCVN-2013 [4] 84 Hình 4.8 Mặt cắt ngang đê biển có tưởng đỉnh thấp thềm trước 84 vii Luận án tiến sĩ Kỹ thuật DANH MỤC CÁC BẢNG BIỂU Bảng 1.1 Tổng hợp đê có tường đỉnh thấp Hà Tĩnh [3] .14 Bảng 1.2 Tổng hợp chương trình thí nghiệm sóng ngẫu nhiên .23 Bảng 2.1 Tổng hợp chương trình thí nghiệm sóng 33 Bảng 2.2 Kết thí nghiệm xác định hệ số ảnh hưởng tổng hợp tường 39 Bảng 2.3 Kết thí nghiệm xác định chiều cao sóng bắn 41 Bảng 3.1 Kết đo đạc tính tốn sóng tràn cho trường hợp điển hình sóng ngẫu nhiên 56 Bảng 3.2 Kết đo đạc tính tốn lưu lượng sóng tràn trung bình sóng 58 Bảng 3.3 Kết đo đạc tính tốn chiều cao sóng bắn lớn 66 Bảng 3.4 Kết đo đạc tính tốn chiều sâu dịng chảy tràn lớn 68 Bảng 4.1 Thiết lập thông số đầu vào .75 Bảng 4.2 Tính tốn tham số sóng thiết kế 77 Bảng 4.3 Tính tốn lưu lượng sóng tràn trung bình 77 Bảng 4.4 Lưu lượng sóng tràn trung bình chiều cao sóng bắn cho đê biển Giao Thủy, tỉnh Nam Định với kịch (W,S) khác .82 viii Luận án tiến sĩ Kỹ thuật } private void Update_E34() { try { tmpValue = double.Parse(E5.Text) / double.Parse(E31.Text); tmpValue = Math.Round(tmpValue, 6); E34.Text = string.Format("{0}", tmpValue); } catch { E34.Text = string.Format("{0}", 0); } } private void Update_E37() { try { //=$E$6/E36 tmpValue = double.Parse(E6.Text) / double.Parse(E36.Text); tmpValue = Math.Round(tmpValue, 6); E37.Text = string.Format("{0}", tmpValue); } catch { E37.Text = string.Format("{0}", 0); } } private void Update_E35() { try { //=E30/1.1 tmpValue = double.Parse(E30.Text) / 1.1; tmpValue = Math.Round(tmpValue, 6); E35.Text = string.Format("{0}", tmpValue); } catch { E35.Text = string.Format("{0}", 0); } } private void Update_E36() { try { //=(9.81*E35*E35)/(2*3.14) tmpValue = (9.81 * double.Parse(E35.Text) * double.Parse(E35.Text)) / (2 * 3.14); tmpValue = Math.Round(tmpValue, 6); E36.Text = string.Format("{0}", tmpValue); } catch { E36.Text = string.Format("{0}", 0); } } 101 Luận án tiến sĩ Kỹ thuật private void Update_J4() { try { J4.Text = string.Format("{0}", double.Parse(E16.Text) double.Parse(E4.Text)); } catch { J4.Text = string.Format("{0}", 0); } } private void Update_J6() { try { if (E18.Text == "-999") return; tmpValue = - 0.0033 * double.Parse(E18.Text); tmpValue = Math.Round(tmpValue, 6); J6.Text = string.Format("{0}", tmpValue); } catch { J6.Text = string.Format("{0}", 0); } } private void Update_J7() { //IF($E$23=0,1-$E$22/J13,1-($E$22*(0.5+0.5*COS(3.14*$E$23/J18))/J13)) try { if (double.Parse(E23.Text) == 0) { tmpValue = - double.Parse(E22.Text) / double.Parse(J13.Text); tmpValue = Math.Round(tmpValue, 6); J7.Text = string.Format("{0}", tmpValue); } else { tmpValue = - (double.Parse(E22.Text) * (0.5 + 0.5 * Math.Cos(3.14 * double.Parse(E23.Text) / double.Parse(J18.Text))) / double.Parse(J13.Text)); tmpValue = Math.Round(tmpValue, 6); J7.Text = string.Format("{0}", tmpValue); } } catch { J7.Text = string.Format("{0}", 0); } } private void Update_J9() { //=1+J8*E13/((J4-E13)*J16) try { 102 Luận án tiến sĩ Kỹ thuật tmpValue = + double.Parse(J8.Text) * double.Parse(E13.Text) / ((double.Parse(J4.Text) - double.Parse(E13.Text)) * double.Parse(J16.Text)); tmpValue = Math.Round(tmpValue, 6); J9.Text = string.Format("{0}", tmpValue); } catch { J9.Text = string.Format("{0}", 0); } } private void Update_J11() { //=1+J10*E14/(E6*J16) try { if (J10.Text == "-999" || E14.Text == "-999" || E6.Text == "-999" || J16.Text == "-999") return; tmpValue = + double.Parse(J10.Text) * double.Parse(E14.Text) / (double.Parse(E6.Text)) * double.Parse(J16.Text); tmpValue = Math.Round(tmpValue, 6); J11.Text = string.Format("{0}", tmpValue); } catch { J11.Text = string.Format("{0}", 0); } } private void Update_J12() { //=1/(J9*J11) try { if (J9.Text == "-999" || J11.Text == "-999" ) return; tmpValue = / (double.Parse(J9.Text) * double.Parse(J11.Text)); tmpValue = Math.Round(tmpValue, 6); J12.Text = string.Format("{0}",tmpValue); } catch { J12.Text = string.Format("{0}", 0); } } private void Update_J13() { //=$E$6*$E$20+$E$22+$E$6*$E$21 try { if (E6.Text == "-999" || E20.Text == "-999" || E22.Text == "-999" || E21.Text == "-999") return; tmpValue double.Parse(E22.Text) + tmpValue J13.Text =double.Parse(E6.Text) * double.Parse(E20.Text) + double.Parse(E6.Text) * double.Parse(E21.Text); = Math.Round(tmpValue, 6); = string.Format("{0}", tmpValue); 103 Luận án tiến sĩ Kỹ thuật } catch { J13.Text = string.Format("{0}", 0); } } private void Update_J14() { //=(1.5*$E$6-$E$23)*$E$20+$E$22+(J4-$E$13+$E$23)*$E$21+$E$13+E14 try { if (E6.Text == "-999" || E20.Text == "-999" || E21.Text == "-999" || E22.Text == "-999" || E23.Text == "-999" || J4.Text == "-999" || E13.Text == "-999" || E14.Text == "-999") return; tmpValue double.Parse(E20.Text) + double.Parse(E13.Text) + double.Parse(E13.Text) + tmpValue J14.Text } catch { J14.Text } } = (1.5 * double.Parse(E6.Text) - double.Parse(E23.Text)) * double.Parse(E22.Text) + (double.Parse(J4.Text) double.Parse(E23.Text)) * double.Parse(E21.Text) + double.Parse(E14.Text); = Math.Round(tmpValue, 6); = string.Format("{0}", tmpValue); = string.Format("{0}", 0); private void Update_J15() { //=(J4+1.5*$E$6)/(J14-$E$22) try { if (J4.Text == "-999" || E6.Text == "-999" || J14.Text == "-999" || E22.Text == "-999") return; tmpValue = (double.Parse(J4.Text) + 1.5 * double.Parse(E6.Text)) / (double.Parse(J14.Text) - double.Parse(E22.Text)); tmpValue = Math.Round(tmpValue, 6); J15.Text = string.Format("{0}", tmpValue); } catch { J15.Text = string.Format("{0}", 0); } } private void Update_J16() { //=J15/SQRT($E$37) try { //Sai khac cua functions Sqrt???? //C# Math.Sqrt(double.Parse(E37.Text)) 0.18439088914585774 double //Excel =SQRT($E$37) 0.183616279 if (J15.Text == "-999" || E37.Text == "-999") return; tmpValue = double.Parse(J15.Text) / Math.Sqrt(double.Parse(E37.Text)); 104 Luận án tiến sĩ Kỹ thuật tmpValue = Math.Round(tmpValue, 6); J16.Text = string.Format("{0}", tmpValue); } catch { J16.Text = string.Format("{0}", 0); } } private void Update_J17() { //=J16*J7 try { tmpValue = double.Parse(J16.Text) * double.Parse(J7.Text); tmpValue = Math.Round(tmpValue, 6); J17.Text = string.Format("{0}", tmpValue); } catch { J17.Text = string.Format("{0}", 0); } } private void Update_J18() { //=IF($E$23>0,2*$E$6,J4) try { if (E6.Text == "-999" || J4.Text == "-999") return; if (double.Parse(E23.Text) > 0) { J18.Text = string.Format("{0}", * double.Parse(E6.Text)); } else { J18.Text = string.Format("{0}", double.Parse(J4.Text)); } } catch { J18.Text = string.Format("{0}", 0); } } private void Update_J20() { //=IF(J17>2,100*SQRT(9.81*E6^3)*0.2*EXP(-2.6*(J4E13)/(E6*J16*J12)),(10*SQRT(9.81*E6^3)*0.067*J16*EXP(-4.75*(J4E13)/(E6*J16*J12)))/SQRT(J15)) try { if (E6.Text == "-999" || E13.Text == "-999") return; if (double.Parse(J17.Text) > 2) { tmpValue = 100 * Math.Sqrt(9.81 * Math.Pow(double.Parse(E6.Text), 3)) * 0.2 * Math.Exp(-2.6 * (double.Parse(J4.Text) - double.Parse(E13.Text)) / (double.Parse(E6.Text) * double.Parse(J16.Text) * double.Parse(J12.Text))); tmpValue = Math.Round(tmpValue, 6); J20.Text = string.Format("{0}", tmpValue); 105 Luận án tiến sĩ Kỹ thuật } else { tmpValue = (10 * Math.Sqrt(9.81 * Math.Pow(double.Parse(E6.Text), 3)) * 0.067 * double.Parse(J16.Text) * Math.Exp(-4.75 * (double.Parse(J4.Text) double.Parse(E13.Text)) / (double.Parse(E6.Text) * double.Parse(J16.Text) * double.Parse(J12.Text)))) / Math.Sqrt(double.Parse(J15.Text)); tmpValue = Math.Round(tmpValue, 6); J20.Text = string.Format("{0}", tmpValue); } } catch { J20.Text = string.Format("{0}", 0); } } private void Update_J21() { //==J20*1000 try { J21.Text = string.Format("{0}", double.Parse(J20.Text) * 1000); } catch { J21.Text = string.Format("{0}", 0); } } private void Update_J24() { //=(E14*E6/(9.81*E13*E35^2)) try { if (E6.Text == "-999" || E13.Text == "-999" || E14.Text == "-999" || E35.Text == "-999") return; tmpValue double.Parse(E13.Text) * tmpValue J24.Text } catch { J24.Text } } = (double.Parse(E14.Text) * double.Parse(E6.Text) / (9.81 * Math.Pow(double.Parse(E35.Text), 2))); = Math.Round(tmpValue, 6); = string.Format("{0}", tmpValue); = string.Format("{0}", 0); private void Update_J25() { //=SQRT(1.544*EXP(-23.36*J24)) try { tmpValue = Math.Sqrt(1.544 * Math.Exp(-23.36 * double.Parse(J24.Text))); tmpValue = Math.Round(tmpValue, 6); J25.Text = string.Format("{0}", tmpValue); } catch { J25.Text = string.Format("{0}", 0); 106 Luận án tiến sĩ Kỹ thuật } } private void Update_J26() { // =J25*E6 try { if (E6.Text == "-999" ) return; tmpValue =double.Parse(J25.Text) * double.Parse(E6.Text); tmpValue = Math.Round(tmpValue, 6); J26.Text = string.Format("{0}", tmpValue); } catch { J26.Text = string.Format("{0}", 0); } } #endregion private void cmdAdd_Click(object sender, EventArgs e) { AddPoints(); } private void AddPoints() { //(E13/E14) J26 J21 //String.Format("{0}\t{1}", FirstName,Count) if (txtResult.Text == "") { txtResult.Text = String.Format("{0}\t\t", "(W,S)") + String.Format("{0}\t\t", "Hb") + String.Format("{0}\t\t", "q(l/s/m)"); } txtResult.Text = txtResult.Text + System.Environment.NewLine + String.Format("{0}\t\t", "(" + E13.Text + "/" + E14.Text + ")") + String.Format("{0}\t\t", J26.Text) + String.Format("{0}\t\t", J21.Text); } private void btnReset_Click(object sender, EventArgs e) { txtResult.Text = ""; } private void frmDr_Load(object sender, EventArgs e) { LoadToolTip(); InitValue(); InitValue(true); } private void InitValue(bool bDefault=false) { if (bDefault) { E4.Text = "2.29"; E6.Text = "1.51"; E7.Text = "0.3"; E9.Text = "1.03"; E10.Text = "2.3"; 107 Luận án tiến sĩ Kỹ thuật E13.Text = "0.9"; E14.Text = "1"; E15.Text = "90"; E18.Text = "0"; E20.Text = "4"; E21.Text = "4"; E22.Text = "0"; E23.Text = "0"; E24.Text = "0.3"; E25.Text = "0.85"; E30.Text = "5.89"; E32.Text = "3.56"; E33.Text = "37.76"; J8.Text = "0.99"; J10.Text = "0.72"; } else { E4.Text = "-999"; E6.Text = "-999"; E7.Text = "-999"; E9.Text = "-999"; E10.Text = "-999"; E13.Text = "-999"; E14.Text = "-999"; E15.Text = "-999"; E18.Text = "-999"; E20.Text = "-999"; E21.Text = "-999"; E22.Text = "-999"; E23.Text = "-999"; E24.Text = "-999"; E25.Text = "-999"; E30.Text = "-999"; E32.Text = "-999"; E33.Text = "-999"; J8.Text = "-999"; J10.Text = "-999"; } } private void LoadToolTip() { string tmp; System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip(); ToolTip1.ShowAlways = true; tmp = @"Cao độ đáy biển vị trí tính sóng thiết kế (thường chân cơng trình)"; ToolTip1.SetToolTip(E7, tmp); tmp = @"at = 900 bề mặt tường phía biển có dạng thẳng đứng"; ToolTip1.SetToolTip(E15, tmp); tmp = @"Giả thiết trường hợp nguy hiểm sóng tiến tới chân cơng trình theo phương vng góc với trục đê, đó: b = 00"; ToolTip1.SetToolTip(E18, tmp); 108 Luận án tiến sĩ Kỹ thuật tmp = @"dh < nằm MNTK dh = nằm ngang MNTK dh > nằm MNTK (cơ ngập nước)"; ToolTip1.SetToolTip(E23, tmp); tmp = @"Thông số xác định hệ số chiết giảm đê (x): * x = Rslp dh < * x = 2.Hs dh > 0"; ToolTip1.SetToolTip(J18, tmp); } private void btnReport_Click(object sender, EventArgs e) { frmPlot frm = new frmPlot(); frm.PlotData(txtResult.Text, true); frm.ShowDialog(); } private void E9_TextChanged(object sender, EventArgs e) { Update_E11(); } private void E10_TextChanged(object sender, EventArgs e) { Update_E11(); } private void E13_TextChanged(object sender, EventArgs e) { Update_E16(); Update_J9(); Update_J14(); Update_J20(); Update_J24(); } private void E16_TextChanged(object sender, EventArgs e) { Update_E17(); Update_J4(); Update_J6(); } private void E30_TextChanged(object sender, EventArgs e) { Update_E31(); Update_E35(); } private void E31_TextChanged(object sender, EventArgs e) { Update_E34(); } private void E5_TextChanged(object sender, EventArgs e) { Update_E34(); } private void E4_TextChanged(object sender, EventArgs e) 109 Luận án tiến sĩ Kỹ thuật { Update_J4(); } private void E23_TextChanged(object sender, EventArgs e) { Update_J7(); Update_J14(); Update_J18(); } private void E22_TextChanged(object sender, EventArgs e) { Update_J7(); Update_J13(); Update_J14(); Update_J15(); } private void J13_TextChanged(object sender, EventArgs e) { Update_J7(); } private void J18_TextChanged(object sender, EventArgs e) { Update_J7(); } private void J8_TextChanged(object sender, EventArgs e) { Update_J9(); } private void J4_TextChanged(object sender, EventArgs e) { Update_J9(); Update_J14(); Update_J15(); Update_J18(); Update_J20(); } private void J16_TextChanged(object sender, EventArgs e) { Update_J9(); Update_J11(); Update_J17(); Update_J20(); } private void J10_TextChanged(object sender, EventArgs e) { Update_J11(); } private void E14_TextChanged(object sender, EventArgs e) { Update_J11(); Update_J14(); Update_J24(); 110 Luận án tiến sĩ Kỹ thuật } private void E6_TextChanged(object sender, EventArgs e) { Update_E37(); Update_J11(); Update_J13(); Update_J14(); Update_J15(); Update_J18(); Update_J20(); Update_J24(); Update_J26(); } private void J9_TextChanged(object sender, EventArgs e) { Update_J12(); } private void J11_TextChanged(object sender, EventArgs e) { Update_J12(); } private void E20_TextChanged(object sender, EventArgs e) { Update_J13(); Update_J14(); } private void E21_TextChanged(object sender, EventArgs e) { Update_J13(); Update_J14(); } private void J14_TextChanged(object sender, EventArgs e) { Update_J15(); } private void J15_TextChanged(object sender, EventArgs e) { Update_J16(); Update_J20(); } private void E37_TextChanged(object sender, EventArgs e) { Update_J16(); } private void J7_TextChanged(object sender, EventArgs e) { Update_J17(); } private void J17_TextChanged(object sender, EventArgs e) { Update_J20(); 111 Luận án tiến sĩ Kỹ thuật } private void J12_TextChanged(object sender, EventArgs e) { Update_J20(); } private void J20_TextChanged(object sender, EventArgs e) { Update_J21(); } private void E35_TextChanged(object sender, EventArgs e) { Update_J24(); Update_E36(); } private void J24_TextChanged(object sender, EventArgs e) { Update_J25(); } private void J25_TextChanged(object sender, EventArgs e) { Update_J26(); } private void btnDefaultValue_Click(object sender, EventArgs e) { InitValue(true); } private void E36_TextChanged(object sender, EventArgs e) { Update_E37(); } private void btnAboutUs_Click(object sender, EventArgs e) { frmAbout frm = new frmAbout(); frm.ShowDialog(); } private void btnSave_Click(object sender, EventArgs e) { try { if (txtResult.Text.Trim() == "") { MessageBox.Show("Chưa có liệu","Thơng báo"); return; } SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.InitialDirectory = @"C:\"; saveFileDialog1.Title = "Save text Files"; //saveFileDialog1.CheckFileExists = true; saveFileDialog1.CheckPathExists = true; saveFileDialog1.DefaultExt = "txt"; saveFileDialog1.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"; 112 Luận án tiến sĩ Kỹ thuật saveFileDialog1.FilterIndex = 2; saveFileDialog1.RestoreDirectory = true; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { File.WriteAllText(saveFileDialog1.FileName, txtResult.Text); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnLoad_Click(object sender, EventArgs e) { string fileName = ""; bool bHeader = true; OpenFileDialog theDialog = new OpenFileDialog(); theDialog.Title = "Load file tổ hợp"; theDialog.Filter = "TXT files|*.txt"; theDialog.InitialDirectory = @"C:\"; if (theDialog.ShowDialog() == DialogResult.OK) { fileName= theDialog.FileName.ToString(); System.Collections.Generic.IEnumerable lines = File.ReadLines(fileName); // Read in lines from file foreach (string line in File.ReadLines(fileName)) { try { // skip header file if (bHeader) { bHeader = false; } else { string[] cols = line.Split('\t'); E13.Text = cols[1].Trim(); //W E14.Text = cols[0].Trim(); //S AddPoints(); } } catch { } } } } } } using System; using System.Collections.Generic; 113 Luận án tiến sĩ Kỹ thuật using using using using using using using System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms; ZedGraph; namespace ImageGPS { public partial class frmPlot : Form { public List mySeries= new List(); public List myLines = new List(); public frmPlot() { InitializeComponent(); } public void PlotData(string strContent, bool skipHeader) { try { this.Cursor = Cursors.WaitCursor; this.Text = "Báo cáo thống kê"; ImportData(strContent, skipHeader); CreateGraph(ZedGraphControl1); this.Cursor = Cursors.Default; } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void ImportData(string strContent, bool skipHeader) { int rowIndex=0; double tmpValue=0; string strData; string strTag; DataSeries seriHb = new DataSeries(); DataSeries seriQ = new DataSeries(); if (strContent.Trim() =="") { return; } try { string[] lines = strContent.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None); seriHb.Name = "Hb"; seriHb.LineColor = Color.Blue; seriHb.Symbol.Type = SymbolType.Circle; seriQ.Name = "Q"; seriHb.LineColor = Color.Red; 114 Luận án tiến sĩ Kỹ thuật seriHb.Symbol.Type = SymbolType.Circle; for (int i = 0; i < lines.Length; i++) { if (!(skipHeader && i == 0)) { strData = lines[i]; string[] cols = strData.Split(new string[] { "\t\t", "\t\t" }, StringSplitOptions.None); rowIndex++; tmpValue = Double.Parse(cols[1]); strTag = cols[0].Trim() + "\t" + tmpValue.ToString(); seriHb.Data.Add(rowIndex, tmpValue,strTag); tmpValue = Double.Parse(cols[2]); seriQ.Data.Add(rowIndex, tmpValue, strTag); } } mySeries.Add(seriHb); mySeries.Add(seriQ); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void CreateGraph(ZedGraph.ZedGraphControl zgc) { GraphPane grf = zgc.GraphPane; grf.Title.Text = "Kết mơ hình"; grf.YAxis.Title.Text = "Giá trị"; grf.XAxis.Title.Text = "Lần thử"; grf.XAxis.Type = AxisType.Ordinal; //grf.XAxis.Scale.MajorUnit = DateUnit.Month; //grf.XAxis.Scale.MinorUnit = DateUnit.Day; grf.Legend.Position = LegendPos.InsideTopRight; grf.Legend.Gap = 20; grf.Legend.IsHStack = false; grf.XAxis.MajorGrid.IsVisible = true; grf.XAxis.MajorGrid.DashOff = 0; grf.XAxis.MajorGrid.Color = Color.Gray; grf.YAxis.MajorGrid.IsVisible = true; grf.YAxis.MajorGrid.DashOff = 0; grf.YAxis.MajorGrid.Color = Color.Gray; grf.CurveList.Clear(); for (int i = 0; i