icoFoam中 在哪个地方体现了使用线性系统求解器?
-
大家好,在“icoFoam解析”(http://www.dyfluid.com/icoFoam.html) 中,在求解速度时,在哪个地方体现了使用线性系统求解器(如 fvSolution里面的PBICG)?怎么没有看到啊,公式(14)中,系数Ap为对角矩阵,根本用不到线性求解器,直接除过去就好。有理解错的地方希望大家指出。
-
-
-
@hongfu2233 首先我建议你看网页版,公式书写更规范并且随时更新一些小问题。预测速度
和当前时间步速度 是互相匹配的,实际上都是n时间步的速度。可以使用你的公式。但通常,教材里面用n表示已知时间步的量,如果用 表示要求的p点速度,有点混乱。 -
多谢东岳大神啊,回到公式(14),如你所说,我若是10万网格,那么就有十万个公式,组成10万阶矩阵,Ax=b。但是仔细观察公式(14),这10万阶系数矩阵A是个对角阵啊,直接除过去就好,x=b/A,感觉没有必要用各种复杂的矩阵求解器啊。请您指点一下。
-
@hongfu2233 简单来说(我在手机)
- 考虑Ax=b,如果说
,那么你需要求A的逆,这对于大型矩阵是不现实的。你可以试试简单的5*5矩阵,求逆很费事。比如高斯消去法,缺点是占用内存大,循环步骤多。 - 另一种是采用lu分解直接求解,但是cfd中一般是稀疏矩阵,lu分解后会破坏矩阵的稀疏性,占用大量内存。
- 因此一般采用迭代法,进了迭代法,通常我们对矩阵进行预条件,然后各种求解技术得以应用。比如共轭剃度法,
可以看看这个: 链接文本
这部分内容在应用数学里面说的很详细,cfd书里面比较范范,你可以看看saas的有一本书,书名记不得了,只记得作者。😳
- 考虑Ax=b,如果说
-
@李东岳 多谢啊,这个我有所了解。可能我没有说清楚。仔细观察公式(14),系数矩阵A是个对角阵啊,直接除过去就好,x=b/A,感觉没有必要用各种复杂的矩阵求解器啊。
-
@hongfu2233 a是对角阵,但是还有临点的呢。
-
@李东岳 临点不都是已知的量吗(用了已知时间步的量)?正如我第二个问题所问。在“icoFoam解析”中,公式14下面一行字也写了:“仔细观察公式(14),除了
均为已知。” -
@hongfu2233 所有和速度有关的量都进入方程左边,ap, an都在方程左边。比如:
2u1+u2=0
u1+2u2+u3=0
u2+2u3=0提取矩阵就是:
2 1 0
1 2 1
0 1 2 -
@李东岳 多谢啦,从公式14,总感觉系数矩阵是对角阵,如下式
2u1 =-u2 (此时的u2及其系数都是当前已知时间步的值)
2u2 =-u1-u3(此时的u1、u3及其系数都是当前已知时间步的值)
2u3=-u2 (同上)
提取矩阵
A=
2 0 0
0 2 0
0 0 2
b={-u2 -u1-u3 -u2}'
因为“仔细观察公式(14),除了 均为已知。”可能我看的不够仔细,我再仔细揣摩一下,多谢大神解答。 -
@李东岳 想明白了,多谢东岳大神!
3/13