我正在使用 FDM 技术求解具有可变边界(绝缘、对流、辐射或自由)的 3D 传热方程。我选择的几何形状是立方体。我工作的目的是更熟悉这些问题——出于兴趣——以及它们使用分布式 (MPI) 和共享内存 (OpenMP/Pthreads) 的并行化。
为了使这个问题尽可能简洁,我将避免冗长的表达——就像 3D 中通常的情况——并直奔主题。我的模板是一个 7 点内核。我正在通过使用 SOR 方法(即不包括边界表面、顶点和角)遍历内部点的离散化来解决我的立方体。因此,我发现自己对通常如何通过有限差分求解此类方程感到困惑。
建立一个(质量)矩阵,而不是简单的逐点模板方法是非常令人困惑的。我这样说是因为质量矩阵的每一行我最终只有 7 个非零元素。
换句话说,如果我的立方体在 x、y 和 z 方向上均等地离散化,而每个方向分别有 100 个点,那么我的整体质量矩阵维度将变为:每行只有 7 个 nnz 元素。从内存和某些算法应用 的角度来看,这过于稀疏和低效。
这让我想知道我目前在尝试为此类问题制定解决方案时是多么缺乏经验。话虽如此,通常如何制定如此庞大的稀疏矩阵来解决此类问题?当然,我的天真方法不是最好的,也不是唯一的解决方案(duh)。非常欢迎任何解释和/或示例。