2

我想知道如何在 FiPy 中编写以下等式:

有问题的混乱方程

(如果有人好奇,它来自这种类型的模型)。我在将右侧的第三项翻译成 FiPy 代码时遇到了一些麻烦。在示例中,A 和 B 都是变量。

我尝试了以下形式:

(ImplicitSourceTerm(coeff=chi_A) * (B.getGrad()) / \
 (numerix.sqrt(1 + lambda_ * (B.getGrad())^2))).getGrad()

但我想一个人不能 .getGrad() 不是变量的东西。我欢迎任何帮助;非常感谢!

4

1 回答 1

2

问题中术语的表示只是一个明确的表示。有两种方法可以以隐式方式表示该术语。

单方程A

假设仅A求解(单个方程A),则所讨论的项可以表示为ConvectionTerm

ConvectionTerm(coeff=chi_A * B.getGrad() / \
               numerix.sqrt(1 + lambda_ * B.grad.mag**2), var=A)

请参阅此常见问题解答

A和的多个方程B

如果AB(多个方程)一起求解,则可以将方程耦合,以便所讨论的项可以是扩散项,并B作为要求解的变量(项的因变量),

DiffusionTerm(coeff=chi_A * A / \
              numerix.sqrt(1 + lambda_ * B.grad.mag**2), var=B)

A和的方程B需要耦合,

coupled_eqn = eqn_A & eqn_B

请参阅此示例

这种选择(耦合)更好,因为明确的时间步长限制比相关术语B的时间步长限制更严格。A

笔记

问题中的语法(B.getGrad())^2不正确,应该是B.grad.mag**2.

于 2016-09-06T09:37:50.857 回答