VIC Image 驱动程序
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_PATH
和 MPI_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.h
或vic_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 驱动程序相关推荐
- VIC Classic 驱动程序
VIC Classic 驱动程序 一.VIC模型输入 二.运行VIC Classic 驱动程序 2.1编译 2.2运行VIC 2.3其它命令行选项 三.VIC模型输出 3.1模型结果 3.2VIC运行 ...
- Centos7-Linux
Centos7-Linux-RH Linux操作系统(百度百科):全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要 ...
- cisco b 系列 c 系列 服务器,UCS B系列/C系列/S系列/HyperFlex系列组合,与Cisco VIC卡绑定选项...
简介 本文档介绍在连接到UCS交换矩阵互联的思科统一计算系统(UCS)服务器(B系列.C系列集成.S系列集成.HyperFlex系列)上使用思科虚拟接口卡(VIC)适配器时,常见操作系统可用的分组和绑 ...
- ㉔AW-H3 Linux驱动开发之HDMI驱动程序
HDMI: High Definition Multimedia Interface,高清多媒体接口,是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号.HDMI有4种类型的接口,分别为 ...
- OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?
OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)? 图形硬件供应商,需要为显示适配器编,编写用户模式显示驱动程序.用户模式显示驱动程序,是由Microsoft Direct3D运行时加 ...
- 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态
嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...
- 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing ...
- 嵌入式Linux设备驱动程序:发现硬件配置
嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfac ...
- 嵌入式Linux设备驱动程序:编写内核设备驱动程序
嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...
最新文章
- 使用python中的socket实现服务器和客户端,并完成图片的传输
- 阻止默认行为是配合passive使用
- javascript引用类型
- FPGA(0)--quartusⅡ安装
- 学不动?Apache Member 教你评估实用技术的思路
- 服务器之后加码存储,浪潮信息重磅发布新一代 G6 存储平台
- 一纬度横直线等于多公里_必备 | 高中物理必修一、必修二知识点提纲,预习复习一次搞定!...
- bcp大容量复制实用工具_运行中的BCP(大容量复制程序)命令
- java随笔-扫描使用指定注解的类与方法
- ibatis中iterate的用法(conjunction=or ,)
- 保姆级教学——虚拟机器人平台vrep(coppeliaSim)的机器人平台搭建
- 计算机网络协议 | 只有程序员才能读懂的西游记 | 让我这样学习简直就是一种享受~
- C++开源库列表总结记录
- 场景分析法设计测试用例
- 儿童python入门书籍推荐_有哪些Python入门的书籍值得推荐?
- c#线程-线程间发消息-线程给窗体传值
- ARCore之路-连接设备调试应用
- cad重新加载php命令,cad清理图层命令如何使用
- 【JZOJ4883】【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰
- 潭州学院html学习(day02)
热门文章
- 计算机关闭后剪切板的内容会消失,清除win10剪贴板历史记录,保证隐私数据不泄露...
- 什么是云连接?云学院带你了解华为云连接知识
- Leetcode 590: N-ary树的后序遍历
- JQuery之UI插件
- 数据库数据迁移失败,如何进行修复操作
- mysql数据库分区
- Linux Centos7.x下安装部署Jira和confluence以及破解方法详述
- SitePoint播客#70:青年,企业和播客
- 如何查看Mac电脑的操作系统是32位还是64位?
- 条款20:宁以pass-by-reference-to-const替换pass-by-value