用FiPy网格和扩散项Python求解非线性偏微分方程

2024-06-12 03:38:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用fipy来解决非线性偏微分方程,我有几个关于用法的问题。在

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

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


Tags: 对象函数用法数字phi系数fipy试图用
1条回答
网友
1楼 · 发布于 2024-06-12 03:38:38
  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.cellCentersCellVariable,而mesh.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

相关问题 更多 >