使用FiPy解决非线性PDE - 网格和扩散项#Python

时间:2018-02-05 23:31:25

标签: python fipy

我正在尝试使用fipy解决非线性pde,我对使用情况有几个问题。

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

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

1 个答案:

答案 0 :(得分:0)

  1. 通过添加适当维度的向量,可以从\ vec {0}取代所有FiPy网格,例如,
  2. >>> 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,所以只需像编写其他任何内容一样编写表达式:
    2. >>> 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