大家好,问题的描述有些复杂,但是我会提供尽可能多的细节,问您是否需要更多信息。
在我参与的项目中,我必须研究一种结合两种现象的算法:机械问题(用3D的有限元方法解决)和0D血液动力学问题。解决每个问题的方式并不相关,因为我的问题在其他地方。
以下逻辑示意图可能会更易于理解
它利用了以下report
中详细描述的过程在每个时间步长n的开始,每个压力的第一估计是 基于四阶Adams-Bashfort显式方案;它使用以前的 推断和估计新的初始压力的压力(如报告中所述)。
然后,基于每个问题返回的值(此处为体积),使用共轭梯度法计算新的压力(请参见报告的第11页,公式2.3、2.4、2.5,我可以编写公式如果有人向我说明如何,请在TeX中查看) 然后将其用作每个问题的新输入,依此类推,直到达到收敛为止。
到目前为止,效果很好,进行了一些“经验”修改以提高收敛速度,效果很好。
然后,几天前,我稍微改变了几何形状,算法未能收敛。 更准确地说,它是由非常高的负压引起的,而不是有限元问题无法正确处理的(因此在计算体积时会返回错误)。
您有什么建议/想法吗?
谢谢。
编辑:回答评论,是的,我想提供一个最小的示例...但是我不能!我正在解决一个多物理场问题,您至少需要我使用的有限元库和完整的程序才能重现此现象。 尽管如此,即使我现在不知道如何,我也将尝试想办法。
关于我的改进,它不是干净的,但是在某种程度上可以防止无限循环。我已经看到,有时候,共轭梯度与解很接近,但无法达到。 因此,我的想法是,每p(由用户定义)步骤,将报告中公式(2.4)中的C除以2。根据经验,这样做确实可以用于我的测试。
我有时间的时候,我将尝试正确地分析原因,而不是为什么失败,以便提供更多细节。感谢您的建议,我将尝试该网站。