VIC作为一款在业界得到广泛认可的水文模型,不像SWAT一样有极为详尽的使用说明文档,官网的东西有多模糊的点且网上的相关资料偏少,所以在此记录一下学习过程。
完全原创,转载请说明(一些资源可以在CSDN上直接找)
VIC官网:Home - VIChttps://vic.readthedocs.io/en/master/
VIC源码:可取官网找或者github找,作者已开源
VIC_simple_data就是示例数据集
此处选择了南京大学的镜像下载地址,版本选择了18.0.4,其他需要其他的自行下载即可
网络很多自己找
需要vmtools的背景是,先前把vic源码和vic示例文件下载到了windows桌面上,而虚拟机和主机是无法直接复制文件夹的,但vmtools安装成功后,可以实现跨系统文件夹的直接复制。
其他:我在安装过程中出现了很多教程中没有展示的需确认项,部分直接enter即可,部分是需要输入yes/no,如果不放心建议百度解决。
如下图左侧两个文件夹,都是直接从Windows中直接复制进的linux
方式1:直接在vic/drivers/classic中右键,在终端打开
方式2:直接打开终端,通过cd进入(根据自己的文件夹路径而定)
cd Desktop/VIC-master/vic/drivers/classic
1)进入到4.1中的位置后,直接输入make
2) 编译过程
我编译过程一直在重复一个warning,VIC源码的问题,未对编译产生影响,暂时不管
错误:_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE
原因:自 glibc 2.19.90 (2.20 devel) 起不推荐使用 _BSD_SOURCE 和 _SVID_SOURCE 功能测试宏
3)编译完成后,会出现一个可执行的exe文件
4) ./vic_classic.exe后,出现红框中的即说明编译成功。
5)-v命令查看版本
什么是make指令?
主要是为了构建工程,其中必备的文件是MakeFil,如vic中可以在classic下找到这个文件。
MakeFile:告诉make需要做什么及怎么做
一般来说,主要是对文件中的c源文件进行编译和链接(多个文件链接成可执行程序)
不涉及太多,简单了解即可;
gcc/make安装
第一次make时,提示command not find,才发现我这个版本的中gcc和make都未安装,需要执行以下命令
安装make:sudu apt install make
安装gcc:sudo apt install gcc
forcings:各类驱动数据
parameters:参数文件(如全局参数、雪/冻土/土壤/植被等)
这里需要注意的是在global_param中,部分路径是相对路径,需要将其更为绝对路径,才能顺利找到相关驱动文件;
故需要更改驱动数据的路径(此处需为绝对路径,担心错误可以直接右键+R复制路径,/home开头)
5.2 运行exe文件
vic_classic.exe -g /home/aji/classic/Stehekin/parameters/global_param.STEHE.txt
此处需要注意两个地方
1)是exe文件可以复制到home下,直接右键打开终端使用;
2)后面的路径是绝对路径
初次运行之后,发现一直在持续报错未找到xx文件,花费了大量时间检查原因,最后在好朋友兼大厂开发的帮助下,发现在官方示例的全局参数定义文件中${VIC_SAMPLE_DATA} 需要去掉不可以加上(输出文件的路径同理需要一并更改)
正确的路径参考:
执行成功:
输出文件一览:
总结:
1)官方simple_data并不能直接拿来用,需做适当更改,主要在全局参数文件中;
2)VIC相关资料还是太少,相关问题可以在VIC源码的Github issue一栏查找解决