【发布时间】:2018-03-30 21:48:35
【问题描述】:
对于包含在 FiPy 中不能表示为(至少以任何明显方式)对流或扩散的导数的术语,正确的方法是什么?例如,在一个 PDE 系统中,在坐标为 x,y 的二维区域上求解函数 u_i,其中一个方程包含项
u_2 * \partial_x u_1
鉴于 x 和 u_i 是单元变量,我可以将其表示为源:
eq = ... + fipy.tools.numerix.dot(x.grad,u_1.grad) * u_2
但是,由于在 FiPy 中计算梯度的方式,x.grad 是一个向量,除了与 x 边界直接相邻的单元格之外,x.grad 是一个值为 (1,0) 的向量,在该处它变为 (2,0)。这意味着我必须从一开始就使用向量 (1,0) 而不是 x.grad 。但是在这一点上,我不确定 u_1.grad 是否会在边界处具有正确的值来代表我的术语,而且很可能,我的整个方法是不正确的。我应该怎么做才能表示这样一个术语?
【问题讨论】:
-
获得
\partial_x u_1的方法本身是fipy.tools.numerix.dot([[1],[0]], u_1.grad),但请参阅my answer 了解获得半隐式项的正确方法
标签: fipy