【水文學法總結】河道內生態流量計算方法(含MATLAB實現代碼)

生態流量(Ecological Flow, EF) 是指維持河道內生態環境所需要的水流流量。生態流量計算方法眾多,主要分為水文學方法、棲息地模擬法、水力學方法、整體法等,各方法多用于計算維持河道生態平衡的最小生態流量(Minimum Ecological Flow, MEF)即生態基流。
水文學方法原理簡單、計算快捷,適應于較長河流生態流量的確定。同時該算法也可以用于缺乏水文站點和詳細水文數據的河流,應用較為廣泛。

【水文學法總結】河道內生態流量計算方法

  • 1 Tennant法
    • 1.1 原理
    • 1.2 MATLAB計算代碼
  • 2 最小月多年平均流量法(Minimum average monthly flux method, MAMFE)
    • 2.1 原理
    • 2.2 MATLAB計算代碼
  • 3 年內展布計算法(Dynamic calculation method, DCM)
    • 3.1 原理
    • 3.2 MATLAB計算代碼
  • 4 FDC法
    • 4.1 原理
    • 4.2 MATLAB計算代碼
  • 5 多層次生境條件的改進Tennant法(MTMMHC法)
    • 5.1 原理
    • 5.2 MATLAB計算代碼
  • 參考

1 Tennant法

1.1 原理

在這里插入圖片描述

1.2 MATLAB計算代碼

代碼如下:

function [MEF, OEFmin] = getMEF_Tennant( Runoff )
%% 方法1:Tennant法
% 河道內生態流量:采用不同用水期(年/月尺度)相應天然徑流量的多年平均同期徑流量的百分比
% 輸入變量
% Runoff   月均徑流序列
% 輸出變量
% MEF         最小生態流量
% OEFmin    最優生態流量下限值
% AAF         多年平均年徑流量
% AMF        多年平均月徑流量nMonth =12;
nYear = length(Runoff)/nMonth;MF = reshape( Runoff, nMonth , nYear );
AAF = mean( sum( MF,2 )  );
AMF = mean( MF ,2 );MEF  = 0.1* AMF;
OEFmin = 0.6* AMF;
end

2 最小月多年平均流量法(Minimum average monthly flux method, MAMFE)

2.1 原理

在這里插入圖片描述

2.2 MATLAB計算代碼

代碼如下:

function MEF = getMEF_MAMFE( Runoff )
%% 方法2:最小月多年平均流量法
% 最小生態流量:河流每年最小月平均流量的多年平均值
% 輸入變量
% Runoff   月均徑流序列
% 輸出變量
% MEF         最小生態流量
% AAFmin    多年最小平均年徑流量
% MFmin    多年最小月均徑流量
% MF         月均徑流量nMonth =12;
nYear = length(Runoff)/nMonth;MF = reshape( Runoff, nMonth , nYear );
MFmin = min( MF ,[], 2 );
AAFmin = mean( MFmin );MEF = AAFmin; 
end

3 年內展布計算法(Dynamic calculation method, DCM)

3.1 原理

年內展布法基于歷史流量資料,以年最小徑流總量與多年平均徑流總量二者之間的比值,得到各月生態流量與各月多年平均徑流量之間的關系,以此確定生態流量。

3.2 MATLAB計算代碼

代碼如下:

function MEF = getMEF_DCM( Runoff )
%% 方法3:年內展布計算法
% 輸入變量
% Runoff   月均徑流序列‘
% MEF         最小生態流量
% AAFmin    多年最小平均年徑流量
% MFmin    多年最小月均徑流量
% MF         月均徑流量nMonth =12;
nYear = length(Runoff)/nMonth;% 步驟1:根據長時間水文序列天然月均徑流資料,分別計算多年平均年徑流量和多年最小平均年徑流量
MF = reshape( Runoff, nMonth , nYear );
AAF = mean( sum( MF,2 )  );
MFmin = min( MF ,[], 2 );
AAFmin = mean( MFmin );% 步驟2:計算多年最小年均徑流量和多年平均年徑流量的比值η
eta = AAFmin/AAF;% 步驟3:根據多年平均月徑流量,計算各月最小生態流量
AMF = mean( MF , 2 ); 
MEF = AMF* eta;
end

4 FDC法

4.1 原理

4.2 MATLAB計算代碼

代碼如下:

function MEF = getMEF_FDC( Runoff )
%% 方法4:FDC法
% 取流量歷時曲線,頻率為90%時流量為河道內最小生態流量
% 輸入變量
% Runoff   月均徑流序列‘percent = 0.9;
flag = 0;
MEF = GetThreshold( Runoff , percent  , flag);
end% 調用函數
% -------------------------------------------------------------------------------
function Th = GetThreshold( X , percent , flag)
% GetThreshold函數可根據樣本數據集X得到percent閾值下的臨界值
% 輸入參數 Input parameter
% X             數據(所有樣本),可為降水Precipitation,為向量數據
% percent   閾值百分數,如90%95%,表示為小數,∈(01% flag          取值為0,表示取小值;取值為1,表示取大值
% 輸出參數 Output parameter
% Th       相應閾值下數值X = reshape( X,[],1 );       % 確保輸入序列X為行向量n = length( X );
I = zeros(n,1);
[Xsorted, ~] = sort( X, 'ascend');              % 按升序排列
for i=1:nI(i) = find( X(i)==Xsorted);
endif flag==0percent = 1-percent;
endP = (I-0.44)./(n+0.12);
[~, ThIndex] = min( abs(P-percent) );
Th = X(ThIndex);%{
figure(1)
hold on;box on;
h(1) = plot( X, P ,'k.','MarkerSize', 8);
h(2) = plot( Th,percent ,'rp','MarkerSize', 10,'MarkerFaceColor','r','MarkerEdgeColor','r');
h(3) = plot( [0 Th],[ percent percent],'k--','linewidth',1);
xlabel("X(P/T)");
ylabel("Percent");
set(gca,'FontSize',14,'Fontname', 'Times New Roman');
%}
end

5 多層次生境條件的改進Tennant法(MTMMHC法)

5.1 原理

在這里插入圖片描述
在這里插入圖片描述
生態流量采用MTMMHC法計算,其主要優勢在于:
①同傳統Tennant法以平均流量的單一百分比作為生態流量不同,它計算出不同月份不同水平年的生態流量,其中水平年的劃分基于月平均流量序列的不同保證率,能充分考慮流量的年內變化和年際變化(時間變異性);
②它以不同水平年組不同月份的月中值流量代替Tennant法中年平均流量或月平均流量,考慮了極端年際流量及流量年內分布不均的影響(時間變異性);
③采用MTMMHC法計算流域內不同子流域的各級生態流量,即在不同河段采用不同的生態流量,能改進在整個流域采用同一個生態流量的情況(空間變異性)。

5.2 MATLAB計算代碼

代碼如下:

參考

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42110.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42110.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42110.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode 141.環形鏈表

文章目錄 💡題目分析💡解題思路🔔接口源碼💡深度思考?思考1?思考2 題目鏈接👉 LeetCode 141.環形鏈表👈 💡題目分析 給你一個鏈表的頭節點 head ,判斷鏈表中是否有環。 如果鏈表中…

【ES6】—let 聲明方式

一、不屬于頂層對象window let 關鍵字聲明的變量,不會掛載到window的屬性 var a 5 console.log(a) console.log(window.a) // 5 // 5 // 變量a 被掛載到window屬性上了 , a window.alet b 6 console.log(b) console.log(window.b) // 6 // undefin…

原生js獲取今天、昨天、近7天的時間(年月日時分秒)

有的時候我們需要將今天,昨天,近7天的時間(年月日時分秒)作為參數傳遞給后端,如下圖: 那怎么生成這些時間呢?如下代碼里,在methods里的toDay方法、yesterDay方法、weekDay方法分別用于生成今天、昨天和近7天的時間: <template><div class="box"&…

暫停Windows更新的方法,可延后數十萬年,簡單且有手就行

前言 近年來&#xff0c;Windows更新頻率過快&#xff0c;最大只能暫停更新5周&#xff0c;導致用戶不厭其煩&#xff0c;從網上找到的暫停更新的方法不是過于繁瑣就是毫無效果&#xff0c;或者是暫停的時間有限&#xff0c;無意中發現一個大神的帖子可以通過修改注冊表信息以達…

Java定時任務方案

一、Timer import java.util.Timer; import java.util.TimerTask;public class TimerExample {public static void main(String[] args) {Timer timer new Timer();TimerTask task new TimerTask() {Overridepublic void run() {System.out.println("Task executed at:…

uni-app自定義多環境配置,動態修改appid

背景 在企業級項目開發中&#xff0c;一般都會分為開發、測試、預發布、生產等多個環境&#xff0c;在工程化中使用不同的打包命令改變環境變量解決不同環境各種變量需要手動修改的問題&#xff0c;比如接口請求地址&#xff0c;不同環境的請求路徑前綴都是不同的。在使用uni-…

Docker中為RabbitMQ安裝rabbitmq_delayed_message_exchange延遲隊列插件

1、前言 rabbitmq_delayed_message_exchange是一款向RabbitMQ添加延遲消息傳遞&#xff08;或計劃消息傳遞&#xff09;的插件。 插件下載地址&#xff1a;https://www.rabbitmq.com/community-plugins.html 1、下載插件 首先需要確定我們當前使用的RabbitMQ的版本&#xff0c…

Android隱藏輸入法

1、方法一(如果輸入法在窗口上已經顯示&#xff0c;則隱藏&#xff0c;反之則顯示) InputMethodManager imm (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 2、方法二(view為接受軟…

實踐教程|基于 pytorch 實現模型剪枝

PyTorch剪枝方法詳解&#xff0c;附詳細代碼。 一&#xff0c;剪枝分類 1.1&#xff0c;非結構化剪枝 1.2&#xff0c;結構化剪枝 1.3&#xff0c;本地與全局修剪 二&#xff0c;PyTorch 的剪枝 2.1&#xff0c;pytorch 剪枝工作原理 2.2&#xff0c;局部剪枝 2.3&#…

前端如何安全的渲染HTML字符串?

在現代的Web 應用中&#xff0c;動態生成和渲染 HTML 字符串是很常見的需求。然而&#xff0c;不正確地渲染HTML字符串可能會導致安全漏洞&#xff0c;例如跨站腳本攻擊&#xff08;XSS&#xff09;。為了確保應用的安全性&#xff0c;我們需要采取一些措施來在安全的環境下渲染…

QString常用函數介紹

此篇博客核心介紹QT中的QString類型的常用函數&#xff0c;介紹到的函數均從幫助手冊或其他博客中看到 QString 字符串類 Header: #include qmake: QT core 一、QString字符串轉換 1、QString類字符串轉換為整數 int toInt(bool *ok Q_NULLPTR, int base 10) cons…

Python 基礎 -- Tutorial(二)

5、數據結構 本章更詳細地描述了一些你已經學過的東西&#xff0c;并添加了一些新的東西。 5.1. 更多關于Lists 列表(list)數據類型有更多的方法。下面是列表對象的所有方法: list.append(x) 在列表末尾添加一項。相當于a[len(a):] [x]。 list.extend(iterable) 通過添加可…

如何使用SpringBoot 自定義轉換器

&#x1f600;前言 本篇博文是關于SpringBoot 自定義轉換器的使用&#xff0c;希望你能夠喜歡&#x1f60a; &#x1f3e0;個人主頁&#xff1a;晨犀主頁 &#x1f9d1;個人簡介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以幫助到大家&#xff0c;您的…

02-前端基礎第二天-HTML5

01-HTML標簽&#xff08;下&#xff09;導讀 目標&#xff1a; 能夠書寫表格能夠寫出無序列表能夠寫出3~4個常用input表單類型能夠寫出下拉列表表單能夠使用表單元素實現注冊頁面能夠獨立查閱W3C文檔 目錄&#xff1a; 表格標簽列表標簽表單標簽綜合案例查閱文檔 02-表格標…

Nginx搭建本地服務器,無需購買服務器即可測試vue項目打包后的效果

一.前言 本文是在windows環境&#xff08;Linux環境下其實也大同小異&#xff09;下基于Nginx實現搭建本地服務器&#xff0c;手把手教你部署vue項目。 二.Nginx入門 1&#xff09;下載安裝 進入Nginx官網下載&#xff0c;選擇stable版本下的windows版本下載即可 2&#xff09;…

Ubuntu 20.04配置靜態ip

ip配置文件 cd /etc/netplan配置 根據需求增加 # Let NetworkManager manage all devices on this system network:version: 2renderer: NetworkManager # 管理 不是必須ethernets:enp4s0: #網卡名dhcp4: no #關閉ipv4動態分配ip地址dhcp6: no #關閉ipv6動態分配…

Arrays.asList() 返回的list不能add,remove

一.Arrays.asList() 返回的list不能add,remove Arrays.asList()返回的是List,而且是一個定長的List&#xff0c;所以不能轉換為ArrayList&#xff0c;只能轉換為AbstractList 原因在于asList()方法返回的是某個數組的列表形式,返回的列表只是數組的另一個視圖,而數組本身并沒…

Wireshark 抓包過濾命令匯總

Wireshark 抓包過濾命令匯總 Wireshark 是一個強大的網絡分析工具&#xff0c;它可以幫助網絡管理員和安全專家監控和分析網絡流量。通過捕獲網絡數據包&#xff0c;Wireshark 能夠幫助我們識別網絡中的問題、瓶頸以及潛在的安全威脅。在使用 Wireshark 進行網絡數據包分析時&…

SQL Server基礎之游標

一&#xff1a;認識游標 游標是SQL Server的一種數據訪問機制&#xff0c;它允許用戶訪問單獨的數據行。用戶可以對每一行進行單獨的處理&#xff0c;從而降低系統開銷和潛在的阻隔情況&#xff0c;用戶也可以使用這些數據生成的SQL代碼并立即執行或輸出。 1.游標的概念 游標是…

DELL PowerEdge R720XD 磁盤RAID及Hot Spare熱備盤配置

一臺DELL PowerEdge R720XD服務器&#xff0c;需進行磁盤RAID及Hot Spare熱備盤配置&#xff0c;本文記錄配置過程示例。 一、設備環境 服務器型號&#xff1a;DELL PowerEdge R720XD 硬盤配置&#xff1a;800G硬盤共24塊 二、配置計劃 1、當前狀態&#xff1a;2塊盤配置RAID…