这可能是一个简单的问题,但如果我想解决具有超出梯度的空间变化系数的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)
非常感谢任何帮助!
答案 0 :(得分:0)
这可能是一个简单的问题,但如果我想解决具有空间变化系数的PDE,那么正确使用的FiPy语法是什么? 梯度?
我认为通用方程总是可以通过这样的方式重写,即FiPy仍然可以隐式地对解决方案变量进行操作。在大多数情况下,这确实需要额外的源术语。
我知道这个简单的等式可以按摩,所以我不用担心 关于在梯度之外的空间变化系数(或简单地说 在时间导数项内移动系数)但我必须添加 从更实际的问题来看,我试图解决这个问题 不再有效。
示例等式,
可以表示为
在FiPy中,它不会添加任何额外条款。对于一般情况,
等式可以表示为
虽然有一个额外的术语,但术语仍然隐含在\ phi中,而额外的术语可以表示为\ phi的隐式源术语,具体取决于g / f的符号。 FiPy应该只使用ImplicitSourceTerm
处理签名问题。
请注意,使用圆柱坐标时,操作员通常会发生r
。 FiPy有一个网格类CylindricalGrid1D
,它使用标准术语处理圆柱坐标(不需要和方程中的r
空间变量)。