2. 清华大学 水沙科学与水利水电工程国家重点实验室, 北京 100084
2. State Key Laboratory of Hydroscience and Engineering, Tsinghua University, Beijing 100084, China
数学模型是研究水问题的重要工具,随着科学计算技术的发展以及对水环境系统物理机理认识水平的不断提高,涌现出了大量的相关模型和软件。从水循环看,已有很多模型分别涉及降雨、产流、下渗、地下水、泥沙运动、污染物迁移转化等过程;就水循环某一环节而言,已有多个模型涉及不同机理、算法和处理技巧。这些数量庞大的数学模型为研究水科学与工程问题提供了强有力的工具[1-4],但限于研究目的不同,绝大部分模型是为解决某一特定问题而研发的,开发时很少考虑模型的复用性,模型输入输出格式大多按开发者的习惯而设计,造成模型难以推广,模型间数据交换困难,模型继承性、可复用性差,重复开发严重。本文作者通过对大量模型的调研发现,尽管模型算法和对特殊问题的处理不同,但多数模型的系统边界及要求输入的数据基本一致,如河网一维水动力学模型所要求的输入数据均为河网拓扑结构、断面数据、边界条件数据、模拟参数及初始条件数据等。不同模型所需计算条件的一致性为模型的复用提供了基础,因此可以考虑在一个平台中集成多个模型,用户可以根据模型特点及适应范围来选择合适的模型,从而实现模型的共享和复用。此外,水资源精细化及实时管理对模拟精度及计算速度提出了更高的要求,未来水管理决策过程需要多个方案同时模拟及寻优。模拟所需数据分布在互联网的不同服务器中,分布式的数据及计算资源是未来决策及管理的重要基础。在云计算模式下,使用者可快速调用云环境中大规模的计算资源、数据资源及模型资源,通过多情景、多模型的对比分析,快速得到优化的决策方案。这不仅依赖于计算资源的弹性扩展,也依赖于模型集成方法的扩展性。为此,本文将探讨水力模拟云平台中的通用模型集成技术,并将其应用于本文作者前期构建的水力模拟服务平台HydroMP[5]中。该平台设计的初衷就是要实现云环境中的模型程序与计算资源的动态集成,从而动态实现模型注册、注销及管理。HydroMP的目标是提供模型容器及计算资源容器,形成水力模拟云平台,任何终端均可选用平台已集成的模型进行多情景模拟、分析、优化和校验。
一些学者在水管理系统构建的过程中,针对特定的系统提出了许多的模型集成技术,其中丹麦水环境研究所(DHI)开发的MIKE SHE工具将水循环的各物理过程分别建模及计算,通过多模型之间进行数据交换来模拟不同的水循环过程,将每个模型封装为一个组件,每一个子过程为一个模块[6-7]。魏加华等采用组件和面向对象技术,开发了基于MapObjects GIS组件的地下水模拟系统,实现了地理信息系统(GIS)功能与地下水数值模型的完全整合[8]。李铁键等开发的数字流域模型以河网编码为基础,将产流、汇流等模拟过程集成到数字流域平台中,实现了全流域的水文过程模拟[9]。张刚等采用组件化方法设计了蒸散发模块、产流模块、水源划分模块及河道汇流模块的通用接口,并以此为基础通过组件交叉组合方式构建了新安江模型、陕北模型及Sacramento模型(SAC)[10]。
刘云等将流域调度模型组件化,包括水库调度模型、蓄滞洪区调度模型和洪水演进模型,并为每个模型设计了相同的对外接口函数,即3个接口函数:输入数据、运行模型和输出数据。系统通过调用这3个对外接口函数来驱动模型运行[11]。Welsh等开发了河流综合管理系统,将流域产流、河网分析、淹没分析、水质、调度及灌溉管理等多模型集成到一个系统中,形成了一个综合的流域水量、水质模拟及调控系统[12]。Chen等采用Web Service的方式将MODFLOW的组件进行封装,实现了地下水模拟组件计算云服务。在以上的模型集成方法中,集成平台与模型组件均处于一个系统中,采用了系统内部组件的紧耦合或基于Web的服务接口[13]。尽管以上这些模型系统可实现不同模型(组件)间的数据交互,或者通过Web Service的方式实现异构环境中组件的调用,但均没有考虑计算资源(尤其是硬件资源的计算能力)与模型组件的集成。
为此,本文根据云平台对模型可扩展集成的要求,从多模型管理、统一接口和热插拔等方面进行设计,并尽可能实现平台对模拟过程的控制和实时信息交换,在组件化、模块化的基础上,设计了两种模型集成方法,分别满足不同类型模型集成的需求。本文主要介绍了两种集成方法如何实现模型改写、数据交换、进程通信及模型管理等功能。
1 HydroMP平台结构在HydroMP架构中,平台服务器、计算刀片管理节点及计算节点同属于局域网,平台与模型程序为局域网不同机器的进程,平台需同时管理运行多个服务器中的实例及模型程序,无法采用单机中的动态链接库(dynamic link library, DLL)调用方式,因此HydroMP架构采用多进程交叉互动的体系结构,平台与同时运行的多个模型进程进行实时通信和数据交换,实时获取模型计算进度与模拟结果。其运行框架如图 1所示。
同时,HydroMP模拟云致力于提供通用化模型集成平台,实现模型程序(组件)“即插即用”,具备“热插拔”功能,并完成对模型注册、调用及注销等管理,通过高性能计算(high performance computing, HPC)完成模拟任务。
2 EXE集成方法模型集成平台,如Object Model System及ICMS系统等[14-15],设计了一些通用的模型集成方法,但要求被集成模型需采用面向对象和组件化结构,而大量遗产模型不满足这一要求,因此平台能集成的模型有限。本文作者在分析大量水力学遗产模型特点及运行过程的基础上,提出了一种粗粒度的模型集成方法,即EXE集成方法。该方法无须了解模型原理、流程,无须更改模型代码,是一种“无创”的动态集成方法,其特点包括:
1) 模型原流程及代码无须更改,仅需了解模型的输入输出文件格式,集成平台提供可定制的数据结构转换用动态链接库(DLL)文件。
2) 当某模型采用边计算边写输出文件的方式输出时,平台可通过计算,实时获得其计算进度。
3) 该方法对集成的模型软件有一个基本要求,即输入文件中包括了所有变量和参数。采用EXE方法对模型集成非常方便,也能在模型运行前后实现数据交换,满足了平台对模型集成的通用性要求,其缺点是模型运行过程中与平台之间无法直接通信,平台无法控制其运行流程。
2.1 EXE集成方法结构EXE集成方法关注平台数据结构与模型数据结构的转换、平台对模型的调用方式、模型与平台间的数据通信。EXE集成采用以下方法来实现:
1) 通过引用平台中Simulation类并实现其预留的InputFileCreate( )及OutputFileRead( )接口,用于模型输入文件生成和读取模型输出文件。
2) 复制执行程序(EXE文件)和生成的输入文件,并调用System.Diagnostics.Process中的Start方法启动EXE程序,开始EXE计算。
3) 通过实时读取模型输出文件大小的方法估算模拟进度,实现DataExchange.DLL文件中的GetComprocess( )接口。错误信息可输出到ERR文件,并反馈给平台。EXE方法集成模型的运行过程及交互关系见图 2和3。图 2给出了平台从开始计算到结束每阶段所执行的函数,图 3给出了平台与DLL文件、EXE文件间的交互关系。
2.2 接口实现及文件管理
步骤1 文件生成及模型启动方法。Input-FileCreate( )接口主要功能是生成模型输入文件并驱动模拟计算,其过程为:
1) 新建一个以方案GUID为文件名的文件夹;
2) 读取HydroMP平台中Simulation对象的数据,根据模型对输入文件格式的要求,在新建文件夹中生成模型运行所需的输入文件(组);
3) 复制模型EXE文件到新建文件夹下;
4) 实例化一个.NET框架中System.Diagnostics.Process对象,启动EXE计算。
步骤2 进度计算方法。GetComprocess( )接口采用读取输出文件大小的方式来估算模拟进度,该方法仅适合采用“边模拟边输出”方式的模型,对于模拟完成后才将结果输出的模型无法采用该方法。对于输出步长间隔及时间间隔不变的模型,其主输出文件的大小和模拟进度具有线性关系,可以先估算文件头的大小,然后再测算每输出一步所增加的文件大小,进而通过计算总时间步即可得到计算进度与输出文件大小的数学表达式。
步骤3 结果读取方法。在模拟计算完成后调用OutputFileRead( )接口,在调用前需先判断模拟计算是否完成。本文采用3种判断条件校核方式来综合判断:计算进度、文件大小是否变化及错误信息文件是否生成。结果读取方法和输入文件生成方法相反,其主要功能是将各模型输出文件的格式转换为平台的标准格式,并在转换完成后将步骤1新建的文件夹删除。
2.3 EXE集成模型要求EXE方法的核心是采用数据转换接口的方式,平台调度器通过在程序流程中调用统一的数据转换接口生成和读取输入及输出文件,采用.NET框架中的进程管理方法驱动模型执行。因此,采用EXE方法集成的模型须符合一定的条件:
1) 模型的输入及输出数据结构清楚,一般为非密明码;
2) 编译好的模型可执行EXE文件在Windows平台下能运行。
EXE集成方法最大的优点是无须修改模型源代码,但是它无法实现平台对模型运行过程的控制,因此无法实现对其调度,无法保证能实时获得其进度及计算结果。
3 可交互集成方法可交互集成方法指的是模型在运行过程中能实时与平台交互,包括平台对模型流程的控制、异常信息及结果获取等。在HydroMP中,平台与模型程序均为局域网不同操作系统中独立运行的进程,平台与模型交互属于同网段、跨平台的不同进程通信。一般来说,进程间的通信方式包括剪贴板、匿名管道及命名管道3种。其中:剪贴板方式速度快,但只能实现本机进程间的通信;匿名管道用来实现本地的父子进程之间的通信,具有一定的局限性;命名管道可实现双向跨网络通信,且具有接口简单、逻辑清晰等优点,尽管其本身依赖于底层网络接口,如DNS服务、TCP/IP协议等机制,但屏蔽了底层的网络协议细节。
根据平台及模型相对位置及依赖关系,可交互模型集成采用命名管道方式通信,通过在平台及模型程序间建立命名管道,并定义一套简单实用的通信规则,以通信字符串中的头信息来标识通信类型,保证管道两端收到消息后能快速解析数据。为实现快速集成、减少模型代码改写工作量,本文开发了标准封装程序作为平台对模型集成的中间件,标准封装程序采用命名管道方式与平台通信,通过引用模型组件并调用相同接口方式来实现对模型的集成。模型集成过程如图 4所示。
3.1 标准封装程序
标准封装程序为集成模型提供了与平台通信的标准程序,采用命名管道与平台通信。通过在平台调度器与标准封装程序之间建立命名管道的服务端及客户端来发送字节流,并采用“|”符号将字符分为2段:第1段为标识,第2段为发送的内容。平台发送给标准封装程序的标识包括5类,分别为模型初始化、启动计算、暂停计算、获取进度、获取结果,5类通信方式的标识分别为Initialize、Start、Pause、Process及Result。封装程序先通过解析第1段字符得到标识,然后再根据预定义的规则解析第2段字符。模型初始化(Initialize)的通信内容为若干个不同长度的数组,当模型封装程序接收到该类型的字符串后,根据分隔符解析各个数组,并将数据加载到定义好的数组集中。启动计算(Start)、暂停计算(Pause)、获取进度(Process)仅发送通信标识,封装程序解析后分别执行相应的操作;获取结果(Result)通信发送的内容包括标识符、起始时间步及终止时间步,封装程序解析后将该时段(步长区间)的计算结果返回给平台调度器。
标准封装程序发送给平台的通信方式包括初始化完成、计算进度、计算结果、计算完成、暂停完成,标识分别为Initialize、Process、Result、Finish、Pause。其中Initialize、Pause及Finish仅包括通信标识,Process及Result属于对平台Process及Result请求的反馈,其通信内容除了通信标识外还包括计算进度值和结果集。计算进度值为双精度数值; 结果集则根据模型类型的不同各不相同,包括若干个二维数据,每个二维数据均为某一个点的时间序列数据,由数组个数及模拟对象的编号列表组成。
3.2 模型改写方法模型封装程序作为模型与平台间通信的桥梁,除了处理平台发送的各种请求及解析平台发送的数据外,直接集成了模型程序(组件),调用模型接口执行模拟以及对模拟过程进行控制。模型程序要集成到标准封装程序中,须通过改写实现标准封装程序所要求的接口方法,形成模型组件DLL文件。为了说明标准封装程序与平台的通信及对模型组件的集成,本文给出标准封装程序的流程,伪代码如图 5所示。从图 5可以看出,标准封装程序需要调用模型组件及数据转换组件2个DLL文件。模型接口组件根据模型输入、输出文件及单步边界的格式,实现数据转换接口,将封装程序的数据结构转换为模型组件要求的字节流格式。当模型程序封装时,引用模型组件DLL文件及数据转换DLL文件,重新编译生成一个新的模型程序,新的模型程序通过注册即可被平台动态调用,平台不需重新编译及重启。
封装程序流程如图 6所示,包括创建管道、初始化、数据解析、方案计算、计算完成这5个阶段。
创建管道阶段:创建命名管道,以建立封装程序与平台之间的通信链接;
初始化阶段:接收平台发送的序列化方案XML字节流;
数据解析阶段:将方案字节流反序列化为数组,调用数据转换组件生成输入文件字节流,并执行模型组件接口;
方案计算阶段:包括执行单步计算、更新边界及获取结果等操作,其中执行单步计算接口的参数为步数,单步计算完成后,更新模型初始条件和边界条件,并将单步计算结果解析后附加到封装程序的结果集SimulationOut数组中;
计算完成阶段:检查各类数据和运行状态,确认无误后释放资源。
3.3 数据交换过程及方法 3.3.1 计算方案交换本文在封装程序中设计了包括基本信息、数据集信息及数组信息3段字符组成的方案字符串来实现封装程序与平台之间的数据交换,字符采用Unicode编码方式:方案基本信息包括方案编号、方案名称、方案类型、模型编号;数据集信息包括每个数组的名称及数组的个数;数组信息为方案信息的主体,所有的数组由系统提供标准的名称, 不同的数据及标识信息采用固定长度存储。
由于每个模型的输入文件格式差别巨大,因此无法使用结构化的数据进行交换,但这些输入文件为若干个文本文件,只是每个模型文本文件的数量及每个文本文件所存储的数据(变量)及格式不同,为此可交互集成方法采用和输入文件数目一样的字节流数组将封装程序中的方案字符串传输给模型组件,DataExchange转换接口文件中记录了输入文件的个数,按照文件顺序号生成模型组件要求格式的字节流,并按照顺序号将这些字节流数组传给模型组件。
3.3.2 结果集交换装程序的结果集包括5个数组:
第1个数组:整型,定义了时间序列数据的个数。
第2个数组:为二维数组,数组长度为L·M。其中第1个数长度为L,定义了输出数据的类型及单位,第2个数定义了输出对象的编号,为整型,长度为M。
第3个数组:定义了时间序列数据的序列数。
第4个数组:定义了时间序列数据N,格式为YYYYMMDDHHMMSS,为14位字符。
第5个数组:双精度型三维数组,数组长度为L·M·N,分别给出了M个模拟对象在N个时间点的数据,每个时间点具有L类数据,例如流量、水位、面积。
封装程序与模型组件之间的数据交换方法与计算方案交换方法类似,其核心思想是将每个模型各自定义并输出的字节流通过ResultParse接口转换为封装程序的数组集。
3.3.3 单步边界交换将单步边界条件作为模拟控制的一个环节,便于在后续集成多个模型时在调度器中实现数据交换。单步边界函数的字符串参数包括模型进入下一时间步计算需更新的所有边界条件,具体包括边界条件个数、边界对象编号、边界条件类型及边界条件数值。第1个变量为整型,给出边界条件个数;第2个数组为整型数组,给出了边界对象的编号列表;第3个数组给出每个边界条件的类型,对于一维水动力学模拟,包括WaterLevel、Discharge、LateralQ,水位-流量关系等属于无须更新的边界,不在此单步边界条件定义的范围内;第4个数组为边界条件的数值。
封装程序通过BndConditionUpdate接口将单步边界数据结构中的数据转换为模型组件所需的数组,数组类型为双精度型。
4 模型动态管理EXE集成和可交互集成2种集成方法最后生成的模型程序均为可执行EXE文件、依赖动态链接库文件及数据转换文件。平台通过记录这些文件所在的位置以及模型名称、模型类型、模型状态等参数实现对模型的管理,包括模型注册、模型注销、信息编辑、模型删除等操作。这些信息均存储于RegisterModel数据管理表中,其结构如表 1所示。
序号 | 字段名 | 字段类型 | 说明 |
1 | ModelName | Char(30) | 模型名称 |
2 | ModelType | Char(10) | 模型类型 |
3 | ModelDIR | Char(70) | 模型路径 |
4 | DataExcDIR | Char(70) | 转换文件路径 |
5 | ModelState | Number(1) | 模型状态 |
表 1中,ModelType由10位字符组成,前2位标识模型的种类,分别为水文模型、水动力学模型、水质模型等;3—4位标识模型为经验模型、物理模型等;5—6位标识模型的维数,分别为一维、二维、三维;7—8位标识模型的集成类型,分别为EXE集成、可交互集成、OpenMI标准组件等;9—10位为预留位。
HydroMP Server提供了模型管理的Web Service接口,分别包括ModelRegister、ModelEdit、ModelDelete、ModelUnavailable。ModelRegister(模型注册)工作统一在HydroMP Center端完成,HydroMP Center通过调用各个HydroMP Server的Web Service接口实现模型管理的同步。
5 模型集成实例本文以一维河网水动力学模型为原型设计,描述2种不同模型集成方法的运行过程。平台集成的模型包括CE-QUAL-RIV1[1]及JPWSPC[2]。其中:CE-QUAL-RIV1模型包括水力学模块及污染物模块,属于遗产模型,采用EXE集成;JPWSPC模型采用汊点水位校正法来实现复杂河网的求解,采用可交互集成。
CE-QUAL-RIV1模型的输入文件包括CTL、INP、XSF、BND及LAT文件,分别代表控制文件、主输入文件、断面文件、边界条件文件及侧向入流文件。其中:控制条件记录了所有工程文件的名称;主输入文件包括河网基本信息、拓扑结构、初始条件、规则断面及糙率等信息;断面文件记录了非规则断面信息,通过断面名称与INP文件中的微段相对应;边界条件记录了非恒定上下游边界的时间序列值,并通过河段编号与河网结构对应;非恒定侧向入流文件记录了各个微段的非恒定侧向入流数据。在运行模拟程序时,首先要生成这5个文件,然后点击运行EXE程序,EXE程序在运行过程中按照输入文件对输出间隔的设置将结果输出到OUT文件中,直到完成方案模拟。其运行过程如图 7所示。
CE-QUAL-RIV1按照粗粒度的无创集成模式集成,步骤如下:
步骤1 在Visual Studio中新建一个C#的类库工程,并引用HydroMP.SDK。
步骤2 在HydroMP.SDK.SSimulation类中实现InputFileCreate( )接口,包括创建文件夹、生成输入文件、拷贝文件及运行模型。
步骤3 根据文件大小与微段数、河段数、边界条件数等估算模拟进度,由GetComprocess( )接口实现。该接口循环读取输出文件大小更新进度,具体计算方法见式(1)。其中:Nseg为微段数,Nbranch为河段数,Nout为计算结果输出数,Fout为输出文件的字节数。
$p=\frac{F_{\text {out }}}{662+203 N_{\text {seg }}+270 N_{\text {branch }} N_{\text {out }}+105.4 N_{\text {seg }} N_{\text {out }}}. $ | (1) |
步骤4 根据OUT文件的格式,实现OutputFileRead( )接口,该接口的功能包括读取OUT文件并将OUT文件转换为SimulationOut对象集。
采用可交互集成方式集成JPWSPC模型,需要将原有程序改写为Initialize、PerformTimeStep、BndConditionUpdate、GetStepResult 4个接口函数,并将这些函数封装到JPWSPC_Model.DLL文件中。其中:Initialize(初始化函数)主要功能是读取字节流,并将字节流解析到模型的各个数组中;BndConditionUpdate(更新单步边界函数)根据边界编号顺序将双精度型数组的数据更新到数组中;PerformTimeStep(执行单时间步函数)在现有初始化条件及边界条件基础上执行一个时间步模拟,计算该时间步每个微段的属性;GetStepResult(获取单步结果函数)将模型单步计算结果打包为一个字节流输出。根据模型文件格式要求、结果字节流编码格式、边界条件顺序格式,生成数据转换文件JPWSPC_DataExchange.DLL。
在标准封装程序中引用JPWSPC_Model.DLL及JPWSPC_DataExchange.DLL文件,并生成新的可执行程序JPWSPC_SC.EXE。
6 结论与单系统的模型集成相比,云计算环境中模型通用集成的难点主要在于平台与模型程序处于网络环境的不同计算机中,集成方法需具有强兼容性。本文针对遗产模型和集成平台交互需求,提出EXE集成及可交互集成2种方法,并对这2种方法的技术架构、逻辑流程和步骤进行说明和分析,详细阐述了模型改写方法、模型调用方法、数据交换方法和实时通信方法及区别,设计了云平台对模型的管理。采用这2种方法对2个不同特点的一维水力学模型进行了集成测试,测试结果表明模型运行稳定,达到预期设计目标。水力模拟云平台构建者可根据集成模型的来源、类型和交互性需求选用适合的集成方法。对于多过程模型的耦合,可参照可交互集成方法进行模型改写,以满足耦合过程中数据交换和通信需要。
[1] |
DORTCH M, SCHNEIDER T, MARTIN J, et al. CE-QUAL-RIV1: A dynamic, one-dimensional (longitudinal) water quality model for streams. User's manual (No. WES/IR/E-90-1)[M]. Vicksburg, USA: Army Engineer Waterways Experiment Station, Vicksburg MS Environmental Lab, 1990.
|
[2] |
ZHU D J, CHEN Y C, WANG Z Y, et al. Simple, robust, and efficient algorithm for gradually varied subcritical flow simulation in general channel networks[J]. Journal of Hydraulic Engineering, 2011, 137(7): 766-774. DOI:10.1061/(ASCE)HY.1943-7900.0000356 |
[3] |
THIELEN J, CREUTIN L D. An urban hydrological model with high spatial resolution rainfall from a meteorological model[J]. Journal of Hydrology, 1997, 200(1-4): 58-83. DOI:10.1016/S0022-1694(97)00002-4 |
[4] |
周浩澜, 陈洋波. 城市化地面二维浅水模拟[J]. 水科学进展, 2011, 22(3): 407-412. ZHOU H L, CHEN Y B. 2D shallow-water simulation for urbanized areas[J]. Advances in Water Science, 2011, 22(3): 407-412. (in Chinese) |
[5] |
刘荣华, 魏加华, 翁燕章, 等. HydroMP:基于云计算的水动力学建模及计算服务平台[J]. 清华大学学报(自然科学版), 2014, 54(5): 575-583. LIU R H, WEI J H, WENG Y Z, et al. HydroMP:A cloud computing based platform for hydraulic modeling and simulation service[J]. Journal of Tsinghua University (Science and Technology), 2014, 54(5): 575-583. (in Chinese) |
[6] |
Danish Hydraulic Institute (DHI). MIKE Ⅱ: A modeling system for rivers and channels reference manual[R]. Hørsholm, Denmark: Danish Hydraulic Institute (DHI), 2005.
|
[7] |
Danish Hydraulic Institute (DHI) Water & Environment. MIKE SHE user guide[Z]. Hørsholm, Denmark: Danish Hydraulic Institute (DHI), 2004.
|
[8] |
魏加华, 李慈君, 王光谦, 等. 地下水数值模型与组件GIS集成研究[J]. 吉林大学学报(地球科学版), 2003, 33(4): 534-538. WEI J H, LI C J, WANG G Q, et al. Study on the integration of groundwater numeric model and component GIS[J]. Journal of Jilin University (Earth Science Edition), 2003, 33(4): 534-538. (in Chinese) |
[9] |
李铁键, 刘家宏, 和杨, 等. 集群计算在数字流域模型中的应用[J]. 水科学进展, 2006, 17(6): 841-846. LI T J, LIU J H, HE Y, et al. Application of cluster computing in the digital watershed model[J]. Advances in Water Science, 2006, 17(6): 841-846. (in Chinese) |
[10] |
张刚, 解建仓, 罗军刚. 洪水预报模型组件化及应用[J]. 水利学报, 2011, 42(12): 1479-1486. ZHANG G, XIE J C, LUO J G. Componentized model of flood forecast and its application[J]. Journal of Hydraulic Engineering, 2011, 42(12): 1479-1486. (in Chinese) |
[11] |
刘云, 李义天, 谈广鸣, 等. 洪水调度模型组件化研究[J]. 中国农村水利水电, 2010(7): 117-119. LIU Y, LI Y T, TAN G M, et al. Modularization of flood control models[J]. China Rural Water and Hydropower, 2010(7): 117-119. (in Chinese) |
[12] |
WELSH W D, VAZE J, DUTTA D, et al. An integrated modelling framework for regulated river system[J]. Environmental Modelling & Software, 2013, 39: 81-102. DOI:10.1016/j.envsoft.2012.02.022 |
[13] |
CHEN C, CHEN D, YAN Y N, et al. Integration of numerical model and cloud computing[J]. Future Generation Computer Systems, 2018, 79: 396-407. DOI:10.1016/j.future.2017.06.007 |
[14] |
DAVID O, ASCOUGH II J C, LLOYD W, et al. A software engineering perspective on environmental modeling framework design:The object modeling system[J]. Environmental Modelling & Software, 2013, 39: 201-213. DOI:10.1016/j.envsoft.2012.03.006 |
[15] |
RAHMAN J M, SEATON S P, CUDDY S M. Making frameworks more useable:Using model introspection and metadata to develop model processing tools[J]. Environmental Modelling & Software, 2004, 19(3): 275-284. DOI:10.1016/s1364-8152(03)00153-1 |