书签 分享 收藏 举报 版权申诉 / 18

简化的光滑粒子流体动力学.pdf

  • 上传人:Y0****01
  • 文档编号:4217478
  • 上传时间:2018-09-07
  • 格式:PDF
  • 页数:18
  • 大小:606.46KB
  • 摘要
    申请专利号:

    CN201210135723.3

    申请日:

    2012.05.04

    公开号:

    CN102768698A

    公开日:

    2012.11.07

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回IPC(主分类):G06F 17/50申请公布日:20121107|||实质审查的生效IPC(主分类):G06F 17/50申请日:20120504|||公开

    IPC分类号:

    G06F17/50

    主分类号:

    G06F17/50

    申请人:

    西门子公司

    发明人:

    R.G.麦丹尼尔; Z.塔米米

    地址:

    德国慕尼黑

    优先权:

    20110505 US 61/482654; 20120120 US 13/354797

    专利代理机构:

    中国专利代理(香港)有限公司 72001

    代理人:

    李少丹;卢江

    PDF完整版下载: PDF下载
    内容摘要

    本发明涉及简化的光滑粒子流体动力学。为了使用更多粒子信息来实现有效率的光滑粒子流体动力学,创建虚拟粒子。每个虚拟粒子代表针对一个单元中的流体粒子的平均特性。对于给定流体粒子的密度、力或其它计算,计算单元内的粒子之间的交互作用。为了计算该单元外部的粒子对该单元内的粒子的影响,使用来自相邻单元的虚拟粒子。与这些集合的粒子的交互作用会减少计算的次数,同时仍然包括来自其它单元的粒子的影响。

    权利要求书

    1: 在非临时性计算机可读存储介质中, 在其中存储了代表能由编程的处理器执行的用 于光滑粒子流体动力学的指令的数据, 该存储介质包括用于以下步骤的指令 : 将仿真空间划分为单元 ; 将流体粒子分配给这些单元 ; 为每个具有至少一个流体粒子的单元创建虚拟粒子, 所述虚拟粒子是从各自单元的流 体粒子中创建的 ; 确定每个虚拟粒子的质量 ; 根据相邻单元的虚拟粒子以及该流体粒子的单元的粒子确定每个流体粒子的周围的 密度 ; 以及 作为流体粒子的密度和虚拟粒子的密度的函数来平流输送流体粒子。
    2: 根据权利要求 1 的非临时性计算机可读存储介质, 其中划分和分配包括定义被分组 到所述单元中的流体粒子的三维分布。
    3: 根据权利要求 1 的非临时性计算机可读存储介质, 其中创建虚拟粒子包括作为各自 单元中的流体粒子的位置的平均值而计算每个虚拟粒子的位置。
    4: 根据权利要求 1 的非临时性计算机可读存储介质, 其中创建虚拟粒子包括计算每个 虚拟粒子的半径以包括各自单元的所有流体粒子。
    5: 根据权利要求 1 的非临时性计算机可读存储介质, 其中确定质量包括作为该虚拟粒 子的密度的函数来计算每个虚拟粒子的质量。
    6: 根据权利要求 1 的非临时性计算机可读存储介质, 其中确定每个虚拟粒子的质量包 括仅从各自单元中的流体粒子来确定密度和体积。
    7: 根据权利要求 1 的非临时性计算机可读存储介质, 其中确定每个流体粒子的密度包 括计算来自同一单元中的流体粒子的贡献而不是来自其它单元的流体粒子的单独的贡献, 并且计算来自相邻单元的虚拟粒子的贡献而不是来自所述流体粒子的单元的虚拟粒子的 贡献。
    8: 根据权利要求 1 的非临时性计算机可读存储介质, 其中平流输送包括计算每个流体 粒子的压力, 所述压力基于该单元的流体粒子的密度以及相邻单元的虚拟粒子的密度。
    9: 根据权利要求 1 的非临时性计算机可读存储介质, 其中平流输送包括计算每个流 体粒子的粘度力, 所述粘度力基于该单元的流体粒子的密度以及相邻单元的质心粒子的密 度。
    10: 根据权利要求 1 的非临时性计算机可读存储介质, 其中平流输送包括作为力的函 数来确定流体粒子的速度和位置, 所述力是流体粒子的密度和虚拟粒子的密度的函数。
    11: 根据权利要求 1 的非临时性计算机可读存储介质, 其中分配、 创建、 确定质量、 确定 流体粒子的密度以及平流输送被重复以对流体流动进行仿真。
    12: 根据权利要求 1 的非临时性计算机可读存储介质, 其中平流输送包括作为与边界 关联的外部力的函数而进行的平流输送。
    13: 一种用于光滑粒子流体动力学的方法, 该方法包括 : 利用处理器将体积划分为子体积 ; 用流体粒子来填充这些子体积 ; 确定虚拟粒子以代表每个子体积的流体粒子 ; 以及 2 基于与流体粒子相同的子体积中的流体粒子以及邻近子体积的虚拟粒子来计算每一 个流体粒子的力, 该计算不基于邻近子体积的单个流体粒子。
    14: 根据权利要求 13 的方法, 其中计算包括在没有来自非邻近子体积的贡献的情况下 计算针对流体粒子的力。
    15: 根据权利要求 13 的方法, 其中计算包括计算虚拟粒子的虚拟力作为代表各自单元 内的力, 并且在存在来自邻近子体积中的流体粒子的贡献的情况下计算针对每个流体粒子 的力作为对应的虚拟力。
    16: 根据权利要求 13 的方法, 其中确定包括 : 计算每个虚拟粒子的位置作为各自子体积中的仅流体粒子的位置的平均值 ; 计算每个虚拟粒子的半径以包括各自子体积的所有流体粒子 ; 仅从各自子体积的流体粒子来计算每个虚拟粒子的密度 ; 以及 作为该虚拟粒子的密度的函数来计算每个虚拟粒子的质量。
    17: 根据权利要求 13 的方法, 其中计算力包括 : 计算针对每个流体粒子的压力, 该压力基于子体积的流体粒子的密度以及邻近子体积 的虚拟粒子的密度 ; 计算针对每个流体粒子的粘度力, 该粘度力基于所述子体积的流体粒子的密度以及邻 近子体积的虚拟粒子的密度。
    18: 根据权利要求 13 的方法, 进一步包括作为力的函数来迭代地确定流体粒子的速度 和位置。
    19: 在非临时性计算机可读存储介质中, 在其中存储了代表能由编程的处理器执行的 用于光滑粒子流体动力学的指令的数据, 该存储介质包括用于以下步骤的指令 : 定义第一粒子, 每个第一粒子代表一个或多个第二粒子 ; 以及 对每个第二粒子都针对在范围内的第二粒子仿真第二粒子对第二粒子交互作用, 以及 仿真在该范围内的每个第二粒子与在所述范围之外的第一粒子的第二粒子对第一粒子交 互作用。
    20: 根据权利要求 19 的非临时性计算机可读存储介质, 进一步包括将仿真空间划分为 单元, 第二粒子贯穿整个仿真空间地分布在这些单元内, 其中第一粒子代表各自单元中的 所有第二粒子, 其中仿真第二粒子对第二粒子交互作用包括在单元之一内的交互作用, 以 及其中仿真第二粒子对第一粒子交互作用包括与相邻单元的交互作用, 所述范围定义相邻 单元。

    说明书


    简化的光滑粒子流体动力学

        相关申请 本专利文本根据 35 U.S.C.§119(e) 要求在 2011 年 5 月 5 日提交的临时美国专利申 请 No.61/482,654 的提交日的权利, 通过引用将该临时美国专利申请结合于此。
         技术领域
         本实施例涉及基于粒子的流体仿真。在光滑的粒子流体动力学 (SPH)中, 计 算流体仿真基于蒙特卡洛方法。内部力是在粒子对之间计算的。例如, 密度被计算为 , 其中 i 和 j 是相邻的粒子, m 是质量, r 是半径, h 是限制对范围的交互作用的光滑半径, W 是核函数。压力被计算为 。粘度力被计算为。这些力被用于对粒子的平流输送 (advecting) 进行仿真。通过多次迭代, 速度被计算为 , 以及位置被计算为 。背景技术 由于只有光滑半径 h 内的粒子彼此交互作用, 因此可以在该仿真避免以所有粒子 的 O(n ) 计算。 以交互作用速度对流体进行仿真的需要进一步导致了基于 GPU 的实施。 通过 将仿真空间分为多个单元 (cell) , 每一次缩小等于光滑半径 h, 可以在一个粒子的所有邻
         2居上以 O(mn) 为数量级迭代, 其中 m 是每个单元的平均粒子数。 如果粒子 i 位于 , , 则相邻粒子 j 属于 。即使具有这样的效率, 以交互作用速度进行仿真仍然是困难的。在光滑半径外部的粒子的影响并未得到 考虑。 发明内容 在各种实施例中, 提供了系统、 方法和计算机可读介质来用于光滑粒子流体动力 学 (SPH) 。为了使用更多粒子信息来实现有效率的 SPH, 创建虚拟粒子。每个虚拟粒子代表
         针对单元中的流体粒子的平均特性。 对于给定流体粒子的密度、 力或其它计算, 计算单元内 的粒子之间的交互作用。为了计算该单元外部的粒子对该单元内的粒子的影响, 使用来自 相邻单元的虚拟粒子。与这些集合的粒子的交互作用减少了计算的次数, 同时仍然包括来 自其它单元的粒子的影响。
         在第一方面中, 非临时性计算机可读存储介质在其中存储了代表可由编程的处理 器执行以用于光滑粒子流体动力学的指令的数据。 该存储介质包括用于定义第一粒子的指 令, 每个第一粒子代表一个或多个第二粒子, 并且对每个第二粒子都针对一定范围内的第 二粒子仿真第二粒子对第二粒子交互作用, 并且仿真在该范围内的每个第二粒子与该范围 外部的第一粒子的第二粒子对第一粒子交互作用。
         在第二方面, 非临时性计算机可读存储介质在其中存储了代表可由编程的处理器 执行以用于光滑粒子流体动力学的指令的数据。该存储介质包括用于以下步骤的指令 : 将 仿真空间划分为单元 ; 将流体粒子分配给这些单元 ; 对每个单元用至少一个流体粒子创建 质心粒子, 质心粒子从各自单元的流体粒子中创建 ; 确定每个质心粒子的质量 ; 根据相邻 单元的质心粒子以及该流体粒子的单元的粒子来确定每个流体粒子的密度 ; 以及作为流体 粒子的密度和质心粒子的密度的函数来平流输送流体粒子。 在第三方面, 提供用于光滑粒子流体动力学的方法。 处理器将体积划分为子体积。 这些子体积被流体粒子填充。虚拟粒子代表每个子体积的流体粒子。对于每个流体粒子的 力被基于在与该流体粒子相同的子体积中的流体粒子以及相邻子体积的虚拟粒子来计算。 该计算不是基于相邻子体积的单个流体粒子的。
         上述任何一个或多个方面可以单独或组合使用。这些以及其它方面、 特征和优点 将由于下面对优选实施例的详细描述而变得明显, 该详细描述是要结合附图来阅读的。本 发明通过下面的权利要求定义的, 并且在这一节中不应当有任何内容作为对这些权利要求 的限制。下面结合优选实施例讨论本发明的其它方面和优点, 并且稍后可以独立或组合地 要求保护。
         附图说明
         组件和附图不一定是按比例的, 而是重点在于图解实施例的原理。 此外在附图中, 贯穿不同的视图相似的附图标记表示对应的部分。
         图 1 是用于光滑粒子流体动力学仿真的一个实施例的流程图 ; 图 2 是将粒子分布划分为多个单元的一个实施例的图解 ; 图 3 是创建虚拟粒子的一个实施例的图解 ; 图 4 是在光滑粒子流体动力学中使用流体粒子和虚拟粒子的一个实施例的图解 ; 以及 图 5 是用于光滑粒子流体动力学仿真的系统的一个实施例的框图。 具体实施方式
         基于粒子的流体仿真方法, 例如光滑粒子流体动力学 (SPH) , 可以被用于实现交互 作用的流体仿真。为了提供仿真而同时保持交互作用速度, 创建代表每个单元的一个或多 个粒子的虚拟粒子。为了交互作用, 该仿真通常以每周期 (以毫秒为单位) 为基础来更新。 因此, 流体交互作用的计算有效率地进行以保持交互作用速度。 用于以交互作用速度的 SPH的有效率的方法可以是用更大的虚拟粒子来替换每个单元的多个流体粒子。 替换虚拟粒子 被用于计算未在单元内的粒子对与该单元内的给定流体粒子的交互作用的贡献。SPH 实施 可以比现有技术更快, 并且适于交互作用的应用, 同时提供类似的仿真质量。光滑距离可 以减小以进一步增加速度, 但是会减小对降低仿真质量的给定流体粒子贡献力的粒子的数 量。
         增强型 SPH 包括密度和 / 或内部力的计算。这些计算基于使用仍然捕获整体流体 仿真行为的组合的粒子 (例如虚拟粒子) 来代表相同的流体体积。虚拟粒子被表示为空间中 的具有给定质量的点 (即, 代表空间中质量的存在) , 其中在网格单元内的一组粒子的密度 被集合。为了保持流体仿真的小细节特征, 这些计算包括在单元水平上的流体粒子对流体 粒子的交互作用。为了在流体仿真中包括通过其它单元贡献的特征, 这些计算还包括流体 粒子对虚拟粒子的交互作用。
         图 1 示出在基于粒子的仿真中的光滑粒子流体动力学方法。该方法通过图 5 的系 统和 / 或不同的系统来实施。处理器执行动作。可以提供额外的、 不同的或更少的动作。 例如, 动作 34,36,37 和 38 未被执行。作为另一个示例, 动作 37 未被执行。动作 34-38 可 以在不使用动作 28,30 和 32 的情况下执行, 至少使用不使用虚拟粒子的动作 28,30 和 32。 在又一个示例中, 提供移动固体对象和调整粒子运动的额外的动作。可以添加任何进一步 的基于粒子的流体仿真动作。
         该方法以所示出的顺序提供。动作 22 和 24 可以顺序地执行或者与动作 26 并行 地执行。可以提供其它顺序。在一个实施例中, 动作 22 和 24 是在仿真之前执行的初始化 的一部分。对流体粒子的运动进行仿真而不进一步执行初始化动作。动作 26,28,30,32 和 34 作为仿真流体流程的一部分重复地或迭代地执行。在该仿真中, 作用于被仿真的粒子的 内部力以及粒子和任何固体对象之间的力被重复地计算。
         在动作 22 中, 仿真空间被划分为多个单元。该仿真空间是体积、 面积或其它区域。 所述仿真空间是有边界的, 例如通过表面, 或者是无边界的, 例如代表流体内的流动区域。
         基于预先确定的参数和 / 或通过用户输入的信息, 处理器将仿真空间划分为所述 多个单元。每个单元是子区域。例如, 处理器将体积划分为多个子体积。为了进行基于粒 子的流体仿真, 将这些粒子分为有规则间隔的网格单元。这些粒子被分组为三维的单元分 布。所述仿真空间被细分为三维 (3D) 的网格, 使得在任何仿真迭代期间流体粒子仅位于一 个单元中。图 2 示出 4 个这样的单元 40, 每一个单元包括流体粒子 42。这些网格单元分割 了粒子分布并且也被用于计算对流体仿真的演变有所贡献的特性。
         可以使用任何数量的单元。 单元的数量以及这些单元的对应体积可以基于粒子密 度、 每个单元的粒子数量和 / 或流体的仿真体积来确定。
         这些单元 40 具有相同的尺寸和形状, 但是可以具有不同的尺寸和形状。每个单元 都被定义为该单元中心的三维位置和该单元内的被仿真的粒子列表的函数。 在一个实施例 中, 每个单元都通过该单元中的流体粒子对象的列表、 该列表的长度 (标量值) 、 该单元的中 心 (三元组) 以及用于将具有粒子的单元与没有粒子的单元区分开来的空标志 (布尔值) 来 定义。在替换的实施例中, 中心和 / 或空标志不是单独存储的, 因为空属性可以从该列表中 确定并且中心可以通过单元的索引来确定。
         在动作 22 中进行单元的初始创建时, 将单元计数设置为 0。所述体积被划分为多个单元, 而且确定单元计数和对应的分布。这些单元的 3D 结构作为向量存储。这些单元作 为一维列表存储。从该一维列表中作为索引移位的函数来访问这些单元。在三维空间中的 单元索引与该单元的实际存储器位置之间的关系通过索引函数来给定。 如果给定单元在三 维中的规则分布, 所产生的一维存储向量具有单元的代表不同行、 列和平面的规则图案。 每 一行的单元在索引方面是顺序的, 其中在给定列中的每一行都偏移了第一索引值, 在一列 中的网格元素的数量 (例如当存在 10 列时, 第一行是 0-9, 第二行是 10-19, 等等, 其中为了 找到与第一行中的单元相邻的第二行的单元使用 +10 的偏移) 。对于使用等于平面 (行 × 列) 中元素数量的第二索引值的平面而言, 按照类似的方式进行重复。由于在存储器中的这 种规则分布, 可以快速确定用于获取给定单元周围的所有单元的索引移位图案。也可以使 用用于存储的单元网格的其它布置。
         在动作 24 中, 将流体粒子分配给这些单元。通过划分所述体积定义的子体积被流 体粒子填充。定义被仿真的流体粒子的两维或三维分布。这些流体粒子是总体上代表被仿 真的流体的点。流体粒子可以与特性关联和 / 或被处理为两维或三维形状。由于流体粒子 被用于对流体仿真, 因此流体粒子以贯穿整个体积的规则密度散布在初始位置上, 在所述 初始位置上流体将被仿真。可以使用不规则的密度, 例如对温度差异对流体密度的影响进 行建模。 流体粒子可以在体积被分为子体积之前分布在该体积中。在动作 22 中的单元创 建可以导致粒子在这些单元内的分布。替换地, 在动作 22 中创建单元之后在动作 24 中分 布流体粒子。
         每个单元中流体粒子的数量对不同的单元是相同或不同的。在每个单元 40 内的 流体粒子 42 的数量和布置可以不同, 例如在图 2 所表示的。在一个实施例中, 每个单元中 流体粒子的数量很小, 例如小于 100、 10 或其它数量。动作 22 的划分和动作 24 的分布提供 了贯穿仿真空间的被分组到单元 40 中的流体粒子 42 的三维分布。
         流体粒子具有预先确定的、 计算的、 用户设置的或者被分配的特性。 这些特性可以 基于待执行的仿真来分配。不同的特性可以按照相同或不同的方式来确定, 例如用户输入 位置和半径这些特性。确定其它仿真特性, 例如光滑半径和体积。所输入或存储的信息由 处理器用于确定所述分布。
         流体粒子具有被分配的或固定的半径 Rf。 所有的流体粒子典型地都具有相同的半 径, 但是不同的流体粒子可以具有不同的半径。 作为所述分布的一部分, 流体粒子具有被分 f 配的位置 Li 。不同的流体粒子处在不同的位置上。
         光滑半径可以是被分配的或是常量。在一个实施例中, 光滑半径 h f 是常量,
         被计算为, 其中。一个示例值是。体积是另一个常量, 被计算为。不同的流体粒子具有相同的体积, 但是可以具有不同的体积。
         流体粒子也可以被分配速度。当流体粒子运动时, 例如在仿真的每次迭代时 运动, 速度和 / 或位置保持相同或者改变。对于给定的迭代来说, 速度和位置被更新为 以及 。力初始地被设置为零, 即 , 但是也可以是其它值。初始的粒子速度可以到零或者可以被设置为指示给流体的初始运动的 值。
         如果给定流体粒子 42 在仿真空间中的分布, 则在动作 26 中确定虚拟粒子。虽然 流体粒子在代表其它东西 (即流体) 的含义中是虚拟的, 但是 “虚拟粒子” 被用于指代代表 一个或多个其它粒子的粒子。每个虚拟粒子都代表一个或多个流体粒子。例如, 每个单元 中的流体粒子都由各自的虚拟粒子代表。图 3 示出虚拟粒子 44, 其中每个单元一个。在替 换实施例中可以使用代表多个单元的虚拟粒子 44。对于每个非空单元而言, 创建虚拟粒子 44。每个虚拟粒子 44 都从对应单元 40 的流体粒子 42 中创建。虚拟粒子 44 被定义为每个 虚拟粒子代表一个或多个流体粒子 42, 其中每个虚拟粒子 44 代表给定单元或者其它子体 积中的所有流体粒子 42。虚拟粒子 44 的数量等于非空网格单元 40 的数量, 但是可以提供 其它数量。
         对于仿真的每次迭代, 都要计算虚拟粒子。计算各种特性。例如, 确定每个虚拟粒 子的位置和半径。所述位置被计算为各个单元中的流体粒子的平均位置。例如, 计算单元 c 内的所有且只有流体粒子的平均位置。 在一个实施例中, 虚拟粒子的位置 Lg 是单元内粒子 的质心。虚拟粒子可以是质心粒子。位置的质心的一个代表是 , 其中 g 是质心粒子, 而 j 是流体粒子, cell(j)=cell(g), 以及 count(cell(g)) 是虚拟粒子 g 所位于的单元内的流体粒子的数量。可以使用其它用于计算虚拟粒子的质心或位置的中 心的方法。
         在一个实施例中, 计算虚拟粒子的半径。每个虚拟粒子的半径包括各个子体积的 流体粒子。 对于每个单元, 确定包括所有流体粒子的半径, 但是可以使用其它标准 (例如, 包 括大多数流体粒子的半径) 。为了包含单元内的所有流体粒子, 将半径设置为离中心位置最 c 远的流体粒子与该中心位置之间的距离。 半径 Rg 依据流体粒子的分布而变化, 并且被表示 为 , 其中 。该半径等于或大于流体粒子半径, 但是小于或 , 其中单元尺寸基于流体粒子 。等于单元内最大距离的一半。这被表示为 的光滑距离。可以从所述半径中来确定体积, 例如
         虚拟粒子的光滑距离是可变的, 但是可以是常量。 在一个实施例中, 虚拟粒子光滑 c c 距离 h 被表示为 h g =kR g , 其中 k>2, 例如 k=3。虚拟粒子的光滑距离大于或等于流体粒子 的光滑距离。这被表示为对所有 g 都有 h gc ≥ hf 。由于单元可以仅包括一个流体粒子, 因 此为该单元所产生的虚拟粒子具有该流体粒子的位置、 半径和光滑距离。由于一些单元可 以包括多于一个流体粒子, 因此这些单元的光滑距离大于单个流体粒子的光滑距离。位置 和半径也可以不同于该单元中的任何一个流体粒子。
         为这些单元的每一个、 大多数或一些确定虚拟粒子的特性。 在一个实施例中, 虚拟 粒子是为具有至少一个流体粒子的每个单元创建的。对于具有流体粒子的给定单元, 计算 单个虚拟粒子以及在该单元内的流体粒子的特性。
         在动作 32 中, 确定每个虚拟粒子的质量。该质量是从各单元中的流体粒子来确定c g的。用于计算虚拟粒子的其它特性的相同的流体粒子被用于计算所述质量。使用任何方法 来计算在虚拟粒子的位置上的质量。
         在动作 28 和动作 30 中, 确定流体粒子和虚拟粒子中每一个的密度。任何给定流 体粒子的密度包括两个组分。第一组分是来自同一单元内的其它流体粒子的贡献。第二组 分是来自其它单元的虚拟粒子的贡献, 例如来自正好相邻的单元的贡献。其它单元中的单 个流体粒子对所述密度没有贡献。相反, 使用代表流体粒子的虚拟粒子。在一个实施例中, 虚拟粒子密度 。 图 4 代表针对一个单元中的流体粒子 42 的计算, 其中贡献来自其它单元中的虚拟 粒子 44。为清楚起见仅示出 4 个子体积。虽然图 2-4 示出 4 个子体积, 但是提供了在同一 平面内的额外子体积和体积的额外平面。
         虚拟粒子光滑距离和虚拟粒子位置可以被用于确定哪些虚拟粒子对给定流体粒 子的密度有所贡献。在其它实施例中, 相邻通过单元分布来定义。对于立方形单元, 来自邻 近6个 (沿着 x 维、 y 维和 z 维的每一个的对) 或来自邻近 26 个 (沿着 x, y 和 z 的对加上来 自对角线的对) 的虚拟粒子可以为相邻。为了限制计算的复杂性, 来自其它单元 (即非相邻 单元) 的虚拟粒子不被使用并且对密度计算没有贡献。类似的, 针对给定流体粒子所属的单 元的虚拟粒子不被使用, 因为流体粒子本身和同一单元的流体粒子被用于单独的贡献。流
         是仅在相邻单元内的粒子的贡献, 并且被表示为体粒子密度 来计算的。
         是用同一单元中的其它流体粒子的贡献以及相邻单元中的虚拟粒子的贡献对 于 每 个 流 体 粒 子 i,都 在 两 个 水 平 上 计 算 密 度 : 使用同一单元 内 的 粒 子 的 贡 献,以 及 使 用 相 邻 单 元 中 的 相 邻 质 心 粒 子。 这 被 表 示 为 : , 其中
         。可以使用其它函数。针对该仿真的每个流体粒子计算密度。流体粒子的密度被有效率地确定, 即使包 含来自相邻单元的密度分布。在同一单元中的其它流体粒子的贡献类似于传统的 SPH 计算 并且按照 O(m2) 的数量级, 其中 m 是每个单元的粒子的平均数量。这种复杂度水平通过仅 在同一单元内的流体粒子之间执行这些运算来最小化。第二阶段 (即相邻虚拟粒子的贡献) 是 O(1), 因为相邻单元的数量是常量并且每个单元仅有一个虚拟粒子。针对密度的全部计 算时间类似于 SPH, 即 O(nm), 但是增加了在更宽范围内的粒子的影响。实际上, 基本运算的 数量可以更少。
         给定流体粒子的质量是常量, 代表在该流体粒子的半径内仿真的流体质量。每个虚拟粒子的质量也在动作 32 中计算。该质量是所述单元内的流体粒子的密 度的函数。如果给定所计算的密度和粒子半径或体积, 则计算虚拟粒子的质量。流体粒子 f c 的质量是固定的, 例如 m 。虚拟粒子的质量 mg 随着虚拟粒子的密度和体积的变化而变化。 在一个示例中, 质量被表示为 : , 但是可以使用其它计算。
         在动作 34 中, 流体粒子被平流输送。在动作 36 中计算影响每个流体粒子的力, 在动作 37 中处理任何约束条件, 并且在动作 38 中计算或更新速度和位置。可以提供额外的、 不同的或更少的动作。
         流体粒子作为流体粒子密度以及虚拟粒子密度的函数来平流输送。 这些密度被用 于在动作 36 中计算力。
         在每次仿真迭代中, 在内部力和外部力的作用下对流体粒子进行平流输送。内部 力是针对所有流体粒子计算的, 并且流体和任何固体对象之间的碰撞被处理为对于流体来 说的外部力。使用内部力和外部力的组合, 对流体进行平流输送。
         针对每个流体粒子的内部力基于同一单元中的流体粒子以及邻近单元的虚拟粒 子。 在没有来自非邻近单元的贡献的情况下确定来自邻近单元的针对给定单元内的流体粒 子的力, 但是可以使用任何范围的贡献。在同一迭代期间计算该单元内的每一对粒子之间 的力。
         为了简化针对该单元外部的流体粒子的计算, 不使用来自相邻单元中的单个流体 粒子的力。相反, 确定通过代表相邻单元内的流体粒子的虚拟粒子引起的虚拟力。作用在 虚拟粒子上的力代表单元内的力, 并被用于计算在相邻单元中的流体粒子上的力。对施加 于给定流体粒子的力的贡献包括来自邻近子体积中的流体粒子的贡献, 但是基于虚拟粒子 以及对应的虚拟力而不是单个流体粒子的力。 内部力是在网格单元内在该单元的每个粒子 与邻近单元的虚拟粒子之间计算的。
         任何力都可以被计算。在一个实施例中, 计算压力和粘度力。压力是针对仿真空 间中的每一个流体粒子计算的。对于给定的流体粒子, 所述压力基于该单元的其它流体粒 f 子的密度以及邻近单元的虚拟粒子的密度。压力 P i 被表示为 P if =EOS (ρ if ), 其中 EOS 是用 于在给定流体粒子密度时计算压力的状态方程。EOS 可以代表理想气体的压力或 Tait 方 程。其它函数可以被使用。
         针对虚拟粒子的压力 P gc 是基于同一子体积内的流体粒子的压力以及这些流体粒 子的质量来计算的。虚拟压力被计算为 : , 其中针对该求和中的每个流体粒子的压力是P if =EOS (ρ if )。针对虚拟粒子和流体粒子的压力被用于确定针对每个流体粒子的压力。 该压力对 来自单元内的流体粒子的压力与来自其它单元的虚拟粒子的压力求和。在一个实施例中, 所述压力在一项中是流体粒子质量、 单元的流体粒子之间的压力、 针对该单元的核函数的 向量差 (del) 以及流体粒子的密度的函数, 并且在另一项中是虚拟粒子质量、 相邻单元的流 体粒子与虚拟粒子之间的压力、 针对虚拟粒子的核函数的向量差 (del) 、 以及虚拟粒子的密 度的函数。在一个实施例中, 压力被表示为 :
         ,其中 i 和 j 是流体粒子, 用其它压力函数。
         , g 是虚拟粒子, 并且。可以使另一个力是粘度力。针对每一个流体粒子计算粘度力。粘度力是来自同一单元内 的流体粒子的力以及来自相邻单元的虚拟粒子的力的和。在一个实施例中, 粘度力被计算 为一项是流体粒子质量、 流体粒子速度和平滑距离上流体粒子半径的拉普拉斯算子、 流体 粒子密度以及粘度的函数, 并且另一项是虚拟粒子质量、 虚拟粒子速度和在虚拟平滑距离 上的虚拟粒子半径的拉普拉斯算子、 虚拟粒子密度以及粘度的函数。一个示例表示是 :,其中 i 和 j 是流体粒子,, g 是质心粒子, μ 是粘度, 并且。可以使用针对粘度力的其它函数。
         流体粒子的速度取决于仿真和任何事先计算的速度 (即, 在其它迭代中确定的速 度) 。对于第一次迭代, 流体粒子的速度由用户编程或设置。虚拟粒子的速度是在各个单元 中的流体粒子的速度的函数。可以计算平均速度向量。另一个示例被表示为 : 。可以使用其它函数。 可以使用其它内部力来代替或附加于压力和粘度力。 不计算针对虚拟粒子的单独 的压力和粘度力, 因为它们是虚拟的并且不会运动。虚拟粒子的创建是为了确定来自相邻 粒子对任何给定流体粒子的贡献。
         总的力可以包括外部力, 例如与边界关联。流体粒子作为任何外部力的函数平流 输送。在动作 37 中, 在仿真中执行边界处理以确定外部力在何处发生以及以什么样的程度 发生。为了处理在仿真空间中的固定障碍, 将每个碰撞表面的每个面 (通过碎片表示) 与凑 巧在光滑半径内的一组网格单元或子体积关联。 该问题可以被重新定义为将固体碎片与一 组网格单元关联。该映射找到与代表所述对象、 即所述碎片的网眼或表面相交的单元。碎 片被用于检测哪些流体粒子可能与对象碰撞。如果网格单元的中心和 / 或任何部分在离最 近碎片的光滑半径之外, 则该单元被认为远离碎片并被忽略。 在每个仿真步骤期间, 仅对那 些关联单元内的流体粒子进行测试看是否与相关的面、 三角形或代表该面的其它碎片发生
         碰撞。 检测对流体进行仿真的流体粒子与边界的碰撞。 在一个或多个流体粒子相交或处 于由碎片的通过与碎片基元 (primitive) 的碰撞而确定的内侧的地方, 发生了碰撞。通过 测试流体粒子相对于碎片的位置, 可以计算由于碰撞而作用于这些粒子和对象的力。
         当流体粒子从那个平面穿过一定距离 d 进入固体对象中时, 该流体粒子与碎片碰
         撞。 例如,, 其中 D 是至基元表面的平面距离 (从所述粒子至基元上点的最小距离) , 并且 是单位表面法线。可以使用针对流体粒子的其它碰撞检测, 例如确定从碎片 外部到碎片内部的转移。 确定该碰撞的交互作用力。任何力计算都可以被用于代表来自与刚性体或半 刚性体的碰撞的力。该力被添加给碰撞的流体粒子, 而对向力被添加给所述对象。该力
         是针对流体粒子的外部力。流体粒子 i 具有位置 粒子上的边界力被如下计算为误差校正力 , 其中 的平方成反比。
         和力 : 和反力 的和 :。在流体是常量, 其与粒子的密度成比例并且与仿真时间步长的目的是对抗在法线 的方向上施加于粒子 i 的任何力, 从而被负加权。法线 被定义为从碰撞表面指向外部。另一方面,被用于校正粒子 i 在碰撞表 和 都在面的表面内部所经过的穿越距离 d。这可以是弹簧常量或其它力计算。法线方向上动作, 由此这构成了自由滑动条件。用于力计算的法线垂直于流体粒子所碰撞 的基元。可以使用具有或不具有自由滑动或其它条件的其它力计算。
         计 算 作 用 于 固 体 对 象 和 / 或 流 体 粒 子 的 任 何 其 它 力。 施 加 这 些 力 是 为 了 移 动 流 体 粒 子。 这 些 力 的 向 量 可 以 被 求 和, 以 确 定 总 的 力 和 方 向, 其被表示为 : 。 依据对固体对象的运动的限制, 固体对象可以由于力 的施加而运动或不运动。 当固体对象改变位置时, 对碎片的所有边界体积施加平移和旋转。
         在动作 38 中, 确定流体粒子的速度和位置。所述力被施加到流体粒子。由同一单 元中的流体粒子贡献的力、 来自周围虚拟粒子的力以及来自任何边界的力被施加到每个流 体粒子以确定在给定的单位时间内该流体粒子的速度和位置。 由于这些力基于虚拟粒子和 流体的密度, 因此速度和位置是密度以及其它因素的函数。
         给 定 流 体 粒 子 的 速 度 基 于 当 前 速 度 以 及 由 于 加 速 而 带 来 的 任 何 改 变。 这 些 力 导 致 了 加 速。 在 一 个 实 施 例 中, 在给定迭代中的流体粒子的速度被表示为 , 其中 a 是加速度, t 是时间。 初始迭代的速度是被分配或预定 的。不同的流体粒子可以具有不同的速度和 / 或加速度。速度可以被计算为一维、 两维或三维向量以说明方向。
         每个流体粒子的位置基于当前位置与给定单位时间内的速度导致的位移量的和。 在一个实施例中, 所述位置被表示为 : 。 任何其它运动、 变形或改变被应用于该仿真。 然后该仿真的下一个周期发生, 使用 当前配置重复相同的步骤。在每次迭代中, 重新计算虚拟粒子。不同的流体粒子可以在每 个子体积内。在动作 24 中流体粒子基于位置被分配给不同的子体积, 在动作 26 中重新创 建虚拟粒子, 又在 28 中计算虚拟粒子的密度, 又在动作 32 中计算虚拟粒子的质量, 并且又 在动作 34 中执行流体粒子的平流输送。使用流体粒子的当前速度和位置的这种重复对流 体流动进行仿真。
         该仿真有效率地执行, 同时包括在单个单元范围之外的、 集合形式的信息。 通过包 括来自相邻子体积、 但是限于代表性粒子或更大粒子的信息, 平流输送或整个仿真的效率 比确定同一组单元中的所有流体粒子之间的交互作用好得多。在一个实施例中, 平流输送 是以 O(nm) 数量级的效率执行的, 其中 m 是每个单元的流体粒子的平均数量。
         图 5 示出用于在流体仿真中的光滑粒子流体动力学系统的框图。该系统包括处理 器 16 和存储器 18。可以提供额外的、 不同的或更少的部件。例如, 提供例如网卡、 无线收发 器和 / 或用户输入设备的输入设备。作为另一个示例, 提供显示器、 打印机、 网卡、 无线收发 器和 / 或其它输出设备。
         由处理器 16 执行的计算机处理可以按照硬件、 软件、 固件、 专用处理器或它们的 组合的各种形式来实施。 一些实施例以软件实施为在非临时性程序存储设备上有形体现的 程序。通过用存储器中的代码或系统来实施, 由处理器 16 执行基于粒子的仿真。
         处理器 16 和 / 或存储器 18 是计算机、 个人计算机、 服务器、 工作站、 网络处理器或 其它现在已知或后来开发的处理系统的一部分。 例如显示设备、 盘存储设备 (例如磁或光盘 存储设备) 、 键盘、 打印设备和鼠标的各种外设可以在操作中耦合到处理器 16。程序可以被 上传到处理器 16 并由处理器 16 执行。类似的, 处理策略可以包括多重处理、 多任务、 并行 处理等等。处理器 16 在具有硬件的计算机平台上实施, 所述硬件例如是一个或多个中心处 理单元 (CPU) 、 图形处理单元 (GPU) 、 随机存取存储器 (RAM) 和 (一个或多个) 输入 / 输出 (I/ O) 接口。该计算机平台也包括操作系统和微指令代码。在此所描述的各种处理和功能可以 是微指令代码的一部分或是经由操作系统存储和执行的程序的一部分 (或它们的组合) 。替 换地, 处理器 16 是网络中的一个或多个处理器。
         指令、 用户输入 (例如参数或值分配) 、 规则和 / 或其它信息存储在非临时性计算机 可读存储器例如存储器 18 中。存储器 18 是外部存储设备、 内部存储设备、 RAM、 ROM 和 / 或 本地存储器 (例如固态驱动器或硬驱动器) 。相同或不同的计算机可读介质可用于指令和其 它数据, 例如为流体粒子和 / 或虚拟粒子计算的各种参数。存储器 18 可以使用通过处理 器 16 管理并且驻留在存储器上的数据库管理系统 (DBMS) 来实施, 所述存储器例如是硬盘、 RAM 或可移动介质。替换的, 存储器 18 是处理器 16 内部的 (例如高速缓存) 。存储器 18 存 储由基于粒子的流体仿真所使用的或者由基于粒子的流体仿真所产生的数据。
         用于实施在此讨论的处理、 方法和 / 或技术的指令被提供在计算机可读存储介质
         上或者例如高速缓存、 缓冲器、 RAM、 可移动介质、 硬驱动器的存储器或其它计算机可读存储 介质上。计算机可读存储介质包括各种类型的易失性和非易失性存储介质。在附图中图解 或在此描述的功能、 动作或任务是响应存储在计算机可读存储介质中或计算机可读存储介 质上的一组或多组指令而执行的。功能、 动作或任务与特定类型的指令集、 存储介质、 处理 器或处理策略无关, 并且可以通过软件、 硬件、 集成电路、 固件、 微代码等等独立或组合操作 地执行。
         在一个实施例中, 指令存储在可移动介质设备上以便由本地或远程系统读取。在 其它实施例中, 指令存储在远程位置上以便于通过计算机网络或通过电话线传输。在另外 的实施例中, 指令存储在给定的计算机、 CPU、 GPU 或系统中。由于在附图中描绘的一些组成 系统部件和方法动作优选以代码来实施, 因此系统部件 (或处理步骤) 之间的实际连接可以 依据本实施例所编程的方式而不同。
         处理器 16 被配置为执行所述仿真。处理器 16 接收用于仿真的参数的指示, 例如 固体对象和流体粒子的数量、 尺寸、 形状、 密度和 / 或其它特性。初始化动作通过处理器 16 执行以准备好所述仿真。替换的, 处理器 16 接收事先计算的初始化信息, 例如接收粒子、 碎 片、 单元的存储位置的指示和 / 或其它信息。处理器 16 执行所述仿真, 例如计算流体粒子 和虚拟粒子的各种参数以及对流体流动以及与一个或多个对象的交互作用进行仿真。 也可 以仿真对于对象的影响。该仿真的结果作为图像或数据输出。
         在此描述的各种改进可以一起或单独使用。 尽管在此已参照附图描述了本发明的 图解实施例, 应当理解本发明不限于那些精确的实施例, 并且本领域技术人员可以做出各 种其它改变和修改, 而不偏离本发明的范围或精神。

    关 键  词:
    简化 光滑 粒子 流体动力学
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:简化的光滑粒子流体动力学.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4217478.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1