FiPy:在梯度之外的空间变化系数?

时间:2015-04-23 18:51:05

标签: python pde fipy

这可能是一个简单的问题,但如果我想解决具有超出梯度的空间变化系数的PDE,那么使用正确的FiPy语法是什么?到目前为止我看过的所有例子都只讨论了渐变内部的系数。

例如:

d / dt(Sigma)=(1 / r)d / dr(r ^ 0.5 d / dr(nu Sigma r ^ 0.5))

(我忽略了数字因素)

我想解决Sigma(t,r)问题。如何在d / dr前面处理(1 / r)?

我知道这个简单的等式可以被按摩,所以我不需要担心在梯度之外的空间变化系数(或者只是在时间导数项内移动系数)但是我将不得不加入更多我试图解决的实际问题的术语,这个技巧将不再有效。例如,如果我的公式如下,我该怎么办:

d / dt(var)= f(r)d ^ 2 / dr ^ 2(var)+ g(r)d / dr(var)

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

  

这可能是一个简单的问题,但如果我想解决具有空间变化系数的PDE,那么正确使用的FiPy语法是什么?   梯度?

我认为通用方程总是可以通过这样的方式重写,即FiPy仍然可以隐式地对解决方案变量进行操作。在大多数情况下,这确实需要额外的源术语。

  

我知道这个简单的等式可以按摩,所以我不用担心   关于在梯度之外的空间变化系数(或简单地说   在时间导数项内移动系数)但我必须添加   从更实际的问题来看,我试图解决这个问题   不再有效。

示例等式,

eqn1 http://bit.ly/1KcPB9Y

可以表示为

eqn2 http://bit.ly/1HBpSbI

在FiPy中,它不会添加任何额外条款。对于一般情况,

eqn3 http://bit.ly/1GvFSNB

等式可以表示为

\frac{\partial}{\partial t} \left( \frac{\phi}{f} \right ) = \frac{\partial^2 \phi}{\partial r^2} + \frac{\partial}{\partial r} \left( \frac{g \phi}{f} \right ) - \phi \frac{\partial}{\partial r} \left(\frac{g}{f} \right ) http://bit.ly/1GjmBtk

虽然有一个额外的术语,但术语仍然隐含在\ phi中,而额外的术语可以表示为\ phi的隐式源术语,具体取决于g / f的符号。 FiPy应该只使用ImplicitSourceTerm处理签名问题。

请注意,使用圆柱坐标时,操作员通常会发生r。 FiPy有一个网格类CylindricalGrid1D,它使用标准术语处理圆柱坐标(不需要和方程中的r空间变量)。