关于pbf2d 的一些疑问

我在阅读examples 中的 pbf2d 的时候有一些问题,望赐教。
主要是在一些参数的设置上有两点疑问。
下面是来自 pbf2d.py的一段代码:

h = 1.1
mass = 1.0
rho0 = 1.0
lambda_epsilon = 100.0
pbf_num_iters = 5
corr_deltaQ_coeff = 0.3
corrK = 0.001
neighbor_radius = h * 1.05

poly6_factor = 315.0 / 64.0 / np.pi
spiky_grad_factor = -45.0 / np.pi

我的疑问在于加粗的语句:
1.为什么 rho0 是1,而不是1000。考虑到标准单位下水的密度是1000kg/m3。我想到了这可能与维度有关,但找不到相关的资料说二维下的水的密度是多少kg/m2。
2.这是一个2d的仿真,为什么核函数的参数是3d情况下的。

我自己复现了2D下的pbf 对于里面的几点:

1.核函数:应该用2D下的核函数,用3D的核函数的结果是会造成对neigbouring space的积分不为零,导致的结果是在 neighbour radius 确定的情况下,计算出的 rho 总是会差一个系数,如果把这个系数重新计算即可

2.密度:这里设置的密度和标准单位水的密度没有关系,事实上和你设置的粒子大小和粒子质量还有你希望粒子之间保持的距离,以及核函数差的那个积分系数有关。只要自己调的恰当就可以跑

1 个赞

一直都有这方面的疑问,明白了,感谢!