Nghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏNghiên cứu xây dựng mô hình toán mô phỏng dòng chảy và vận chuyển bùn cát trên lưu vực vừa và nhỏ
BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP VÀ PTNT TRƢỜNG ĐẠI HỌC THỦY LỢI ĐÀO TẤN QUY NGHIÊN CỨU XÂY DỰNG MƠ HÌNH TỐN MƠ PHỎNG DÕNG CHẢY VÀ VẬN CHUYỂN BÙN CÁT TRÊN LƢU VỰC VỪA VÀ NHỎ LUẬN ÁN TIẾN SĨ KỸ THUẬT HÀ NỘI, NĂM 2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP VÀ PTNT TRƢỜNG ĐẠI HỌC THỦY LỢI ĐÀO TẤN QUY NGHIÊN CỨU XÂY DỰNG MƠ HÌNH TỐN MƠ PHỎNG DÕNG CHẢY VÀ VẬN CHUYỂN BÙN CÁT TRÊN LƢU VỰC VỪA VÀ NHỎ \ Chuyên ngành: Thủy văn học Mã số: 62 44 90 01 NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS Phạm Thị Hƣơng Lan PGS.TS Ngô Lê Long HÀ NỘI, NĂM 2017 LỜI CẢM ƠN Để hoàn thành đƣợc luận án, tác giả bày tỏ lòng biết ơn sâu sắc tới tập thể thầy cô hƣớng dẫn: PGS.TS Phạm Thị Hƣơng Lan PGS TS Ngô Lê Long (Trƣờng Đại học Thủy Lợi) hƣớng dẫn tận tình suốt trình nghiên cứu viết luận án Nhân dịp này, tác giả trân trọng cảm ơn Bộ mơn Mơ hình tốn Dự báo khí tƣợng thủy văn, Khoa Thủy văn Tài nguyên nƣớc, Phòng Đào tạo Đại học sau Đại học, Ban Giám hiệu Trƣờng Đại học Thủy Lợi tạo điều kiện thuận lợi để luận án đƣợc hoàn thành Tác giả xin trân trọng cảm ơn Bộ mơn Tốn học – Khoa Công nghệ thông tin - Trƣờng Đại học Thủy lợi tạo điều kiện tốt nhất, quan tâm giúp đỡ mặt suốt trình nghiên cứu hoàn thành luận án Cuối cùng, tác giả xin chân thành cám ơn bạn bè, đồng nghiệp gia đình giúp đỡ, khích lệ tinh thần suốt trình thực luận án Hà Nội, tháng 02 năm 2017 Tác giả Đào Tấn Quy i LỜI CAM ĐOAN Tác giả xin cam đoan cơng trình nghiên cứu thân tơi 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 dƣới hình thức Việc tham khảo nguồn tài liệu đƣợc thực trích dẫn ghi nguồn tài liệu tham khảo quy định Hà Nội, tháng 02 năm 2017 Tác giả Đào Tấn Quy ii MỤC LỤC LỜI CẢM ƠN i LỜI CAM ĐOAN ii DANH MỤC BẢNG BIỂU vi DANH MỤC HÌNH VẼ vii DANH MỤC CÁC TỪ VIẾT TẮT ix MỞ ĐẦU…… 1 TÍNH CẤP THIẾT CỦA LUẬN ÁN MỤC TIÊU NGHIÊN CỨU ĐỐI TƢỢNG VÀ PHẠM VI NGHIÊN CỨU NỘI DUNG NGHIÊN CỨU PHƢƠNG PHÁP NGHIÊN CỨU Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA LUẬN ÁN NHỮNG ĐÓNG GÓP MỚI CỦA LUẬN ÁN CẤU TRÖC CỦA LUẬN ÁN CHƢƠNG TỔNG QUAN VỀ MƠ HÌNH TỐN MƠ PHỎNG VẬN CHUYỂN BÙN CÁT TRÊN LƢU VỰC VỪA VÀ NHỎ 1.1 Tổng quan xói mịn vận chuyển bùn cát lƣu vực 1.1.1 Một số khái niệm, thuật ngữ 1.1.1.1 Xói mịn lƣu vực 1.1.1.2 Bùn cát bồi lắng 1.1.2 Ngun nhân gây xói mịn, ảnh hưởng đến xói mịn 1.1.2.1 Các yếu tố gây xói mịn 1.1.2.2 Các yếu tố ảnh hƣởng đến xói mịn 1.1.3 Phân loại xói mịn lưu vực 11 1.1.4 Vận chuyển bùn cát lưu vực 13 1.2 Các nghiên cứu giới 13 1.2.1 Nghiên cứu đánh giá chung xói mịn 13 1.2.2 Nghiên cứu mơ hình mơ q trình xói mịn vận chuyển bùn cát 15 1.2.2.1 Mơ hình kinh nghiệm 15 1.2.2.2 Mơ hình nhận thức 25 1.2.3 Các thuật tốn giải mơ hình mơ vận chuyển bùn cát lƣu vực 30 1.3 Các nghiên cứu nƣớc 31 1.3.1 Nghiên cứu đánh giá chung xói mịn 31 iii Các nghiên cứu ứng dụng mơ hình tốn mơ xói mịn vận chuyển bùn cát 32 1.4 Những khoảng trống nghiên cứu xói mịn vận chuyển bùn cát – Hƣớng nghiên cứu luận án 35 1.4.1 Những khoảng trống nghiên cứu xói mịn vận chuyển bùn cát 35 1.4.2 Định hướng nghiên cứu luận án 36 Kết luận chƣơng 1: 36 CHƢƠNG NGHIÊN CỨU CƠ SỞ KHOA HỌC XÂY DỰNG MƠ HÌNH TỐN MƠ PHỎNG VẬN CHUYỂN BÙN CÁT TRÊN LƢU VỰC VỪA VÀ NHỎ 37 2.1 Cơ sở lý thuyết – Nghiên cứu đề xuất thuật toán giải 37 2.1.1 Cơ sở lý thuyết 37 2.1.1.1 Phƣơng trình thấm 37 2.1.1.2 Phƣơng trình mơ dịng chảy 38 2.1.1.3 Phƣơng trình diễn tốn xói mịn vận chuyển bùn cát 40 2.1.2 Nghiên cứu đề xuất thuật toán giải 44 2.1.2.1 Thuật tốn giải hệ phƣơng trin ̀ h mơ dòng chảy bề mă ̣t lƣu vực 44 2.1.2.2 Thuật toán giải hệ phƣơng trình mô dòng chảy kênh/sông: 49 2.1.2.3 Thuật tốn giải phƣơng trình mơ xói mịn vận chuyển bùn cát lƣu vực 50 2.1.2.4 Thuật toán giải phƣơng trình mơ xói mịn vận chuyển bùn cát kênh/sông 55 2.2 Xây dựng thành phần mơ hình 56 2.2.1 Quá trình liên rãnh 57 2.2.1.1 Khả xói mịn liên rãnh 58 2.2.1.2 Vận chuyển bùn cát liên rãnh 59 2.2.2 Quá trình xói mịn rãnh 61 2.2.2.1 Xói mịn rãnh 61 2.2.2.2 Vận chuyển bùn cát rãnh 63 2.2.3 Q trình lịng kênh/sông 64 2.2.3.1 Sức tải bùn cát kênh/sông 64 2.2.3.2 Vận chuyển bùn cát kênh/sông 65 2.3 Phân tích lựa chọn ngơn ngữ xây dựng mơ hình 65 2.4 Cấu trúc chức số chƣơng trình 66 2.4.1 Cấu trúc số mơ đun 66 2.4.1.1 Cấu trúc chƣơng trình: Có hai thành phần 66 2.4.1.2 Một số mơ đun 66 2.4.2 Chức số chương trình 72 1.3.2 iv 2.5 Giao diện sử dụng chƣơng trình 72 Kết luận chƣơng 74 CHƢƠNG THỬ NGHIỆM MƠ HÌNH ĐỂ MƠ PHỎNG DÕNG CHẢY VÀVẬN CHUYỂN BÙN CÁT CHO MỘT SỐ LƢU VỰC VỪA VÀ NHỎ 75 3.1 Số liệu đầu vào cho mơ hình 75 3.1.1 Tạo sở liệu 75 3.1.2 Chạy mơ hình 75 3.2 Thử nghiệm mơ hình để mơ xói mịn vận chuyển bùn cát 75 3.2.1 Lưu vực Nậm Sập 75 3.2.1.1 Vị trí địa lý 75 3.2.1.2 Đặc điểm địa hình 76 3.2.1.3 Đặc điểm thổ nhưỡng 77 3.2.1.4 Đặc điểm thảm phủ thực vật trạng sử dụng đất 79 3.2.1.5 Đặc điểm khí hậu 80 3.2.1.6 Đặc điểm khí tượng thủy văn 81 3.2.1.7 Yêu cầu số liệu đầu vào mơ hình 85 3.2.1.8 Hiệu chỉnh, kiểm định mơ hình 86 3.2.2 Lưu vực Phiêng Hiềng 90 3.2.2.1 Vị trí địa lý 90 3.2.2.2 Đặc điểm địa hình 91 3.2.2.3 Đặc điểm thổ nhƣỡng 92 3.2.2.4 Đặc điểm thảm phủ thực vật trạng sử dụng đất 94 3.2.2.5 Đặc điểm khí hậu 95 3.2.2.6 Đặc điểm khí tƣợng thủy văn 96 3.2.2.7 Yêu cầu số liệu đầu vào mơ hình 100 3.2.2.8 Hiệu chỉnh, kiểm định mô hình 102 3.2.3 Xây dựng phƣơng trình tƣơng quan 105 3.2.3.1 Phân tích độ nhạy thơng số mơ hình 105 3.2.3.2 Phân tích tƣơng quan xói mịn liên rãnh lƣu vực với độ dốc cƣờng độ mƣa 108 3.2.3.3 Phân tích tƣơng quan xói mịn rãnh lƣu vực với độ dốc cƣờng độ mƣa 110 Kết luận chƣơng 112 KẾT LUẬN VÀ KIẾN NGHỊ 113 DANH MỤC CÁC CƠNG TRÌNH CỦA TÁC GIẢ ĐÃ CƠNG BỐ 115 TÀI LIỆU THAM KHẢO 116 PHỤ LỤC 123 v DANH MỤC BẢNG BIỂU Bảng 1-1 Bảng 3-1 Bảng 3-2 Bảng tra để tính C theo hội Khoa học đất Quốc tế 23 Loại hình sử dụng đất lƣu vực Nậm Sập 79 Loại hình sử dụng đất lƣu vực Phiêng Hiềng 94 vi DANH MỤC HÌNH VẼ Hình 1-1 Hình 1-2 Hình 1-3 Hình 2-1 Hình 2-2 Hình 2-3 Hình 2-4 Hình 2-5 Hình 2-6 Hình 2-7 Hình 2-8 Hình 2-9 Hình 3-1 Hình 3-2 Hình 3-3 Hình 3-4 Hình 3-5 Hình 3-6 Hình 3-7 Hình 3-8 Hình 3-9 Hình 3-10 Hình 3-11 Hình 3-12 Hình 3-13 Hình 3-14 Hình 3-15 Hình 3-16 Hình 3-17 Hình 3-18 Hình 3-19 Hình 3-20 Hình 3-21 Các nhân tố ảnh hƣởng đến xói mịn đất Tỷ lệ xói mịn châu lục giới 14 Sử dụng lƣới hình chữ nhật giải phƣơng trình mơ hình động lực 31 Sơ đồ sai phân Lax- Friedrichs 44 Sơ đồ hình thành dịng chảy vận chuyển bùn cát lƣu vực 56 Sơ đồ tính tốn xói mịn vận chuyển bùn cát 57 Sơ đồ khối tính tốn xói mòn vận chuyển bùn cát liên rãnh 66 Sơ đồ khối tính tốn xói mịn vận chuyển bùn cát rãnh 69 Sơ đồ khối tính lƣợng bùn cát vận chuyển sơng đến cửa 69 Màn hình khởi động chƣơng trình 72 Giao diện mở tệp liệu 73 Giao diện chạy chƣơng trình 73 Bản đồ vị trí lƣu vực Nậm Sập 76 Bản đồ địa hình lƣu vực Nậm Sập 77 Bản đồ thổ nhƣỡng lƣu vực Nậm Sập 78 Bản đồ trạng sử dụng đất lƣu vực Nậm Sập 80 Bản đồ mạng lƣới sông ngòi lƣu vực Nậm Sập 82 Bản đồ lƣới trạm quan trắc lƣu vực Nậm Sập 83 Bản đồ đẳng trị mơ đun dịng chảy lƣu vực Nậm Sập 84 Các tiểu lƣu vực Nậm Sập 86 Đƣờng q trình lƣu lƣợng tính tốn thực đo 87 Đƣờng trình hàm lƣợng bùn cát tính tốn thực đo 88 Đƣờng q trình lƣu lƣợng tính tốn thực đo 88 Đƣờng trình hàm lƣợng bùn cát tính tốn thực đo 89 Hàm lƣợng bùn cát lƣu vực Thác Mộc 89 Bản đồ vị trí lƣu vực Phiêng Hiềng 90 Bản đồ địa hình lƣu vực Phiêng Hiềng 91 Bản đồ thổ nhƣỡng lƣu vực Phiêng Hiềng 93 Bản đồ trạng sử dụng đất lƣu vực Phiêng Hiềng năm 2015 95 Bản đồ mạng lƣới sơng ngịi lƣu vực Phiêng Hiềng 97 Bản đồ lƣới trạm quan trắc lƣu vực Phiêng Hiềng 98 Bản đồ đẳng trị mơ đun dịng chảy lƣu vực Phiêng Hiềng 99 Các tiểu lƣu vực Phiêng Hiềng 101 vii Hình 3-22 Hình 3-23 Hình 3-24 Hình 3-25 Hình 3-26 Hình 3-27 Hình 3-28 Đƣờng trình lƣu lƣợng tính tốn thực đo 103 Đƣờng q trình hàm lƣợng bùn cát tính tốn thực đo 103 Đƣờng trình lƣu lƣợng tính tốn thực đo 104 Đƣờng q trình hàm lƣợng bùn cát tính toán thực đo 104 Đƣờng biểu diễn kết thay đổi thơng số mơ hình 107 Tƣơng quan xói mịn liên rãnh với độ dốc cƣờng độ mƣa 109 Tƣơng quan xói mịn rãnh với độ dốc cƣờng độ mƣa 111 viii float SLFAC = pErosion[nr].SLFAC; float OFRQ = pErosion[nr].OFRQ; float Kr = pErosion[nr].Kfac; float C = pErosion[nr].Cfac; float Cb = pErosion[nr].Cb; pErosion[nr].ER = 1000 * 3600 * Cb * OFRQ * SLFAC * Kr * C; if( pErosion[nr].ER < ) int t=1; } void CErosion::sedimenttransport( int nr ) { float EI = pErosion[nr].EI; float ER = pErosion[nr].ER; float DEP = pErosion[nr].DEP; pErosion[nr].Phi = EI + ER + DEP; if( pErosion[nr].Phi < ) pErosion[nr].Phi = 0; if( pErosion[nr].Phi > ) int t=1; pErosion[nr].QSI = pErosion[nr].Phi * m_pTfl[nr].flength; } void CErosion::ChannelTransport181( int nr ) { if( pErosion[nr].OFRQ > ) { float SLG = pErosion[nr].SLG; float D50 = pErosion[nr].D50; float Z = 0.3f; float term1 = (float) ( / sqrt( SLG ) ); float term2 = pErosion[nr].OFRQ * term1 * RFM; 132 float OFRG = (float) pow( term2, 0.6 ); float VG = (float) ( (1 / RFM) * pow( OFRG, 0.666667 ) * sqrt( SLG ) pErosion[nr].WIDTH = 2.05 * pow( Z, -0.625) * pow( (1 + Z*Z), 0.125 ) * pow( pErosion[nr].Qab * m_pTfl[nr].kst * term1, 0.375 ); float qch = pErosion[nr].Qab / pErosion[nr].WIDTH; float VS = (float) ( RhoR * G * D50 * D50 / ( 18.0f * m_VISCO ) ); pErosion[nr].VS = VS; float delta = 0.000285; pErosion[nr].DEPTH = pErosion[nr].fdep * pow( qch * m_pTfl[nr].kst * (1/sqrt(SLG)), 0.6 ); pErosion[nr].TAUch = RhoW * G * pErosion[nr].DEPTH * SLG; float Ef = pErosion[nr].TAUch / ( D50 * (RhoS-RhoW)*G ); float nue = 0.7f * pow( Ef, 0.98 ); pErosion[nr].TCG = new * pErosion[nr].Omega * pErosion[nr].TAUch * 3.600 * (VG*VG/VS) * (1/G); } else pErosion[nr].TC = 0; } float D50 = pErosion[nr].D50; float GammaW= RhoW * G; float SLG = pErosion[nr].SLG; float term1 = (float) ( / sqrt( SLG ) ); float term2 = pErosion[nr].OFRQ * term1 * RFM; float OFRG = (float) pow( term2, 0.6 ); float TAUch = pErosion[nr].TAUch; float US = (float) ( sqrt( TAUch / RhoS ) ); float RE = (float) ( US * D50 / m_VISCO ); float TAU0 = pErosion[nr].TAU0; 133 float kch = 300; pErosion[nr].EGR = (float) ( 3600 * pErosion[nr].WIDTH * kch * pow( ( 1.35 * TAUch - TAU0 ), 1.05 ) ); } { float t = 0.1f; float SLFAC = pErosion[nr].SLFAC; float Width= (float) ( 2.05 * pow( t, -0.625) * pow( (1 + t*t), 0.125) * pow( (QP*RFM)/sqrt(SLFAC), 0.375 ) ); } else { if( pErosion[nr].QSI > pErosion[nr].TC ) { Deposition( nr ); } else { RillErosion( nr ); } } } void CErosion::Erosion( int nr, int Timestep, VARSTRUCT *pVar ) { pErosion[nr].ER = pErosion[nr].EI = pErosion[nr].ET = pErosion[nr].QSI = 0; pErosion[nr].TC = pErosion[nr].DEP = pErosion[nr].Phi = 0; pErosion[nr].QSGR = pErosion[nr].WEIGHT = pErosion[nr].OFRQ = pVar[nr].qo1 / pErosion[nr].B; pErosion[nr].INTPH = pVar[nr] rain / delta_t; 134 pErosion[nr].PD = pVar[nr].rain; pErosion[nr].Qab = pVar[nr].qab / pVar[nr].itseg; pErosion[nr].VAUQ = pVar[nr].qo1 * 3600 * delta_t; if( pErosion[nr].OFRQ > ) int t=1; if( pErosion[nr].OFRQ < ) int t=1; if( pErosion[nr].Qab > ) int t=1; if( pErosion[nr].Qab < ) int t=1; if( m_pTfl[nr].Proc.ErosTyp == 386 ) AreasOder 386 ( nr, timestep, pVar ); else if ( m_pTfl[nr].Proc.ErosTyp == 387 ) AreasOder 387( nr, timestep, pVar ); if( pErosion[nr].QSI > ) if( pErosion[nr].Phi > ) // [đơn vị g/m2*h] int t=1; if( pErosion[nr].Phi < ) int t=1; float Freight = pErosion[nr].Phi * pErosion[nr].AREA; // [đơn vị g/h] if( pErosion[nr].Qab > && Freight > ) { if ( m_pTfl[nr].Proc.ErosTyp == 386 ) if ( m_pTfl[nr].Proc.ErosTyp == 387 ) } } Đoạn chƣơng trình mơ tả vận chuyển bùn cát sông if(Tak != NULL && m_pTfl[nr] LevelNr > ) { CStation *pTak = GetTakPtr( m_pTfl[nr].LevelNr ); 135 if( pTak ) { int TakNr = pTak->nr; int t=1; } } if( pErosion[nr].EI || pErosion[nr].ET || pErosion[nr].ER || pErosion[nr].DEP || pErosion[nr].Phi ) { pErosion[nr].S_EI += pErosion[nr].EI * delta_t; // đơn vị g/m2 pErosion[nr].S_ET += pErosion[nr].ET * delta_t; // đơn vị g/m2 pErosion[nr].S_ER += pErosion[nr].ER * delta_t; // đơn vị g/m2 pErosion[nr].S_DEP+= pErosion[nr].DEP * delta_t; // đơn vị g/m2 pErosion[nr].S_PHI+= pErosion[nr].Phi * delta_t; // đơn vị g/m2 } } BOOL IsValid( float value ) { if( value < || value > 1E32 ) return FALSE; return TRUE; } void CErosion( int tflnr, int time ) { float Flow=0.0f, Fldr=0.0f, Flgw=0.0f; // [đơn vị g/s] float Qlow=0.0f, Qldr=0.0f, Qlgw=0.0f; // [đơn vị m3/s] float Inflowfoc = 0; float Inflow = 0; float InflowFreight = 0; if( pErosion[tflnr].MetabEntryLevelNr > ) { 136 CStation *pTak = m_pErgSet->pOrgDoc->CGGC.GetTakPtr(pErosion[tflnr] MetabEntryLevel Nr ); if( pTak ) { int TakNr = pTak->nr; MINUTES minute = (MINUTES) ( m_pErgSet->req_minutes + Timestep* delta_t * 60 ); Infoww *= pErosion[tflnr] MetabEntryshare; } } if( time == ) { pErosion[tflnr].Fow = pErosion[tflnr].CStartFloor * m_pVar[tflnr].qo1; pErosion[tflnr].Fdr = pErosion[tflnr].CStartFloor * m_pVar[tflnr].qi1; pErosion[tflnr].Fgw = pErosion[tflnr].CStartFloor * m_pVar[tflnr].qu1; Qlow = pErosion[tflnr].Qlow = pErosion[tflnr].Qow = m_pVar[tflnr].qo1; Qldr = pErosion[tflnr].Qldr = pErosion[tflnr].Qdr = m_pVar[tflnr].qi1; Qlgw = pErosion[tflnr].Qlgw = pErosion[tflnr].Qgw = m_pVar[tflnr].qu1; } float Nep = m_pVar[tflnr].Neo + m_pVar[tflnr].No + m_pVar[tflnr] if( Nep > ) { Qlow = m_pVar[tflnr].Neo * m_pTfl[tflnr].area * 1000 / 3600; Qldr = m_pVar[tflnr].No * m_pTfl[tflnr].area * 1000 / 3600; Qlgw = m_pVar[tflnr].New * m_pTfl[tflnr].area * 1000 / 3600; m_pVar[tflnr].New / Nep; } float mFlow = ( Fzow + pErosion[tflnr].Flow ) / 2; float mQlow = ( Qzow + pErosion[tflnr].Qlow ) / 2; float Qow = pErosion[tflnr].Qow; // [đơn vị m³/s] float Fow = pErosion[tflnr].Fow; IsValid( pErosion[tflnr].Qow ); IsValid( pErosion[tflnr].Fow ); 137 float kow = - (float) exp( -delta_t / pErosion[tflnr].kow ); pErosion[tflnr].Fow = Fow + ( mFlow - Fow ) * kow; pErosion[tflnr].Flow = Flow; pErosion[tflnr].Qow = m_pVar[tflnr].qo1; pErosion[tflnr].Qlow = Qlow; pErosion[tflnr].S_Qlow += Qlow; pErosion[tflnr].S_Flow += Flow; pErosion[tflnr].S_Qow += pErosion[tflnr].Qow; pErosion[tflnr].S_Fow += pErosion[tflnr].Fow; float mFzdr = ( Fzdr + pErosion[tflnr].Fzdr ) / 2; float mQzdr = ( Qzdr + pErosion[tflnr].Qzdr ) / 2; float Qdr = pErosion[tflnr].Qdr; float Fdr = pErosion[tflnr].Fdr; IsValid( pErosion[tflnr].Qdr ); IsValid( pErosion[tflnr].Fdr ); float kdr = - (float) exp( -delta_t / pErosion[tflnr].kdr ); pErosion[tflnr].Fdr = Fdr + ( mFzdr - Fdr ) * kdr; pErosion[tflnr].Fzdr = Fzdr; pErosion[tflnr].Qdr = m_pVar[tflnr].qi1; pErosion[tflnr].Qzdr = Qzdr; pErosion[tflnr].S_Qzdr += Qzdr; pErosion[tflnr].S_Fzdr += Fzdr; pErosion[tflnr].S_Qdr += pErosion[tflnr].Qdr; pErosion[tflnr].S_Fdr += pErosion[tflnr].Fdr; float mFzgw = ( Fzgw + pErosion[tflnr].Fzgw ) / 2; float mQzgw = ( Qzgw + pErosion[tflnr].Qzgw ) / 2; float Qgw = pErosion[tflnr].Qgw; float Fgw = pErosion[tflnr].Fgw; IsValid( pErosion[tflnr].Qgw ); 138 IsValid( pErosion[tflnr].Fgw ); float kgw = - (float) exp( -delta_t / pErosion[tflnr].kgw ); pErosion[tflnr].Fgw = Fgw + ( mFzgw - Fgw ) * kgw; pErosion[tflnr].Fzgw = Fzgw; pErosion[tflnr].Qgw = m_pVar[tflnr].qu1; pErosion[tflnr].Qzgw = Qzgw; pErosion[tflnr].S_Qzgw += Qzgw; pErosion[tflnr].S_Fzgw += Fzgw; pErosion[tflnr].S_Qgw += pErosion[tflnr].Qgw; pErosion[tflnr].S_Fgw += pErosion[tflnr].Fgw; float Freight = pErosion[tflnr].Fow + pErosion[tflnr].Fdr + pErosion[tflnr].Fgw; if( Freight < ) int t=1; pErosion[tflnr].QSI = 3600 * Freight / m_pTfl[tflnr].flength; if(Tak != NULL ) if(Tak!= NULL ) { int tflrec = m_pTfl[tflnr].LevelEzgRec; CStation *pTak = GetTakPtr( m_pTfl[tflrec].LevelNr ); if( pTak &&Concentration > 0) { int TakNr = pTak->nr; } } if(Tak!= NULL && m_pTfl[tflnr].LevelNr > ) { CStation *pTak = GetTakPtr( m_pTfl[tflnr].LevelNr ); if( pTak ) { int TakNr = pTak->nr; int t=1; 139 else MINUTES minute = (MINUTES) ( m_pErgSet->inq_minutes + timestep * delta_t * 60 ); } } } float D50 = pErosion[nr].D50; float GammaW= RhoW * G; float SLG = pErosion[nr].SLG; float term1 = (float) ( / sqrt( SLG ) ); float term2 = pErosion[nr].OFRQ * term1 * RFM; float OFRG = (float) pow( term2, 0.6 ); float TAUch = pErosion[nr].TAUch; float US = (float) ( sqrt( TAUch / RhoS ) ); float RE = (float) ( US * D50 / m_VISCO ); float TAU0 = pErosion[nr].TAU0; float kch = 300; pErosion[nr].EGR = (float) ( 3600 * pErosion[nr].WIDTH * kch * pow( ( 1.35 * TAUch - TAU0 ), 1.05 ) ); } { float t = 0.1f; float SLFAC = pErosion[nr].SLFAC; float Width= (float) ( 2.05 * pow( t, -0.625) * pow( (1 + t*t), 0.125) * pow( (QP*RFM)/sqrt(SLFAC), 0.375 ) ); } else { if( pErosion[nr].QSI > pErosion[nr].TC ) { 140 Deposition( nr ); } else { RillErosion( nr ); } } } void CErosion::ChannelDeposition( int nr ) { float FS = pErosion[nr].Fs; float D50 = pErosion[nr].D50; float BETA= 1.0f; float TCGR= pErosion[nr].TCGR; float QSGRN= pErosion[nr].QSGRN; float RhoF=RhoW; float Visco = pErosion[nr].Visco; float RhoR2 = ( RhoS - RhoF ) / RhoF; float D = D50 * (float) pow( (RhoR2 * G / (Visco*Visco) ), 0.333 ); float OFRQ = pErosion[nr].OFRQ; float VSG = (float) ( 11 * Visco * ( sqrt(1+0.01*D*D*D) -1 / D50) ); float ALPHAGR = (float) ( sqrt( 1.9f * sqrt(D50) ) * VSG * BETA / ( sqrt(FS) * sqrt(OFRQ) ) ); pErosion[nr].DEPGR = ALPHAGR * ( TCGR - QSGRN ); } void CErosion::ChannelErosion( int nr ) { float D50 = pErosion[nr].D50; float OFRQ = pErosion[nr].OFRQ; float KECG = pErosion[nr].KECG; 141 float FS = pErosion[nr].Fs; float Qab = pErosion[nr].Qab; float TO; if( B/h>= 30 ) TO = RhoW * G * h * J; else TO = RhoW * G * R * I; float VS = pErosion[nr].VS; float TOCDIMEN = (float) ( 0.4 * (VS*VS) / (G * D50) ); float TOC = (float) TOCDIMEN * (RhoS - RhoW) * G * D50; pErosion[nr].EGR = (float) ( F * sqrt( 1.9 * sqrt(D50*1000.0f) ) * sqrt(OFRQ) * KECG * ( TO-TOC ) / sqrt(FS) ); } void CErosion::( int nr ) { float QSI = pErosion[nr].QSI; float EGR = pErosion[nr].EGR; pErosion[nr].QSGRN = QSI + EGR; } void CErosion::( int nr ) { float QSI = pErosion[nr].QSI; float DEPGR = pErosion[nr].DEPGR; float LI = pErosion[nr].LI; pErosion[nr].QSGR = QSI + DEPGR * LI; } void CErosion::( int nr ) { float QSGRN = pErosion[nr].QSGRN; 142 float DEPGR = pErosion[nr].DEPGR; float LI = pErosion[nr].LI; pErosion[nr].QSGR = QSGRN + DEPGR * LI; } void CErosion::( int nr ) { pErosion[nr].QSGR = pErosion[nr].QSGRN; } void CErosion::( int nr ) { float Foc = pErosion[nr] Freight; float Freight = pErosion[nr].Qab * Foc; if( pErosion[nr] Freight - Freight < ) Freight = pErosion[nr].Freight; pErosion[nr] Freight -= Freight; } CErosionView* CErosion::GetActiveView() { CView *pView; POSITION pos = GetFirstViewPosition(); if( pos ) pView = GetNextView(pos); while( pos && !pView->IsWindowVisible() ) { pView = GetNextView(pos); } if( pView ) if( pView->IsWindowVisible() ) return (CErosionView*) pView; return ZERO; 143 } BOOL CErosion::AddView( BOOL bVisible, CString WindowText ) { class COrgDoc; class CMapView; class CZFD; class CZFDView; class CCompare; class CCompareDlg; class CErosion; class CShapeView; class CErosionView; class CDlgLandMap; class CMetab; class CEventDoc : public CDocument { protected: DECLARE_DYNCREATE(CEventDoc) public: CString m_EventName; COrgDoc *m_pOrgDoc; ERGSETSTRUCT *pErgSet; CGG CERG, ColdERG; CGG GGArea; CVARDateCVAR; CFormula vFormula; CMemory MEMORY; CNDate CN; CMapView *grid_flood_view; 144 CMapView *grid_w_view; CMapView *grid_damage_view; CMapView *grid_ damagesum_view; CGRID FloodGRID; CGRID FloodHeightGRID; CGRID WGRID; CGRID Damage GRID; CGRID DamageSumGRID; CMyPtrList *Damage List; CZFD *pZFD; CErosion *pErosion; CErosion *pMeta; CShapeView *pShapeLandMap; CDlgLandMap*pDlgLandMap; PEGELSTRUCT *Levelq; float delta_t; float rain; float rainsum; float etp,evaporation; public: CEventDoc(); BOOL GetTimeSeriesRange( CDate *MinTotal, CDate *MinOverlap, CDate *MaxOverlap, CDate *MaxTotal, CMyPtrList *pStatList=NULL ); BOOL createWGRID( CDate *Date, BOOL fMaxFlood ); BOOL createFloodGRID( CDate *Date, BOOL fMaxFlood ); void DeleteZFDWnd() { pZFD = NULL; }; void OnDeleteDisplayGrid( CMapView *View2delete ); BOOL UpdateViews(); void DeleteChildWindow( void **ptr ); 145 virtual void OnCloseDocument(); virtual BOOL OnSaveDocument(LPCTSTR lpszPathName); virtual BOOL OnOpenDocument(LPCTSTR lpszPathName); virtual BOOL OnNewDocument(); public: virtual ~CEventDoc(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: DECLARE_MESSAGE_MAP() }; CEventDoc_H 146 ... giả nghiên cứu xây dựng mơ hình tốn mơ vận chuyển bùn cát lƣu vực vừa nhỏ Việt Nam 36 CHƢƠNG NGHIÊN CỨU CƠ SỞ KHOA HỌC XÂY DỰNG MƠ HÌNH TỐN MƠ PHỎNG VẬN CHUYỂN BÙN CÁT TRÊN LƢU VỰC VỪA VÀ NHỎ... cho lƣu vực sông Việt Nam MỤC TIÊU NGHIÊN CỨU - Nghiên cứu sở khoa học xây dựng mô hình tốn mơ xói mịn vận chuyển bùn cát lƣu vực vừa nhỏ - Thử nghiệm mơ hình xây dựng cho số lƣu vực vừa nhỏ ĐỐI... II: Nghiên cứu sở khoa học xây dựng mơ hình tốn mơ vận chuyển bùn cát lƣu vực vừa nhỏ Chƣơng III: Thử nghiệm mơ hình để mơ vận chuyển bùn cát cho số lƣu vực vừa nhỏ CHƢƠNG TỔNG QUAN VỀ MƠ HÌNH