1

这可能是一个简单的问题,但是如果我想用梯度之外的空间变化系数求解 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)

任何帮助将不胜感激!

4

1 回答 1

0

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

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

我知道可以对这个简单的方程进行按摩,这样我就不必担心梯度之外的空间变化系数(或者只是将系数移动到时间导数项内),但我必须为我试图解决的实际问题,这个技巧将不再有效。

示例方程,

eqn1

可以表示为

eqn2

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

eqn3

方程可以表示为

\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 )

尽管有一个额外的项,但这些项仍然隐含在 \phi 中,并且额外的项可以表示为 \phi 的隐式源项,具体取决于 g/f 的符号。FiPy 应该只使用ImplicitSourceTerm.

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

于 2015-04-26T01:21:31.520 回答