当我运行失败的热方程代码时,我在 FEniCS 中遇到编码错误,
error = np.abs(u_e.vector().array() - u.vector().array())
AttributeError: 'dolfin.cpp.la.PETScVector' 对象没有属性 '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为边界条件。
我不确定如何让它发挥作用,所以如果您能提供任何建议,我将不胜感激。
提前致谢
最佳答案
根据 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))
关于python - 通过 FEniCS 求解热方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51763982/