Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.Nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực nhỏ miển núi và áp dụng thử nghiệm cho 2 lưu vực Nậm Ly và Nà Nhùng, tỉnh Hà Giang.
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 NGUYỄN THẾ TOÀN NGHIÊN CỨU PHƯƠNG PHÁP CẢNH BÁO LŨ QUÉT CHO LƯU VỰC NHỎ MIỀN NÚI VÀ ÁP DỤNG THỬ NGHIỆM CHO LƯU VỰC NẬM LY VÀ NÀ NHÙNG TỈNH HÀ GIANG LUẬN ÁN TIẾN SĨ KỸ THUẬT HÀ NỘI, NĂM 2023 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 NGUYỄN THẾ TOÀN NGHIÊN CỨU PHƯƠNG PHÁP CẢNH BÁO LŨ QUÉT CHO LƯU VỰC NHỎ MIỀN NÚI VÀ ÁP DỤNG THỬ NGHIỆM CHO LƯU VỰC NẬM LY VÀ NÀ NHÙNG TỈNH HÀ GIANG LUẬN ÁN TIẾN SĨ KỸ THUẬT Ngành: Thủy văn học Mã số: 9440224 NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS Trần Kim Châu PGS.TS Nguyễn Bá Quỳ HÀ NỘI, NĂM 2023 MỤC LỤC DANH MỤC CÁC HÌNH ẢNH iv DANH MỤC BẢNG BIỂU vi DANH MỤC CÁC TỪ VIẾT TẮT VÀ GIẢI THÍCH THUẬT NGỮ vii MỞ ĐẦU 1 Tính cấp thiết đề tài Mục tiêu nghiên cứu 3 Đối tượng phạm vi nghiên cứu Phương pháp nghiên cứu Ý nghĩa khoa học thực tiễn Kết cấu luận án CHƯƠNG TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU VỀ LŨ QUÉT VÀ CẢNH BÁO, DỰ BÁO LŨ QUÉT 1.1 Một số khái niệm sử dụng Luận án 1.1.1 Khái niệm lũ quét 1.1.2 Khái niệm tràn bờ, lưu lượng tràn bờ .7 1.2 Tổng quan tình hình nghiên cứu 10 1.2.1 Tổng quan nghiên cứu dự báo, cảnh báo lũ quét 10 1.2.2 Tổng quan nghiên cứu lưu lượng tràn bờ .24 1.3 Khoảng trống nghiên cứu dự báo, cảnh báo lũ quét theo thời gian thực định hướng nghiên cứu Luận án 29 1.3.1 Khoảng trống nghiên cứu 29 1.3.2 Định hướng nghiên cứu luận án 31 1.4 Kết luận Chương 33 CHƯƠNG NGHIÊN CỨU XÂY DỰNG PHƯƠNG PHÁP CẢNH BÁO LŨ QUÉT CHO LƯU VỰC NHỎ SÔNG MIỀN NÚI .35 2.1 bờ Cơ sở khoa học xây dựng phương trình thực nghiệm tính tốn lưu lượng tràn 35 2.1.1 Xác định ngưỡng tràn bờ từ dấu hiệu nhận biết thực địa 35 2.1.2 Xây dựng tương quan mực nước lưu lượng cho vị trí điều tra khảo sát 36 2.1.3 Xây dựng phương trình thực nghiệm tính tốn lưu lượng tràn bờ 37 i 2.2 Xây dựng mơ hình tốn mưa - dịng chảy kết hợp với liệu lượng mưa theo thời gian thực để tính tốn cập nhật liên tục trạng lưu vực .38 2.2.1 Cấu trúc mơ hình tốn (CTM) 41 2.2.2 Giới thiệu ngơn ngữ lập trình 53 2.3 Phương pháp tính tốn ngưỡng mưa định hướng có khả sinh lũ quét (FFG) số mức độ nguy xảy lũ quét (FFT) .55 2.3.1 Xác định ngưỡng mưa FFG .57 2.3.2 Xác định số FFT (Mức độ nguy đe dọa lũ quét) 59 2.4 Kết luận Chương 62 CHƯƠNG KẾT QUẢ NGHIÊN CỨU PHƯƠNG PHÁP CẢNH BÁO LŨ QUÉT CHO LƯU VỰC NẬM LY VÀ NÀ NHÙNG TỈNH HÀ GIANG 64 3.1 Kết xây dựng phương trình thực nghiệm xác định lưu lượng tràn bờ cho lưu vực sông miền núi Nậm Ly Nà Nhùng tỉnh Hà Giang 64 3.1.1 Khảo sát xác định mực nước tràn bờ lưu lượng tràn bờ tương ứng .64 3.1.2 Xây dựng phương trình thực nghiệm xác định lưu lượng tràn bờ 70 3.1.3 Nhận xét kết 72 3.2 Kết xây dựng mơ hình tốn thủy văn cho lưu vực nghiên cứu 73 3.2.1 Giao diện, công cụ mô hình 74 3.2.2 Khối tính tốn 76 3.2.3 Số liệu đầu vào mơ hình: 80 3.2.4 Kết mơ hình 80 3.2.5 Đánh giá độ tin cậy mơ hình 81 3.2.6 Ứng dụng mơ hình CTM cho lưu vực nghiên cứu Nậm Ly Nà Nhùng 82 3.3 Kết đánh giá phù hợp mơ hình mưa dự báo GEM cho lưu vực nghiên cứu 92 3.4 Ứng dụng kết nghiên cứu để cảnh báo thử nghiệm lũ quét cho lưu vực Nậm Ly Nà Nhùng 94 3.4.1 Giao diện công cụ cảnh báo cho lưu vực nghiên cứu .94 3.4.2 Trang chủ 94 3.4.3 Trạm đo mưa tự động 99 3.4.4 Cảnh báo 101 3.5 Kết dự báo thử nghiệm 101 ii 3.6 Kết luận Chương 105 KẾT LUẬN 107 Những kết đạt 107 Những đóng góp 108 Tồn hướng đề xuất .108 Kiến nghị .108 DANH MỤC CƠNG TRÌNH ĐÃ CƠNG BỐ 110 TÀI LIỆU THAM KHẢO 111 PHỤ LỤC 118 iii DANH MỤC CÁC HÌNH ẢNH Hình 1.1 Mơ tả loại cao trình bãi khác Hình 1.2 Mơ tả ngưỡng tràn bờ .9 Hình 1.3 Sơ đồ mơ xác định ngưỡng mưa kích hoạt 12 Hình 1.4 Sơ đồ mơ xác định ngưỡng mưa kích hoạt 13 Hình 1.5 Mối quan hệ lưu lượng tràn bờ với lưu lượng lượng trung bình năm 25 Hình 1.6 Sơ đồ hương nghiên cứu phương pháp cảnh báo lũ quét cho lưu vực sông miền núi 32 Hình 2.1 Sơ đồ phương pháp xác định lưu lượng tràn bờ .35 Hình 2.2 Một số dấu hiệu nhận biết cao trình mực nước tràn bờ điển hình 36 Hình 2.3 Sơ đồ mơ cách xác định giá trị FFG 39 Hình 2.4 Sơ đồ cấu trúc mơ hình tốn thủy văn xây dựng cho lưu vực nghiên cứu .41 Hình 2.5 Sơ đồ tính tồn dịng chảy cửa lưu vực 42 Hình 2.6 Đường trình cường độ thấm Kt 44 Hình 2.7 Quá trinh mưa, tổn thất dòng chảy trận mưa 45 Hình 2.8 Các thơng số phương pháp cắt nước ngầm 48 Hình 2.9 Sơ đồ tính tốn dịng chảy theo phương pháp bể chứa tuyến tính 49 Hình 2.10 Sơ đồ biên dịch ngôn ngữ Java .55 Hình 2.11 Mưa thời điểm đường q trình dịng chảy gây mưa thực đo 56 Hình 2.12 mơ tả cách xác đinh FFG để tạo lưu lượng tràn bờ 57 Hình 2.13 Sơ đồ xác định ngưỡng mưa FFG 58 Hình 2.14 Các lưới mơ hình GEM nghiên cứu 60 Hình 3.1 Xác định mực nước tràn bờ theo dấu hiệu nhận biết mặt cắt N4 .65 Hình 3.2 Xác định mực nước tràn bờ theo dấu hiệu nhận biết mặt cắt N5 .65 Hình 3.3 Xác định mực nước tràn bờ theo dấu hiệu nhận biết mặt cắt N6 66 Hình 3.4 Xác định mực nước tràn bờ theo dấu hiệu nhận biết mặt cắt N7 66 Hình 3.5 Mặt cắt khảo sát với dấu hiệu mực nước tràn bờ (1) 67 Hình 3.6 Mặt cắt khảo sát Q5 với dấu hiệu mực nước tràn bờ (2) (6) .68 Hình 3.7 Đường quan hệ Q = f(Z) từ liệu khảo sát thực tế mặt cắt Q14 Q5 .68 Hình 3.8 Bản đồ địa hình sử dụng đất lưu vực Nậm Ly (trái) Nà Nhùng (phải) 70 Hình 3.9 Giao diện mơ hình CTM .75 Hình 3.10 Giao diện cơng cụ mơ hình CTM 76 Hình 3.11 Giao diện lựa chọn phương pháp tính tốn tổn thất .77 Hình 3.12 Giao diện đặc trưng phương pháp tính thấm đường cong CN .77 Hình 3.13 Giao diện cửa sổ khai báo thơng số tính tốn chuyển đổi dòng chảy từ mưa hiệu theo phương pháp đường lũ đơn vị SCS .78 iv Hình 3.14 Giao diện cửa sổ khai báo thống số tính tốn dịng ngầm theo phương pháp đường cong nước rút 79 Hình 3.15 Giao diện cửa sổ khai báo thơng số phương pháp diễn tốn dịng chảy theo phương pháp hồ chứa tuyến tính (linear) Muskingum .79 Hình 3.16 Giao diện nhập liệu đầu vào mơ hình 80 Hình 3.17 Giao diện kết mơ hình dạng biểu đồ .80 Hình 3.18 Giao diện kết mơ hình dạng bảng biểu số liệu 81 Hình 3.19 So sánh kết tính tốn dịng chảy lưu vực Nậm Ly mơ hình CTM mơ hình Hec - Hms 81 Hình 3.20 DEM địa hình khu vực nghiên cứu 85 Hình 3.21 Phân chia tiểu lưu vực 86 Hình 3.22 Phân chia đa giác theisson cho lưu vực tính tốn 87 Hình 3.23 Kết hiệu chỉnh mơ hình cho lưu vực Nậm Ly 90 Hình 3.24 Kết kiểm định mơ hình cho lưu vực Nậm Ly .90 Hình 3.25 Phân bố lượng mưa ngày từ ngày đến ngày tháng năm 2020 lưu vực Nậm Ly Nà Nhùng 93 Hình 3.26 Hàm phân bố mưa tích lũy mơ hình lượng mưa đo tự động lưu vực Nậm Ly Nà Nhùng thời gian từ ngày 19 đến ngày 22 tháng năm 2020 93 Hình 3.27 Giao diện menu hệ thống cảnh báo lũ quét cho khu vực nghiên cứu 94 Hình 3.28 Giao diện menu trang chủ 95 Hình 3.29 Giao diện hiển thị cơng cụ 95 Hình 3.30 Giao diện menu cảnh báo .96 Hình 3.31 Giao diện chi tiết cảnh báo lũ tiểu lưu vực địa bàn xã 96 Hình 3.32 Giao diện chi tiết cảnh báo lũ tiểu lưu vực địa bàn thơn .97 Hình 3.33 Giao diện thống kê ngưỡng cảnh báo 97 Hình 3.34 Giao diện thống kê liệu dòng chảy 98 Hình 3.35 Giao diện tin cảnh báo lũ quét 98 Hình 3.36 Giao diện đồ cảnh báo lũ quét 99 Hình 3.37 Giao diện trạm đo mưa tự động 99 Hình 3.38 Giao diện thông tin lượng mưa 100 Hình 3.39 Giao diện để xuất liệu lượng mưa 100 Hình 3.40 Giao diện thơng tin chi tiết trạm 101 Hình 3.41 Giao diện cảnh báo .101 Hình 3.42 Sự phân bố lượng mưa theo thời gian trận mưa khu vực nghiên cứu .102 Hình 3.43 Tình hình ngập lụt thị trấn Quảng Nguyên (lưu vực Nậm Ly) đợt lũ ngày 13-14/6/2020 .103 Hình 3.44 Tình hình ngập lụt thị trấn Quảng Nguyên (lưu vực Nậm Ly) đợt lũ ngày 06/7/2020 103 v Hình 3.45 Hình ảnh thơn Cốc Nam, xã Bản Nhùng (lưu vực Nà Nhùng) sau trận lũ ngày 21/7/2020 104 DANH MỤC BẢNG BIỂU Bảng 3.1 Vị trí khảo sát dấu hiệu tràn bờ 69 Bảng 3.2 Mức độ ảnh hưởng biến độc lập đến lưu lượng tràn bờ 71 Bảng 3.3 Phương trình tương quan đa biến xác định lưu lượng tràn bờ từ đặc trưng lưu vực 72 Bảng 3.4 Các phương pháp tính tốn mơ hình CTM 74 Bảng 3.5 Tỉ lệ trọng số trạm mưa tiểu lưu vực Nậm Ly 88 Bảng 3.6 Tỉ lệ trọng số trạm mưa tiểu lưu vực Nà Nhùng 89 Bảng 3.7 Thơng số mơ hình tiểu lưu vực 90 Bảng 3.8 Thơng số mơ hình tiểu lưu vực 91 Bảng 3.9 Phân tích đánh giá hệ thống cảnh báo với trận lũ tháng năm 2020 lưu vực Nậm Ly Nà Nhùng .104 vi DANH MỤC CÁC TỪ VIẾT TẮT VÀ GIẢI THÍCH THUẬT NGỮ BĐKH Biến đổi khí hậu Bộ NN&PTNT Bộ Nơng nghiệp Phát triển nơng thơn DEM Mơ hình số độ cao FFG Ngưỡng cảnh báo lũ quét (Flash Flood Guidance) FFGS Hệ thống cảnh báo lũ quét (Flash Flood Guidance System) FFPI Chỉ số tiềm lũ quét (Flash flood potential index) FFT Mức độ nguy đe dọa lũ quét (Flash Flood Threat) GEM Mơ hình đa quy mơi trường tồn cầu (The Global Environment Multiscale Model) GIS Hệ thống thông tin địa lý (Geographic Information System) KTTV Khí tượng thủy văn Qbf Lưu lượng tràn bờ (Bankfull Discharge) SBF Ngưỡng tràn bờ (Bankfull stage) WMO Tổ chức khí tượng giới (World Meteorological Organization) vii MỞ ĐẦU Tính cấp thiết đề tài Lũ quét loại hình tai biến thiên nhiên xảy ngày gia tăng hầu khắp lưu vực sông suối miền núi giới, đặc biệt lưu vực nhiệt đới, cận nhiệt đới vùng núi phụ cận dãy Hymalaya thuộc Ấn Độ, Trung Quốc, Pakistan, Thái Lan, Nepan, Indonesia, Philippines, Malayxia, Nhật Bản, Hàn Quốc, Việt Nam, Tại Việt Nam, theo thống kê Tổng cục phòng chống thiên tai trung bình năm xảy khoảng 10-15 trân lũ quét Bốn khu vực Việt Nam thường xuyên xảy lũ quét vùng núi Bắc Bộ, Trung Bộ, Tây Nguyên vùng Đông Nam Bộ Phần lớn trận lũ quét, sạt lở đất xảy khu vực miền nùi hẻo lánh, dân cư thưa thớt, nhiên có trân lũ quét xảy có sức tàn phá lớn mang tính huỷ diệt gây tổn thất lớn tính mạng tài sản người dân Trong năm gần độ lớn, tần suất, mức độ phức tạp tượng lũ quét có xu hướng gia tăng xuất ngày nghiêm trọng Cùng với đó, thiệt hại lũ quét gây năm vừa qua có xu cao thập niên trước Trong gần 20 năm qua, theo ghi nhận Tổng cục phịng chống thiên tai tỉnh miền núi phía Bắc xảy 300 trận lũ quét với quy mô phạm vi ngày lớn, gây thiệt hại nặng nề người, tài sản sở hạ tầng Từ năm 2005 đến có nhiều trân lũ quét đặc biệt lớn gây thiệt hại lớn đến tính mạng tài sản người dân Lai Châu (2012, 2018), Yên Bái (2005, 2011), Lào Cai (2008), Bắc Cạn (2009), Nghệ An (2007, 2016), Đắc Lắk (2001), Kon Tum (2009), Hịa Bình (2011), Hà Giang (2012 – 2020) Một tỉnh chịu thiệt hại nặng nề lũ quét Hà Giang Theo báo cáo cơng tác phịng, chống thiên tai năm 2019 Sở Nông nghiệp Phát triển nông thôn, năm qua, tỉnh Hà Giang xảy 15 trận lũ quét làm chết 70 người, 01 người tích, bị thương 82 người; Làm sập đổ hư hỏng gần 19.500 nhà dân; 3.853ha rau, hoa màu loại; 12.250 lúa Ngô bị thiệt hại…, tổng thiệt hại ước tính 1.500 tỷ if(initialLoss == 0){ double tmp = (val - 0.2 * s) * (val - 0.2 * s) / (val + 0.8 * s); double pe = (val > 0.2 * s) ? tmp : 0; peList.add(pe); } else{ double tmp = (val - initialLoss) * (val - initialLoss) / (val - initialLoss + s); double pe = (val > initialLoss) ? tmp : 0; peList.add(pe); } } return peList; } /** * * @param accumulatedPrecipitations * @return */ public List calculateExcessRainfall( final List accumulatedPrecipitations){ messageProducer.send(SimConstant.SCS_CURVE_NUMBER+": Calculate Pe -Start"); List excessRainfall = new LinkedList(); excessRainfall.add(accumulatedPrecipitations.get(0)); for(int i=1; itimeRatios.add(t/tp)); return timeRatios; } /** * * @param entryDtoList * @return */ public List getTimeInterval(List entryDtoList){ List timeIntervals = new LinkedList(); List times = entryDtoList.stream().map(EntryDto::getTime).collect(Collectors.toList()); timeIntervals.add(0l); int i = 1; long sum = 0; while (i0 && max>key){ max = graphDtoList.get( startIdx).getTimeRatio(); } // search for while (endIdx< size -1 && < key){ = graphDtoList.get(++endIdx).getTimeRatio(); } return(graphDtoList.get(startIdx).getDischargeRatio()+graphDtoList.get(endIdx).getDi schargeRatio())/2; } } Tính tốn dịng chảy ngầm theo đường cong nước rút package sim.calculator; import sim.model.element.BasinDto; import sim.model.element.EntryDto; import sim.model.method.*; import java.util.LinkedList; import java.util.List; public class RecessionCalculator extends AbstractBaseFLowCalculator { private static RecessionCalculator baseFlowCalculator; public static RecessionCalculator getInstance() { if (baseFlowCalculator == null) { baseFlowCalculator = new RecessionCalculator(); } return baseFlowCalculator; } private RecessionCalculator() { } @Override public BaseFlowResult calculate(final BasinDto basin) { RecessionReqDto recessionReqDto = (RecessionReqDto) basin.getBaseFlowMethod(); final SCSUnitHydroResDto scsUnitHydroResDto = (SCSUnitHydroResDto) transformResult; final double area = basin.getArea(); 128 final List massCurveRatios = scsUnitHydroResDto.getMassCurveRatios(); final List times = MethodDto.getTimes(); final List dates = MethodDto.getDates(); final double recessionConst = recessionReqDto.getRecessionConst(); final double threshold = recessionReqDto.getFlow(); final double t = recessionReqDto.getDeltaT() / 24; final int size = times.size(); final List q1 = new LinkedList(); final List qb1 = new LinkedList(); final List q0 = new LinkedList(); final List q2 = new LinkedList(); final List q3 = new LinkedList(); final List qb2 = new LinkedList(); final List id1 = new LinkedList(); final List id2 = new LinkedList(); // Initialize final double initialVal = area * recessionReqDto.getInitialDischarge(); qb1.add(0, initialVal); q1.add(0, initialVal + massCurveRatios.get(0)); id1.add(0, 0); id2.add(0, 0); q0.add(0, initialVal); q2.add(0, initialVal); q3.add(0, Math.max(q1.get(0), q2.get(0))); qb2.add(0, q3.get(0) - massCurveRatios.get(0)); for (int i = 1; i < size; i++) { final double val = initialVal * Math.pow(recessionConst, (i * t)); qb1.add(i, val); q1.add(qb1.get(i) + massCurveRatios.get(i)); final int id = (q1.get(i - 1) > threshold && q1.get(i) < threshold) ? : 0; id1.add(id); final int id2Val = id1.get(i) == ? : id2.get(i - 1) + 1; id2.add(id2Val); final double currentQ0 = (id2.get(i) == 1) ? threshold : q0.get(i - 1); q0.add(currentQ0); final double currentQ2 = id2.get(i) == ? q0.get(i) : q0.get(i) * Math.pow(recessionConst, id2.get(i) * t); q2.add(currentQ2); final double currentQ3 = Math.max(q1.get(i), q2.get(i)); 129 q3.add(currentQ3); qb2.add(i, q3.get(i) - massCurveRatios.get(i)); } RecessionResDto recessionResDto = RecessionResDto builder() dates(dates) times(times) baseFlows(qb2) q2(q3) size(size) build(); return recessionResDto; } } Diễn tốn dịng chảy theo phương pháp Muskingum package sim.calculator; import sim.IRoutingCalculator; import sim.model.method.MuskingumReqDto; import sim.model.method.MuskingumResDto; import sim.model.method.RoutingResult; import sim.model.method.MethodDto; import java.util.LinkedList; import java.util.List; public class MuskingumCalculator implements IRoutingCalculator { private static IRoutingCalculator muskingumCalculator; public static IRoutingCalculator getInstance(){ if (muskingumCalculator == null){ muskingumCalculator = new MuskingumCalculator(); } return muskingumCalculator; } private MuskingumCalculator (){ } 130 @Override public RoutingResult calculate(final MethodDto methodDto, final List input) { final MuskingumReqDto muskingumReqDto = (MuskingumReqDto) methodDto; final double deltaT = muskingumReqDto.getDeltaT(); final double k = muskingumReqDto.getK(); final double x = muskingumReqDto.getX(); final double c1 = calculateC1(deltaT, k, x); final double c2 = calculateC2(deltaT, k, x); final double c3 = calculateC3(deltaT, k, x); final List outflow = new LinkedList(); outflow.add(0, input.get(0)); final int size = input.size(); for(int i = 1; i