*截断*笛卡尔 3D 网格上的快速泊松求解器(Dirichlet BC 为零)

计算科学 数字 泊松
2021-12-29 10:54:16

我发现自己必须解决

Δu=f在笛卡尔网格点的子集上,不一定形成受齐次 Dirichlet 边界条件 ( ) 的长方体域。我需要的拉普拉斯滤波器是用于 3D 的标准 7 点模板。u=0

现在,对于长方体域,我知道这可以使用 I 型离散正弦变换 (DST) 有效地解决,因为 DST 对方程系统进行了对角化。

我想知道,是否可以将快速 DST 用于长方体的域。它仍然是笛卡尔网格,但只是一个子集,不一定是凸的并且可能包含孔。

是否有可以利用笛卡尔网格结构的快速算法?还是我必须使用更通用的求解器(例如代数多重网格预处理共轭梯度法或类似的方法)?

也许有一种有效的方法可以将我的问题减少到另一个具有包容性长方体域的问题,所以我仍然可以使用 DST?据我所知,我可以在我的实际边界上引入中的源项,以便基于 DST 的方法将重建零边界。但问题在于,确定这些源项似乎需要求解一个大而“丑陋”的线性方程组(密集矩阵,不能简单对角化)。f

对于这个问题,您推荐的解决方案是什么?未知数以千万计。

1个回答

最简洁的答案是不; 对于具有一般几何或边界条件的情况,您不能使用 DST 方法。

理解这一点的最好方法是考虑为什么 DST 方法适用于“矩形”情况。对于这种情况,我们碰巧知道微分方程的完整特征向量集是正弦函数的乘积。然后我们可以方便地将解表示为特征向量的总和。在这种情况下,DST 是一种计算特征向量的快速方法。

对于一般几何,特征向量不是简单的正弦函数,我们没有廉价的方法来计算它们;这使得特征向量基础没有吸引力。

由于您说您的网格是笛卡尔网格,因此代数多重网格似乎是一个有吸引力的选择,并且理论上比使用 FFT 更快。如 Demmel 的这些笔记的第 2 页所示成正比,而多重网格是阶,其中是方程的数量。NlogNNN