CN112148266B - 地球系统耦合模式的自动生成方法及应用 - Google Patents
地球系统耦合模式的自动生成方法及应用 Download PDFInfo
- Publication number
- CN112148266B CN112148266B CN202011061199.0A CN202011061199A CN112148266B CN 112148266 B CN112148266 B CN 112148266B CN 202011061199 A CN202011061199 A CN 202011061199A CN 112148266 B CN112148266 B CN 112148266B
- Authority
- CN
- China
- Prior art keywords
- coupling
- data
- node
- mode
- earth system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
提供了计算机执行的地球系统耦合模式应用的自动生成方法、计算装置和计算机可读存储介质,包括:编辑生成地球系统耦合描述;根据地球系统耦合描述,生成耦合实验使用的地球系统耦合模式源代码;编译连接地球系统耦合模式源代码,生成可执行代码;根据地球系统耦合描述生成耦合实验的配置文件。本公开的技术实现耦合模式程序代码生成的流程化和自动化,从而支持地球系统模式耦合实验流程化和自动化的快捷高效生成和运行;可供用户灵活、深入地进行模式耦合实验、实现对模式耦合实验更加深入和精细的控制;而且易于推广,对于提高地球系统耦合模式的开发效率,更好地支持地球系统模式耦合实验的开展具有非常明显的作用。
Description
技术领域
本发明总体地涉及地球系统计算机模拟技术,更具体地涉及对地球系统分模式的进行耦合的地球系统耦合模式生成技术。
背景技术
地球系统模式(Earth System Model,简称ESM)是理解过去气候与环境演变机理、预估未来潜在全球变化情景的基于信息技术的重要工具。地球系统模式是集成地学相关研究的重要平台,其发展水平及模拟能力的高低已成为衡量一个国家地学综合水平的重要标志。
地球系统模式的前身是气候系统模式(Climate System Model,简称CSM)。传统意义的气候系统模式主要包括大气环流系统、陆表物理系统、海洋环流及海冰系统等。上世纪末到本世纪初,随着对全球气候变化研究的不断深入,气候系统模式不断发展,其领域逐渐扩展到地球表层的生态与环境系统,包括陆地及海洋生态系统、大气化学、气溶胶等。现阶段的地球系统模式是基于地球各圈层中的物理、化学和生物过程、以及它们之间的物质和能量交换规律而建立起来的数学模型,然后用数值计算方法求解,编制成一种大型综合性计算程序。
目前,世界各主要国家纷纷制定了有关地球系统模式的重大研究计划,如美国2001年启动“地球系统模拟框架”(ESMF)的国家计划,欧盟2001年启动的“地球系统模拟集成计划”(PRISM),澳大利亚启动的澳大利亚地球模拟器(ACCESS)计划等。2010年,美国国家大气科学研究中心(NCAR)公开发布了其第一个地球系统模式CESM1.0。
我国在2003年起,已关注地球系统模式的发展。国家自然科学基金委员会“十一五”规划中已将“地球系统模式”列入战略研究科技项目之中。2007年起,国家陆续启动了中国科学院III期知识创新工程项目群、中国科学院战略性先导科技专项、国家自然科学基金以及国家科技部全球变化专项等项目,来支持中国地球系统模式的研发。在上述项目的支持下,ICCES牵头初步建成了中科院地球系统模式(CAS-ESM)框架。该系统模式主要包括以下分量模式:大气环流模式、陆面及水文过程模式、植被动力学模式、海洋环流和海冰模式、陆冰模式、气溶胶及大气化学模式、陆地及海洋生物地球化学模式等,并通过耦合器实现了各分系统模式的初步耦合(图6)。
发明内容
在传统的地球系统耦合模式开发过程中,将多个分量模式耦合成为一个耦合模式是一件相当复杂的工作,耦合模式的开发者必须从不同来源收集分量模式和运行时需要的数据和工具,并就分量模式之间以及分量模式和耦合器之间的连接关系、数据交换、流程控制等给出明确的实现,这大大增加了耦合模式开发和实验的工作量。为了提高模式耦合的效率,有必要提供一套描述方法实现对模式耦合过程的有效描述,并基于此描述在一定程度上实现模式耦合过程的流程化和自动化。
鉴于以上情况,提出了本发明。
根据本发明的一个方面,提供了一种计算机执行的地球系统耦合模式应用的自动生成方法,包括:编辑生成地球系统耦合描述;根据地球系统耦合描述,生成耦合实验使用的地球系统耦合模式源代码;编译连接地球系统耦合模式源代码,生成可执行代码;根据地球系统耦合描述生成耦合实验的配置文件。
可选地,所述耦合描述包括:耦合实验名;参与描述的地球系统模式的各分量模式实例;耦合方法与耦合流程;耦合实验配置,用于模式代码和配置文件生成。
可选地,根据耦合描述生成耦合实验使用的耦合模式源代码包括:生成用于驱动各分量模式正确运行的驱动代码。
可选地,所述生成用于驱动各分量模式正确运行的驱动代码包括:自动生成循环实现模拟过程的run例程。
可选地,自动生成方法还包括:获得仿真步数据转换图DTG;其中,从数据转换图DTG自动生成循环实现模拟过程的run例程。可选地,自动生成方法中,在数据转换图中有数据和数据转换两种节点,分别用di和ti来表示;数据转换图中,数据节点和数据转换节点交错排列;由数据节点di指向数据转换节点ti的边代表数据节点di是数据转换节点ti的一个输入数据,由数据转换节点ti指向数据节点di的边代表数据节点di或者di的一部分是数据转换节点ti的一个输出数据,
从数据转换图DTG自动生成循环实现模拟过程的run例程包括:
(1)对于每个di,设定一个bool变量solutedi,代表是否已经解算完成得到结果,所有SD中的di对应的solutedi取初值true,其余di对应的solutedi取初值false;
(2)对于每个ti,设定一个bool变量donei,代表ti是否已经执行过,donei初值为false;
(3)初始时当前代码Code为空;
(4)从数据转换节点集合T中寻找一个donei为false而且所有前驱数据节点di的solutedi均为true的节点ti,
如果找到这样的节点ti,在当前代码Code的尾部加入节点ti的运行
条件判断的IF语句;
如果找不到这样的节点ti,跳转至(7);
(5)根据节点ti及其前驱、后继数据节点的配置,生成代码并加入到当前代码Code的尾部,同时将donei和ti全部后继数据节点di的solutedi均设为true;
(6)从数据转换(处理)节点集合T中寻找一个donei为false、所有前驱数据节点di的solutedi均为true而且其运行条件与ti运行条件相同的tj,
如果找到tj,则令ti=tj,跳转至(5);
如果找不到这样的tj,在当前代码Code的尾部添加END IF以关闭运行条件判断的IF语句,跳转至(4);
(7)判断TD中的所有tdi对应的solutedi是否都已经为true;
如果有false,代表存在无法解决的结果数据节点,DTG存在语义错误,报错;
如果都是true,则在当前代码Code前后加上subroutine定义,算法完成。
可选地,所述根据耦合描述生成耦合实验使用的耦合模式源代码包括:生成用于驱动各分量模式正确运行的驱动代码。
可选地,自动生成方法还包括:使用配置文件运行可执行代码,得到耦合实验结果;以及对耦合实验结果进行后处理。
可选地,所述数据转换节点ti执行的转换包括:调用分量模式;耦合数据AttrVect之间的变换;针对风速的特殊插值;耦合频率适配;耦合变量收集;计算海气通量;计算陆/海/冰地形数据fractions;集合计算;模式区域映射。
根据本发明的另一方面,提供了一种计算装置,包括:处理器;和存储器,其上存储有计算机程序,所述程序被处理器执行时,执行上述自动生成方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时,执行上述自动生成方法。
本发明各个优选实施例的地球系统耦合模式应用自动生成技术具有以下优势中的一项或多项:
(1)实现耦合模式程序代码生成的流程化和自动化,从而支持地球系统模式耦合实验流程化和自动化的快捷高效生成和运行;
(2)利用基于数据转换图(Data Transformation Graph,DTG)的耦合过程描述方法来描述耦合模式代码中的run例程,并提出了基于DTG自动生成耦合模式代码中run例程进而生成完整的耦合模式驱动代码的方法。基于这种方法,用户可以简单地从预先部署的多个分量模式中选择一系列分量模式进行自动化的耦合,得到一个可以运行并完成一个具有一定科学意义的模式耦合实验;用户可以通过修改生成的DTG图来重新定义耦合流程,从而实现一些特定的耦合效果,进行更深入的模式耦合实验;更进一步的,用户还可以修改由DTG图生成的耦合模式驱动代码,以实现对模式耦合实验更加深入和精细的控制;
(3)本发明实施例的地球系统耦合模式应用的自动生成方法简单易用,易于推广,对于提高地球系统耦合模式的开发效率,更好地支持地球系统模式耦合实验的开展具有非常明显的作用。
附图说明
图1示出了根据本发明实施例的计算机执行的地球系统耦合模式应用的自动生成方法100的总体流程图。
图2示出了根据本发明实施例的地球系统耦合模式的自动生成及实验运行方法示例200的完整流程图。
图3示出了根据本发明实施例的自动源代码生成过程的示意图。
图4和图5示出了根据本发明实施例的方法自动生成的某些类型耦合实验的DTG图示例。
图6示出了现有技术的通过耦合器实现地球系统各分析图模式的初步耦合的示意框图。
具体实施方式
下面结合附图描述本发明的具体实施例。
图1示出了根据本发明实施例的计算机执行的地球系统耦合模式应用的自动生成方法100的总体流程图。
如图1所示,在步骤S110中,编辑生成地球系统耦合描述。
耦合描述(也称为耦合实验描述)例如描述如下内容以作为代码自动生成和配置文件生成两个步骤的输入:
1、耦合实验名;
2、参与描述的各分量模式实例;
3、耦合方法与耦合流程;
4、耦合实验配置,用于模式代码和配置文件生成。
在步骤S120中,根据地球系统耦合描述,生成耦合实验使用的地球系统耦合模式源代码。
耦合模式源代码的生成是整个地球系统耦合模式自动生成的核心。
耦合模式源代码可以例如分为三个部分:各分量模式源代码、实现分量模式间数据插值和传输的工具代码、和用于驱动各分量模式正确运行的驱动代码。分量模式源代码依赖于各分量模式自身的实现,是预先收集并部署好的,只要连接就好,无需生成。实现分量模式间数据插值和传输的工具代码也是预先开发并测试好的,只要使用合适的方式调用即可。需要生成的是驱动各分量模式正确运行的驱动代码。
耦合模式的驱动代码一般分成三个部分:用于初始化模拟过程的init例程、循环实现模拟过程的run例程和用于结束模拟过程的final例程。其中run例程是整个驱动代码的核心,run例程的自动生成也是驱动代码生成、进而是地球系统耦合模式自动生成的关键。在耦合模式的运行过程中,耦合器需要随着仿真时间的步进不断反复地迭代一个相同的仿真步,这个仿真步对应的数据处理流程的结果数据将在下一次迭代中作为起始数据使用。我们只要能够将这个仿真步的数据转换图清晰准确地描述出来,就可以自动地构建出耦合器的run过程。
生成用于驱动各分量模式正确运行的驱动代码可以包括自动生成循环实现模拟过程的run例程。
根据本发明的一个优选实施例,采用数据转换图来生成耦合模式的run过程。
数据转换图DTG是一个包含数据和处理两种节点的有向图,可以用来描述一段数据处理中的数据转换和依赖关系。使用数据转换图可以简单清晰地将一些基本的数据处理单元组合成复杂的数据处理流程。(Huang,Z.,&Li,G.(2015,November).ExploitingScalable Parallelism for Remote Sensing Analysis Models by DataTransformation Graph.In International Conference on Algorithms andArchitectures for Parallel Processing(pp.119-133).Springer,Cham.)。
在数据转换图中有数据和数据转换(处理)两种节点,分别用di和ti来表示。数据转换图中,数据节点和数据转换(处理)节点交错排列。由数据节点di指向数据转换(处理)节点ti的边代表数据节点di是数据转换(处理)节点ti的一个输入数据,由数据转换(处理)节点ti指向数据节点di的边代表数据节点di或者di的一部分是数据转换(处理)节点ti的一个输出数据。
在耦合模式的运行过程中,耦合器需要随着仿真时间的步进不断反复地迭代一个相同的仿真步,这个仿真步对应的数据处理流程的结果数据将在下一次迭代中作为起始数据使用。我们只要能够将这个仿真步的数据转换图清晰准确地描述出来,就可以自动地构建出耦合器的run过程。而且,数据转换图可以以可视化的形式被编辑,这对于灵活地改变耦合模式的运行过程是非常有益的。
同时,由于run是一个反复迭代的过程,第n次迭代的TD集合也是run过程下一次迭代的起始数据集SD,即SD(n+1)=TD(n)。init过程的输出结果应当就是SD(1),或者也可以认为是TD(0)。所以,init的输出结果应当与run的输出结果具有相同的数据变量名和数据语义。
从仿真步的数据转换图DTG,可以生成耦合器中的run过程。在run过程中,数据转换(处理)节点ti的种类是有限的,通常出现的数据转换(处理)节点ti例如可以为如下项目:
1.调用分量模式:<model>_run
2.耦合数据AttrVect之间的变换:Comp_map
3.针对风速的特殊插值:Vect_map
4.耦合频率适配:Frequency matching
5.耦合变量收集:merge
6.计算海气通量:Flux_xao
7.计算陆/海/冰地形数据fractions:fractions calculation
8.集合计算:ensembler
9.模式区域映射:Regional mapping
基于这些数据转换节点,就可以构建出一个能够实现仿真步的数据转换图DTG。考虑到,对于初学者来讲,生成能够正确运行并具有科学意义的仿真步数据转换图不是一件容易的事情。因此,还可以提供具有科学意义的数据转换图模板以及一组相关工具。基于此模板及工具,用户可以定义其耦合配置(Coupling Configuration),说明需要耦合哪些分量模式以及分量模式的网格等特性,并自动根据模板生成具有科学意义的仿真步数据转换图DTG。
仿真步是这样的概念,整个仿真过程是有一系列随仿真时间不断推进的步骤组成的,每个步骤做的仿真操作都是一样的。这样一个步骤就是一个仿真步。所有的仿真步都是一样的,只是状态数据不一样。
拥有了仿真步数据转换图DTG后,就可以自动生成Run例程的代码了,从DTG图生成Run例程代码的算法示例如下:
(1)对于每个di,设定一个bool变量solutedi,代表是否已经解算完成得到结果,所有SD中的di对应的solutedi取初值true,其余di对应的solutedi取初值false。
(2)对于每个ti,设定一个bool变量donei,代表ti是否已经执行过,donei初值为false。
(3)初始时当前代码Code为空。
(4)从数据转换(处理)节点集合T中找到一个donei为false而且所有前驱数据节点di的solutedi均为true的ti,
a)如果找到这样的节点,在当前代码Code的尾部加入ti的运行条件判断的IF语句;
b)如果找不到这样的节点,跳转(7);
(5)根据ti及其前驱、后继数据节点的配置生成代码并加入到当前代码Code的尾部,同时将donei和ti全部后继数据节点di的solutedi均设为true。
(6)从数据转换(处理)节点集合T中找到一个donei为false、所有前驱数据节点di的solutedi均为true而且其运行条件与的ti运行条件相同的tj,
a)如果找到tj,则令ti=tj,跳转(5);
b)如果找不到这样的tj,在当前代码Code的尾部添加END IF以关闭运行条件判断的IF语句,跳转(4)。
(7)判断TD中的所有tdi对应的solutedi是否都已经为true
a)如果有false,代表存在无法解决的结果数据节点,DTG存在语义错误,报错。
b)如果都是true,则在当前代码Code前后加上subroutine定义,算法完成。
这样就可以生成可以运行的耦合模式程序源代码了,这些耦合模式程序代码可以被运行并得到模式仿真结果。
生成源代码后,还可以人工查看和修改耦合模式源代码。
在步骤S130中,编译连接地球系统耦合模式源代码,生成可执行代码。
在步骤S140中,根据地球系统耦合描述生成耦合实验的配置文件。
可以查看和修改耦合实验配置文件
使用配置文件运行可执行代码,可以得到地球系统耦合实验结果;可以对耦合实验结果进行后处理,例如数据分析、挖掘、可视化显示等等。
本发明优选实施例通过提供一套基于数据转换图(Data Transformation Graph,DTG)的耦合过程描述方法实现耦合模式程序代码生成的流程化和自动化,从而支持地球系统模式耦合实验流程化和自动化的快捷高效生成和运行。在传统的耦合模式开发过程中,将多个分量模式耦合成为一个耦合模式是一件相当复杂的工作,耦合模式的开发者必须从不同来源收集分量模式和运行时需要的数据和工具,并就分量模式之间以及分量模式和耦合器之间的连接关系、数据交换、流程控制等给出明确的实现,这大大增加了耦合模式开发和实验的工作量。本发明实施例利用基于数据转换图的耦合过程描述方法来描述耦合模式代码中的run例程,并提出了基于DTG自动生成耦合模式代码中run例程进而生成完整的耦合模式驱动代码的方法。基于这种方法,用户可以简单地从预先部署的多个分量模式中选择一系列分量模式进行自动化的耦合,得到一个可以运行并完成一个具有一定科学意义的模式耦合实验;用户可以通过修改生成的DTG图来重新定义耦合流程,从而实现一些特定的耦合效果,进行更深入的模式耦合实验;更进一步的,用户还可以修改由DTG图生成的耦合模式驱动代码,以实现对模式耦合实验更加深入和精细的控制。本发明实施例的地球系统耦合模式应用的自动生成方法简单易用,易于推广,对于提高地球系统耦合模式的开发效率,更好地支持地球系统模式耦合实验的开展具有非常明显的作用。
下面描述根据本发明实施例的更具体的计算机执行的地球系统耦合模式应用的自动生成方法示例。
图2示出了根据本发明实施例的地球系统耦合模式的自动生成及实验运行方法示例200的完整流程图。
如图2所示,地球系统耦合模式的自动生成及实验运行方法可以包括:S210编辑生成耦合描述;S220根据耦合描述生成耦合实验使用的耦合模式源代码;S230人工查看和修改耦合模式源代码,本步骤可以略过;S240根据耦合描述生成耦合实验的配置文件;S250人工查看和修改耦合实验配置文件;S260编译连接耦合模式源代码,生成可执行代码;S270使用配置文件运行可执行代码,得到耦合实验结果;S280对耦合实验结果进行后处理。
图2中所例示的自动生成耦合模式源代码步骤是地球系统耦合模式的自动生成的关键步骤。为了实现耦合模式源代码的自动生成和模式实验配置文件的生成,耦合描述可以描述如下内容以作为代码自动生成和配置文件生成两个步骤的输入:
1耦合实验名
2参与描述的各分量模式实例
2.1分量模式实例名(Model Instance,Model Instance Name,或Model InstanceID,简写MI),唯一标识,代码生成和配置文件生成都要用到。
2.2分量模式版本(Model Version,Model Implementation Version,简写MV。由于分量模式版本是相对固定的,这个应该是引用另外的描述),代码生成时使用。
2.2.1版本名(CAM5、POP2、DOCN、……)
2.2.2版本是否要实际模拟(是否需要输入数据)
2.2.3类型(Model Type,简写MT,例如ATM、OCN、……)
2.2.4代码(Fortran代码与configure、makefile)
2.2.5接口(带有init、run和final的Fortran Module)。
·Init和run的输出应当是一致的·不同模式实例之间的init过程应该是互相独立的,每个分量模式的init应当以相同的方式调用
2.2.6耦合变量,即该分量模式版本的输入输出数据(field names),用两个map来分别描述
2.3实例设置
2.3.1实例的输入文件名(*_in文件),如果是自动生成的话,一般是分量模式实例名后面加上_in。实例的输入文件名需要写入到耦合模式源代码中,用于代码生成和配置文件生成(配置文件要写到这个名字的文件里面)。
2.3.2实例使用的网格(grid):网格名、nx、ny、gsize,自动生成时根据网格名自动确定nx、ny和gsize,用于配置文件生成。
2.3.3实例的耦合频率(两次计算的间隔时间),用于配置文件生成。
3耦合方法与耦合流程
3.1Run过程的数据转换图(DTG),用于代码生成。(或者使用“自动生成数据转换图”来自动生成某些模式耦合实验缺省的数据转换图)Init过程可以根据Run过程自动产生。
3.1.1数据节点
3.1.1.1数据节点ID,节点ID必须全局唯一,不能重复
3.1.1.2与数据节点关联的数据变量名,变量名需唯一,不同节点可以关联相同的变量名(即同一个变量的值发生了变化)
3.1.1.2.1数据变量名对应的数据类型,用于定义数据变量
3.1.2数据转换节点(处理节点)
3.1.2.1处理节点名
3.1.2.2处理节点实体
3.1.2.2.1接口:处理节点需要的形参名、形参类型、形参的输入输出特性(“输入”、“输出”和“输入输出”,其中“输入输出”形参对应的输入数据节点和输出数据节点必须具有相同的数据变量名)
3.1.2.2.2处理节点对应的实现代码(一般是template),前述“形参名”应对应于template中的可变量
3.1.2.2.3需要设置的其他参数(例如某些不需要变化的输入量),实际上也是一些形参,需要描述的内容同形参描述。只是这些参数不从前驱处理节点获得,而是另外设置。
3.1.2.2.4
3.1.2.3参数映射关系:非接口的那些固定参数如何设定(为某个固定值——变量名、常数等)
3.1.3数据节点与处理节点之间的连接:需要指明数据连接到处理节点的哪个参数,以及连接是输入、输出还是输入输出3.2实例的部署设置,deployment,用于生成代码
3.2.1或者,针对每个实例,给出其process的start、end和stride;(Manual)
3.2.2或者,使用自动负载均衡,给出总的进程数,需要参考各实例所使用的grid及预测计算时间的模型来计算各分量模式实例所需要的进程个数;(Automatic)
3.2.3或者,使用简单的串行模型:给出总的进程数,所有实例都运行于所有的进程上。(Simple)
4耦合实验配置,用于配置文件生成
4.1实验开始时间、结束时间
4.2History文件写频率、restart相关配置
4.3Drv_in文件、nmlfile文件中的内容
以上给出了耦合描述的项目的示例,实际实施中并不局限于此,可以视情况增加、删减和变更描述的内容。
下表1总结了耦合描述中的描述内容的关系和各部分描述内容的用途:
表1
在图2中的自动生成耦合模式源代码步骤中,表1所述耦合描述需要作为其输入以实现基于数据转换图的耦合模式驱动代码自动生成。这其中,提供具有科学意义的Run例程数据转换图(DTG)是一件比较复杂和困难的事情。利用事先提供的具有科学意义的数据转换图模板以及一组相关工具能够帮助容易地实现这个任务。基于此模板及工具,用户可以定义其耦合配置(Coupling Configuration),说明需要耦合哪些分量模式以及分量模式的网格等特性,并自动根据模板生成具有科学意义的仿真步数据转换图DTG。这时,自动源代码生成步骤可以被认为由DTG生成和代码生成两个子步骤两个子步骤组成(图3)。
下面描述基于数据转换图得到Run例程源代码的过程和具体实例。
数据转换图的概念,其定义如下:
·Application=<D,DT,T,E>
·DT={di|di is one of the result data items}
·D={di|di is a data item used}
·T={ti|ti is one of the data transformation elements}
·E={di→tj|di is one of the input data item of tj}
∪{tj→di|di is one of the out data item of tj}
·dep={di→dj|dj depends on di};
在数据转换图中有数据和数据转换(处理)两种节点,分别用di和ti来表示。数据节点代表一个唯一确定的数据项,由节点ID来唯一标识,具有数据类型(Type)、对应变量名(Variable)等属性,对应于一个变量在某个时刻的确定取值。处理节点代表一个对数据进行处理的程序段(这个程序段应该由一个字符串模板来描述),也由节点ID来唯一标识,具有程序模板、节点参数(Parameter,由Key=Value形式的键值对来描述)、数据接口等属性。一个处理节点可以有多个数据接口,每个接口有接口名(Name)、接口数据类型(Type)、接口方向(Direction,取值有输入in、输出out、输入输出inout三种)等属性。
数据转换图中,数据节点和数据转换(处理)节点交错排列。由数据节点di指向数据转换(处理)节点ti的边代表数据节点di是数据转换(处理)节点ti的一个输入数据,由数据转换(处理)节点ti指向数据节点di的边代表数据节点di是数据转换(处理)节点ti的一个输出数据。由于数据的唯一性,一个数据节点只能有一个前驱的数据转换(处理)节点(即一个数据项只能来自一个处理项)。与之不同,一个数据节点的后继数据转换(处理)节点的个数可以是多个(可以被多个不同的处理所使用)。对于一个数据转换(处理)节点,其前驱数据节点和后继数据节点必须和处理节点的数据接口在个数、接口名、接口数据类型、接口方向等方面相匹配。另外,数据转换(处理)节点的输入输出参数所关联的输入数据节点和输出数据节点应当具有相同的数据变量名。
根据数据转换图的定义我们可以知道,数据转换图必须是无环图——否则意味着某个数据项能够被计算出来的前提条件是这个数据项已经存在——这是非常荒谬的。需要注意的是,相同的变量名不等价于同一个数据节点——不同的数据节点可以具有相同的变量名,它们可以在不同的时间里共享相同的存储空间。
在耦合模式的运行过程中,耦合器需要随着仿真时间的步进不断反复地迭代一个相同的仿真步,这个仿真步对应的数据处理流程的结果数据将在下一次迭代中作为起始数据使用。我们只要能够将这个仿真步的数据转换图清晰准确地描述出来,就可以自动地构建出耦合器的run过程。而且,数据转换图可以以可视化的形式被编辑,这对于灵活地改变耦合模式的运行过程是非常有益的。
同时,由于run是一个反复迭代的过程,第n次迭代的TD集合也是run过程下一次迭代的起始数据集SD,即SD(n+1)=TD(n)。init过程的输出结果应当就是SD(1),或者也可以认为是TD(0)。所以,init的输出结果应当与run的输出结果具有相同的数据变量名和数据语义。
在run过程中,数据转换(处理)节点ti的种类是有限的,下表2列出了根据本发明实施例的主要ti示例。
这样从仿真步的数据转换图DTG,就可以轻松地生成耦合器中的run过程源代码。
图4和图5示出了根据本发明实施例的方法自动生成的某些类型耦合实验的DTG图示例。
图4示出了针对本领域常见的FC5 case,利用本发明实施例的方法生成的DTG图示例。FC5 case由CAM5、CLM4.0、RTM、CICE及DOCN(Data Ocean)和SGLC、SWAV组成。
图5示出了针对本领域常见的BC5 case,利用本发明实施例的方法生成的DTG图示例。BC5 case由CAM5、CLM4.0、RTM、CICE、POP2及SGLC、SWAV组成。
本发明实施例还可以实现为计算装置,包括:处理器;和存储器,其上存储有计算机程序,所述程序被处理器执行时,执行上述自动生成方法。
本发明实施例还可以实现为计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时,执行上述自动生成方法。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (6)
1.一种计算机执行的地球系统耦合模式应用的自动生成方法,包括:
编辑生成地球系统耦合描述,所述地球系统耦合描述包括:耦合实验名;参与描述的地球系统模式的各分量模式实例;耦合方法与耦合流程;耦合实验配置,用于模式代码和配置文件生成;
根据地球系统耦合描述,生成耦合实验使用的地球系统耦合模式源代码,包括生成用于驱动各分量模式正确运行的驱动代码,包括:自动生成循环实现模拟过程的run例程;
编译连接地球系统耦合模式源代码,生成可执行代码;
根据地球系统耦合描述生成耦合实验的配置文件,
所述自动生成方法还包括:获得仿真步数据转换图DTG,其中,从数据转换图DTG自动生成循环实现模拟过程的run例程,
其中
在数据转换图中有数据和数据转换两种节点,分别用di和ti来表示;数据转换图中,数据节点和数据转换节点交错排列;由数据节点di指向数据转换节点ti的边代表数据节点di是数据转换节点ti的一个输入数据,由数据转换节点ti指向数据节点di的边代表数据节点di或者di的一部分是数据转换节点ti的一个输出数据,
从数据转换图DTG自动生成循环实现模拟过程的run例程包括:
(1)对于每个di,设定一个bool变量solutedi,代表是否已经解算完成得到结果,所有SD中的di对应的solutedi取初值true,其余di对应的solutedi取初值false;
(2)对于每个ti,设定一个bool变量donei,代表ti是否已经执行过,donei初值为false;
(3)初始时当前代码Code为空;
(4)从数据转换节点集合T中寻找一个donei为false而且所有前驱数据节点di的solutedi均为true的节点ti,
如果找到这样的节点ti,在当前代码Code的尾部加入节点ti的运行条件判断的IF语句;
如果找不到这样的节点ti,跳转至(7);
(5)根据节点ti及其前驱、后继数据节点的配置,生成代码并加入到当前代码Code的尾部,同时将donei和ti全部后继数据节点di的solutedi均设为true;
(6)从数据转换节点集合T中寻找一个donei为false、所有前驱数据节点di的solutedi均为true而且其运行条件与ti运行条件相同的tj,
如果找到tj,则令ti=tj,跳转至(5);
如果找不到这样的tj,在当前代码Code的尾部添加END IF以关闭运行条件判断的IF语句,跳转至(4);
(7)判断TD中的所有tdi对应的solutedi是否都已经为true;
如果有false,代表存在无法解决的结果数据节点,DTG存在语义错误,报错;
如果都是true,则在当前代码Code前后加上subroutine定义,算法完成。
2.根据权利要求1所述的自动生成方法,所述根据耦合描述生成耦合实验使用的耦合模式源代码包括:生成用于驱动各分量模式正确运行的驱动代码。
3.根据权利要求1所述的自动生成方法,还包括:
使用配置文件运行可执行代码,得到耦合实验结果;以及
对耦合实验结果进行后处理。
4.根据权利要求1所述的自动生成方法,所述数据转换节点ti执行的转换包括:
调用分量模式;
耦合数据之间的变换;
针对风速的特殊插值;
耦合频率适配;
耦合变量收集;
计算海气通量;
计算陆/海/冰地形数据;
集合计算;
模式区域映射。
5.一种计算装置,包括:
处理器;和
存储器,其上存储有计算机程序,所述程序被处理器执行时,执行权利要求1到4任一项的自动生成方法。
6.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时,执行权利要求1到4任一项的自动生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011061199.0A CN112148266B (zh) | 2020-09-30 | 2020-09-30 | 地球系统耦合模式的自动生成方法及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011061199.0A CN112148266B (zh) | 2020-09-30 | 2020-09-30 | 地球系统耦合模式的自动生成方法及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148266A CN112148266A (zh) | 2020-12-29 |
CN112148266B true CN112148266B (zh) | 2022-04-01 |
Family
ID=73951337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011061199.0A Active CN112148266B (zh) | 2020-09-30 | 2020-09-30 | 地球系统耦合模式的自动生成方法及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148266B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112597669B (zh) * | 2021-03-02 | 2021-08-27 | 北京卡普拉科技有限公司 | 一种模拟试验平台及其工作方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102592251A (zh) * | 2011-01-18 | 2012-07-18 | 清华大学 | 地球系统模式的通用模块化并行耦合系统 |
CN102622227A (zh) * | 2011-09-13 | 2012-08-01 | 北京科技大学 | 一种支持动态配置的构件模型及构件工厂 |
CN102707932A (zh) * | 2012-05-16 | 2012-10-03 | 清华大学 | 一种用于地球系统模式的并行耦合方法 |
US9363311B1 (en) * | 2014-12-05 | 2016-06-07 | Tealium Inc. | Delivery of instructions in host applications |
CN108549784A (zh) * | 2018-04-27 | 2018-09-18 | 北京航空航天大学 | 人工智能书写卫星测控与力热电耦合仿真程序方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004635B (zh) * | 2010-08-19 | 2014-10-01 | 中国船舶重工集团公司第七0九研究所 | 一种支持重用的仿真模型系统及其开发方法 |
-
2020
- 2020-09-30 CN CN202011061199.0A patent/CN112148266B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102592251A (zh) * | 2011-01-18 | 2012-07-18 | 清华大学 | 地球系统模式的通用模块化并行耦合系统 |
CN102622227A (zh) * | 2011-09-13 | 2012-08-01 | 北京科技大学 | 一种支持动态配置的构件模型及构件工厂 |
CN102707932A (zh) * | 2012-05-16 | 2012-10-03 | 清华大学 | 一种用于地球系统模式的并行耦合方法 |
US9363311B1 (en) * | 2014-12-05 | 2016-06-07 | Tealium Inc. | Delivery of instructions in host applications |
CN108549784A (zh) * | 2018-04-27 | 2018-09-18 | 北京航空航天大学 | 人工智能书写卫星测控与力热电耦合仿真程序方法及装置 |
Non-Patent Citations (1)
Title |
---|
《对地球系统模式与综合评估模型双向耦合问题的探讨》;杨世莉等;《气候变化研究进展》;20190822;第335-342页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112148266A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11915146B2 (en) | Information processing device and information processing method | |
Fuhrer et al. | Towards a performance portable, architecture agnostic implementation strategy for weather and climate models | |
CN101479704B (zh) | 为多处理器系统设计程序 | |
CN105474047B (zh) | 用于有限差分建模的统一应用框架 | |
Müller-Hannemann et al. | Algorithm Engineering | |
Dobesova | Visual programming language in geographic information systems | |
CN112148266B (zh) | 地球系统耦合模式的自动生成方法及应用 | |
Bukhari et al. | A research on an intelligent multipurpose fuzzy semantic enhanced 3D virtual reality simulator for complex maritime missions | |
Mansoury et al. | Algorithm Selection with Librec-auto. | |
CN105302624A (zh) | 一种可重构编译器中循环流水迭代间启动间距自动分析方法 | |
Wang et al. | Towards ultra-high-resolution e3sm land modeling on exascale computers | |
CN109977514B (zh) | 一种雷达同步数据流图模型调度序列生成方法 | |
CN109117125B (zh) | 数字飞行器多平台多运行模式源代码的人工智能书写方法 | |
Fahringer et al. | Teuta: Tool support for performance modeling of distributed and parallel applications | |
Wagner et al. | The heuristiclab optimization environment | |
CN111045685A (zh) | 代码转换方法、装置、存储介质及电子设备 | |
CN115510563A (zh) | 一种基于模型的产品研制流程设计方法及装置 | |
Johanson et al. | Sprat: Hierarchies of domain-specific languages for marine ecosystem simulation engineering | |
Wong et al. | An assistive learning workflow on annotating images for object detection | |
CN110378390A (zh) | 一种多任务的图分类方法 | |
CN110095777A (zh) | 基于混编技术的模糊逻辑法气象粒子识别方法 | |
Akhriev et al. | A localised data assimilation framework within the ‘AllScale’parallel development environment | |
JP2015161983A (ja) | ソースコード生成装置 | |
Akgün et al. | Exploring instance generation for automated planning | |
Shook | Space-Time is the Key: For Expressing Spatial-Temporal Computing. GeoComputation 2019 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |