高动态空间自适应流体仿真方法、设备及存储介质转让专利

申请号 : CN202211575803.0

文献号 : CN115587523B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘斯诺汪国平朱飞盖孟李胜

申请人 : 北京大学

摘要 :

本公开涉及一种高动态空间自适应流体仿真方法、设备及存储介质,该方法包括:计算并记录流场中粒子的物理属性;根据所述流场中粒子的物理属性,得到所述流场中粒子的动态水平和可见水平;根据所述流场中粒子的动态水平和可见水平,计算所述流场中粒子的最优质量;根据所述流场中粒子的所述真实质量与所述最优质量间的比值,确定所述粒子的类型;根据所述粒子的类型,更新所述流场中的粒子,并在更新所述流场中的粒子后,再一次执行所述计算并记录流场中粒子的物理属性的步骤;根据多次记录的所述流场中粒子的物理属性,生成关于流体动作的动画。

权利要求 :

1.一种高动态空间自适应流体仿真方法,包括:

计算并记录流场中粒子的物理属性;其中,所述粒子的物理属性包括所述粒子的真实质量;

根据所述流场中粒子的物理属性,得到所述流场中粒子的动态水平和可见水平;其中,所述动态水平包括所述粒子的涡度和速度差,所述可见水平包括所述粒子到自由表面的距离;

根据所述流场中粒子的动态水平和可见水平,计算所述流场中粒子的最优质量;

根据所述流场中粒子的所述真实质量与所述最优质量间的比值,确定所述粒子的类型;

其中,所述根据所述流场中粒子的所述真实质量与所述最优质量间的比值,确定所述粒子的类型,包括:在所述粒子的所述真实质量与所述最优质量间的比值大于第四预设阈值的情况下,确定所述粒子的类型为所述需要分裂的第一类型;

在所述粒子的所述真实质量与所述最优质量间的比值大于或者等于第二预设阈值,且小于第三预设阈值的情况下,确定所述粒子的类型为保持不变的第二类型;

在所述粒子的所述真实质量与所述最优质量间的比值大于或者等于所述第三预设阈值,且小于或者等于所述第四预设阈值,或者,大于或者等于第一预设阈值,且小于所述第二预设阈值的情况下,确定所述粒子的类型为需要质量重分配的第三类型;

在所述粒子的所述真实质量与所述最优质量间的比值小于所述第一预设阈值的情况下,确定所述粒子的类型为需要合并的第四类型;

根据所述粒子的类型,更新所述流场中的粒子,并在更新所述流场中的粒子后,再一次执行所述计算并记录流场中粒子的物理属性的步骤;其中,所述根据所述粒子的类型,更新所述流场中的粒子包括:对于所述第一类型的粒子,采用密度误差最小的分裂方式,对所述流场中的属于所述第一类型的粒子进行分裂;对于所述第二类型的粒子,保持粒子不变;对于所述第三类型的粒子,将粒子的部分质量分配给其他粒子;以及,对于所述第四类型的粒子,将粒子的质量和其他粒子的质量进行合并;

根据多次记录的所述流场中粒子的物理属性,生成关于流体动作的动画;其中,不同次记录对应不同的时间戳。

2.根据权利要求1所述的方法,其中,所述根据所述流场中粒子的动态水平和可见水平,计算所述流场中粒子的最优质量,包括:分别通过动态水平映射函数、可见水平映射函数,获取所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值;

通过尺寸函数、及所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值,得到所述流场中每个粒子的最优质量。

3.根据权利要求1所述的方法,其中,所述采用密度误差最小的分裂方式,对所述流场中的属于所述第一类型的粒子进行分裂,包括:根据属于所述第一类型的待分裂粒子的所述真实质量与所述最优质量间的比值,确定所述待分裂粒子的子粒子数量;

根据所述待分裂粒子的子粒子数量,为所述待分裂粒子选择分裂模板;

旋转所述分裂模板,计算所述待分裂粒子与每次旋转所述分裂模板得到的子粒子之间的密度误差,得到多个所述密度误差中的最小密度误差;

通过所述最小密度误差对应的分裂方式,对所述待分裂粒子进行分裂。

4.根据权利要求1所述的方法,其中,所述计算并记录流场中粒子的物理属性之前,所述方法包括:根据所述流场中粒子的邻居粒子数量,得到关于所述粒子的候选粒子;

在所述候选粒子周围生成多个临时粒子;

在所述计算并记录流场中粒子的物理属性之后,及所述根据所述流场中粒子的物理属性,得到所述流场中粒子的动态水平和可见水平之前,所述方法还包括:在所述流场中去除所述多个临时粒子。

5.根据权利要求1所述的方法,其中,所述计算并记录流场中粒子的物理属性,包括:在流场中的粒子被更新过的情况下,计算被更新的粒子的原始物理属性;

将所述被更新的粒子的原始物理属性与所述被更新粒子的父粒子的物理属性相融合,得到并记录所述被更新的粒子的物理属性。

6.一种高动态空间自适应流体仿真设备,包括:

物理属性计算模块,用于计算并记录流场中粒子的物理属性;其中,所述粒子的物理属性包括所述粒子的真实质量;

粒子水平计算模块,用于根据所述流场中粒子的物理属性,得到所述流场中粒子的动态水平和可见水平;其中,所述动态水平包括所述粒子的涡度和速度差,所述可见水平包括所述粒子到自由表面的距离;

最优质量计算模块,用于根据所述流场中粒子的动态水平和可见水平,计算所述流场中粒子的最优质量;

粒子类型确定模块,用于根据所述流场中粒子的所述真实质量与所述最优质量间的比值,确定所述粒子的类型;其中,所述根据所述流场中粒子的所述真实质量与所述最优质量间的比值,确定所述粒子的类型,包括:在所述粒子的所述真实质量与所述最优质量间的比值大于第四预设阈值的情况下,确定所述粒子的类型为所述需要分裂的第一类型;

在所述粒子的所述真实质量与所述最优质量间的比值大于或者等于第二预设阈值,且小于第三预设阈值的情况下,确定所述粒子的类型为保持不变的第二类型;

在所述粒子的所述真实质量与所述最优质量间的比值大于或者等于所述第三预设阈值,且小于或者等于所述第四预设阈值,或者,大于或者等于第一预设阈值,且小于所述第二预设阈值的情况下,确定所述粒子的类型为需要质量重分配的第三类型;

在所述粒子的所述真实质量与所述最优质量间的比值小于所述第一预设阈值的情况下,确定所述粒子的类型为需要合并的第四类型;

粒子更新模块,用于根据所述粒子的类型,更新所述流场中的粒子,并在更新所述流场中的粒子后,再一次执行所述计算并记录流场中粒子的物理属性的步骤;其中,所述根据所述粒子的类型,更新所述流场中的粒子包括:对于所述第一类型的粒子,采用密度误差最小的分裂方式,对所述流场中的属于所述第一类型的粒子进行分裂;对于所述第二类型的粒子,保持粒子不变;对于所述第三类型的粒子,将粒子的部分质量分配给其他粒子;以及,对于所述第四类型的粒子,将粒子的质量和其他粒子的质量进行合并;

动画生成模块,用于根据多次记录的所述流场中粒子的物理属性,生成关于流体动作的动画;其中,不同次记录对应不同的时间戳。

7.根据权利要求6所述的设备,其中,所述最优质量计算模块,具体用于:分别通过动态水平映射函数、可见水平映射函数,获取所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值;

通过尺寸函数、及所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值,得到所述流场中每个粒子的最优质量。

8.一种高动态空间自适应流体仿真设备,包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序用于控制所述处理器进行操作以执行根据权利要求1至5中任一项所述的方法。

9.一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至5中任一项所述的方法。

说明书 :

高动态空间自适应流体仿真方法、设备及存储介质

技术领域

[0001] 本公开实施例涉及计算机仿真技术领域,更具体地,涉及一种高动态空间自适应流体仿真方法、一种设备和一种存储介质。

背景技术

[0002] 在虚拟环境中与自然现象的自由交互可以增强虚拟现实系统中的用户体验,其中飞溅和涡流等高动态行为是与流体相互作用时的主要特征之一。为了在虚拟现实应用程序中,提高用户与虚拟自然环境的自由交互体验,需要实现高动态流体的高真实感仿真。目前,人们采用空间自适应方法提高了仿真效率,同时确保了流体表面重要细节的高保真呈现。然而,由于多尺度离散化引起的信息提取不充分和密度误差,仍然导致高频细节的严重丢失。这使得人们难以在高效仿真高动态流体的同时,以高保真度提供充分的飞溅和涡流细节。

发明内容

[0003] 本公开实施例的一个目的是提供一种高动态流体仿真的新的技术方案,以实现基于粒子的高动态流体的高保真、高效仿真。
[0004] 根据本公开的第一方面,提供了一种高动态空间自适应流体仿真方法,该方法包括:
[0005] 计算并记录流场中粒子的物理属性;其中,所述粒子的物理属性包括所述粒子的真实质量;
[0006] 根据所述流场中粒子的物理属性,得到所述流场中粒子的动态水平和可见水平;其中,所述动态水平包括所述粒子的涡度和速度差,所述可见水平包括所述粒子到自由表面的距离;
[0007] 根据所述流场中粒子的动态水平和可见水平,计算所述流场中粒子的最优质量;
[0008] 根据所述流场中粒子的所述真实质量与所述最优质量间的比值,确定所述粒子的类型;其中,所述粒子的类型为设定的多个类型中的一个类型,所述多个类型包括需要分裂的第一类型;
[0009] 根据所述粒子的类型,更新所述流场中的粒子,并在更新所述流场中的粒子后,再一次执行所述计算并记录流场中粒子的物理属性的步骤;其中,所述根据所述粒子的类型,更新所述流场中的粒子包括:采用密度误差最小的分裂方式,对所述流场中的属于所述第一类型的粒子进行分裂;
[0010] 根据多次记录的所述流场中粒子的物理属性,生成关于流体动作的动画;其中,不同次记录对应不同的时间戳。
[0011] 可选地,所述根据所述流场中粒子的动态水平和可见水平,计算所述流场中粒子的最优质量,包括:
[0012] 分别通过动态水平映射函数、可见水平映射函数,获取所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值;
[0013] 通过尺寸函数、及所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值,得到所述流场中每个粒子的最优质量。
[0014] 可选地,所述采用密度误差最小的分裂方式,对所述流场中的属于所述第一类型的粒子进行分裂,包括:
[0015] 根据属于所述第一类型的待分裂粒子的所述真实质量与所述最优质量间的比值,确定所述待分裂粒子的子粒子数量;
[0016] 根据所述待分裂粒子的子粒子数量,为所述待分裂粒子选择分裂模板;
[0017] 旋转所述分裂模板,计算所述待分裂粒子与每次旋转所述分裂模板得到的子粒子之间的密度误差,得到多个所述密度误差中的最小密度误差;
[0018] 通过所述最小密度误差对应的分裂方式,对所述待分裂粒子进行分裂。
[0019] 可选地,所述根据所述流场中粒子的所述真实质量与所述最优质量间的比值,确定所述粒子的类型,包括:
[0020] 在所述粒子的所述真实质量与所述最优质量间的比值大于第四预设阈值的情况下,确定所述粒子的类型为所述需要分裂的第一类型;
[0021] 在所述粒子的所述真实质量与所述最优质量间的比值大于或者等于第二预设阈值,且小于第三预设阈值的情况下,确定所述粒子的类型为保持不变的第二类型;
[0022] 在所述粒子的所述真实质量与所述最优质量间的比值大于或者等于所述第三预设阈值,且小于或者等于所述第四预设阈值,或者,大于或者等于第一预设阈值,且小于所述第二预设阈值的情况下,确定所述粒子的类型为需要质量重分配的第三类型;
[0023] 在所述粒子的所述真实质量与所述最优质量间的比值小于所述第一预设阈值的情况下,确定所述粒子的类型为需要合并的第四类型。
[0024] 可选地,所述计算并记录流场中粒子的物理属性之前,所述方法包括:
[0025] 根据所述流场中粒子的邻居粒子数量,得到关于所述粒子的候选粒子;
[0026] 在所述候选粒子周围生成多个临时粒子。
[0027] 可选地,在所述计算并记录流场中粒子的物理属性之后,及所述根据所述流场中粒子的物理属性,得到所述流场中粒子的动态水平和可见水平之前,所述方法还包括:
[0028] 在所述流场中去除所述多个临时粒子。
[0029] 可选地,所述计算并记录流场中粒子的物理属性,包括:
[0030] 在流场中的粒子被更新过的情况下,计算被更新的粒子的原始物理属性;
[0031] 将所述被更新的粒子的原始物理属性与所述被更新粒子的父粒子的物理属性相融合,得到并记录所述被更新的粒子的物理属性。
[0032] 根据本公开的第二方面,还提供了一种高动态空间自适应流体仿真设备,该设备包括:
[0033] 物理属性计算模块,用于计算并记录流场中粒子的物理属性;其中,所述粒子的物理属性包括所述粒子的真实质量;
[0034] 粒子水平计算模块,用于根据所述流场中粒子的物理属性,得到所述流场中粒子的动态水平和可见水平;其中,所述动态水平包括所述粒子的涡度和速度差,所述可见水平包括所述粒子到自由表面的距离;
[0035] 最优质量计算模块,用于根据所述流场中粒子的动态水平和可见水平,计算所述流场中粒子的最优质量;
[0036] 粒子类型确定模块,用于根据所述流场中粒子的所述真实质量与所述最优质量间的比值,确定所述粒子的类型;其中,所述粒子的类型为设定的多个类型中的一个类型,所述多个类型包括需要分裂的第一类型;
[0037] 粒子更新模块,用于根据所述粒子的类型,更新所述流场中的粒子,并在更新所述流场中的粒子后,再一次执行所述计算并记录流场中粒子的物理属性的步骤;其中,所述根据所述粒子的类型,更新所述流场中的粒子包括:采用密度误差最小的分裂方式,对所述流场中的属于所述第一类型的粒子进行分裂;
[0038] 动画生成模块,用于根据多次记录的所述流场中粒子的物理属性,生成关于流体动作的动画;其中,不同次记录对应不同的时间戳。
[0039] 可选地,所述最优质量计算模块,具体用于:
[0040] 分别通过动态水平映射函数、可见水平映射函数,获取所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值;
[0041] 通过尺寸函数、及所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值,得到所述流场中每个粒子的最优质量。
[0042] 根据本公开的第三方面,还提供了一种高动态空间自适应流体仿真设备,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,以实现根据本公开第一方面所述的方法。
[0043] 根据本公开的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现根据本公开的第一方面所述的方法。
[0044] 本公开实施例的一个有益效果在于,在本公开实施例的高动态流体仿真方法中,同时考虑了流场的可见性水平和动态水平,通过引入高动态流体内部的复杂运动,以实现基于粒子的高动态流体的高保真、高效仿真;整个流场的分辨率通过新设计的粒子分裂、合并和质量重新分配方案进行自适应调整,通过采用密度误差最小的分裂模板进行分裂,以确保基于粒子的空间自适应流体模拟的稳定性。
[0045] 通过以下参照附图对本公开的示例性实施例的详细描述,本公开实施例的其它特征及其优点将会变得清楚。

附图说明

[0046] 被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开实施例的原理。
[0047] 图1是可用于实现本公开实施例的仿真设备的硬件配置框图;
[0048] 图2是根据一个实施例的高动态空间自适应流体仿真方法的流程示意图;
[0049] 图3是根据另一个实施例的高动态空间自适应流体仿真方法的流程示意图;
[0050] 图4是根据一个实施例的高动态空间自适应流体仿真小球砸水实验效果示意图;
[0051] 图5是根据一个实施例的高动态空间自适应流体仿真螺旋桨水下旋转实验效果示意图;
[0052] 图6是根据一个实施例的高动态空间自适应流体仿真粒子数与统一高分辨率仿真粒子数的比值折线图;
[0053] 图7是根据一个实施例的高动态空间自适应流体仿真设备的方框原理图;
[0054] 图8是根据一个实施例的高动态空间自适应流体仿真设备的结构示意图。

具体实施方式

[0055] 现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
[0056] 以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
[0057] 对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
[0058] 在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
[0059] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
[0060] 在虚拟现实应用程序中,为了提高用户与虚拟自然环境的自由交互体验,需要实现高动态流体的高真实感仿真。为了实现高动态流体的高真实感仿真的目的,一种可选的实施方式为:通过将不同的分辨率应用于不同的流场位置,并且进行动态改变以达到流场粒子的最佳分辨率。然而,由于多尺度离散化引起的信息提取不充分和密度误差,仍然导致高频细节的严重丢失。这使得人们难以在高效仿真高动态流体的同时,以高保真度提供充分的飞溅和涡流细节。
[0061] <硬件配置>
[0062] 图1是可用于实现本公开实施例的仿真设备的硬件配置框图。
[0063] 如图1所示,该仿真设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。
[0064] 处理器1100用于执行计算机程序,该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够进行有线或无线通信,通信装置1400可以包括至少一种短距离通信模块,例如是基于Hilink协议、WiFi(IEEE 802.11协议)、Mesh、蓝牙、ZigBee、Thread、Z‑Wave、NFC、UWB、LiFi等短距离无线通信协议进行短距离无线通信的任意模块,通信装置1400也可以包括远程通信模块,例如是进行WLAN、GPRS、2G/3G/4G/5G远程通信的任意模块。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。扬声器1700用于输出音频信号。麦克风1800用于采集音频信号。
[0065] 该仿真设备1000可以是具有计算处理能力的任意类型的电子设备,在此不做限定。示例性地,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra‑mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等。
[0066] 本领域技术人员应当理解,尽管在图1中示出了仿真设备1000的多个装置,但是,本公开实施例的仿真设备1000可以仅涉及其中的部分装置,例如,只涉及处理器1100和存储器1200。这是本领域公知,此处不再赘述。
[0067] 应用于本实施例中,存储器1200用于存储计算机程序指令,该指令用于控制处理器1100进行操作以执行根据本公开任意实施例的流体仿真方法。技术人员可以根据本发明所公开方案设计该指令。该指令如何控制处理器1100进行操作,这是本领域公知,故在此不再详细描述。
[0068] <方法实施例>
[0069] 图2是根据一个实施例的高动态空间自适应流体仿真方法的流程示意图。
[0070] 如图2所示,本实施例的高动态空间自适应流体仿真方法可以包括如下步骤S210~S260:
[0071] 步骤S210,计算并记录流场中粒子的物理属性。
[0072] 在流体仿真中,分辨率的定义取决于离散化的方式,对于欧拉方法是网格大小,对于拉格朗日方法是粒子大小。由于固定网格的限制,欧拉方法很难很好地描述大变形的仿真场景。因此,基于粒子的拉格朗日方法更适合高动态流体场景的模拟。
[0073] 基于粒子的拉格朗日方法通过离散的采样点来计算连续的流场,其把整个被模拟的流体离散成采样点,这些离散的采样点被称为光滑粒子。在基于粒子的拉格朗日方法中,粒子可以分布于被模拟空间的任意位置,每个粒子都被认为占据着流体空间的一个片段,且为了得到更准确的加权量,采样的粒子必须比较密集。基于粒子的拉格朗日方法可以包括光滑粒子流体动力学方法(SPH)。
[0074] 其中,SPH(Smoothed Particle Hydrodynamics)是光滑粒子流体动力学方法的缩写,是在近20多年来逐步发展起来的一种无网格方法。该方法的基本思想是将连续的流体(或固体)用相互作用的质点组来描述,各个物质点上承载各种物理量,包括质量、速度等,通过求解质点组的动力学方程和跟踪每个质点的运动轨道,求得整个系统的力学行为。
[0075] SPH方法将连续流场离散为有限数量的运动粒子,每个粒子携带一组物理量(属性),包括质量、密度、压力、速度、位置等。在每个时间步长内,需要求解流场内所有流体粒子的物理属性,并更新流体粒子在下一时刻的速度与位置。
[0076] 本实施例中,在仿真设备模拟流体运动时,每一时刻流场中粒子的物理属性被计算并记录在该仿真设备的存储器中。该仿真设备例如可以是手机、平板电脑等,在此不做限定。
[0077] 粒子可以是初始化后静态的粒子,也可以是处于各种运动状态下的粒子,例如是飞溅状态下的粒子、涡流状态下的粒子,还可以是对原始粒子进行各种后处理后的粒子,例如按照本实施例的方法对原始粒子进行合并、分裂和质量重分配后的粒子等等,在此不做限定。
[0078] 每个粒子对应一组物理属性。物理属性是每个粒子携带的物理量,包括真实质量、密度、压力、速度、位置中的任意一项或多项。其中,真实质量指的是流场中粒子的实际质量。物理属性用于描述流场中粒子的运动状态,仿真设备得到每一时刻流场中粒子的运动状态,可生成流体动作的动画,实现流体动作的模拟。
[0079] 示例性地,首先基于流场中粒子及其邻居粒子的物理属性计算并记录流场中粒子的物理属性。其中,粒子的各物理属性利用了SPH方法的插值近似特点。三次样条核 被用作权重,以根据邻居粒子的属性值获得位置 处的粒子的属性值:
[0080]
[0081] 其中,表示粒子的属性值, 表示粒子的邻居粒子的属性值, 表示邻居粒子的真实质量,表示邻居粒子的密度, 是粒子和粒子之间的距离,是光滑半径,W为SPH方法中的核函数。只有当 小于光滑半径时,粒子和粒子才被视为彼此的邻居,并参与插值计算。
[0082] 然后通过控制方程来得到每个粒子的总加速度,最终完成对粒子位置的更新。
[0083] 流体粒子的运动由控制方程(Navier‑Stokes方程)描述:
[0084]
[0085] 其中,表示物质导数,表示梯度算子, 表示拉普拉斯算子,是重力加速度,表示速度,表示时间,表示密度,表示压力,表示粘度。公式右边的三项分别代表压力、粘性力和外力(重力)引起的速度变化。
[0086] 步骤S220,根据流场中粒子的物理属性,得到流场中粒子的动态水平和可见水平。
[0087] 本实施例中,仿真设备得到每一时刻流场中各粒子的涡度、速度差和各粒子到自由表面的距离。
[0088] 粒子的动态水平用于描述当流场中的粒子处于复杂流体运动时,该粒子的运动状态。粒子的动态水平可以包括涡度和速度差,其中,涡度是描述局部区域旋转状态的物理量,定义为速度的旋度。旋度是向量分析中的一个向量算子,可以表示三维向量场对某一点附近的微元造成的旋转程度。这个向量提供了向量场在这一点的旋转性质。速度差表示两个粒子之间的相对速度。
[0089] 粒子的可见水平用于描述流场中粒子的位置。粒子的可见水平可以包括粒子到流体自由表面的距离。其中,粒子到流体自由表面的距离可以采用水平集函数进行计算,例如Level‑set函数。
[0090] 继续上述示例,仿真设备得到每一时刻流场中各粒子的涡度、速度差和各粒子到自由表面的距离,具体计算方法如下:
[0091] 粒子的涡度由邻居粒子涡度的插值得出:
[0092]
[0093] 其中, 表示粒子的涡度,表示粒子的速度,表示邻居粒子的速度, 为系数,W为SPH方法中的核函数。
[0094] 对于粒子,其与邻居粒子间的速度差可以表示为:
[0095]
[0096] 其中,表示粒子的速度差, 表示粒子与其邻居粒子的速度差, 表示范数。
[0097] 粒子到自由表面的距离通过Level‑set函数计算,并使用SPH插值进行平滑:
[0098]
[0099] 其中, 表示粒子到自由表面的距离, 表示邻居粒子到自由表面的距离。
[0100] 步骤S230,根据流场中粒子的动态水平和可见水平,计算流场中粒子的最优质量。
[0101] 本实施例中,仿真设备计算得到流场中每个粒子的最佳分辨率。
[0102] 最优质量指的是流场中每个粒子的最佳分辨率。将流场中的不同区域采用不同的分辨率,并且进行动态改变以达到最佳分辨率,可以实现空间自适应仿真,例如在流体动作复杂的区域采用高分辨率的粒子,在流体动作简单的区域采用低分辨率的粒子,可以实现高保真、多细节的流体模拟。
[0103] 步骤S230中根据流场中粒子的动态水平和可见水平,计算流场中粒子的最优质量可以进一步包括如下步骤S231 S232:~
[0104] 步骤S231,分别通过动态水平映射函数、可见水平映射函数,获取流场中每个粒子的动态水平映射函数值和可见水平映射函数值。
[0105] 动态水平映射函数用于将粒子的涡度和速度差映射到自定义区间。
[0106] 可见水平映射函数用于将粒子到自由表面的距离映射到自定义区间。
[0107] 其中,映射函数可根据提供的函数对指定的序列做映射,例如 函数。
[0108] 继续上述示例,将粒子到自由表面的距离使用如下映射函数映射到[0,1]区间:
[0109]
[0110] 其中, 表示粒子到自由表面的距离的映射函数值, 表示距离预设阈值。
[0111] 将涡度与速度差使用如下函数投影到 区间:
[0112]
[0113] 其中, 表示映射函数,表示需要映射的属性值, 和 为自定义区间的最小值和最大值, 均为定义的参数。为了得到涡度与速度差的映射结果,需要定义4个变量 :
[0114]
[0115]
[0116] 其中, 表示粒子的涡度的映射函数值, 表示粒子的速度差的映射函数值,、 分别表示涡度最小值和最大值, 、 分别表示速度差最小值和最大值。
[0117] 步骤S232,通过尺寸函数、及流场中每个粒子的动态水平映射函数值和可见水平映射函数值,得到流场中每个粒子的最优质量。
[0118] 尺寸函数用于计算粒子的最优质量。
[0119] 继续上述示例,尺寸函数用于根据上述映射结果计算粒子的最佳质量:
[0120]
[0121] 其中, 表示粒子的最优质量, 、 分别表示当前时刻流场所有粒子中的真实质量最大值、最小值。
[0122] 在本实施例中,提出不仅要检测自由表面附近的粒子,还要检测数值变化剧烈的高动态区域中的粒子,相较于现有技术中仅检测自由表面附近的粒子,可以提高这些粒子的分辨率以捕获更多细节。
[0123] 步骤S240,根据流场中粒子的真实质量与最优质量间的比值,确定粒子的类型。
[0124] 本实施例中,仿真设备对流场中的各粒子进行分类。
[0125] 粒子类型不同,处理方式不同。其中,处理方式可以包括分裂、合并和质量重分配。其中,分裂指的是将原始粒子拆分成多个子粒子,例如 分裂,n表示子粒子数量。合并指的是将原始粒子进行删除,并将原始粒子的质量和其他原始粒子的质量进行合并。质量重分配指的是将原始粒子的部分质量分配给其他的原始粒子。
[0126] 步骤S240中根据流场中粒子的真实质量与最优质量间的比值,确定粒子的类型可以进一步包括如下步骤S241 S244:~
[0127] 步骤S241,在粒子的真实质量与最优质量间的比值大于第四预设阈值的情况下,确定粒子的类型为需要分裂的第一类型。
[0128] 继续上述示例,对于流体粒子 ,计算它的真实质量 和最优质量 的比值,并根据这个比值 调整它的大小:
[0129]
[0130] 对于 的粒子,将其平均拆分为 个子粒子,每个子粒子的质量为 。这个过程是 分裂。子粒子的速度与原始粒子相同,以确保动量守恒。具有相同父级的所有子级的相对位置由预先计算的模板给出。本实施例为 分裂过程中的每个 值均准备了一个模板,其中 。具有 的粒子的类型为需要分裂
的第一类型。表示向上取整。
[0131] 步骤S242,在粒子的真实质量与最优质量间的比值大于或者等于第二预设阈值,且小于第三预设阈值的情况下,确定粒子的类型为保持不变的第二类型。
[0132] 保持不变指的是粒子保持原样,不做任何的处理。对于真实质量与最优质量接近的粒子,调整它们会消耗计算资源,但仅能产生微小的变化,对模拟没有明显的好处。因此,将这些粒子保持原样以节省计算资源。
[0133] 继续上 述示例 , 的 粒子非 常接近最佳 尺寸。具 有的粒子的类型为保持不变的第二类型。
[0134] 步骤S243,在粒子的真实质量与最优质量间的比值大于或者等于第三预设阈值,且小于或者等于第四预设阈值,或者,大于或者等于第一预设阈值,且小于第二预设阈值的情况下,确定粒子的类型为需要质量重分配的第三类型。
[0135] 继续上述示例,对于具有 的粒子 ,分裂操作将产生两个分辨率高于最优值的子粒子。因此,本实施例进行部分质量的重分配,将超出的质量
分配给选定的伙伴。注意,只有 的邻居将被选为伙伴。
每个伙伴将从粒子处获得质量 ,其中 是伙伴的数量。具有 的
粒子的类型为需要质量重分配的第三类型。
[0136] 步骤S244,在粒子的真实质量与最优质量间的比值小于第一预设阈值的情况下,确定粒子的类型为需要合并的第四类型。
[0137] 继续上述示例,在模拟中, 的粒子小于最佳尺寸,它们将被删除以降低局部区域的分辨率。它们的质量将平均分配给选定的伙伴,以确保质量守恒。这个过程是合并。伙伴的选择规则依然是 的邻居粒子。不同的是,被删除粒子的每个伙伴 都会获得质量 ,其中 是被选中伙伴的数量。具有 的粒子的类型为
需要合并的第四类型。
[0138] 在本实施例中,采用分裂、合并和质量重分配的操作来调整粒子的分辨率,可以使得流场中粒子的分辨率达到理想水平。
[0139] 步骤S250,根据粒子的类型,更新流场中的粒子,并在更新流场中的粒子后,再一次执行计算并记录流场中粒子的物理属性的步骤。
[0140] 本实施例中,仿真设备对当前时刻是否结束模拟进行判断:若结束,则进行步骤S260;若未结束,则返回步骤S210进行迭代计算。其中,模拟结束的条件可以是迭代次数达到预期迭代次数,也可以是流场中所有粒子的位置不再发生变化。
[0141] 步骤S250中根据粒子的类型,更新流场中的粒子可以进一步包括如下步骤S251~S254:
[0142] 步骤S251,根据属于第一类型的待分裂粒子的真实质量与最优质量间的比值,确定待分裂粒子的子粒子数量。
[0143] 继续上述示例,对于 的粒子,本实施例将其平均拆分为 个子粒子,即为得到待分裂粒子i的子粒子数量 。
[0144] 步骤S252,根据待分裂粒子的子粒子数量,为待分裂粒子选择分裂模板。
[0145] 在本实施例中,对于不同的子粒子数量,对应不同的分裂模板,例如当子粒子数量为2时,采用子粒子均匀分配的分裂模板。通过旋转分裂模板,可以使子粒子的位置发生变化,例如2个子粒子的位置可以是左右排布,也可以是上下排布。
[0146] 继续上述示例,对于待分裂粒子,选择对应分裂模板 。
[0147] 步骤S253,旋转分裂模板,计算待分裂粒子与每次旋转分裂模板得到的子粒子之间的密度误差,得到多个密度误差中的最小密度误差。
[0148] 粒子分裂时,由于子粒子的位置和原始粒子不同,导致引入了密度误差。其中,密度误差可以包括原始粒子替换为多个子粒子所引起的邻居粒子位置处的误差,以及每个子粒子与原始粒子的密度误差。
[0149] 继续上述示例,密度误差计算公式如下:
[0150]
[0151] 其中, 表示粒子 被分裂后的密度误差, 用于迭代粒子的所有邻居粒子,用于迭代粒子的所有子粒子,是 的邻居,m表示质量,表示粒子的密度,W表示系数,为SPH方法中的核函数。公式右边的第一项表示将粒子替换为多个子粒子所引起的邻居粒子位置处的误差,第二项是每个子粒子与原始粒子的密度误差。
[0152] 根据上述密度误差计算公式可以计算每次旋转分裂模板后的密度误差。
[0153] 步骤S254,通过最小密度误差对应的分裂方式,对待分裂粒子进行分裂。
[0154] 当密度误差最小时,表示子粒子与原始粒子的物理属性比较接近,可以有效提高流体模拟的稳定性。
[0155] 继续上述示例,本实施例多次旋转指定的分裂模板,得到每次旋转分裂模板后的密度误差为 、 … ,选择 、 … 中的最小值对应的分裂方式,对粒子i进行分裂。
[0156] 在本实施例中,着眼于粒子的所有邻居粒子和子粒子的所在位置,并计算这些位置处因分裂而造成的误差,使用误差最小的模板对粒子进行分裂,可以提高流体模拟的稳定性。
[0157] 步骤S260,根据多次记录的流场中粒子的物理属性,生成关于流体动作的动画。
[0158] 本实施例中,仿真设备将每一时刻记录的流场运动状态进行拼接,生成时间段内流体动作的视频。
[0159] 多次记录指的是记录每一时刻流场中粒子的物理属性,不同次对应不同的时间戳。其中,时间戳可以是几秒,也可以是几分,还可以是几小时等。
[0160] 生成关于流体动作的动画,包括流场表面信息的提取和流体渲染。流场表面信息提取用于构造流体表面,例如采用Marching Cube算法提取流体表面信息。流体渲染用于实现可视化。
[0161] 继续上述示例,将每一时刻流场中粒子的物理属性作为流体动画视频中每一帧粒子的运动情况,然后采用Marching Cube算法提取每一帧中的流体表面信息,最后将每一帧中的流体进行渲染。
[0162] 根据本公开实施例的流体仿真方法,其同时考虑了流场的可见性水平和动态水平,通过引入高动态流体内部的复杂运动,以实现基于粒子的高动态流体的高保真、高效仿真;整个流场的分辨率通过新设计的粒子分裂、合并和质量重新分配方案进行自适应调整,通过采用密度误差最小的分裂模板进行分裂,以确保基于粒子的空间自适应流体模拟的稳定性。
[0163] 图3是根据另一个实施例的高动态空间自适应流体仿真方法的流程示意图。
[0164] 如图3所示,在一个实施例中,在根据以上步骤S210计算并记录流场中粒子的物理属性之前,还包括步骤S200获取临时粒子;
[0165] 根据以上步骤S200获取临时粒子,可以进一步包括步骤S201 S202:~
[0166] 步骤S201,根据流场中粒子的邻居粒子数量,得到关于粒子的候选粒子。
[0167] 候选粒子指的是流场中,邻居粒子数量少于预设阈值的粒子。
[0168] 示例性地,为了优化模拟结果,本实施例在高动态区域执行飞溅效果增强,以实现与高分辨率结果更为相近的仿真效果。如果一个表面粒子的邻居少于用户定义的参数,则将该粒子视为飞溅候选粒子。
[0169] 步骤S202,在候选粒子周围生成多个临时粒子。
[0170] 临时粒子用于丰富流体动画效果。
[0171] 示例性地,为了增强飞溅细节,本实施例在候选粒子 周围生成 个临时粒子。本实施例以 和 为例,其中 是粒子 的邻居数。临时粒子 的位置是根据其父粒子 设置的:
[0172]
[0173] 其中, 是粒子 与其邻居粒子Z间的平均位置偏移向量,是随机的飞溅增强参数,用于控制候选粒子 与其生成的临时粒子之间的距离, 是随机的偏移向量,使水花看起来更分散。表示粒子的位置,临时粒子 的尺寸与其父粒子 相同。
[0174]
[0175] 其中, = ‑ 是粒子Q与粒子Z之间的距离, 表示粒子Z的真实质量, 表示粒子Z的密度, 为系数,W为SPH方法中的核函数。
[0176] 在本实施例中,提出一种新的后处理细节增强方案,具有可调参数,可以有效提高流体模拟的动态水平。它易于实现,可以与任何基于粒子的流体求解器集成。
[0177] 根据以上步骤S210计算并记录流场中粒子的物理属性,可以进一步包括步骤S211S212:~
[0178] 步骤S211,在流场中的粒子被更新过的情况下,计算被更新的粒子的原始物理属性。
[0179] 示例性地,流场中的粒子在被更新后,利用如下公式计算被更新后粒子的原始物理属性:
[0180]
[0181] 其中, 表示被更新后粒子的原始物理属性, 表示伙伴y原来的真实质量,表示伙伴y从粒子处获得的质量,表示粒子的原始物理属性。
[0182] 步骤S212,将被更新的粒子的原始物理属性与被更新粒子的父粒子的物理属性相融合,得到并记录被更新的粒子的物理属性。
[0183] 继续上述示例,按照如下公式对被更新后粒子的原始物理属性进行校准,得到被更新粒子的物理属性:
[0184]
[0185] 其中, 表示被更新粒子的物理属性,表示权重。
[0186] 在本实施例中,通过将粒子更新前后的物理属性进行融合,可进一步降低粒子分裂带来的密度误差,进一步确保基于粒子的空间自适应流体模拟的稳定性。
[0187] 在根据以上步骤S210计算并记录流场中粒子的物理属性之后,及根据以上步骤S220根据流场中粒子的物理属性,得到流场中粒子的动态水平和可见水平之前,还包括步骤S2100在流场中去除多个临时粒子。
[0188] 在本实施例中,记录所有临时粒子的位置和半径,并将它们作为后处理步骤添加到仿真中。由于这些临时粒子只是为了丰富视觉效果而产生的,然后将临时粒子进行去除,它们并不影响流体仿真的后续计算。
[0189] 根据本公开实施例的流体仿真方法,其通过增加流场中的临时粒子,以丰富流体仿真过程的细节,提供了一种新的后处理细节增强方法,该方法易于实现,可以与任何基于粒子的流体求解器集成,同时可以有效提高流体模拟的动态水平;同时,通过对更新后粒子的原始物理属性进行校准,进一步确保基于粒子的空间自适应流体模拟的稳定性。
[0190] 图4是根据一个实施例的高动态空间自适应流体仿真小球砸水实验效果示意图。
[0191] 如图4所示,分别使用均匀低分辨率(a)、基于表面的自适应分辨率(b)、本公开实施例的高动态自适应分辨率(c)和均匀高分辨率(d)进行仿真。在(a)中,大部分飞溅细节都丢失了。与基于表面的自适应方法(b)相比,本公开实施例的仿真方法能够保留更多的飞溅细节,并获得与高分辨率方法(d)更相似的外观。
[0192] 图5是根据一个实施例的高动态空间自适应流体仿真螺旋桨水下旋转实验效果示意图。
[0193] 如图5所示,分别使用均匀低分辨率(a)、基于表面的自适应分辨率(b)、本公开实施例的高动态自适应分辨率(c)和均匀高分辨率(d)进行仿真。在(a)中,大部分飞溅细节都丢失了。基于表面的自适应方法(b)无法捕捉到高频细节,飞溅无法达到预期高度,本公开实施例的仿真方法的结果更接近高分辨率模拟的结果。
[0194] 图6是根据一个实施例的高动态空间自适应流体仿真粒子数与统一高分辨率仿真粒子数的比值折线图。
[0195] 如图6所示,黑色实线为小球砸水实验时,本公开实施例的流体仿真方法粒子数与统一高分辨率仿真粒子数的比值随时间变化图;黑色虚线为螺旋桨水下旋转实验时,本公开实施例的流体仿真方法粒子数与统一高分辨率仿真粒子数的比值随时间变化图。由图可知,本公开实施例的流体仿真方法粒子数相对于统一高分辨率仿真的粒子数比值,其结果始终小于0.1,即相比于统一高分辨率仿真,本公开实施例的仿真方法使用了不到10%的粒子,但实现了相似的仿真结果,表明本公开实施例的仿真方法显著节省了计算资源。
[0196] <设备实施例一>
[0197] 图7是根据一个实施例的高动态空间自适应流体仿真设备的方框原理图。
[0198] 如图7所示,该仿真设备7000可以包括物理属性计算模块7100、粒子水平计算模块7200、最优质量计算模块7300、粒子类型确定模块7400、粒子更新模块7500和动画生成模块
7600。
[0199] 物理属性计算模块,用于计算并记录流场中粒子的物理属性;其中,所述粒子的物理属性包括所述粒子的真实质量。
[0200] 粒子水平计算模块,用于根据所述流场中粒子的物理属性,得到所述流场中粒子的动态水平和可见水平;其中,所述动态水平包括所述粒子的涡度和速度差,所述可见水平包括所述粒子到自由表面的距离。
[0201] 最优质量计算模块,用于根据所述流场中粒子的动态水平和可见水平,计算所述流场中粒子的最优质量。
[0202] 粒子类型确定模块,用于根据所述流场中粒子的所述真实质量与所述最优质量间的比值,确定所述粒子的类型;其中,所述粒子的类型为设定的多个类型中的一个类型,所述多个类型包括需要分裂的第一类型。
[0203] 粒子更新模块,用于根据所述粒子的类型,更新所述流场中的粒子,并在更新所述流场中的粒子后,再一次执行所述计算并记录流场中粒子的物理属性的步骤;其中,所述根据所述粒子的类型,更新所述流场中的粒子包括:采用密度误差最小的分裂方式,对所述流场中的属于所述第一类型的粒子进行分裂。
[0204] 动画生成模块,用于根据多次记录的所述流场中粒子的物理属性,生成关于流体动作的动画;其中,不同次记录对应不同的时间戳。
[0205] 在一个实施例中,该最优质量计算模块7300,用于分别通过动态水平映射函数、可见水平映射函数,获取所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值;通过尺寸函数、及所述流场中每个粒子的动态水平映射函数值和可见水平映射函数值,得到所述流场中每个粒子的最优质量。
[0206] 在一个实施例中,该粒子更新模块7500,根据属于所述第一类型的待分裂粒子的所述真实质量与所述最优质量间的比值,确定所述待分裂粒子的子粒子数量;根据所述待分裂粒子的子粒子数量,为所述待分裂粒子选择分裂模板;旋转所述分裂模板,计算所述待分裂粒子与每次旋转所述分裂模板得到的子粒子之间的密度误差,得到多个所述密度误差中的最小密度误差;通过所述最小密度误差对应的分裂方式,对所述待分裂粒子进行分裂。
[0207] 在一个实施例中,该粒子类型确定模块7400,用于在所述粒子的所述真实质量与所述最优质量间的比值大于第四预设阈值的情况下,确定所述粒子的类型为所述需要分裂的第一类型;在所述粒子的所述真实质量与所述最优质量间的比值大于或者等于第二预设阈值,且小于第三预设阈值的情况下,确定所述粒子的类型为保持不变的第二类型;在所述粒子的所述真实质量与所述最优质量间的比值大于或者等于所述第三预设阈值,且小于或者等于所述第四预设阈值,或者,大于或者等于第一预设阈值,且小于所述第二预设阈值的情况下,确定所述粒子的类型为需要质量重分配的第三类型;在所述粒子的所述真实质量与所述最优质量间的比值小于所述第一预设阈值的情况下,确定所述粒子的类型为需要合并的第四类型。
[0208] 在一个实施例中,该仿真设备7000还包括临时粒子生成模块(图中未示出)。
[0209] 该临时粒子生成模块,用于在物理属性计算模块7100计算并记录流场中粒子的物理属性之前,根据所述流场中粒子的邻居粒子数量,得到关于所述粒子的候选粒子;在所述候选粒子周围生成多个临时粒子。
[0210] 在一个实施例中,该仿真设备7000还包括临时粒子去除模块(图中未示出)。
[0211] 该临时粒子去除模块,用于在物理属性计算模块7100计算并记录流场中粒子的物理属性之后,及在粒子水平计算模块根据所述流场中粒子的物理属性,得到所述流场中粒子的动态水平和可见水平之前,在所述流场中去除所述多个临时粒子。
[0212] 在一个实施例中,该物理属性计算模块7100,用于在流场中的粒子被更新过的情况下,计算被更新的粒子的原始物理属性;将所述被更新的粒子的原始物理属性与所述被更新粒子的父粒子的物理属性相融合,得到并记录所述被更新的粒子的物理属性。
[0213] 根据本公开实施例的高动态空间自适应流体仿真设备7000,其同时考虑了流场的可见性水平和动态水平,通过引入高动态流体内部的复杂运动,以实现基于粒子的高动态流体的高保真、高效仿真;整个流场的分辨率通过新设计的粒子分裂、合并和质量重新分配方案进行自适应调整,通过采用密度误差最小的分裂模板进行分裂,以及对更新后粒子的原始物理属性进行校准,以确保基于粒子的空间自适应流体模拟的稳定性;其通过增加流场中的临时粒子,以丰富流体仿真过程的细节,提供了一种新的后处理细节增强方法,该方法易于实现,可以与任何基于粒子的流体求解器集成。
[0214] <设备实施例二>
[0215] 图8是根据一个实施例的高动态空间自适应流体仿真设备的结构示意图。
[0216] 如图8所示,该仿真设备8000包括处理器8100和存储器8200,该存储器8200用于存储可执行的计算机程序,该处理器8100用于根据该计算机程序的控制,执行如本公开以上任意实施例所述的方法。
[0217] <介质实施例>
[0218] 在本公开实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质存储有可被计算机读取并运行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行如本公开以上任意实施例所述的方法。
[0219] 本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0220] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD‑ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0221] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0222] 用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0223] 这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0224] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0225] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0226] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
[0227] 以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。