python - 通过 FEniCS 求解热方程

标签 python fenics

当我运行失败的热方程代码时,我在 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/

相关文章:

python-3.x - 如何在 Ubuntu 中使用 PIP 为特定的 python 环境安装 fenics?

python - 如何通过 python 在超过 9000 个元素的列表中以更少的时间检查重复项

python - 如何解决 Fenics 示例 ft06_elasticity.py 中名称 'nabla_div' 未定义错误?

c++ - 尝试运行 FEniCS 示例代码时编译器出错

docker - Mac 上 FEniCS 和 Paraview 的兼容性问题

python - 当没有重复项时,pandas 中索引重复错误

python - `super`类是如何实现代理设计模式的?

python - 从子区域列表中混淆覆盖区域

python - 如何输出从列表中查找最大频率值的字典?