VIC Image 驱动程序


前言

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

  • 状态文件结构
    在全局参数文件中,可以设定保存哪个节点的水文状态,状态文件的命名/位置。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值