实际上,我正在使用C++和openGL开发一个SPH模拟器。我现在遇到了几个问题,
我在盒的一侧制造起始流体粒子(我把盒作为边界体积),把它们塑造成盒状,并给它们初始速度等于零。然后我开始主循环,中提琴,液体开始运动,这里有一个奇怪的现象。液体开始向四面八方扩散。
请看这张照片:

http://i278.photobucket.com/albums/kk86/anggytrisnawan/Screenshot-UntitledWindow-2.png
这张照片是从模拟开始几秒钟后拍摄的。我觉得很奇怪。下面是我用于模拟的参数:
#define H 0.040 // Smoothing Length
#define Rho0 1000 // (kg/m^3) water particle rest density
#define Mass 0.012 // (kg)
#define DT 0.001 // time step
#define TotalParticles 5000 // total number of particle注意:目前我还没有计算表面张力。
解决了:我的错here..they在beginning..so的压力作用下互相重叠,使它们扩散。
发布于 2011-09-23 09:03:03
从你提供的图像来看,模拟似乎是从一个角落里的所有粒子开始的。由于假设粒子必须有一些排斥势才能避免相互重叠,所以一旦模拟开始,这种斥力就会迫使粒子分开。
再说一遍,您还没有显示任何代码,所以以上只是一个限定的猜测。
发布于 2011-09-23 09:41:37
边界条件的值是多少,即盒子的极限在哪个数值坐标上?我猜想,由于系统的舍入误差,你的模拟会进入一个特定的方向。
如果我看这张图片,我会得到沿着-Z方向向下看的印象,框的左下角是(0,0,0)。如果是这样的话,那么你的粒子模拟并不是保守的,即倾向于把粒子推到数值0,就像有一个力场一样。
https://stackoverflow.com/questions/7526429
复制相似问题