1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận án tiến sĩ kỹ thuật nghiên cứu sóng tràn qua đê biển có tường đỉnh ở bắc bộ

124 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 124
Dung lượng 5,24 MB

Nội dung

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 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 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 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 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 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 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 toá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 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 DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ Danh mục từ viết tắt: 2DV-RANS Navier – Stockes chiều – Phương trình chiều ARC Active Reflection Compensation – Hấp thụ sóng phản xạ tự động BĐKH Biến đổi khí hậu COBRAS Cornell Breaking Waves and Structures – Mơ hình máng sóng số ENDEC Energy Decay – Suy giảm lượng sóng FVM Finite volume method – Phương pháp phần tử hữu hạn MH Mơ hình MNTK Mực nước thiết kế NH Nguyên hình NLSW Non-Linear Shallow Water – Phương trình phi tuyến nước nông RANS Reynolds Averaged Navier Stokes – Mô hình tốn họ RANS SPH Smoothed Particle Hydrodynamics – Mơ hình thủy lực SPH SWASH Simulating WAve still Shore – Mơ hình SWASH TAW Technical Report Wave Run-up and Wave Overtopping at Dikes – Sổ tay kỹ thuật tính tốn sóng tràn qua đê TH Trường hợp VOF Volume Of Fluid – Mặt thoáng Các thuật ngữ “Tường đỉnh thấp” tường đỉnh đê có (W/Hs ≤ 0.5) “Thềm trước” thềm phía trước tường đỉnh “Sóng bắn” phần sóng tràn nằm khơng khí khơng bám sát bề mặt đê ix MỞ ĐẦU Tính cấp thiết đề tài Việt Nam quốc gia chịu ảnh hưởng nặng nề biến đổi khí hậu nước biển dâng Dọc theo bờ biển trung tâm kinh tế, văn hóa quan trọng nước Để đảm bảo ổn định phát triển bền vững khu vực quan trọng thiết phải xây dựng hệ thống đê biển Mặc dù nhà nước đầu tư đáng kể qua nhiều chương trình, đê biển Bắc có cao trình đỉnh tương đối thấp, bề rộng mặt đê nhỏ, mái đê phía biển, phía đồng dốc, hầu hết đê lại trực diện với biển Đây vùng thường xuyên chịu ảnh hưởng thiên tai (đặc biệt bão, áp thấp nhiệt đới) vùng biển có độ lớn thuỷ triều cao nước dâng bão lớn Vì hệ thống đê biển khu vực ln có nguy sóng tràn qua đê làm vỡ đê gây ảnh hưởng nặng nề đến tính mạng tài sản nhân dân (điều chứng minh thực tế qua bão điển hình năm gần đây) Theo kết thống kê từ cố vỡ đê năm qua sóng tràn gây hư hại mặt đê mái phía đồng phổ biến nước ta Một giải pháp hữu hiệu để giảm sóng tràn qua đê xây tường đỉnh thấp đặt đỉnh đê, việc tơn cao mặt đê hay làm phía thượng lưu tốn khó khả thi đặc biệt tuyến đê bảo vệ thành phố, khu du lịch Đến nay, nghiên cứu sóng tràn qua đê có tường đỉnh thấp đặc biệt nghiên cứu tương tác sóng - tường dịng chảy sóng tràn chưa đầy đủ Việc hiểu rõ ảnh hưởng tường đỉnh thấp thềm trước tường sóng tràn có ý nghĩa khoa học thực tiễn bổ sung luận khoa học cho tiêu chuẩn kỹ thuật đê biển Với ý nghĩa tác giả chọn đề tài “Nghiên cứu sóng tràn qua đê biển có tường đỉnh Bắc bộ” làm đề tài nghiên cứu Mục tiêu nghiên cứu Nghiên cứu ảnh hưởng tường đỉnh thấp đến lưu lượng sóng tràn trung bình tính chất dịng chảy sóng tràn qua đê biển, từ góp phần nâng cao độ tin cậy tính tốn } 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 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 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 } 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 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 } 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 } } 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 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 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 { 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 } 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 } 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 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 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 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

Ngày đăng: 26/04/2023, 19:44

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w