用FEniCS求解热方程

时间:2018-08-09 09:55:09

标签: python fenics

当我运行失败的热方程代码时,我在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是边界条件。

我不确定如何使它起作用,因此您的任何建议都将不胜感激。

预先感谢

2 个答案:

答案 0 :(得分:0)

根据roby的评论,<div class="card" style="width: 18rem;"> <img class="card-img-top" src=".../100px180/" alt="Card image cap"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text">Some quick example text</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> </div> 已替换为array()。因此,在third fenics tutorial的第62-65行中,以下工作有效:

get_local()

答案 1 :(得分:0)

我建议采用numpy模块中的转换,以备不时之需:

u_v = numpy.array(u.vector())

或者,如果您希望保留原始变量的结构

u_v = u.vector()

我更喜欢第一个,因为我对MatLab风格的矢量使用更为满意。