基于Linux下的VIC使用(1)VIC部分(Fortran版本)

VIC作为一款在业界得到广泛认可的水文模型,不像SWAT一样有极为详尽的使用说明文档,官网的东西有多模糊的点且网上的相关资料偏少,所以在此记录一下学习过程。

完全原创,转载请说明(一些资源可以在CSDN上直接找)

目录

  • 相关资源链接
  • VMware + Linux(Ubuntu)安装
  • VMTools 安装
  • 尝试编译vic

1. 相关资源链接 (VIC已开源)

VIC官网:Home - VIChttps://vic.readthedocs.io/en/master/

VIC源码:可取官网找或者github找,作者已开源

VIC_simple_data就是示例数据集

2. VMware 与 Linux安装

2.1 VMware

2.2 Linux

此处选择了南京大学的镜像下载地址,版本选择了18.0.4,其他需要其他的自行下载即可

2.3 教程示例

网络很多自己找

3 VMtools安装

需要vmtools的背景是,先前把vic源码和vic示例文件下载到了windows桌面上,而虚拟机和主机是无法直接复制文件夹的,但vmtools安装成功后,可以实现跨系统文件夹的直接复制

 其他:我在安装过程中出现了很多教程中没有展示的需确认项,部分直接enter即可,部分是需要输入yes/no,如果不放心建议百度解决。

如下图左侧两个文件夹,都是直接从Windows中直接复制进的linux

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第1张图片

4 尝试编译VIC

4.1 进入源码文件夹

方式1:直接在vic/drivers/classic中右键,在终端打开

方式2:直接打开终端,通过cd进入(根据自己的文件夹路径而定)

cd Desktop/VIC-master/vic/drivers/classic

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第2张图片

 4.2 编译vic.exe文件(make指令说明 / gcc / make安装)

4.2.1 操作过程

1)进入到4.1中的位置后,直接输入make

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第3张图片

2) 编译过程

 我编译过程一直在重复一个warning,VIC源码的问题,未对编译产生影响,暂时不管

错误:_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE

原因:自 glibc 2.19.90 (2.20 devel) 起不推荐使用 _BSD_SOURCE 和 _SVID_SOURCE 功能测试宏

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第4张图片

 3)编译完成后,会出现一个可执行的exe文件

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第5张图片

4)  ./vic_classic.exe后,出现红框中的即说明编译成功。

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第6张图片

 5)-v命令查看版本

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第7张图片

4.2.2 make指令说明 / gcc / make安装

什么是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

5 示例数据驱动vic

 5.1 示例数据说明

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第8张图片

 forcings:各类驱动数据

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第9张图片

parameters:参数文件(如全局参数、雪/冻土/土壤/植被等)

这里需要注意的是在global_param中,部分路径是相对路径,需要将其更为绝对路径,才能顺利找到相关驱动文件;

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第10张图片

故需要更改驱动数据的路径(此处需为绝对路径,担心错误可以直接右键+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} 需要去掉不可以加上(输出文件的路径同理需要一并更改)

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第11张图片

 正确的路径参考: 

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第12张图片

 执行成功:

基于Linux下的VIC使用(1)VIC部分(Fortran版本)_第13张图片

 输出文件一览:

总结:

1)官方simple_data并不能直接拿来用,需做适当更改,主要在全局参数文件中;

2)VIC相关资料还是太少,相关问题可以在VIC源码的Github issue一栏查找解决

你可能感兴趣的:(基于LInux下的VIC使用,ubuntu,linux,运维)