SEIMS: 一个模块化、并行化的流域建模框架
简介
SEIMS是一个模块化、并行化的流域建模框架,包括灵活的模块化结构和多层次并行计算中间件(即模型内部“子流域-基本模拟单元”双层并行和模型层次并行),支持用户以近乎串行编程的方式开发流域子过程模拟模块,在多种并行计算平台上实现高效的流域过程建模及应用(如流域管理措施情景优化)。
详细描述
SEIMS主要关注于坡面/壤中流汇流和河道汇流均遵循上下游关系顺序执行的一类分布式流域过程模型,并遵循如下两个基本假设:
(1)流域在空间上可离散化为由粗到细不同尺度的空间单元,如子流域、坡面、坡位和基本模拟单元(如栅格、不规则多边形、水文响应单元等)。子流域单元之间通过流域汇流网络连接;坡位则是坡面尺度上具有相对均一自然地理功能特征的空间单元,用作分布式流域过程模型的基本模拟单元通常过于粗略,而更适合作为评价流域管理措施的空间配置单元;具有更均一水文响应特征的精细尺度空间单元(如栅格、不规则多边形)定义为SEIMS的基本模拟单元,即垂直和水平方向上的坡面过程在这类空间单元上进行模拟。
(2)每个空间单元均具有基于地形的水流流向。不同层次空间单元内部的流域过程模拟可能存在计算依赖,且遵循上下游汇流关系,如坡面/壤中流汇流模拟在每个子流域内部遵循基本模拟单元的上下游依赖关系,河道汇流模拟则遵循子流域间的上下游依赖关系。
在借鉴WetSpa Extension、SWAT、LISEM、DHSVM等模型模拟算法的基础上, SEIMS子过程模块库已涵盖水文、土壤侵蚀、养分循环和作物生长等,可支持次降水模拟和长时段日尺度模拟。
SEIMS对复杂多样流域过程的模拟能力依赖于子过程模块库的不断完善。SEIMS子过程模块的开发方式主要有移植现有C++实现的模拟算法、改写其他编程语言的实现和依据模拟算法重写。因此,SEIMS有助于研究者快速实现特定流域子过程模拟算法的开发和测试。
SEIMS采用标准C++和Python编程语言开发,并在GitHub网站上开源(https://github.com/lreis2415/SEIMS)。SEIMS使用CMake跨平台构建工具来管理整个项目的C++源码,以实现与主流编译环境的兼容性。通过一次编译可以得到所有SEIMS的C++程序,包括OpenMP版本和MPI&OpenMP版本的SEIMS主程序、SEIMS模块库和用于数据预处理的程序(如TauDEM等)。Python则用于编写SEIMS实用工具集,包括数据预处理、参数率定、敏感性分析、情景优化等。
模型使用说明
包括SEIMS环境部署、示例研究区及其模型结构、基于SEIMS的流域建模过程、流域子过程模拟模块开发示例等
模型概念表达图
计算模型
https://github.com/lreis2415/SEIMS