zoukankan      html  css  js  c++  java
  • SPH流体模拟及液面重构问题

    关于流体特效模拟算法的简单描述,前提部分。

    目前动画领域内的流体模拟主要是拉格朗日法无网格法和欧拉网格法,两种方法更有利弊。

    我研究的主要是拉格朗日法中的SPH模型,即光滑粒子流体动力学模型。

    粒子方法非常适合模拟大形变流体、液滴飞溅等复杂场景。

    现今SPH算法已经有了很多改进,包括对流体真实感、时间复杂度以及并行方案的改进等,在去年的SIGGRAPH,清华大学发表了一篇关于SPH流固耦合的文章,时至今日SPH已经在很多领域进行了研究和应用。

    我准备实现的是PCISPH(Predictive-Corrective Incompressible SPH),但是,在此之前,先进行了WCSPH(Weakly compressible SPH for free surface flows)的实现。

    实现过程参考论文:Weakly compressible SPH for free surface flows . Markus Becker Matthias Teschner . 2007

    算法如下(出自PCISPH论文):

    SPH算法主要在于计算每个粒子的状态,如密度、压力、粘性力等,然后根据计算的合力以及牛顿第二定律推出粒子加速度,进而求出粒子在当前时间步下的位移。

    由于粒子是离散的,流体是连续的,所以SPH使用插值核函数进行粒子状态的估算,针对不同参数可以选择适合的核函数:

    对于密度可以使用poly6核函数:

    压强使用spiky核函数及其梯度方程:

    粘性力使用polynomial核函数及其拉普拉斯形式:

     WCSPH在实现时需要注意时间步长,如果过大会导致粒子爆炸。

    在实现时,可以使用OpenGL进行视图的显示,效果如下:

    PCISPH对WCSPH的最大根据就是迭代的时间步,其总体计算效率可以高出WCSPH一个数量级。

    这里关于SPH进行了一些简单叙述,不过仅仅作为笔记,以备之后的深入研究。

    液面重构部分会在之后提及。

  • 相关阅读:
    postgres配置主从流复制
    laravel5如何创建service provider和facade
    postgres中几个复杂的sql语句
    Laravel5设计json api时候的一些道道
    技术晨读_2015_4_13
    PHP 中的Closure
    l5如何通过路由走api版本回退查找设置
    postgres中的中文分词zhparser
    postgres中的视图和物化视图
    问题:Virtual Box如何复制镜像
  • 原文地址:https://www.cnblogs.com/esCharacter/p/6842663.html
Copyright © 2011-2022 走看看