我在阅读mpm128.py的时候,有几个地方不是很懂,特意请教一下。我的参考材料是 http://mpm.graphics 中的 The material point method for simulating continuum materials.
在mpm128.py中
line 58: stress = (-dt * p_vol * 4 * inv_dx * inv_dx) * stress
line 85: new_C += 4 * inv_dx * weight * g_v.outer_product(dpos)
这两处对比参考资料中的 Eqn. 155 和 Eqn. 180 都多出 4 * inv_dx * inv_dx
这个常数。
并且对比参考资料,
line 62: grid_v[base + offset] += weight * (p_mass * v[p] + affine @ dpos)
line 85: new_C += 4 * inv_dx * weight * g_v.outer_product(dpos)
都是把 grad N(x) 换为了 N(x) dpos。
我猜测在这里计算 grad N 的时候,假设的 kernel 是 exp(-2x^2/dx^2), 这样就能解释以上的两个问题。但是这样就和最开始的 quadratic kernel 的假设相矛盾。所以想请教一下,这里的实现是不是换了一个kernel?如果换了,是什么考量呢,以及如何选择换的这个kernel?