【问题标题】:Solving non linear PDE using FiPy - Grid and diffusion term #Python使用 FiPy 求解非线性 PDE - 网格和扩散项 #Python
【发布时间】:2018-02-06 23:14:50
【问题描述】:

我正在尝试使用 fipy 来解决非线性 pde 问题,但我有几个关于用法的问题。

1- 我可以将 grid1D 对象设置为从特定数字而不是 0 开始吗​​?

2- 是否可以使用 x 作为扩散系数的系数变量(如果 phi 是 t 和 x 的函数)?又该怎么做呢?

【问题讨论】:

标签: python fipy


【解决方案1】:
  1. 所有 FiPy 网格都可以通过添加适当维度的向量从 \vec{0} 中置换出来,例如,
>>> m1 = fp.Grid1D(nx=10, dx=.5) + [[5.]]
>>> print m1.cellCenters
[[ 5.25  5.75  6.25  6.75  7.25  7.75  8.25  8.75  9.25  9.75]]

>>> m2 = fp.Grid2D(nx=3, ny=2, dx=.2, dy=.7) + [[2.], [8.]]
>>> print m2.cellCenters
[[ 2.1   2.3   2.5   2.1   2.3   2.5 ]
 [ 8.35  8.35  8.35  9.05  9.05  9.05]]
  1. mesh.cellCentersCellVariablemesh.faceCentersFaceVariable,所以只要像其他人一样写你的表达式:
>>> x = mesh.cellCenters[0]
>>> D = x**2 + 3.

因为 FiPy 将在单元中心定义的扩散系数插入到面中心,因此如果您自己在面中心上定义系数,您可能会得到更准确的结果

>>> X = mesh.faceCenters[0]
>>> D = X**2 + 3.

(见https://www.ctcms.nist.gov/fipy/documentation/FAQ.html#why-the-distinction-between-cellvariable-and-facevariable-coefficients

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多