zhaoyistop的个人博客分享 http://blog.sciencenet.cn/u/zhaoyistop

博文

利用EFAST方法分析DHSVM参数的敏感性

已有 2976 次阅读 2021-8-17 10:57 |个人分类:DHSVM|系统分类:科研笔记

参数敏感性分析是数值模型应用中常用的方法,通过敏感性分析,可以区分哪些参数对模拟结果的影响更大,从而更好的进行参数率定,加深对模型应用的认识。本文以DHSVM样例数据为基础,介绍如何利用EFAST敏感性分析方法,对DHSVM中4个土壤参数进行敏感性分析。


本文同步发表在CSDN:https://blog.csdn.net/qq_21957901/article/details/119615658?spm=1001.2014.3001.5502


一、所需资料

1.DHSVM模型及数据:来自DHSVM模型官网 https://www.pnnl.gov/projects/distributed-hydrology-soil-vegetation-model
2.EFAST方法matlab代码:可能来自网络资源 https://www.codedown123.com/64477.html,忘记从哪里获取得了,感谢贡献者,本文另附一份修改后的以供使用。
3.连接EFAST与DHSVM模型的C语言代码:本文提供下载。

参考文献:(希望大家多多引用 ^ . ^)
Zhao Y, Nan Z*, Yu W, Zhang L. Calibrating a hydrological model by stratifying frozen ground types and seasons in a cold alpine basin. Water. 2019, 11(5): 985. DOI:10.3390/w11050985.
赵奕,南卓铜*,李祥飞,徐毅,张凌. 分布式水文模型DHSVM在西北高寒山区流域的适用性研究. 冰川冻土. 2019, 41(1): 147-157.

资源附件:
https://download.csdn.net/download/qq_21957901/21110845?spm=1001.2014.3001.5501

二、操作步骤

流程图

1.导入matlab文件

将matlab文件中的efast_DHSVM.m、Parameter_settings_EFAST.m、parameterdist.m、SETFREQ.m这四个文件用Matlab打开。
导入matlab文件

2.设置参数取值范围和必要变量

在efast_DHSVM.m中输入相关的参数个数,搜索曲线采样数等信息。注意k是参加敏感性分析的参数数量+1个虚拟参数,在本案例仅选取4个土壤参数。
采样信息
在Parameter_settings_EFAST.m中输入参数的最大最小值,调整相应变量,本案例选取横向导水率LC、田间持水量FC、递减系数ED泡压BP这4个参数,另有一个虚拟参数dummy
参数范围

3.生成随机参数组

运行代码,在生成的变量中找到X,X为生成的随机参数组,如果待测参数有4个,每组采样65次,则一共有5组(包含一个虚拟参数),每组有65条记录。在这里插入图片描述
将X中的每一组的参数组分别保存为parameter.txt,放入工作文件夹parax中(x为对应的组号),具体样式请查看附件。(注意,将无关信息去除)
参数组
工作文件夹

4.修改DHSVM参数配置文件

本样例通过识别并替换配置文件中的标识符,将随机参数组填入DHSVM配置文件中。打开模型参数配置文件INPUT.Mercer.3.1.2_Bin,将待测参数的值模型输出路径替换为唯一标识符,请务必注意保证唯一标识符不会与配置文件中的其他字符重复,将修改后的配置文件放入每个paraX文件夹。
参数值替换为唯一标识符
模型输出路径

5.修改efast_dhsvm工程

打开efast_dhsvm工程中的源代码,设置相应的变量。

image.png

第93行(附近)设置唯一标识符,唯一标识符的顺序要跟parameter.txt文件中每行参数的顺序一致,保存路径标识符放在最后。

image.png

第176行(附近)设置调用 DHSVM.exe 运行模型,将字符串改为自己的DHSVM执行程序,本文以 DHSVM3.1.2.exe 为例。修改完成后生成执行程序。

image.png

6.进行自动计算

将生成的efast_dhsvm.exe、和DHSVM运行程序DHSVM3.1.2.exe,修改后的参数配置文件INPUT.Mercer.3.1.2_Bin以及每组对应的参数文件parameter.txt放入对应工作文件夹parax。同时注意驱动DHSVM模型的数据文件的位置,本案例所用的驱动数据在input、met、modelstate文件夹中。
运算
运行efast_dhsvm.exe,对每个参数集合生成相应的参数配置文件SET-x,运行DHSVM模型,并将结果保存至对应的输出文件夹x

若提示模型输入数据无法打开,请仔细检查报错信息,在原参数文档INPUT.Mercer.3.1.2_Bin中修改输入数据路径为本机对应路径。所有DHSVM所需的输入数据在模型样例数据中的input、met和modelstate文件夹

7.提取日均径流量

打开c语言工程read_results,修改相关设置(已标注),生成read_results.exe,将其放入文件夹parax中,读取每个参数组的模拟结果中的Streamflow.Only文件,提取日平均径流量,保存为results.txt文档。如果要峰值流量等的其他数据,请自行提取。
results

将每组计算出的results.txt按照顺序合并成一个文件total_results.txt。包含 参数个数*每个参数采样个数 行数据,具体参考本文附件。
totalresults

8.统计参数敏感性

将matlab文件Sensitivity.m导入matlab,调整相应设置,修改路径载入total_results.txt进行计算,得到的变量中,SiSti是每个参数的一阶敏感性和全局敏感性。
sensitivity设置
一阶敏感性
在这里插入图片描述
可以看到前三个参数横向导水率LC、田间持水量FC、递减系数ED具有较高的敏感性,而泡压BP基本对结果没有任何影响。虚拟参数反映的是参数之间的相互关系,在这里似乎并不高,具体解析可以参考EFAST方法的说明。


总结

EFAST方法是比较常用的分析模型参数敏感性的方法,不仅能反映单个参数变化下的一阶敏感性,也能反映多个参数狐仙关联下的全局敏感性。本文提供了一种将EFAST方法应用到DHSVM模型中的方法,虽然文中只选取了4个土壤参数,但对模型其他参数也可以用同样的方法分析敏感性,也为EFAST方法应用到其他模型提供一个思路。




https://blog.sciencenet.cn/blog-3452201-1300176.html

上一篇:DHSVM初始状态数据制作
下一篇:水热耦合模型SHAW驱动数据说明和运行方法
收藏 IP: 223.2.40.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 21:08

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部