VIC Image 驱动程序

  • 前言
  • 一、VIC模型输入
  • 二、运行VIC Image驱动程序
    • 2.1 依赖
    • 2.2 编译
    • 2.3 运行VIC
    • 2.4 其它命令行选项
  • 三、VIC模型Image驱动程序输出
    • 3.1 模型结果
    • 3.2 VIC运行日志
    • 3.3 状态文件(可选)

前言

Image驱动程序代表了VIC模型的现代实施方案。它使用netCDF作为输入输出,时间先于空间的运行评估顺序,使用MPI来进行并行处理。


一、VIC模型输入

VIC模型的输入文件可以通过不同的程序或数据集进行构建。下面是对每个输入文件的结构和构建方法的描述。以Stehekin盆地数据集为例,给出一个综合示例,包括每个输入文件,下载链接:downloads page

运行VIC,必须以下输入数据:

  • 全局参数文件详情:这是VIC的主要输入文件,它给出了VIC输入/输出文件的位置和模拟设定的参数。
  • 气象驱动文件详情:网格化、优于逐日时序气象数据的输入。
  • 参数文件详情:地表描述的空间参数文件。
  • 域名文件详情:VIC运行的域名信息。

其它选项:

  • 常量文件详情:时空维度模型参数是常量
  • 初始状态文件详情:水储量(土壤湿度,积雪等),能量储存(土壤温度等)和其它描述当前系统状态的信息。前一VIC模型模拟保存的状态文件可以用作下一VIC模拟运行的初始状态文件。
  • 湖/湿地参数文件详情:文件包含了湖模型的参数。默认情况下,VIC不模拟湖或谁表面的截留。

二、运行VIC Image驱动程序

2.1 依赖

Image驱动有3个依赖:

  • C编译器。我们常规测试VIC使用如下编译器:
    ——GNU(gcc 版本4+)
    ——Clang(clang 版本3+)
    VIC还可以使用以下编译器:
    ——Intel(icc)
    ——PGI(pgcc)
  • MPI。我们测试VIC使用以下MPI安装:
    ——OpenMPI(版本1.5.4+)
    ——MPICH(版本1.2+)
  • netCDF4

**Note**:编译Image驱动程序还可以使用OpenMP。现在近乎所有的C编译器都包括了OpenMP标准,用户需要确认makfile有相适应的编译标志(通常为-fopenmp)。可以根据下面的讨论来了解如何控制OpenMP并行。


2.2 编译

大多数实例中,你需要编辑Makefile 文件中NETCDF_PATHMPI_PATH变量。
如果你想使用除了 mpicc 其他编译器,可以编辑 Makefile或是设置MPICC
环境变量,示例

MPICC = /path/to/mpi_c_complier

Makefile文件中会自动的判定编译VIC,处理netCDF所需的标志和库体。它们可以通过设置下面两个环境变量来重写。这些变量可以通过运行 nc-config --all 来规定。

NC_LIBS = "-L/path/to/libs..."
NC_CFLAGS = "-I/path/to/includes -your_c_flags..."

在某些MPI库版本,你可能还要在编译前设置环境变量 MX_RCACHE = 2

为了可以使用河流汇流扩展模块,你还必须设置 ROUT 选项。这包括在 Makefile 文件中设置扩展和在输入参数文件中添加特定路径。若了解更多关于汇流扩展模块的信息,可参考routing extension documentation。

  • 变更目录,cd 到“Image Driver”源程序目录,打印 make
cd vic/drivers/image
make
  • 若这步完成无误,你可以在此目录中看到 vic_image.exe 文件, vic_image.exe 是这个模型的可执行文件。

2.3 运行VIC

在命令行输入:

./vic_image.exe -g global_parameter_filename.txt

这里 global_parameter_filename = 与你的项目相关的全局参数文件的名字。
VIC 图像驱动程序可以利用MPI或OpenMP进行并行处理。


Note!!!我们鼓励用户咨询他们的系统管理员的帮助来配置VIC Image驱动程序来进行并行处理。


使用多核处理器和MPI运行VIC Image驱动程序,输入下面信息:

mpiexec -np $n_proc ./vic_image.exe -g global_parameter_filename.txt

这里 n_proc = 使用的处理器核数。 注意不同的MPI应用可以使用不同的名字来执行MPI,例如:mpirun,mpiexec_mpt,或 mpiexec.hydra
为了通过OpenMP线程使用多核处理器来运行VIC模型,设置环境变量 OMP_NUM_THREADS:

export OMP_NUM_THREADS = 8
./vic_image.exe -g global_parameter_filename.txt

2.4 其它命令行选项

VIC还有其它命令行选项:

  • ./vic_image.exe -v: 解释VIC版本
  • ./vic_image.exe -h: 打印VIC命令行选项的列表
  • ./vic_iamge.exe -o: 打印当前执行中的编译时间设置; 若更改这些设置,你需要编辑相应的头文件(例如,vic_def.hvic_driver_shared.h)使用 make_full 重新编译。

三、VIC模型Image驱动程序输出

3.1 模型结果

输入结果文件可以由用户来控制,通过在全局参数文件中来设定。若在全局参数文件中没有给定输出文件的指令,VIC将会输出默认参数对应的默认文件。

  • 如何控制VIC输出文件的内容:详情
  • 可输出变量的列表(在 vic_driver_shared_all.h):详情
  • 默认输出文件:详情
  • 如何添加新的输出变量:详情(当前是不可用)

3.2 VIC运行日志

若全局参数文件中提供了LOG_DIR变量,VIC将会把日志输出到日志文件中(文件名由运行时间来决定)。默认日志文件位置 stderr。日志文件的长度在 Makefile 文件中 LOG_LVL 设定。

3.3 状态文件(可选)

VIC可以输出模拟过程中任一节点的水文状态到文件中(通常是最终状态),目的是在后面模拟重启时作为初始状态文件。这个在循环或方法重现时很有用。

  • 状态文件结构
    在全局参数文件中,可以设定保存哪个节点的水文状态,状态文件的命名/位置。

VIC Image 驱动程序相关推荐

  1. VIC Classic 驱动程序

    VIC Classic 驱动程序 一.VIC模型输入 二.运行VIC Classic 驱动程序 2.1编译 2.2运行VIC 2.3其它命令行选项 三.VIC模型输出 3.1模型结果 3.2VIC运行 ...

  2. Centos7-Linux

    Centos7-Linux-RH Linux操作系统(百度百科):全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要 ...

  3. cisco b 系列 c 系列 服务器,UCS B系列/C系列/S系列/HyperFlex系列组合,与Cisco VIC卡绑定选项...

    简介 本文档介绍在连接到UCS交换矩阵互联的思科统一计算系统(UCS)服务器(B系列.C系列集成.S系列集成.HyperFlex系列)上使用思科虚拟接口卡(VIC)适配器时,常见操作系统可用的分组和绑 ...

  4. ㉔AW-H3 Linux驱动开发之HDMI驱动程序

    HDMI: High Definition Multimedia Interface,高清多媒体接口,是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号.HDMI有4种类型的接口,分别为 ...

  5. OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?

    OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)? 图形硬件供应商,需要为显示适配器编,编写用户模式显示驱动程序.用户模式显示驱动程序,是由Microsoft Direct3D运行时加 ...

  6. 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态

    嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...

  7. 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序

    嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing ...

  8. 嵌入式Linux设备驱动程序:发现硬件配置

    嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfac ...

  9. 嵌入式Linux设备驱动程序:编写内核设备驱动程序

    嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...

最新文章

  1. 使用python中的socket实现服务器和客户端,并完成图片的传输
  2. 阻止默认行为是配合passive使用
  3. javascript引用类型
  4. FPGA(0)--quartusⅡ安装
  5. 学不动?Apache Member 教你评估实用技术的思路
  6. 服务器之后加码存储,浪潮信息重磅发布新一代 G6 存储平台
  7. 一纬度横直线等于多公里_必备 | 高中物理必修一、必修二知识点提纲,预习复习一次搞定!...
  8. bcp大容量复制实用工具_运行中的BCP(大容量复制程序)命令
  9. java随笔-扫描使用指定注解的类与方法
  10. ibatis中iterate的用法(conjunction=or ,)
  11. 保姆级教学——虚拟机器人平台vrep(coppeliaSim)的机器人平台搭建
  12. 计算机网络协议 | 只有程序员才能读懂的西游记 | 让我这样学习简直就是一种享受~
  13. C++开源库列表总结记录
  14. 场景分析法设计测试用例
  15. 儿童python入门书籍推荐_有哪些Python入门的书籍值得推荐?
  16. c#线程-线程间发消息-线程给窗体传值
  17. ARCore之路-连接设备调试应用
  18. cad重新加载php命令,cad清理图层命令如何使用
  19. 【JZOJ4883】【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰
  20. 潭州学院html学习(day02)

热门文章

  1. 计算机关闭后剪切板的内容会消失,清除win10剪贴板历史记录,保证隐私数据不泄露...
  2. 什么是云连接?云学院带你了解华为云连接知识
  3. Leetcode 590: N-ary树的后序遍历
  4. JQuery之UI插件
  5. 数据库数据迁移失败,如何进行修复操作
  6. mysql数据库分区
  7. Linux Centos7.x下安装部署Jira和confluence以及破解方法详述
  8. SitePoint播客#70:青年,企业和播客
  9. 如何查看Mac电脑的操作系统是32位还是64位?
  10. 条款20:宁以pass-by-reference-to-const替换pass-by-value