用FEniC求解热方程

2024-05-16 03:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我在FEniCS中遇到了一个编码错误,当我运行热方程代码时

error = np.abs(u_e.vector().array() - u.vector().array()) AttributeError: 'dolfin.cpp.la.PETScVector' object has no attribute 'array’

我相信我们的想法是计算出每个时间层的u和精确解之间的差,并将它们放入数组中,然后我们将得到最大值(如果没有,请纠正我!)在

计算错误的原始代码是

u_e = interpolate(u_D, V)
error = np.abs(u_e.vector().array() - u.vector().array()).max()
print('t = %.2f: error = %.3g' % (t, error))

式中,uD是边界条件。在

我不知道我怎样才能使它起作用,所以你的任何建议都将不胜感激。在

提前谢谢


Tags: 代码编码错误nperrorabsarraycpp
1条回答
网友
1楼 · 发布于 2024-05-16 03:21:25

根据roby的评论,array()已被get_local()取代。因此,在third fenics tutorial的第62-65行中,如下所示:

    # Compute error at vertices
    u_e = interpolate(u_D, V)
    error = np.abs(u_e.vector().get_local() - u.vector().get_local()).max()
    print('t = %.2f: error = %.3g' % (t, error))

相关问题 更多 >