对共轭梯度样方法的改进?

时间:2018-12-11 15:44:44

标签: algorithm math numerical-methods finite-element-analysis

大家好,问题的描述有些复杂,但是我会提供尽可能多的细节,问您是否需要更多信息。

在我参与的项目中,我必须研究一种结合两种现象的算法:机械问题(用3D的有限元方法解决)和0D血液动力学问题。解决每个问题的方式并不相关,因为我的问题在其他地方。

以下逻辑示意图可能会更易于理解

Algorithm logigram

它利用了以下report

中详细描述的过程

在每个时间步长n的开始,每个压力的第一估计是 基于四阶Adams-Bashfort显式方案;它使用以前的 推断和估计新的初始压力的压力(如报告中所述)。

然后,基于每个问题返回的值(此处为体积),使用共轭梯度法计算新的压力(请参见报告的第11页,公式2.3、2.4、2.5,我可以编写公式如果有人向我说明如何,请在TeX中查看) 然后将其用作每个问题的新输入,依此类推,直到达到收敛为止。

到目前为止,效果很好,进行了一些“经验”修改以提高收敛速度,效果很好。

然后,几天前,我稍微改变了几何形状,算法未能收敛。 更准确地说,它是由非常高的负压引起的,而不是有限元问题无法正确处理的(因此在计算体积时会返回错误)。

您有什么建议/想法吗?

谢谢。

编辑:回答评论,是的,我想提供一个最小的示例...但是我不能!我正在解决一个多物理场问题,您至少需要我使用的有限元库和完整的程序才能重现此现象。 尽管如此,即使我现在不知道如何,我也将尝试想办法。

关于我的改进,它不是干净的,但是在某种程度上可以防止无限循环。我已经看到,有时候,共轭梯度与解很接近,但无法达到。 因此,我的想法是,每p(由用户定义)步骤,将报告中公式(2.4)中的C除以2。根据经验,这样做确实可以用于我的测试。

我有时间的时候,我将尝试正确地分析原因,而不是为什么失败,以便提供更多细节。感谢您的建议,我将尝试该网站。

0 个答案:

没有答案