0

包含在 FiPy 中不能表示为(至少以任何明显方式)对流或扩散的导数的术语的正确方法是什么?例如,在一个 PDE 系统中,在坐标为 x,y 的 2d 区域上求解函数 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 是否会在边界处具有正确的值来代表我的术语,而且很可能,我的整个方法是不正确的。我应该怎么做才能代表这样一个术语?

4

1 回答 1

0

[编辑答案以反映所提出的问题]

u_2 \partial_x u_1等价于u_2 (1 0)\cdot\nabla u_1,在 FiPy 中呈现为:

eq = ... + fp.ImplicitSourceTerm(coeff=fp.tools.numerix.dot([[1], [0]], u1.grad), var=u2)
于 2018-03-27T14:46:42.980 回答