【发布时间】:2018-02-06 23:14:50
【问题描述】:
我正在尝试使用 fipy 来解决非线性 pde 问题,但我有几个关于用法的问题。
1- 我可以将 grid1D 对象设置为从特定数字而不是 0 开始吗?
2- 是否可以使用 x 作为扩散系数的系数变量(如果 phi 是 t 和 x 的函数)?又该怎么做呢?
【问题讨论】:
-
请花几分钟时间阅读how to ask useful questions 并改进你的。
我正在尝试使用 fipy 来解决非线性 pde 问题,但我有几个关于用法的问题。
1- 我可以将 grid1D 对象设置为从特定数字而不是 0 开始吗?
2- 是否可以使用 x 作为扩散系数的系数变量(如果 phi 是 t 和 x 的函数)?又该怎么做呢?
【问题讨论】:
>>> 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]]
mesh.cellCenters 是 CellVariable 和 mesh.faceCenters 是 FaceVariable,所以只要像其他人一样写你的表达式:>>> x = mesh.cellCenters[0] >>> D = x**2 + 3.
因为 FiPy 将在单元中心定义的扩散系数插入到面中心,因此如果您自己在面中心上定义系数,您可能会得到更准确的结果
>>> X = mesh.faceCenters[0] >>> D = X**2 + 3.
【讨论】: