Pyro —— Sparse vs dense simulations

14 篇文章 0 订阅

目录

Simulation area

Sparse solving

Understanding resizing


Simulation area

        在模拟的期间,pyro场都在当前容器内定义;开始非常小,随模拟的进行,解算器会不断的对其扩展或收缩;为重置流体框,解算器会追踪指定的参考场(Reference Fields),默认为density、flame;

Pyro Sover可在sparse或dense模式下操作:

  • dense,整个容器都被模拟;如占据整个容器,或在smoke外区域需要速度值,则非常有用;H18前,仅能在此模式下执行;
  • sparse,模拟仅在容器的激活(active)子集中执行;此模式通常效率更高,因为只在感兴趣的区域执行;但也有些局限;

Sparse solving

        如solver和object都开启了Enable Sparse Solving,则将在sparse模式下操作,默认是开启的;另外,所有场的重置尺寸都必须在full tiles下执行;从H18起,外部调整尺寸只能在sourcing时,通过Volume Source进行;如Enlarge Fields to Contain Sources开启,则Enlarge by Full Tiles也必须开启;

注,2D和OpenCL不支持sparse模式;

        如在Object和Solver上,检测到任何不兼容的sparse模式设置,则会产生错误;但Solver会忽略外部调整尺寸,所以必须确保full tiles;

        在sparse模式内,active场,存储模拟区域;值为1区域将被解算器模拟,值为0为非激活区域;active场将在每子步重新构建,以考虑流体的运动和新的发射源;

Notes

  • Gas Build Occupancy Mask负责构建active场;
  • 可在Object查看激活区域(Active Region);
  • 非激活区域被视为smoke可自由加入的真空区域;因此,如两股烟雾相互对吹,它们会完全看不见,直到足够近以致于激活区域合并;

Full tiles,是16*16*16体素快,且边界必须保持固定;因此在外部调整尺寸是在full tiles下完成的,以提高效率;

Stenciled operations

        在sparse模式下,pyro solver确保其所有内部步骤都是sparse完成的;然而其他microsolver(如额外的Gas Disturb),需要使用active场作为stencil,以避免不必要的工作;特别是,如节点有Stencil Field参数,必须设置active;当stencil场被提供,仅stencil值超过0.5的体素应用操作;意味着,节点的工作只在需要的地方进行;

注,解算器的Forces输入,对active场是最新的,应在此附加Stenciled microsolvers;

Understanding resizing

        Pyro Solver的Resizing标签下的参数,指定如何确定模拟域;特别是,目标是追踪Reference Fields的非零区域,且提供足够大的缓冲区(如Padding);在dense模式,涉及Reference Fields的非零区域边界,且填充边界框间隙Padding;在sparse模式,会在此边界框内找到激活区域;然后,中间激活区域被扩展以适应Padding;

Simulation start
初始容器是小而空
Sourcing
Volume Source将density重置为源的一部分(开启Enlarge Fields to Contain Sources),场的新边界也匹配tile grid(开启Enlarge by Full Tiles);
Bound fields
参考场(Reference Fields)非零体素边界框被计算;
Add padding
中间边界框被扩展(padding),如是非parse模式,且禁用Resize in Full Tiles,然后蓝色区域将形成新的边界,后续步骤将不在执行;

Snap to tile boundaries

中间框的墙将被吸附到tile边界,形成新的边界;如非sparse模式,开启Resize in Full Tiles,后续步骤将不在执行;

Find active tiles
将识别新容器的激活tiles,至少一个参考场值非零;

Expand for padding

中间激活区域被扩展以适应填充;

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值