拼吾爱程序人生

首页 » 编程应用 » 应用系统 » Real time fluid
cobra - 2008-9-12 13:02:00
虽然不是什么新的东西, 但是因为觉得很好玩, 所以还是自己抽空实现了一下, 顺便也是要分享一些自己的学习心得.

1. 什么是流体?

    自然界中有很多东西是流体, 包括占据了将近半个地球体积的空气, 覆盖了70%地表的水体, 还有那在太阳系的中央, 永恒地燃烧着的火焰.

2. 流体的行为?

    在上个世纪的早些年代,Navier和Stokes共同发现了流体运动的规律, 从而写下了著名的Navier-Stokes流体动力学方程,当然它假设流体是不可压缩(体积不变)和均匀(密度不变)的:


 附件: 您所在的用户组无法下载或查看附件                   

其中, u是指速度场, ∇, ∇^2, ∇•分别是梯度算子, 拉普拉斯算子和散度算子.其对应的运算如下:


 附件: 您所在的用户组无法下载或查看附件

值得注意标量场的梯度是矢量, 而矢量场的散度是标量.上表中拉普拉斯算子的微分形式的v改成u


Navier-stokes方程的实际意义是速度场在单位时间里的改变量=加速度∂u/∂t=F/m;

所以, 速度的即时改变量主要由该方程式的右边项决定

推导如下,


 附件: 您所在的用户组无法下载或查看附件





求解像这样的偏微分方程, 通常不可能获得解析解, 所以要使用数值方法

首先, 让我介绍求解中最重要的概念之一Splitting:


 附件: 您所在的用户组无法下载或查看附件

所以, 求解上式被拆解成以下几个步骤:


 附件: 您所在的用户组无法下载或查看附件

来看其中的最后一个步骤:

写成离散形式, 有:


 附件: 您所在的用户组无法下载或查看附件






(文/zxx_1987  出处/博客园)

 您可能对 [应用系统] 的这些文章也感兴趣:

DiscuzNT 商品交易插件设计之[线上交易]---业务流程
IBM拟50亿美元收购Cognos布局SOA BI领域
人工神经网络(Artificial Neural Netwroks)笔记-delta规则增量学习
Google发布基于全新JavaScript引擎的开源浏览器
虚机版的Google Search
Microsoft Windows 7 32Bit Build 6801 DVD镜像下载
SharePoint 2009的一些特征
Google App Engine 未公开的Search API
Compiere ERP和CRM產品總覽
.Net架构网站又一传奇:PlentyOfFish.com
cobra - 2008-9-12 13:05:00
所以 求解压力的伯松方程, 再从散度速度场中减去压力的梯度, 就得到了新的divergince free的速度场

注意上图有个加号错了.

方程的求解:


 附件: 您所在的用户组无法下载或查看附件

已经被证明, 对于矩阵表示的线性方程, jacobi迭代也照样可行Ax=b, 而伯松压力方程, 就正好是这样的一类方程.


 附件: 您所在的用户组无法下载或查看附件

by run the iteration times, we can get the pressure field.

at last, let's look at the advection term.


 附件: 您所在的用户组无法下载或查看附件



Implementation:

所有的东西都是2维数组, 所有的运算都是数据运算, 所以, 数组就是2D texture, 运算就是画屏幕大小的quad.

以下是一个实现


 附件: 您所在的用户组无法下载或查看附件
1
查看完整版本: Real time fluid
Modify by pin5i DZNT_ExpandPackage 2.1.3258 2007-2008 pin5i.com
  Total Unique Visitors: