如何在 FiPy 中实现这个 PDE 系统?

问题描述

我正在使用涉及积分项的 FiPy 求解 PDE 系统。但是,FiPy 中不允许使用积分项。有人可以帮我使用这个系统吗?System of PDE

解决方法

我不确定这一点,但我认为您必须自己跟踪集成情况。

您应该能够实现梯形积分,例如:

import fipy as fp

sigma = fp.CellVariable(...,hasOld=True)
phi = fp.CellVariable(...,hasOld=True)
integral = fp.CellVariable(...,value=0.,hasOld=True)

sigma_eq = (fp.DiffusionTerm(var=sigma) - fp.ImplicitSourceTerm(coeff=phi,var=sigma) 
            == 0)
phi_eq = (fp.TransientTerm(var=phi)
          == fp.ImplicitSourceTerm(coeff=-integral + alpha,var=phi)

for step in steps:
    sigma.updateOld()
    phi.updateOld()
    integral.updateOld()
    for sweep in sweeps:
        sigma_res = sigma_eq.sweep(dt=dt)
        phi_res = phi_eq.sweep(dt=dt)
        integral.value = (integral.old 
                          + (sigma * phi + sigma.old * phi.old) * dt / 2).value

您实际上需要对 for sweep in sweepssigma_res 的收敛性进行某种测试,而不是 phi_res。你需要试验一下。这可能非常不稳定。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...