LU-SGS求解器
-
@youmengtian
明显Jacobian Free和matrix free不是一回事儿吧。JFNK虽然是Jacobian free,但是Krylov没有preconditioner不是很好使,加preconditioner又很难避免要存、算矩阵,至少算矩阵系数是免不了的,不过这个preconditioner反正是approximation,似乎不需要非常consistent。而且preconditioner整的不好就是并行的性能瓶颈。
-
@程迪 怎么jacobian-free,在JVNK中也是以matrix-free实现的。AIAA很多论文都是如此表述的。matrix-free的LU-SGS还真心free的飞起
-
@youmengtian
Jacobian free是不算Jacobian,JFNK的方法压根就没出现Jacobian,既不存,也不算;Matrix free主要是不存系数矩阵,至于这个矩阵是不是Jacobian无所谓的,但是一般多少都有点儿关系。Matrix free不代表不算矩阵元素,preconditioner免不了要算全部或者部分矩阵元素的,但是往往算完之后可以扔掉一些,不用都存下来。SGS就是一例,按照LU-SGS的搞法,就是Matrix free的,计算过程中用到了某些系数,就算一下,用完了就扔了,下次要用再算。 -
@程迪 是这么说,目前的问题就是还是对于编写这类耦合隐式算法没有思路。OpenFOAM也没有相关可以借鉴的代码。不知您在这方面是否已经有相关工作开展了?可以进行进一步交流。
-
@youmengtian
没,网上有个那个Chun Shen的代码,AETK,我正在看。
https://github.com/chengdi123000/AETKv1 -
不好意思,最近除了上班,就是在准备课程资料和写CFD界,一直没空看这个LUSGS。等我忙完了我看看
- 11楼我的测试初步感觉LUSGS一步求解稀疏矩阵求解精度不高,大约残差在0.01左右,这在SIMPLE算法里面是可以容忍的,因此本身SIMPLE就是迭代求解的过程。但是对于非迭代求解的PISO算法,瞬态问题需要每个时间步都收敛,在这种情况下,LUSGS如何能保证准确性?
这是目前我需要理解的地方,谁敢兴趣也可以交流一下。
LUSGS比较有意思,等搞明白了发个CFD界,毕竟之前都是迭代求解矩阵,LUSGS一步求解,我觉得不错。 -
@李东岳 感兴趣呀😄
-
LUSGS的好处是可以使用更大的时间步长,但是显式计算的RK4也可以做到CFL~0.8。在二阶程序里使用LUSGS, CFL还是不应该大于1,因此LUSGS失去了它的优势。如果希望计算稳态,LTS也是一种相当有效率的稳态算法。如果LUSGS计算稳态收敛的速度比LTS更快,那么还是值得使用它。
-
'Implementation of density-based solver for all speeds in the framework of OpenFOAM' 里面介绍的双时间推进看起来不错,虽然计算量大一点,但是应该可以更好的处理流场马赫数跨度很大的情况 (跟压力基础求解器相比)。我一同事刚好在算这种流场,也许可以尝试你写的那种算法。
-
@程迪
您好,有个问题想请教您。看到您在《OpenFOAM的残差定义》一文中提到了残差定义方式:https://chengdi123000.github.io/2018/01/04/OpenFOAM的残差定义/
关于分母normFactor,有些疑问,不知道为什么要这样定义,有什么数学上的原理吗?
谢谢!
28/37