学习记录十二:VIC模型—参数率定
一、需要率定的参数(对径流模拟效果敏感的土壤参数)
以下参数,一开始没有完全准确的值,需要在一个范围内率定直到获得最优参数组合:
infilt:可变下渗曲线方程的幂,通常为0.2~0.6
Ds:非线性基流发生时流速占基流最大流速Dsmax的比例
Dsmax:基流最大流速,单位mm/day
Ws:非线性基流发生时土壤含水率占饱和含水率的比例
depth:除第一层以外的其他层土壤厚度(即第2、3层),单位m

二、前期准备工作
1.将打开"lvding"文件夹放入产汇流文件夹"F_F"中

2.打开start.bat脚本文件("lvding\code\start.bat"),修改文件路径(参考之前产流汇流),注意斜杠方向的修改"/"

3.打开"NashCoef.m""CreateNewFile.m"脚本文件(lvding文件夹中)及"MinFun.m"脚本文件(lvding\SCEUA文件夹中)
①NashCoef.m:修改第3行的文件路径(汇流模型输出的"逐日径流"数据)

②MinFun.m:修改第6、7行的文件路径("单位线"数据)

③CreateNewFile.m:按照脚本内"行数"修改"4_Sum_soil_param.R"(lvding\code\R\)

"4_Sum_soil_param.R"修改如下:保证这6个参数分别在7,8,9,10,37,38行



注意:还需修改"4_Sum_soil_param.R .sample"

4.打开"new 3.txt"文本(F:\VIC_modle\result\F_F)
第1行,6个参数的取值范围,需根据研究区来定(查阅文献),可能需要不断修改率定

参考文献:王媛. 基于VIC模型的黄河源区降雨径流转化关系模拟研究[D].青海大学,2022.

三、率定(在Matlab中打开以下五个脚本)

1.在"NashCoef.m"脚本中,将实际平均径流更改为研究区历年平均径流

2.在"AutoOptimize.m"脚本中
①在命令行窗口输入real=0,然后单机回车,右边工作区会出现一个real变量

②单击real打开,将实际径流数据拷贝至表格中

③在命令行窗口输入"save+文件名",单机回车,即可在文件夹中看到该文件,将其拖入resource文件夹中

④更改脚本中的文件名

3.在自动率定前,先进行手动测试
①运行"AutoOptimize.m"脚本

②在命令窗口中输入MinFu ( [ , , , , , ] ),括号中是六个参数的值,单机回车运行

4.自动率定
①将new 3.txt"内容拷贝至Matlab的新脚本中,全选执行所选内容

②打开右边工作区出现"V变量",选择已经组合好的参数矩阵,将其拷贝至"params.txt"文件中(lvding\resource)

③开始自动率定,先运行"AutoOptimize.m"脚本,再运行"ParamsCalculate.m"
Error1:CMD执行异常


原因:此路径下,缺少uh_s文件,之前被误删,加上即可,首先要有这个文件,才能在此命令下删除

Error2:无论参数如何变化,Nash效率系数一直为1

原因1:我随意设置的平均径流太大,所以nash为1,我将平均径流修改为真实合理值,发现Nash有变化,不再是1,但依然不会随着参数的设置而变化

在我百思不得其解时,同学的一句话点醒了我(感谢他!!!),重新跑了产流和汇流模型,发现真的存在问题!!!为什么我就没有想到去检查呢,我还很自信的认为之前产流汇流都调试成功了,不用再回头看/(ㄒoㄒ)/~~

原因2:产流报错原因是bulk density必须大于0,在之前第一次跑的时候遇到过(《学习记录十》),因为当时直接在土壤输出文件中粗暴的把0改为0.1,但代码没改过程输出的文件没改,所以导致这个问题依然存在

原因3:汇流报错原因是"单位线文件已存在",此前这个问题也遇到过,但率定时,不用在"F_F_stnloc.txt"中加单位线地址,直接NONE即可,因为率定代码里已经有删除命令

运行成功!!!

四、一些注意事项
1.首先要保证汇流和产流是能跑通,没有报错的,才能进行率定,否则看似率定出了nash系数,但其实是错的,一定要多检查!!!再放一次这几句点醒我的话!!!

2.检查输出单位是否是"立方米/秒"和"mm",如果你的"make_convolution.f"中和下图一样,那就是已经转换过了,此文件不用再次修改


3.自动率定原本代码只能用逐日实测径流率定,输入逐月无法率定,需要改动代码

4.要在一开始就设定好VIC模型的预热期、率定期、验证期,进行VIC模拟时得分时段进行模拟。由于刚开始模拟计算时,流域的初始状态未知,所以要设定一个预热期,以便提高模拟的准确性;然后在率定期对相关参数进行率定,确定最优参数组合;最后用验证期对模型模拟效果进行验证。不要刚开始就傻乎乎一股脑把所有年份一起模拟了,比如我......

5.不是每个流域都可以用VIC,有些流域人类活动干扰很大,用VIC模拟效果不好,比如我正要做的流域......听天由命咯,不行就得换模型了/(ㄒoㄒ)/~~


6.关于VIC的文献不是很多,以下几篇硕博论文中VIC讲的比较详细可参考
[1]李秀清. 基于VIC模型的丹江流域水文模拟及水资源管理对策[D].西北大学,2021.
[2]孟鹏飞. 基于水文模拟定量评估漳河上游流域径流变化归因[D].河北工程大学,2020.
[3]王媛. 基于VIC模型的黄河源区降雨径流转化关系模拟研究[D].青海大学,2022.
[4]蔡洁连. 基于VIC模型的卫星降水产品在赣江流域的应用研究[D].南宁师范大学,2022.

自我反省及感谢Part 多看文献,多思考,多检查,不要想当然!!!!
这周在做率定的时候遇到了一些问题,在咸鱼找人解疑,要么太贵,要么回复慢。回想起学习VIC的整个历程,遇到不少问题,每次遇到的问题可能很简单,但自己总是不开窍,需要别人点一下才懂,并且刚解决完一个问题就接着遇到下一个问题,在自闭中轮回折磨。所以在跑到率定这一步,我非常想立刻跑出来,完成它!!!因为率定一直出现问题,我连着几个晚上失眠到凌晨4点......最后不得已还是去打扰了一位同学,正巧他告诉我学习这个模型已有一年已经跑通,并且愿意帮助我,带病为我语音讲解,没有任何推脱,在他的点拨下,我最后才得以跑通!!!非常感谢!!!祝他毕业顺利工作顺利!!! 也感谢某位有偿解疑答惑的大佬,在别人收200-450不等的时候,他每次只收20块,一句回复就能解决我的问题!!!

因为VIC模型学习资料网络上真的太少了,相关文献里也有步骤,但比较简略,没有具体操作步骤,我的信息渠道也很闭塞,在某鱼找人问一个小问题动辄就收费几百,所以在此分享记录我的VIC学习历程,希望对也在苦苦学习这个模型的同学有用,大家一起交流共同进步!!!如果你在看这些文章的时候,发现我的操作步骤有问题,或者对我遇到的问题有好的解决方案,也希望可以告知我!!!评论私聊均可!!!
OK,算是把VIC模型通学了一遍,我现在的状态还是一知半解,下面我就开始好好读文献,分好预热/率定/验证期,不要盲干了,理解这个模型后,再从头开始跑一遍!!!
