1

我正在尝试解决fipy 中的以下耦合pde。我尝试了以下

eq1 = (DiffusionTerm(coeff=1, var=f)-f*DiffusionTerm(coeff=1, var=phi)
       +f-f**3 == 0)
eq2 = (2*DiffusionTerm(coeff=f, var=phi)+f*DiffusionTerm(coeff=1, var=phi)
       == 0)
eq = eq1 & eq2
eq.solve()

但它不喜欢“f*DiffusionTerm(coeff=1, var=phi)”,我得到了错误。“TermMultiplyError:必须将项乘以 int 或 float。” 有没有办法可以实现单元变量乘以扩散项?

4

1 回答 1

1

以下都不适用于 FiPy,

from fipy import CellVariable, DiffusionTerm, Grid1D
mesh = Grid1D(nx=10)
var = CellVariable(mesh=mesh)
# eqn = var * DiffusionTerm(coeff=1)
eqn = ImplicitSourceTerm(coeff=DiffusionTerm(coeff=1))
eqn.solve(var)

对于有限体积方法中的离散化,它们都没有任何意义。无论如何,您可以使用以下标识来重写感兴趣的术语

基本上,而不是使用

var * DiffusionTerm(coeff=1)

您可以使用

DiffusionTerm(coeff=var) - var.grad.mag**2

给出一个规则的扩散项和一个额外的明确的源项。

于 2021-08-05T20:42:59.197 回答