问题描述
我正在从 uFDTD book 实现有限差分算法。许多 FDM 方程涉及对相邻向量元素的运算。 例如,电场的更新方程
ez[m] = ez[m] + (hy[m] - hy[m-1]) * imp0
使用相邻的向量值 hy[m]
和 hy[m-1]
。
如何在 PETSc 中有效地实施这些操作?除了局部向量循环和 scatterers 之外还有什么吗?
解决方法
如果我的目标是效率,我会称之为模板引擎。有很多很多很多的论文,有时甚至是开源代码,比如Devito。这个想法是 PETSc 管理数据结构和并行性。然后您可以将本地数据块提供给您最喜欢的模板计算机。