弹簧质量系统的隐式欧拉

时间:2019-05-13 18:44:21

标签: c++ eigen cgal

我目前正在为学校项目的模拟软件上实现隐式Euler的研究,而我很难把质量弹簧系统的隐式Euler公式,更具体地说,雅可比矩阵计算和最终公式都花在我身上这需要解决。

由于我是堆栈溢出的新手,所以如果在错误的地方张贴此错误或有任何错误,我会深表歉意。

到目前为止,我实现的结果产生了奇怪的结果(不切实际的模拟,爆炸等)。 因此,如果你们能指出我没有做对的事情,我将非常感激。

这是我认为我了解的内容:

  • 有两个雅可比矩阵,一个用于弹簧拉伸力,一个用于弹簧阻尼,都遵循https://imgur.com/a/Aydgd3n结构(系统中的粒子数为N)

    < / li>
  • 每个粒子Jacobian的计算公式如下:

    • 对于拉伸力Jacobian矩阵:

δfi/δxj = ks⋅uij⋅uTij

uTij是向量uij的转置(很抱歉,如果公式不太易读)

(这实际上不是来源中找到的完整公式,但是我的老师告诉我,我可以首先实现这个公式)

  • 对于阻尼力雅可比矩阵:

δfi/δxj=kd⋅uij⋅uTij

  • kdks分别是弹簧的阻尼和刚度。

  • 确定弹簧两个粒子之间的向量。

  • 至于两个矩阵的对角线,我看到这是与该粒子相连的所有粒子雅可比人的总和,因此: δfi/δxi=∑jδfiδxj,但我对此确实不确定。 连接的粒子具有δfi/δxj=−δfj/δxi

这是我谈论的怪异爆炸的一个例子: https://imgur.com/a/gk1MkGJ

以下是我阅读的资料(如果有帮助的话):http://blog.mmacklin.com/2012/05/04/implicitsprings/ http://hugi.scene.org/online/hugi28/hugi%2028%20-%20coding%20corner%20uttumuttu%20implementing%20the%20implicit%20euler%20method%20for%20mass-spring%20systems.htm

谢谢您的时间!

0 个答案:

没有答案