VIC水文模型常用命令,报错修正方法,常用Linux命令

(i)VIC模型常用命令及修正方法

在构建好VIC模型的各项输入文件之后便可以启动VIC水文模型运行,模型运行环境为Linux,在Windows系统上可以选用Cygwin等一些软件构建虚拟环境,如果在Linux系统上可以直接输入命令即可,下面介绍一些常用的输入命令:

(1)编译VIC产流exe的cygwin命令:

先从github上下载vic产流源代码,github地址为https://github.com/UW-Hydro/VIC,然后进入源码中make还是什么文件中进行修改,使得机器用fortran运行,这个网上可以找到我就不赘述了。然后定位到刚刚的文件夹,如源码存放在D:/hydr_model//VIC_4.1.2.g下,在cygwin中输入命令

cd D:/hydr_model/VIC_4.1.2.g

再输入make,exe文件便编译好。然后将编译出来的exe文件复制到复制到cygwin64安装目录cygwin64/bin下即可。

(2)运行VIC产流exe的cygwin命令:

在cygwin中定位到产流全局参数的位置,然后输入下方类似的命令即可:

cd D:/model_set/VIC_basin/param
D:/cygwin64/bin/vicNl.exe -g basin_global_param.txt

另外比如我把exe粘贴到服务器/root/目录下,便可以在/root目录下右键打开终端,然后输入

 /root/vicNl -g /mnt/MRI_SSP370/param/basin_global_param.txt

,意思就是运行/mnt/MRI_SSP370/param/这个路径下的全局参数文件。

(3)编译Rout汇流exe的cygwin命令:

先在https://github.com/UW-Hydro/VIC_Routing/tree/Fortran_version下载fortran版本的汇流源码,然后注意修改汇流中的部分代码,使得输出流量单位为立方米每秒,因为源代码默认的输出单位是立方英尺每秒。

同样是先cd到源码路径,然后make,然后复制粘贴,然后运行汇流全局文件。下面是一个案例:

cd D:/HSK2022/ROUTE_61_64/route_1.0/src
make

然后复制到cygwin64/bin下

(4)运行Rout汇流的cygwin命令:

cd D:/HSK2022/year61_67/ROUTE_61_67/param
D:/cygwin64/bin/rout.exe baisn_rout_input.txt

可能遇到的问题:

如果你建立的网格规模较大,网格的行数或列数超过250,模拟的时长超过50年,或者站点控制的流域内的网格数超过10000,请将源文件rout.f中的相应限制值变量改为你需要的值(分别为位于32、33和44行的NROW、NCOL、NYR、PMAX)。(参考信息来自https://sourl.cn/NmcWyW,恰好我也碰到了这种错误,直接修改后重新编译rout汇流exe即可)

当出现打不开汇流参数文件的时候,如cannot open in read_direct这种,首先汇流全局文件中参数文件的路径是否正确,如果出现cannot open in mask这种报错。(文件路径长度要控制,最大为72个字符,如实在不行请将源码中相应的定义字符串长度的值改为你所需要的值。我也不知道怎么改,所以就直接改路径最方便,参考信息来自https://sourl.cn/mMFUSP)

VIC水文模型常用命令,报错修正方法,常用Linux命令_第1张图片

(ii)常用Linux命令

显示文件列表 --- ls命令

ls命令是linux下最常用的命令,是list的简写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等。

命令格式:

ls [选项] [文件或目录]

选项说明:

选项 作用

-a

显示所有文件,包括隐藏文件(隐藏文件都是以.开头的)

-l

显示详细信息(也可以直接使用命令ll,相当于ls -l)

-d

仅显示目录名,而不显示目录下的内容列表

-h

以容易理解的方式列出文件大小(例如 1K 2M 3G)

-i

显示文件索引节点号(inode)。一个索引节点代表一个文件

补充说明:

对选项-d这一项做一个补充说明。当单独使用这个选项时,如果参数是一个目录,只显示目录名,不显示这个目录下的文件。

例如要查看/home,那么ls /home会打印出/home下所有文件名字加上选项也就是ls -d /home,只会打印出/home这个目录名字,而不会显示目录下的文件列表。

通常这个参数配合-l使用,打印出要查看的目录的详细信息,而不是这个目录下文件的信息。例如要查看/home的详细信息,需要两个选项配合使用ls -ld /home即可

将查看结果输出到指定路径下的txt文件中方便查阅,可以按照如下命令输入:

ls -d * >/root/list.txt

一些例子:

ls -a

VIC水文模型常用命令,报错修正方法,常用Linux命令_第2张图片

ls -l

VIC水文模型常用命令,报错修正方法,常用Linux命令_第3张图片

ls -d

VIC水文模型常用命令,报错修正方法,常用Linux命令_第4张图片

ls -d *

VIC水文模型常用命令,报错修正方法,常用Linux命令_第5张图片

统计文件的字节数、字数、行数--- wc命令

统计文件夹下所有文件的各自的行数和总行数

wc -l * # 统计当前目录下的所有文件行数及总计行数。(也可以用find . -name "*" | xargs wc -l)

wc -l *.js # 统计当前目录下的所有 .js 后缀的文件行数及总计行数。

find . * | xargs wc -l # 当前目录以及子目录的所有文件行数及总计行数。

VIC水文模型常用命令,报错修正方法,常用Linux命令_第6张图片

删除--- rm命令

rm是一个很危险的命令,新生一定不能在/根目录执行rm -rf *,或者执行rm -rf /,这将导致系统所有文件被删除,导致系统崩溃。所以在删除时一定要确认清楚。

命令格式

rm [选项] 文件…

命令功能

删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

命令参数

-f,–force 不提醒直接删除

-i,–interactive 交互式删除

-r,-R --recursive 递归删除子目录

-v,–verbose 详细显示进行的步骤

–help 帮助信息

–version 输出版本信息

详细功能可参考https://www.cnblogs.com/peida/archive/2012/10/26/2740521.html。

这里主要删除以snow开头的文件,可以用 rm ./snow*。这里需要*的存在。

获取当前目录下内存最大最小文件

du -s * | sort -nr | head -n 10 # 获取大小最大的10个文件

du -s * | sort -nr | tail -n 10 # 获取大小最小的10个文件

其他常用工具:

(1)在windows中powershell中输入下方命令,可以得到D:\aaa\gfdl_vic_pic_result文件夹下所有文件的行数之和。

dir D:\aaa\gfdl_vic_pic_result -Recurse * | Get-Content | Measure-Object

VIC水文模型常用命令,报错修正方法,常用Linux命令_第7张图片

VIC入门,模型交流  V:shugu2020

--------------------------------------------------------------------------------------------------------------------------------

- [参数不确定性分析] 基于敏感性分析的VIC模型中国径流模拟参数自动优化

Gou, J. J., Miao, C. Y.*, Duan, Q. Y., et al. (2020). Sensitivity analysis‐based automatic parameter calibration of the VIC model for streamflow simulations over China. Water Resources Research, 56(1), e2019WR025968. 

https://doi.org/10.1029/2019WR025968.

作者简介:

苟娇娇,北京师范大学地理科学学部博士研究生,主要研究方向包括:水文模型,陆面过程,气候变化及水文预报

联系方式:[email protected]

关键词:中国区域径流;参数敏感性分析;参数优化;不确定性

摘要:

水文模型是从数学的角度去描述和模拟水文循环的方法,其对于解决实际的水文问题起着重要的作用。模型参数不确定性及参数率定是流域水文模拟的难点问题,参数不确定性分析有助于提高模型模拟的精度与效率。可变下渗容量模型(The Variable Infiltration Capcity model, VIC)作为一个基于物理的分布式中尺度水文模型,在世界及中国的径流模拟工作中应用广泛。尽管过去的研究一致认同敏感性参数具有空间分异性且自动参数优化更具高效客观性,但仍有许多VIC模型模拟工作使用传统人工试错率定方法,并局限于专家推荐的7个默认敏感性参数:B, D1, D2, D3, Ds, Ws, 与 Dm(参数介绍详见论文全文)。

针对以上问题,研究团队提出了基于敏感性分析及替代模型的参数自动优化框架。该框架不仅可以准确的识别重要参数,实现模型参数优选;而且能够通过计算机程序自动化快速的得到更客观的参数率定结果,减少参数率定过程中的不确定性。研究团队使用VIC模型对该框架在中国30个小流域的率定效果进行了验证。结果表明,计算得到的敏感性参数与专家推荐的默认敏感性参数不完全一致,存在重要参数误判甚至遗漏参数的现象(图1)。与传统的人工试错率定模型默认敏感参数相比,基于敏感性分析的率定框架通过剔除不敏感参数(I型错误,图2a)与增补遗漏参数(II型错误,图2b)提高模型率定效率,强化参数优化结果。30个小流域率定期纳什效率系数(NSE)达0.75–0.95(图3),验证期NSE达0.71–0.97,模拟与观测的天然径流量在时间尺度上的变化趋势大致相同,径流的峰值/低值处较为匹配。该项参数优化框架预期可以为相关模型率定工作提供一定的参考依据。

VIC水文模型常用命令,报错修正方法,常用Linux命令_第8张图片

图1 DT,SOT和MARS方法计算得到的参数敏感性结果。敏感性得分标准化至[0, 1]范围,1表示极敏感,0表示极不敏感。灰色簇线表示所有流域参数敏感性结果。

VIC水文模型常用命令,报错修正方法,常用Linux命令_第9张图片

图2 敏感性参数优化与默认参数优化结果对比。a, b图分别为挑选的参数过量(Case1辽河流域通化站)及参数遗漏(Case2淮河流域中渡站)对比分析结果。模型最优解由NSE表示,找到最优解所需的算法搜索时间由模型运行次数表示。

VIC水文模型常用命令,报错修正方法,常用Linux命令_第10张图片

图3 中国30个小流域率定期(1961–1969年)径流参数自动优化结果。顶部散点图为流域径流模拟值与观测值(天然流)的匹配情况,使用NSE与R2值指标量化。周围10个子图为站点径流序列对比情况,蓝线和黑线分别表示模拟径流与天然流,径流单位为102m3/s。


撰稿: 苟娇娇  |  编辑:  童山琳 | 校稿: 林静玉

---

VIC入门,模型交流  V:shugu2020

你可能感兴趣的:(水环境,水科学,水文模拟,linux,windows,运维)