首页 > 其他分享 >[学习分享]基于matlab的新安江模型_01_模型介绍与蓄满产流

[学习分享]基于matlab的新安江模型_01_模型介绍与蓄满产流

时间:2024-05-26 14:33:46浏览次数:20  
标签:01 recoder 产流 jieguo 模型 径流 计算 蓄满

写在前面的 

  最近笔者刚完成水文预报这门课的课程设计,课程设计要求根据课本自行实现新安江模型,完成径流模拟。现在课程设计已经基本全部做完,自己感觉做的也还不错,同时也因为蛮喜欢水文预报这门课的,所以想再对课程设计的整个过程做个整理分享出来,也希望能够帮助到一些困惑于课程设计的同学。

  需要注意的是,本文构建的新安江模型仅是一个简易版本的新安江模型。主要体现为:在分水源计算中只划分了地面径流和地下径流;在坡面汇流中地上部分径流未直接转换法(即没有考虑其汇流过程);在参数方面仅进行了简易的人为调参,并未进行更进一步的参数调整。

  同时笔者代码能力和语言表达能力有限,可能存在部分错误,如果有发现,也麻烦大家多多指正,谢谢!

内容大纲

  本文完成了从半分布式和集总式两个方面进行新安江模型的构建,模型各个部分具体使用的模块如下:

流程

集总式

半分布式

数据预处理

计算泰森多边形

计算泰森多边形

计算面雨量

蓄满产流计算

根据E0推求E,并进行三层蒸散发计算

根据E0推求EP,并进行三层蒸散发计算

根据蒸散发量E及面雨量推求净雨量PE

根据蒸散发量E及各子流域降雨量推求各子流域净雨量PE

根据净雨量及EU,EL,ED计算得出本时刻径流深及下一时刻初的土壤含水量W

根据净雨量及EU,EL,ED计算得出本时刻径流深及下一时刻初的土壤含水量W

循环上述三步骤计算得出整个流域每个时刻的径流深R

循环上述三步骤计算得出各个子流域每个时刻的径流深Ri

分水源计算

根据蒸发能力FC及净雨量PE将径流深分为地面径流Rs及地下径流Rg

根据蒸发能力FC及净雨量PE将径流深分为地面径流Rs及地下径流Rg

坡面汇流

地上径流使用单位线转换法直接将Rs转化为Qs

地下径流使用线性水库法将Rg转化为Qg

地上径流使用单位线转换法直接将Rs转化为Qs

地下径流使用线性水库法将Rg转化为Qg

河网汇流

由Qs和Qg线性相加计算Qt,再根据滞后演算法计算模拟流量Q

对每个子流域根据马斯京跟法分段演算法计算其在出口断面处流量并线性相加得到模拟流量Q

精度评定

绘制逐年实测径流和模拟径流及降水图并计算确定性系数DC均方根误差RSME

绘制逐年实测径流和模拟径流及降水图并计算确定性系数DC均方根误差RSME

  本文的公式参考主要来源于包为民老师的《水文预报》第五版,后续的原理、公式等若不做额外说明则均摘自于该书。

新安江模型介绍

  新安江模型是华东水利学院(现河海大学)赵人俊教授团队提出的一个水文模型,是中国少有的一个具有世界影响力的水文模型。新安江模型是集总式水文模型(划分子流域时成为分散式水文模型),可用于湿润地区与半湿润地区的湿润季节。当流域面积较小时,新安江模型采用集总式模型,当面积较大时,采用半分布式模型。它把全流域分为许多块单元流域,对每个单元流域作产汇流计算,得出单元流域的出口流量过程。再进行出口以下的河道洪水演算,求得流域出口的流量过程。把每个单元流域的出流过程相加,就求得了流域的总出流过程。

蓄满产流

  蓄满产流的基本原理是:土壤所能够容纳的水量是一定的,当土壤蓄水量达到一定程度时,降落到土壤上的水一部分将不会再进行下渗而是产生径流,即“蓄满产流”。

   三层蒸散发蓄满产流的基本流程为(以逐日为例):

   (1)首先根据土壤上层含水量WU、降雨P和流域蒸发能力Ep,进行三层蒸散发推求土壤上中下层的土壤蒸发:

    由于本课程设计蒸发数据为蒸发皿蒸发量E0,因此想要得到流域蒸发能力Ep需要对E0乘上蒸发折算系数Kc

  Ep=Kc·E0

    折算后进行三层蒸散发计算,原理如下:

    计算公式如下:

   (2)根据(1)得到的总蒸发量计算净雨量PE。

PE=P-E

   (3)根据降雨径流关系计算产流量:

   (4)通过上述计算可以得到某一日的三层蒸发量Eu,El,Ed、净雨量PE、产流量R。如果这一日的PE>0,则这一日土壤含水量的变化量为:当日降雨量经过蒸发再经产流所剩余的水量。因此,计算产流后剩余的水量,三层土壤的含水量从上到下三层依次得到补充。但如果这一日的PE<=0,则这一日的土壤含水量变化量为:当日蒸发蒸发完当日降水量后所剩的蒸发量。同样的,剩余土壤的三层土壤的含水量从上到下三层依次进行蒸发。最后得到这一日结束时的土壤含水量作为下一日开始的土壤含水量,再从(1)开始进行计算。

   后续的代码将按照上述四个步骤循环计算,直到完成所有计算,最终对于每一次蓄满产流计算均可以得到该蓄满产流模型产流量计算表:

  对于上述步骤的matlab代码实现:

function [jieguo]=xuman(p,e0,w_chushi,wm,wum,wlm,wdm,b,k,c)
%p,e0请以行向量的形式输入
%w_chushi,请按照wm wu wl的形式以一个1x3的行向量的形式输入
%eg:w_chushi=[0 0 50];
%输如初始值
%wm=120;wum=15;wlm=85;wdm=20;b=0.3;k=0.95;c=0.14;
%读取数据并赋值
ep=e0*k;
w=w_chushi;%初始含水量
%%土壤含水量记录器
w_recoder=w;
%计算最大值a
wmm=wm*(1+b);
%设置各个变量的初始值
[x]=length(p);
eu=zeros(x,1);el=zeros(x,1);ed=zeros(x,1);e=zeros(x,1);r=zeros(x,1);
%计算三层蒸散发
for i=1:length(p)
    if w(1)+p(i)>=ep(i)
        eu(i)=ep(i);
        el(i)=0;
        ed(i)=0;
    elseif w(1)+p(i)<ep(i) 
        if w(2)>=c*wlm
            eu(i)=w(1)+p(i);
            el(i)=(ep(i)-eu(i))*w(2)/wlm;
            ed(i)=0;
        elseif  c*(ep(i)-w(1)+p(i))<=w(2) && w(2)<c*wlm
            eu(i)=w(1)+p(i);
            el(i)=c*(ep(i)-eu(i));
            ed(i)=0;
        elseif w(2)<c*(ep(i)-w(1)+p(i))
            eu(i)=w(1)+p(i);
            el(i)=w(2);
            ed(i)=c*(ep(i)-eu(i))-el(i);
        end
    end
    %计算总蒸散发及pe
    e(i)=eu(i)+el(i)+ed(i);
    pe(i)=p(i)-e(i);
    %径流
    a(i)=wmm*(1-(1-(sum(w)/wm))^(1/(1+b)));
    if pe(i)<=0
        r(i)=0;
    else
        if a(i)+pe(i)<=wmm
            r(i)=pe(i)+sum(w)-wm+wm*(1-(pe(i)+a(i))/wmm)^(b+1);
        else
            r(i)=pe(i)-(wm-sum(w));
        end
    end
    %考虑降水与蒸发对土壤含水量变化
    if w(1)+pe(i)-r(i)>=0
        w(1)=w(1)+pe(i)-r(i);
    else 
        if w(2)+pe(i)-r(i)>=0
            w(2)=w(1)+pe(i)+w(2)-r(i);
            w(1)=0;
        else 
            w(3)=w(1)+w(2)+w(3)+pe(i)-r(i);
            w(1:2)=0;
        end
    end
    %因为每一层土壤含水量都有最大值,保证含水量不会超过最大值
    if w(1)>wum
        w(2)=w(2)+w(1)-wum;
        w(1)=wum;
    end
    if w(2)>wlm
        w(3)=w(3)+w(2)-wlm;
        w(2)=wlm;
    end
    if w(3)>wdm
        w(3)=wdm;
    end
    w_recoder=[w_recoder;w];%记录
end
jieguo(:,1)=p;
jieguo(:,2)=e0;
jieguo(:,3)=ep;
jieguo(:,4)=eu;
jieguo(:,5)=el;
jieguo(:,6)=ed;
jieguo(:,7)=e;
jieguo(:,8)=pe;
jieguo(:,9)=w_recoder(1:length(w_recoder)-1,1);
jieguo(:,10)=w_recoder(1:length(w_recoder)-1,2);
jieguo(:,11)=w_recoder(1:length(w_recoder)-1,3);
jieguo(:,12)=sum(w_recoder(1:(length(w_recoder)-1),:),2);
jieguo(:,13)=r;
end

    

  该函数最终输出的jieguo矩阵以步骤⑤中的表形式保存排列,大家可以自行代入该表的数据进行计算以验证代码计算的正确性。

标签:01,recoder,产流,jieguo,模型,径流,计算,蓄满
From: https://blog.csdn.net/FlaGG_123/article/details/138764792

相关文章

  • [书生·浦语大模型实战营]——第三节:茴香豆:搭建你的 RAG 智能助理
    0.RAG概述定义:RAG(RetrievalAugmentedGeneration)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决LLMs在处理知识密集型任务时可能遇到的挑战,如幻觉、知识过时和缺乏透明、可追溯的推理过程等。提供更准确的回答、降低推理成......
  • 【数据分享】仙桃市统计年鉴(2011-2023)
    大家好!今天我要向大家介绍一份重要的仙桃市统计数据资源——《仙桃市统计年鉴》。这份年鉴涵盖了从2011年到2023年仙桃市统计全面数据,并提供限时免费下载。(无需分享朋友圈即可获取)数据介绍在数字的海洋中,每一串数据都像是时间的足迹,静默而深刻。今天,让我们一起翻开那本记录着......
  • 【ArcGIS微课1000例】0112:沿线(面)按距离或百分比生成点
    文章目录一、沿线生成点工具介绍二、线状案例三、面状案例一、沿线生成点工具介绍位置:工具箱→数据管理工具→采样→沿线生成点摘要:沿线或面以固定间隔或百分比创建点要素。用法:输入要素的属性将保留在输出要素类中。向输出要素类添加新字段ORIG_FID,并设置为......
  • 重排模型DLCM
    论文名:LearningaDeepListwiseContextModelforRankingRefinement背景在搜索场景下,给定一个查询q,q和d特征的向量表示x(q,d),rank阶段的loss可以表示为:其中:Q是query的集合,D是doc集合,f是rank模型函数可以看到,传统的rank模型是一种point-wise的建模方法,没有考虑不同doc之间......
  • 2024年5月大语言模型论文推荐:模型优化、缩放到推理、基准测试和增强性能
    前一篇文章总结了关于计算机视觉方面的论文,这篇文章将要总结了2024年5月发表的一些最重要的大语言模型的论文。这些论文涵盖了塑造下一代语言模型的各种主题,从模型优化和缩放到推理、基准测试和增强性能。大型语言模型(llm)发展迅速,跟上这些领域新颖的研究将有助于引导模型的持续......
  • 一种多行业AI大模型应用系统架构图
    一种多行业AI大模型应用系统架构图在线下载地址:https://www.processon.com/diagraming/663aca77c6097856afd4d9ba一种适用于多行业AI大模型应用系统架构图,共分为七层:1、模型应用,2、模型服务平台、3、行业模型、4、模型训练5、模型选择,6、行业数据,6、部署方式;通过对AI模......
  • 如何选择一个最强大模型-看最硬核排名了!
    ChatbotArena由伯克利大学主导团队LMSYSOrg发布了一个针对大语言模型的基准平台ChatbotArena。该平台采用匿名、随机的方式让不同的大模型产品进行对抗评测,基于国际象棋等竞技游戏中广泛使用的埃洛等级分系统,通过用户投票产生,系统每次会随机选择两个不同的大模型机器人和......
  • 大语言模型LLM 相关知识汇总
    大型语言模型(LLM)在设计和应用时需要遵守一系列的道德和法律标准,以确保不会输出不当内容。以下是一些LLM通常不应该对外输出的内容类型:个人隐私信息:包括但不限于个人身份信息(PII),如姓名、地址、电话号码、电子邮件地址、社会安全号码等。敏感数据:任何可能涉及国家安全、商业......
  • 网络模型-策略路由配置
            在实际网络应用中,策略路由也是一种重要的技术手段。尽管在考试并不注重策略路由,但是实际上应用较多建议考生除了掌握基本的静态路由协议IProute-static,动态路由协议RIP、还要掌握如何配置策略路由。策略路由的基本原理:根据ACL定义的不同数OSPF的基础配置外,据......
  • 昇腾开发全流程 之 MindSpore华为云模型训练
    前言学会如何安装配置华为云ModelArts、开发板Atlas200IDKA2,并打通一个训练到推理的全流程思路。在本篇章,首先我们开始进入训练阶段!训练阶段A.环境搭建MindSpore华为云模型训练Step1创建OBS并行文件登录华为云->控制台->左侧导航栏选择“对象存储服务OBS”......