【问题标题】:cellvariable*Diffusion in fipy细胞变量*fipy中的扩散
【发布时间】:2021-10-03 17:37:02
【问题描述】:

我正在尝试在 fipy 中解决以下 coupled pde's 问题。我尝试了以下

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。”有没有一种方法可以实现单元变量乘以扩散项?

【问题讨论】:

  • 好的,我尝试了 ImplicitSourceTerm(coeff=DiffusionTerm(coeff=1, var=phi) 并且收到错误“TypeError: '
  • 有没有办法可以迭代地解决这个问题?用fipy?

标签: pde fipy non-linear


【解决方案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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多