数值求解器调用方法和系统的制作方法

文档序号:6539862阅读:178来源:国知局
数值求解器调用方法和系统的制作方法
【专利摘要】本发明提供一种数值求解器调用方法和系统,方法包括:确定主程序的计算流程对应的算例;查找预设的对应所述算例的数值求解器;通过所述主程序创建管道;将所述数值求解器的输出定向到所述管道;将所述数值求解器的输出通过所述管道传输给所述主程序。本发明的优点在于,通过管道技术实现两个独立进程之间的信息交换,两者之间交换的信息无须遵循事先约定的格式或协议,通过线程阻塞读取由管道技术获取的交换信息,并显示到主程序界面上,避免因为资源消耗巨大、等待时间较长而引起的界面假死现象。
【专利说明】数值求解器调用方法和系统
【技术领域】
[0001]本发明主要涉及计算机仿真领域,具体涉及一种数值求解器调用方法和系统。
【背景技术】
[0002]在一个仿真计算系统中,通常具有一个主程序和多个数值求解器。一般而言,调用数值求解器的主程序可称为宿主程序(HOST),数值求解器程序本身则可称为客户端程序(CLIENT),两者是完全独立的进程,因此需要解决两个进程间信息的交换,计算过程的控制等问题。主程序与数值求解器程序之间通常具有较高的耦合性。
[0003]从软件设计的角度看,两者之间如果存在较高的耦合性,则会给系统的维护、升级带来较大的问题,因此,如果采用松散耦合的结构,可以有效的解决系统维护工作量的问题。
[0004]以核素迁移的仿真为例,核素的迁移过程是一个复杂的过程,其中涉及到的可能因素很多,包括:力学问题、温度问题、渗流问题,以及复杂化学反应问题等等,核素在迁移过程中的状态和方式也可能随着环境以及自身的尺寸而发生较大的变化。
[0005]作为一种研究方式,核素迁移的数值仿真的核心问题及研究的起始就是迁移方程/组的建立,根据研究侧重点、研究方式以及技术手段等的不一致,各个研究组得到的控制方程/组不尽相同,面对不同的控制方程/组,一般都需要编写不同的数值求解器。
[0006]在目前的技术中,可以采用一体化方案(数值求解代码与主程序相融合)的方式来完成调用求解器和信息显示等内容,该方案的缺点如下:
[0007]I)两者之间存在较大的耦合,代码的后期维护工作量大、系统升级存在一定困难;
[0008]2)如果核素迁移模型有改变或者增加,即核素迁移控制方程/组有变化或者增力口,如何有效地维护和管理数值求解器,是一个很大的问题;
[0009]3)对于新的核素迁移模型,还需要修改主程序代码才能将其实现,对于主程序的升级有一定的难度。
[0010]现有技术提供的另一种系统中,采用的结构为松散耦合,即主程序与数值求解器相互为独立进程,主程序与数值求解进程之间采用消息+共享内存的方式传递信息,该方案的缺点在于:
[0011]实现难度较高,所传递的消息必须经过事先预定,需要主程序与数值求解器双方均遵守才能够实现,即系统后期维护的难度非常大。
[0012]现有技术提供的另一种系统中,采用的结构为松散耦合,即主程序与数值求解器相互为独立进程,主程序与数值求解进程之间采用Socket (网络套接字)传递信息,该方案的缺点在于:
[0013]实现难度较高,所传递的消息同样必须经过事先预定,需要主程序与数值求解器双方均遵守才能够实现,造成系统后期维护的难度非常大。
【发明内容】

[0014]本发明的主要目的,在于提供一种松散耦合的设计方案,能够提供一种主程序与数值求解器进程之间的可选择调用机制,且主程序与数值求解器之间交换的信息无需遵循任何事先约定的格式或协议,从而实现主程序与数值求解器程序之间的信息交换。
[0015]本发明的目的及解决其技术问题是采用以下技术方案来实现的。依据本发明提出的一种数值求解器调用方法,包括:确定主程序的计算流程对应的算例;查找预设的对应所述算例的数值求解器;通过所述主程序创建管道;将所述数值求解器的输出定向到所述管道;将所述数值求解器的输出通过所述管道传输给所述主程序。
[0016]优选地,所述将所述数值求解器的输出通过所述管道传输给所述主程序的步骤包括:通过所述主程序创建界面线程;通过所述界面线程中以线程阻塞的方式,从所述管道获取所述数值求解器返回的文本信息,并生成界面显示所述文本信息。
[0017]优选地,所述将所述数值求解器的输出通过所述管道传输给所述主程序的步骤还包括:在每次从所述管道读取所述文本信息后,通过所述界面线程检查所述数值求解器是否完成求解,如未完成则继续从所述管道进行读取。
[0018]优选地,所述查找预设的对应所述算例的数值求解器的步骤还包括:根据预设的求解过程属性值,设置所述数值求解器的启动参数,并按所述启动参数启动所述数值求解器。
[0019]优选地,所述管道为匿名管道。
[0020]本发明的目的及解决其技术问题还是采用以下技术方案来实现的。依据本发明提出的一种数值求解器调用系统,包括:算例确定模块,用于确定主程序的计算流程对应的算例;数值求解器查找模块,用于查找预设的对应所述算例的数值求解器;管道创建模块,用于通过所述主程序创建管道;输出定向模块,用于将所述数值求解器的输出定向到所述管道;输出模块,用于将所述数值求解器的输出通过所述管道传输给所述主程序。
[0021]优选地,还包括:界面线程创建模块,用于通过所述主程序创建界面线程;所述输出模块通过所述界面线程中以线程阻塞的方式,从所述管道获取所述数值求解器返回的文本信息,并生成界面显示所述文本信息。
[0022]优选地,还包括:求解检查模块,用于在每次从所述管道读取所述文本信息后,通过所述界面线程检查所述数值求解器是否完成求解,如未完成则继续从所述管道进行读取。
[0023]优选地,还包括:数值求解器启动模块,用于根据预设的求解过程属性值,设置所述数值求解器的启动参数,并按所述启动参数启动所述数值求解器。
[0024]优选地,所述管道为匿名管道。
[0025]本发明的数值求解器调用方法和系统至少具有以下优点:
[0026]I)通过管道技术实现两个独立进程之间的信息交换,两者之间交换的信息无须遵循事先约定的格式或协议,且交换的信息与具体的程序独立,可以实现通过名称灵活调用不同的数值求解器;
[0027]2)通过线程阻塞技术来读取由管道技术获取的交换信息,并显示到主程序界面上,避免因为资源消耗巨大、等待时间较长而引起的界面假死现象。
[0028]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
【专利附图】

【附图说明】
[0029]图1是根据本发明的一个实施例的数值求解器调用方法的流程图;
[0030]图2是根据本发明的一个实施例的数值求解器调用系统的框图;
[0031]图3是根据本发明的一个实施例的数值求解器调用系统的框图。
【具体实施方式】
[0032]为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的数值求解器调用方法和系统其【具体实施方式】、结构、特征及其功效,详细说明如后。在下述说明中,不同的“一实施例”或“实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。
[0033]如图1所示,本发明的一个实施例提出的一种数值求解器调用方法,包括:步骤11,确定主程序的计算流程对应的算例,算例是一个逻辑上的概念,其在逻辑上代表了一次数值模拟所需要的数据(网格数据、初始条件、边界条件、计算参数等)、结果(时间点目录和相应的数据文件)以及算例工程文件(使用XML文件描述);在物理上,一个算例由一个目录组成,该目录被称为算例目录,在该目录下,应该存在如下文件或者文件夹:I) case, xml:算例的工程文件;2) caseOption.case:算例的基本计算时间控制参数文件;3)mesh子目录:包含了网格数据文件的子目录(该子目录下包含了网格点数据文件、网格面数据文件、网格体数据文件、边界条件文件和计算参数文件等);4)时间点子目录:时间点子目录可能存在(计算完毕或者计算中状态),也可能不存在(该算例还未计算),每个时间点都代表对应的时间单位,在其目录下,包含了多个数据文件,是后处理的唯一依据;步骤12,查找预设的对应算例的数值求解器,一般来说每个计算流程均对应一个算例,每个算例的预设包含的内容:数值求解器、算例目录、模拟的起始时间、模拟的终止时间、模拟的时间单位、模拟的计算步长等与算例本身相关的属性值;步骤13,通过主程序创建管道;步骤14,将数值求解器的输出定向到管道;步骤15,将数值求解器的输出通过管道传输给主程序,将本实施例的技术方案应用到核素迁移后可以发现,可以简化核素迁移模拟类软件的结构,将数值求解部分从主程序中剥离,以独立进程方式提供计算能力,软件后期维护代码量降低,且可以很好地适应核素迁移模拟模型的发展变化,可以根据模型的修改、新的模型来修改或者设计实现新的数值求解器即可,不需要对主程序做修改,管道的存在保证主程序与数值求解器之间交换的信息无需遵循任何事先约定的格式或协议,即以数值求解器为主来设计其输出信息,主程序被动接受任何数值求解器输出的信息,可以实现通过名称灵活调用不同的数值求解器。
[0034]在本发明的另一个实施例中,还提供一种数值求解器调用方法,步骤15包括:通过主程序创建界面线程;通过界面线程中以线程阻塞的方式,从管道获取数值求解器返回的文本信息,并生成界面显示文本信息,通过本实施例的技术方案,可以实时更新显示数值求解过程输出的信息,不会造成主程序的界面假死。
[0035]在本发明的另一个实施例中,还提供一种数值求解器调用方法,步骤15还包括:在每次从管道读取文本信息后,通过界面线程检查数值求解器是否完成求解,如未完成则继续从管道进行读取,通过本实施例的技术方案,可以及时获取反馈的信息,且能够保证获取的信息为数值求解的完整结果。
[0036]在本发明的另一个实施例中,还提供一种数值求解器调用方法,步骤12还包括:根据预设的求解过程属性值,设置数值求解器的启动参数,并按启动参数启动数值求解器,本实施例指的是在求解过程中,对求解器本身行为产生影响的参数,例如:生成的数据文件格式、是否对计算结果校验和是否自动关闭求解信息显示窗体等属性值,这些属性值需要作为参数传递到数值求解器中,所以需要根据事先约定的格式来生成数值求解器的求结果过程属性参数。
[0037]在本发明的另一个实施例中,还提供一种数值求解器调用方法,管道为匿名管道。
[0038]如图2所示,本发明的一个实施例提出的一种数值求解器调用系统,包括:算例确定模块21,用于确定主程序的计算流程对应的算例,算例是一个逻辑上的概念,其在逻辑上代表了一次数值模拟所需要的数据(网格数据、初始条件、边界条件、计算参数等)、结果(时间点目录和相应的数据文件)以及算例工程文件(使用XML文件描述);在物理上,一个算例由一个目录组成,该目录被称为算例目录,在该目录下,应该存在如下文件或者文件夹:Dcase, xml:算例的工程文件;2) caseOption.case:算例的基本计算时间控制参数文件;3)mesh子目录:包含了网格数据文件的子目录(该子目录下包含了网格点数据文件、网格面数据文件、网格体数据文件、边界条件文件和计算参数文件等);4)时间点子目录:时间点子目录可能存在(计算完毕或者计算中状态),也可能不存在(该算例还未计算),每个时间点都代表对应的时间单位,在其目录下,包含了多个数据文件,是后处理的唯一依据;数值求解器查找模块22,用于查找预设的对应算例的数值求解器,一般来说每个计算流程均对应一个算例,每个算例的预设包含的内容:数值求解器、算例目录、模拟的起始时间、模拟的终止时间、模拟的时间单位、模拟的计算步长等与算例本身相关的属性值;管道创建模块23,用于通过主程序创建管道;输出定向模块24,用于将数值求解器的输出定向到管道;输出模块25,用于将数值求解器的输出通过管道传输给主程序,将本实施例的技术方案应用到核素迁移后可以发现,可以简化核素迁移模拟类软件的结构,将数值求解部分从主程序中剥离,以独立进程方式提供计算能力,软件后期维护代码量降低,且可以很好地适应核素迁移模拟模型的发展变化,可以根据模型的修改、新的模型来修改或者设计实现新的数值求解器即可,不需要对主程序做修改,管道的存在保证主程序与数值求解器之间交换的信息无需遵循任何事先约定的格式或协议,即以数值求解器为主来设计其输出信息,主程序被动接受任何数值求解器输出的信息,且交换的信息与具体的程序独立,可以实现通过名称灵活调用不同的数值求解器。
[0039]如图3所示,在本发明的另一个实施例中,还提供一种数值求解器调用方法,还包括:界面线程创建模块26,用于通过主程序创建界面线程;输出模块25通过界面线程中以线程阻塞的方式,从管道获取数值求解器返回的文本信息,并生成界面显示文本信息,通过本实施例的技术方案,可以实时更新显示数值求解过程输出的信息,不会造成主程序的界面假死。
[0040]如图3所示,在本发明的另一个实施例中,还提供一种数值求解器调用方法,还包括:求解检查模块27,用于在每次从管道读取文本信息后,通过界面线程检查数值求解器是否完成求解,如未完成则继续从管道进行读取,通过本实施例的技术方案,可以及时获取反馈的信息,且能够保证获取的信息为数值求解的完整结果。
[0041]如图3所示,在本发明的另一个实施例中,还提供一种数值求解器调用方法,还包括:数值求解器启动模块28,用于根据预设的求解过程属性值,设置数值求解器的启动参数,并按启动参数启动数值求解器,本实施例指的是在求解过程中,对求解器本身行为产生影响的参数,例如:生成的数据文件格式、是否对计算结果校验和是否自动关闭求解信息显示窗体等属性值,这些属性值需要作为参数传递到数值求解器中,所以需要根据事先约定的格式来生成数值求解器的求结果过程属性参数。
[0042]在本发明的另一个实施例中,还提供一种数值求解器调用方法,管道为匿名管道。
[0043]以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
【权利要求】
1.一种数值求解器调用方法,其特征在于,包括: 确定主程序的计算流程对应的算例; 查找预设的对应所述算例的数值求解器; 通过所述主程序创建管道; 将所述数值求解器的输出定向到所述管道; 将所述数值求解器的输出通过所述管道传输给所述主程序。
2.根据权利要求1所述的数值求解器调用方法,其特征在于,所述将所述数值求解器的输出通过所述管道传输给所述主程序的步骤包括: 通过所述主程序创建界面线程; 通过所述界面线程中以线程阻塞的方式,从所述管道获取所述数值求解器返回的文本信息,并生成界面显示所述文本信息。
3.根据权利要求2所述的数值求解器调用方法,其特征在于,所述将所述数值求解器的输出通过所述管道传输给所述主程序的步骤还包括: 在每次从所述管道读取所述文本信息后,通过所述界面线程检查所述数值求解器是否完成求解,如未完成则继续从所述管道进行读取。
4.根据权利要求1所述的数值求解器调用方法,其特征在于,所述查找预设的对应所述算例的数值求解器的步骤还包括: 根据预设的求解过程属性值,设置所述数值求解器的启动参数,并按所述启动参数启动所述数值求解器。
5.根据权利要求1至4中任一项所述的数值求解器调用方法,其特征在于,所述管道为匿名管道。
6.一种数值求解器调用系统,其特征在于,包括: 算例确定模块,用于确定主程序的计算流程对应的算例; 数值求解器查找模块,用于查找预设的对应所述算例的数值求解器; 管道创建模块,用于通过所述主程序创建管道; 输出定向模块,用于将所述数值求解器的输出定向到所述管道; 输出模块,用于将所述数值求解器的输出通过所述管道传输给所述主程序。
7.根据权利要求6所述的数值求解器调用系统,其特征在于,还包括: 界面线程创建模块,用于通过所述主程序创建界面线程; 所述输出模块通过所述界面线程中以线程阻塞的方式,从所述管道获取所述数值求解器返回的文本信息,并生成界面显示所述文本信息。
8.根据权利要求7所述的数值求解器调用系统,其特征在于,还包括: 求解检查模块,用于在每次从所述管道读取所述文本信息后,通过所述界面线程检查所述数值求解器是否完成求解,如未完成则继续从所述管道进行读取。
9.根据权利要求6所述的数值求解器调用系统,其特征在于,还包括: 数值求解器启动模块,用于根据预设的求解过程属性值,设置所述数值求解器的启动参数,并按所述启动参数启动所述数值求解器。
10.根据权利要求6至9中任一项所述的数值求解器调用系统,其特征在于,所述管道为匿名管道。
【文档编号】G06F9/46GK103793269SQ201410083858
【公开日】2014年5月14日 申请日期:2014年3月9日 优先权日:2014年3月9日
【发明者】刘涛, 赵冬梅, 吴亚东, 韩永国, 李孟伟 申请人:西南科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1