加快 DG FunctionSpace 评估

计算科学 芬尼克斯
2021-12-25 20:42:37

今天我尝试了对 DG 函数空间(Fenics 1.2.0)的一些评估。在我的计算中,我需要使用具有大量单元格(~10mio)的网格。目前,为包含许多单元的网格创建 DG 函数空间(在我的不同情况下为矢量函数空间)需要很长时间。例如:

from dolfin import *
set_log_level(DEBUG)
mesh = UnitCubeMesh(100,100,100)
H13 = VectorFunctionSpace(mesh, "DG", 1)

创建一个 CG 函数空间大约需要 20 秒。对于 DG,我在 10 分钟后中止了这项工作。对于另一个网格,我等了一个多小时没有终止。有没有办法加快 DG 功能空间的创建。

非常感谢提前

2个回答

本例中的 DG 空间有 72,000,000 个自由度,而 CG 空间的维度只有 3,090,903。因此,预计创建 DG 空间需要更长的时间,尤其是在重新排序自由度时(这是默认行为)。

某些代码的DofMapBuilder::reorder_local扩展性可能很差(请参阅安德斯的回答)。作为一种解决方法,您可以禁用重新排序自由度

parameters['reorder_dofs_serial'] = False
H13 = VectorFunctionSpace(mesh, "DG", 1)