CN113254238B - 一种基于事件驱动的流-固耦合模块集成方法和装置 - Google Patents
一种基于事件驱动的流-固耦合模块集成方法和装置 Download PDFInfo
- Publication number
- CN113254238B CN113254238B CN202110682467.9A CN202110682467A CN113254238B CN 113254238 B CN113254238 B CN 113254238B CN 202110682467 A CN202110682467 A CN 202110682467A CN 113254238 B CN113254238 B CN 113254238B
- Authority
- CN
- China
- Prior art keywords
- event
- component
- manager
- configuration file
- new
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本申请涉及一种基于事件驱动的流‑固耦合模块集成方法和装置。所述方法包括:构建基于事件驱动的可扩展基础框架和流‑固耦合需要的独立组件,通过配置文件建立可扩展基础框架与事件的关联关系,计算程序初始化后,获取事件管理器中的事件,通过订阅管理器得到事件的关联组件,通过组件工厂动态构建关联组件的组件对象,执行组件对象中的事件处理函数,并得到事件处理函数的函数返回结果,根据函数返回结果得到新事件,直到完成关联组件中的全部事件,再从事件管理器中获取事件进行处理,直到完成事件管理器中的全部事件,结束仿真。本发明实现了高度模块化、可动态扩展、支持大规模并行的分离式流‑固耦合系统架构。
Description
技术领域
本申请涉及多物理仿真计算技术领域,特别是涉及一种基于事件驱动的流-固耦合模块集成方法、装置、计算机设备和存储介质。
背景技术
多物理仿真已成为装备设计、性能评估等领域关键技术之一,通过多物理仿真软件系统可对装备运行过程中的流体动力学、结构力学、以及电磁学特性展开分析,预测其性能及安全特性等,提前发现设计缺陷,淘汰不合理设计方案,缩短复杂系统研发设计周期、节省成本。流-固耦合是多物理仿真系统中最常用的核心算法之一,通过将流体力学与结构(固体)力学控制方程耦合求解得到系统的流体动力学与结构力学特性仿真结果。
如何构建大型的流-固耦合仿真系统并实现高性能计算是该领域的关键技术。流-固耦合等多物理仿真系统通常有两类构建方法:一种是耦合式方法,该方法将流体、结构等不同物理场的控制方程联立求解,从而得到单体式的流-固耦合计算系统。该方法得到的系统鲁棒性高、计算效率好,但无法兼容现有的流体力学及结构力学计算代码,工程量大,软件系统模块化及灵活性低。第二种是分离式耦合方法,这类方法保持流体力学与结构力学计算模块的独立性,引入特定的耦合算法实现流体力学计算模块与结构力学计算模块之间的交互,通过迭代方式完成耦合计算。该方法存在一定的收敛性问题,但模块化程度高,可兼容大量的现有代码,通过新型迭代算法和大规模并行计算技术能够一定程度上克服收敛性方面的缺陷,从而得到广泛应用。
构建分离式流-固耦合系统可通过引入独立的服务端进程负责流体求解器及结构求解器之间的数据交互,但该方法中服务进程将成为计算瓶颈,尤其在大规模并行计算背景下,引入服务端进程的集中式耦合方法可扩展性较差。另一方面,流-固耦合等多物理场仿真系统中采用的模块集成技术也严重制约了软件功能的可扩展性及性能。首先,大型仿真系统涉及领域多、代码量巨大,如何兼容历史遗留代码及新开发算法模块,实现模块灵活扩展与动态集成是一个重要问题;第二,可运行的实际系统中可能包含不同粒度大小的模块,如何以统一的方式支持不同粒度大小的模块集成对仿真系统的可持续发展至关重要。现有技术存在模块化程度不高、功能可扩展性差、计算性能低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实现高度模块化、可动态扩展的基于事件驱动的流-固耦合模块集成方法、装置、计算机设备和存储介质。
一种基于事件驱动的流-固耦合模块集成方法,所述方法包括:
构建基于事件驱动的可扩展基础框架,所述可扩展基础框架中包括配置文件解析器、组件工厂、事件管理器、订阅管理器、数据仓库;
构建流-固耦合需要的独立组件,通过配置文件建立所述独立组件与所述可扩展基础框架的关联关系;所述独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件;
启动计算程序,通过所述配置文件解析器读取所述配置文件,对所述事件管理器和所述订阅管理器进行初始化;
获取所述事件管理器中的事件,通过所述订阅管理器得到所述事件的关联组件,通过所述组件工厂动态构建所述关联组件的组件对象,执行所述组件对象中的事件处理函数,并得到所述事件处理函数的函数返回结果;所述关联组件可以包含一个或多个所述独立组件;
根据所述函数返回结果得到新事件进行处理,直到完成所述关联组件中的全部事件,再从所述事件管理器中获取事件进行处理,直到完成所述事件管理器中的全部事件,结束仿真。
在其中一个实施例中,还包括:构建基于事件驱动的可扩展基础框架,所述可扩展基础框架中包括配置文件解析器、组件工厂、事件管理器、订阅管理器、数据仓库;所述数据仓库用于存储耦合计算过程中不同组件需要交互的数据或数据地址。
在其中一个实施例中,还包括:构建流-固耦合需要的独立组件,通过配置文件建立所述独立组件与所述可扩展基础框架的关联关系;所述独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件;多个所述独立组件之间的数据交互通过所述数据仓库完成;
所述时间控制组件用于建立以时间步为单位的时间序列,维护仿真过程中的事件变量及推进时间步;
所述流体求解组件用于对当前时间步条件下的流体力学方程进行求解,更新流场物理量;
所述固体求解器组件用于对当前时间步条件下的结构力学方程进行求解,更新结构力学物理量;
所述流-固耦合组件用于所述流体求解组件与所述固体求解组件之间的数据交互;
所述输入输出组件用于完成数据文件的读入与模拟结果的输出。
在其中一个实施例中,还包括:启动计算程序,通过所述配置文件解析器读取所述配置文件,初始化所述事件管理器中的事件队列,并在所述订阅管理器中根据配置文件建立事件-订阅关系;
将初始化事件Initialize存入事件队列。
在其中一个实施例中,还包括:通过所述组件工厂动态构建所述关联组件的组件对象,执行所述组件对象中的事件处理函数,并得到所述事件处理函数的函数返回结果;所述函数返回结果可以是一个或多个待处理的新事件。
在其中一个实施例中,还包括:根据所述函数返回结果得到新事件;
进行事件同步;
若所述新事件是优先事件,将所述新事件加入新事件队列,并递归处理所述新事件队列;
若所述新事件是普通事件,将所述新事件加入当前事件队列。
在其中一个实施例中,还包括:所述事件或新事件包括初始化事件、迭代事件、子迭代事件、迭代终止事件、结果输出事件、流-固耦合事件和仿真终止事件。
一种基于事件驱动的流-固耦合模块集成装置,所述装置包括:
可扩展基础框架构建模块,用于构建基于事件驱动的可扩展基础框架,所述可扩展基础框架中包括配置文件解析器、组件工厂、事件管理器、订阅管理器、数据仓库;
独立组件构建模块,用于构建流-固耦合需要的独立组件,通过配置文件建立所述独立组件与所述可扩展基础框架的关联关系;所述独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件;
初始化模块,用于启动计算程序,通过所述配置文件解析器读取所述配置文件,对所述事件管理器和所述订阅管理器进行初始化;
事件处理模块,用于获取所述事件管理器中的事件,通过所述订阅管理器得到所述事件的关联组件,通过所述组件工厂动态构建所述关联组件的组件对象,执行所述组件对象中的事件处理函数,并得到所述事件处理函数的函数返回结果;所述关联组件可以包含一个或多个所述独立组件;
递归模块,用于根据所述函数返回结果得到新事件进行处理,直到完成所述关联组件中的全部事件,再从所述事件管理器中获取事件进行处理,直到完成所述事件管理器中的全部事件,结束仿真。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
构建基于事件驱动的可扩展基础框架,所述可扩展基础框架中包括配置文件解析器、组件工厂、事件管理器、订阅管理器、数据仓库;
构建流-固耦合需要的独立组件,通过配置文件建立所述独立组件与所述可扩展基础框架的关联关系;所述独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件;
启动计算程序,通过所述配置文件解析器读取所述配置文件,对所述事件管理器和所述订阅管理器进行初始化;
获取所述事件管理器中的事件,通过所述订阅管理器得到所述事件的关联组件,通过所述组件工厂动态构建所述关联组件的组件对象,执行所述组件对象中的事件处理函数,并得到所述事件处理函数的函数返回结果;所述关联组件可以包含一个或多个所述独立组件;
根据所述函数返回结果得到新事件进行处理,直到完成所述关联组件中的全部事件,再从所述事件管理器中获取事件进行处理,直到完成所述事件管理器中的全部事件,结束仿真。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
构建基于事件驱动的可扩展基础框架,所述可扩展基础框架中包括配置文件解析器、组件工厂、事件管理器、订阅管理器、数据仓库;
构建流-固耦合需要的独立组件,通过配置文件建立所述独立组件与所述可扩展基础框架的关联关系;所述独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件;
启动计算程序,通过所述配置文件解析器读取所述配置文件,对所述事件管理器和所述订阅管理器进行初始化;
获取所述事件管理器中的事件,通过所述订阅管理器得到所述事件的关联组件,通过所述组件工厂动态构建所述关联组件的组件对象,执行所述组件对象中的事件处理函数,并得到所述事件处理函数的函数返回结果;所述关联组件可以包含一个或多个所述独立组件;
根据所述函数返回结果得到新事件进行处理,直到完成所述关联组件中的全部事件,再从所述事件管理器中获取事件进行处理,直到完成所述事件管理器中的全部事件,结束仿真。
上述基于事件驱动的流-固耦合模块集成方法、装置、计算机设备和存储介质,通过构建基于事件驱动的可扩展基础框架和流-固耦合需要的独立组件,通过配置文件建立独立组件与可扩展基础框架的关联关系,其中独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件,启动计算程序,通过配置文件解析器读取配置文件,对事件管理器和订阅管理器进行初始化;获取事件管理器中的事件,通过订阅管理器得到事件的关联组件,通过组件工厂动态构建关联组件的组件对象,执行组件对象中的事件处理函数,并得到事件处理函数的函数返回结果,根据函数返回结果得到新事件进行处理,直到完成关联组件中的全部事件,再从事件管理器中获取事件进行处理,直到完成事件管理器中的全部事件,结束仿真。本发明通过事件驱动的系统架构实现了最大程度的模块化,各组件之间完全独立,有效提高了流-固耦合等大型多物理仿真系统的构建效率;系统组件可动态扩展,通过修改事件及其处理组件列表,可在运行时修改仿真系统执行流程;本发明方案中事件的生成与响应是分布式执行的,不存在服务端计算瓶颈,支持高效的大规模并行计算。
附图说明
图1为一个实施例中基于事件驱动的流-固耦合模块集成方法的流程示意图;
图2为一个实施例中基于事件驱动的可扩展基础框架体系结构图;
图3为一个具体实施例中基于事件驱动的流-固耦合计算流程图;
图4为一个实施例中基于事件驱动的流-固耦合模块集成装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的基于事件驱动的流-固耦合模块集成方法,可以应用于如下应用环境中。其中,终端执行一种基于事件驱动的流-固耦合模块集成方法,通过构建基于事件驱动的可扩展基础框架和流-固耦合需要的独立组件,通过配置文件建立独立组件与可扩展基础框架的关联关系,启动计算程序,通过配置文件解析器读取配置文件,对事件管理器和订阅管理器进行初始化;获取事件管理器中的事件,通过订阅管理器得到事件的关联组件,通过组件工厂动态构建关联组件的组件对象,执行组件对象中的事件处理函数,并得到事件处理函数的函数返回结果,根据函数返回结果得到新事件进行处理,直到完成关联组件中的全部事件,再从事件管理器中获取事件进行处理,直到完成事件管理器中的全部事件,结束仿真。其中,终端可以但不限于是各种个人计算机、服务器及超级计算机等大型计算集群。
在一个实施例中,如图1所示,提供了一种基于事件驱动的流-固耦合模块集成方法,包括以下步骤:
步骤102,构建基于事件驱动的可扩展基础框架。
如图2为本发明事件驱动的可扩展基础框架体系结构图,通过该框架可将流-固耦合涉及的核心功能封装到不同组件模块,再进行动态集成。该框架包括一个可执行的ESFMain主程序,主程序通过调用配置文件解析器、组件工厂、事件管理器、事件订阅器等关键模块组织事件驱动计算流程。配置文件解析器负责读入一份job.xml文件,文件中定义了流-固耦合模拟需要的组件、组件参数、组件与事件之间的对应关系等配置。主程序将根据配置文件解析的结果对事件管理器和订阅管理器进行初始化,并通过组件工厂动态生成该次计算需要的组件对象。事件管理器通过订阅管理器维护事件与组件之间的联系,即每个事件被哪些组件所订阅。数据仓库中则存储了耦合计算过程中不同组件需要交互的数据或数据地址。ESF中定义了一组统一的抽象组件接口,任何需要集成的组件都需要通过面向对象方式实现组件接口。ESF中的计算流程仅涉及对组件接口的调用,具体组件的类型和数量是在加载配置文件过程中动态确定的。对于一次以流-固耦合为代表的多物理场仿真计算过程,核心算法和求解过程均在各个实现了组件接口的独立组件中完成。
步骤104,构建流-固耦合需要的独立组件,通过配置文件建立独立组件与可扩展基础框架的关联关系。
独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件。时间控制组件负责建立以时间步为单位的时间序列,负责维护仿真过程中的事件变量及推进时间步;流体求解组件负责对当前时间步条件下的流体力学方程进行求解,更新流场物理量;固体求解器组件负责对当前时间步条件下的结构(固体)力学方程进行求解,更新结构力学物理量;流-固耦合组件则负责流体求解组件与固体求解组件之间的数据交互;输入输出组件完成数据文件的读入与模拟结果的输出。
步骤106,启动计算程序,通过配置文件解析器读取配置文件,对事件管理器和订阅管理器进行初始化。
ESF与独立组件之间通过配置文件建立关联关系,在运行时动态加载。配置文件中指明事件及需要响应的组件名称。
步骤108,获取事件管理器中的事件,通过订阅管理器得到事件的关联组件,通过组件工厂动态构建关联组件的组件对象,执行组件对象中的事件处理函数,并得到事件处理函数的函数返回结果。
关联组件可以包含一个或多个独立组件。流-固耦合计算过程中涉及的关键事件及关联的组件如下:
组件构建过程中需要在组件接口的实现中定义每个组件对事件的响应函数,即compList[i].eventHandler(E)。对于典型的流-固耦合计算,主要事件与对应的组件响应、返回新事件如下所示:
步骤110,根据函数返回结果得到新事件进行处理,直到完成关联组件中的全部事件,再从事件管理器中获取事件进行处理,直到完成事件管理器中的全部事件,结束仿真。
上述基于事件驱动的流-固耦合模块集成方法中,通过构建基于事件驱动的可扩展基础框架和流-固耦合需要的独立组件,通过配置文件建立独立组件与可扩展基础框架的关联关系,其中独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件,启动计算程序,通过配置文件解析器读取配置文件,对事件管理器和订阅管理器进行初始化;获取事件管理器中的事件,通过订阅管理器得到事件的关联组件,通过组件工厂动态构建关联组件的组件对象,执行组件对象中的事件处理函数,并得到事件处理函数的函数返回结果,根据函数返回结果得到新事件进行处理,直到完成关联组件中的全部事件,再从事件管理器中获取事件进行处理,直到完成事件管理器中的全部事件,结束仿真。本发明通过事件驱动的系统架构实现了最大程度的模块化,各组件之间完全独立,有效提高了流-固耦合等大型多物理仿真系统的构建效率;系统组件可动态扩展,通过修改事件及其处理组件列表,可在运行时修改仿真系统执行流程;本发明方案中事件的生成与响应是分布式执行的,不存在服务端计算瓶颈,支持高效的大规模并行计算。
在其中一个实施例中,还包括:构建基于事件驱动的可扩展基础框架,可扩展基础框架中包括配置文件解析器、组件工厂、事件管理器、订阅管理器、数据仓库;数据仓库用于存储耦合计算过程中不同组件需要交互的数据或数据地址。
在其中一个实施例中,还包括:构建流-固耦合需要的独立组件,通过配置文件建立独立组件与可扩展基础框架的关联关系;独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件;多个独立组件之间的数据交互通过数据仓库完成;时间控制组件用于建立以时间步为单位的时间序列,维护仿真过程中的事件变量及推进时间步;流体求解组件用于对当前时间步条件下的流体力学方程进行求解,更新流场物理量;固体求解器组件用于对当前时间步条件下的结构力学方程进行求解,更新结构力学物理量;流-固耦合组件则用于流体求解组件与固体求解组件之间的数据交互;输入输出组件用于完成数据文件的读入与模拟结果的输出。
在其中一个实施例中,还包括:启动计算程序,通过配置文件解析器读取配置文件,初始化事件管理器中的事件队列,并在订阅管理器中根据配置文件建立事件-订阅关系;将初始化事件Initialize存入事件队列。
在其中一个实施例中,还包括:通过组件工厂动态构建关联组件的组件对象,执行组件对象中的事件处理函数,并得到事件处理函数的函数返回结果;函数返回结果可以是一个或多个待处理的新事件。
在其中一个实施例中,还包括:根据函数返回结果得到新事件;进行事件同步;若新事件是优先事件,将新事件加入新事件队列,并递归处理新事件队列;若新事件是普通事件,将新事件加入当前事件队列。
在其中一个实施例中,还包括:事件或新事件包括初始化事件、迭代事件、子迭代事件、迭代终止事件、结果输出事件、流-固耦合事件和仿真终止事件。
应该理解的是,虽然图1流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个具体实施例中,如图3所示,以事件驱动方式执行流-固耦合计算的主要流程如下:
1. 启动计算程序,读取配置文件job.xml, 初始化ESF各个模块;
2. 初始化事件管理器中的事件列表,将初始化事件Initialize存入事件队列;
3. 从事件队列取事件E (第一次取事件时,Initialize是队列中的唯一事件);
3.1 获取事件E的订阅组件列表compList;
3.2 依次调用compList中每个组件的事件处理函数, 初始化i = 0,调用compList[i].eventHandler(E);
3.3 从eventHandler函数返回结果取新事件,并进行事件同步;
3.4 IF 新事件是优先事件,那么将事件加入新队列,并递归处理新事件队列;
3.5 ELSE 新事件是普通事件,那么将事件加入当前队列尾部;
3.6 IF返回结果中还有未处理的新事件,转到 3.3;
3.7 compList中还有未处理的组件,i++,转到3.2;
3.8 IF 当前队列还有未处理事件,转到3;
4. 仿真结束。
在另一个具体实施例中,描述了流-固耦合计算中涉及事件及对应组件的响应。对于Initialize事件,所有组件均进行初始化操作,时间控制组件额外返回一个Iteration普通事件,以保证计算流程进入迭代过程。对于Iteration事件,流体求解器和固体求解器均启动迭代流程,流体求解器返回SubIteration优先事件。对SubIteration事件的响应中流体和固体求解器均执行求解流体力学方程或结构力学方程的核心算法,如果判断本次迭代结束,则流体求解组件返回IterationEnd普通事件,否则再返回一个SubIteration优先事件,以继续执行子迭代;流-固耦合组件则再子迭代事件中写入流-固耦合边界数据到数据仓库,并返回一个FSInteraction优先事件。对FSInteraction事件的处理函数中,流-固耦合组件将读取耦合数据并进行跨求解器同步,最后写入新数据到数据仓库,这一步完成了流-固耦合组件之间的数据交互。InterationEnd迭代结束事件中流体和固体求解组件均根据设置决定是否返回Output优先事件以进行结果写入。对Output事件的响应中,输入输出组件将完成结果文件写入工作。时间控制组件再InterationEnd事件响应中累加当前时间步,根据案例模拟时间判断是否达到终止时间,如果到达终止条件,则返回SimEnd事件,否则返回Iteration事件,以继续进行迭代计算。SimEnd事件则引起所有组件进行模拟终止的清理工作。
在一个实施例中,如图4所示,提供了一种基于事件驱动的流-固耦合模块集成装置,包括:可扩展基础框架构建模块402、独立组件构建模块404、初始化模块406、事件处理模块408和递归模块410,其中:
可扩展基础框架构建模块402,用于构建基于事件驱动的可扩展基础框架,可扩展基础框架中包括配置文件解析器、组件工厂、事件管理器、订阅管理器;
独立组件构建模块404,用于构建流-固耦合需要的独立组件,通过配置文件建立独立组件与可扩展基础框架的关联关系;独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件;
初始化模块406,用于启动计算程序,通过配置文件解析器读取配置文件,对事件管理器和订阅管理器进行初始化;
事件处理模块408,用于获取事件管理器中的事件,通过订阅管理器得到事件的关联组件,通过组件工厂动态构建关联组件的组件对象,执行组件对象中的事件处理函数,并得到事件处理函数的函数返回结果;关联组件可以包含一个或多个独立组件;
递归模块410,用于根据函数返回结果得到新事件进行处理,直到完成关联组件中的全部事件,再从事件管理器中获取事件进行处理,直到完成事件管理器中的全部事件,结束仿真。
初始化模块406还用于启动计算程序,通过配置文件解析器读取配置文件,初始化事件管理器中的事件队列,并在订阅管理器中根据配置文件建立事件-订阅关系;将初始化事件Initialize存入事件队列。
事件处理模块408还用于根据函数返回结果得到新事件;进行事件同步;若新事件是优先事件,将新事件加入新事件队列,并递归处理新事件队列;若新事件是普通事件,将新事件加入当前事件队列。
关于基于事件驱动的流-固耦合模块集成装置的具体限定可以参见上文中对于基于事件驱动的流-固耦合模块集成方法的限定,在此不再赘述。上述基于事件驱动的流-固耦合模块集成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于事件驱动的流-固耦合模块集成方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于事件驱动的流-固耦合模块集成方法,其特征在于,所述方法包括:
构建基于事件驱动的可扩展基础框架,所述可扩展基础框架中包括配置文件解析器、组件工厂、事件管理器、订阅管理器;
构建流-固耦合需要的独立组件,通过配置文件建立所述独立组件与所述可扩展基础框架的关联关系;所述独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件;
启动计算程序,通过所述配置文件解析器读取所述配置文件,对所述事件管理器和所述订阅管理器进行初始化;
获取所述事件管理器中的事件,通过所述订阅管理器得到所述事件的关联组件,通过所述组件工厂动态构建所述关联组件的组件对象,执行所述组件对象中的事件处理函数,并得到所述事件处理函数的函数返回结果;所述关联组件可以包含一个或多个所述独立组件;
根据所述函数返回结果得到新事件进行处理,直到完成所述关联组件中的全部事件,再从所述事件管理器中获取事件进行处理,直到完成所述事件管理器中的全部事件,结束仿真。
2.根据权利要求1所述的方法,其特征在于,所述可扩展基础框架中还包括数据仓库;所述数据仓库用于存储耦合计算过程中不同组件需要交互的数据或数据地址。
3.根据权利要求2所述的方法,其特征在于,多个所述独立组件之间的数据交互通过所述数据仓库完成;
所述时间控制组件用于建立以时间步为单位的时间序列,维护仿真过程中的事件变量及推进时间步;
所述流体求解组件用于对当前时间步条件下的流体力学方程进行求解,更新流场物理量;
所述固体求解组件用于对当前时间步条件下的结构力学方程进行求解,更新结构力学物理量;
所述流-固耦合组件用于所述流体求解组件与所述固体求解组件之间的数据交互;
所述输入输出组件用于完成数据文件的读入与模拟结果的输出。
4.根据权利要求1所述的方法,其特征在于,所述启动计算程序,通过所述配置文件解析器读取所述配置文件,对所述事件管理器和所述订阅管理器进行初始化包括:
启动计算程序,通过所述配置文件解析器读取所述配置文件,初始化所述事件管理器中的事件队列,并在所述订阅管理器中根据配置文件建立事件-订阅关系;
将初始化事件存入事件队列。
5.根据权利要求1所述的方法,其特征在于,所述函数返回结果可以是一个或多个待处理的新事件。
6.根据权利要求5所述的方法,其特征在于,根据所述函数返回结果得到新事件进行处理包括:
根据所述函数返回结果得到新事件;
进行事件同步;
若所述新事件是优先事件,将所述新事件加入新事件队列,并递归处理所述新事件队列;
若所述新事件是普通事件,将所述新事件加入当前事件队列。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述事件或新事件包括初始化事件、迭代事件、子迭代事件、迭代终止事件、结果输出事件、流-固耦合事件和仿真终止事件。
8.一种基于事件驱动的流-固耦合模块集成装置,其特征在于,所述装置包括:
可扩展基础框架构建模块,用于构建基于事件驱动的可扩展基础框架,所述可扩展基础框架中包括配置文件解析器、组件工厂、事件管理器、订阅管理器;
独立组件构建模块,用于构建流-固耦合需要的独立组件,通过配置文件建立所述独立组件与所述可扩展基础框架的关联关系;所述独立组件包括时间控制组件、流体求解组件、固体求解组件、流-固耦合组件以及输入输出组件;
初始化模块,用于启动计算程序,通过所述配置文件解析器读取所述配置文件,对所述事件管理器和所述订阅管理器进行初始化;
事件处理模块,用于获取所述事件管理器中的事件,通过所述订阅管理器得到所述事件的关联组件,通过所述组件工厂动态构建所述关联组件的组件对象,执行所述组件对象中的事件处理函数,并得到所述事件处理函数的函数返回结果;所述关联组件可以包含一个或多个所述独立组件;
递归模块,用于根据所述函数返回结果得到新事件进行处理,直到完成所述关联组件中的全部事件,再从所述事件管理器中获取事件进行处理,直到完成所述事件管理器中的全部事件,结束仿真。
9.根据权利要求8所述的装置,其特征在于,所述初始化模块还用于:
启动计算程序,通过所述配置文件解析器读取所述配置文件,初始化所述事件管理器中的事件队列,并在所述订阅管理器中根据配置文件建立事件-订阅关系;
将初始化事件存入事件队列。
10.根据权利要求8所述的装置,其特征在于,所述事件处理模块还用于:
根据所述函数返回结果得到新事件;
进行事件同步;
若所述新事件是优先事件,将所述新事件加入新事件队列,并递归处理所述新事件队列;
若所述新事件是普通事件,将所述新事件加入当前事件队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110682467.9A CN113254238B (zh) | 2021-06-21 | 2021-06-21 | 一种基于事件驱动的流-固耦合模块集成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110682467.9A CN113254238B (zh) | 2021-06-21 | 2021-06-21 | 一种基于事件驱动的流-固耦合模块集成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254238A CN113254238A (zh) | 2021-08-13 |
CN113254238B true CN113254238B (zh) | 2021-09-07 |
Family
ID=77188742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110682467.9A Active CN113254238B (zh) | 2021-06-21 | 2021-06-21 | 一种基于事件驱动的流-固耦合模块集成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254238B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794213B (zh) * | 2023-02-07 | 2023-04-25 | 湖南高至科技有限公司 | 基于嵌入式系统的可配置对象管理方法、装置和设备 |
CN116127611B (zh) * | 2023-04-13 | 2023-06-20 | 中国人民解放军国防科技大学 | 一种水下航行器动态仿真方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279840A (zh) * | 2013-06-08 | 2013-09-04 | 北京首钢自动化信息技术有限公司 | 基于动态语言与事件处理机制的工作流引擎实现方法 |
CN106951590A (zh) * | 2017-02-16 | 2017-07-14 | 北京宇航系统工程研究所 | 一种面向多学科异构模型的仿真试验系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9323556B2 (en) * | 2014-09-30 | 2016-04-26 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
US10249608B1 (en) * | 2017-09-08 | 2019-04-02 | Qorvo Us, Inc. | ESD protection circuit |
-
2021
- 2021-06-21 CN CN202110682467.9A patent/CN113254238B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279840A (zh) * | 2013-06-08 | 2013-09-04 | 北京首钢自动化信息技术有限公司 | 基于动态语言与事件处理机制的工作流引擎实现方法 |
CN106951590A (zh) * | 2017-02-16 | 2017-07-14 | 北京宇航系统工程研究所 | 一种面向多学科异构模型的仿真试验系统 |
Non-Patent Citations (3)
Title |
---|
"Direct numerical simulation capability for strongly-coupled fluid-solid heat transfer in film-cooling structures";Ting Yu, Duo Wang, Heng Li, Hongyi Xu;《International Journal of Heat and Mass Transfer》;20190428;第750-760页 * |
"YH-ACT:热工流体力学并行应用程序";刘杰等;《计算机工程与科学》;20210115;第58-68页 * |
"隧道掘进排孔爆破的精细化数值模拟";关振长,朱凌枫,俞伯林;《振动与冲击》;20210615;第154-161页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113254238A (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113254238B (zh) | 一种基于事件驱动的流-固耦合模块集成方法和装置 | |
Yang et al. | UMR: A multi-round algorithm for scheduling divisible workloads | |
KR102133906B1 (ko) | 데이터 분석 및 처리 방법, 장치, 컴퓨터 장치 및 저장 매체 | |
CN112925587A (zh) | 用于初始化应用的方法和装置 | |
CN114531477B (zh) | 功能组件的配置方法、装置、计算机设备和存储介质 | |
CN115357369B (zh) | 一种k8s容器云平台中CRD应用集成调用方法与装置 | |
CN111008132A (zh) | Android系统的应用调试方法、装置、计算机设备和存储介质 | |
CN115794213A (zh) | 基于嵌入式系统的可配置对象管理方法、装置和设备 | |
CN110991127B (zh) | 任务执行方法、装置、计算机设备及存储介质 | |
CN115454512A (zh) | 一种芯片驱动加载配置方法、装置、设备和存储介质 | |
CN110222119B (zh) | 一种异构数据库的数据转换同步方法、设备及存储介质 | |
CN113094125B (zh) | 业务流程处理方法、装置、服务器及存储介质 | |
CN111930491B (zh) | 一种全局通信优化加速方法、装置和计算机设备 | |
CN111580826B (zh) | 机器学习模型的编译优化方法和装置 | |
CN111813721B (zh) | 神经网络数据处理方法、装置、设备及存储介质 | |
CN116541336A (zh) | 多核芯片、协处理器的软件运行方法 | |
CN111352644A (zh) | 小程序更新方法、装置、服务器及存储介质 | |
CN111290774A (zh) | 基于Windows系统的固态硬盘固件批量升级方法和装置 | |
CN114757131A (zh) | 适用于cfd不确定度量化的代理模型的优化方法及相关设备 | |
Yuan et al. | Performance analysis of assembly systems with unreliable machines and finite buffers | |
CN111857662A (zh) | 基于map和接口来描述对象特定构成的程序设计方法 | |
CN110990035A (zh) | 一种基于Git的链式软件升级方法 | |
CN115759260B (zh) | 深度学习模型的推理方法、装置、电子设备和存储介质 | |
CN112685438B (zh) | 数据处理系统、方法、装置及存储介质 | |
CN116091216A (zh) | 基于区块链的交易数据处理方法、装置、设备及存储介质 |
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 |