细胞变量*fipy中的扩散

Posted

技术标签:

【中文标题】细胞变量*fipy中的扩散【英文标题】:cellvariable*Diffusion in 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? 【参考方案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

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

【讨论】:

以上是关于细胞变量*fipy中的扩散的主要内容,如果未能解决你的问题,请参考以下文章

在processing里使用80行代码制作一个元胞自动机之癌细胞扩散模型

组合数学练习题——Chemist

为啥在尝试安装 FiPy 时出现错误?

元胞自动机基于matlab元胞自动机HIV扩散模拟含Matlab源码 1292期

Fipy calcNormals 函数

安装FiPy时出错“命令”python setup.py egg_info“失败,错误代码为1”