我想知道如何表示第三个衍生词:

在Fipy python。我知道扩散项被表示为
DiffusionTerm(coeff=D)高阶扩散项
DiffusionTerm(coeff=(Gamma1, Gamma2))但无法找到一种方法来表示这第三种衍生产品。谢谢
发布于 2019-09-04 17:10:58
向量v是用(标量)解变量定义的吗?如果没有,只需显式地写出这个术语:
v.divergence.faceGrad.divergence如果v是解变量(例如\phi)的函数,那么就没有像高阶扩散那样这样做的机制,但实际上不需要(也不需要高阶扩散)。将你的方程分解成两个二阶的偏微分方程,然后把它们耦合起来:
\partial \phi / \partial t = \nabla^2 \nabla\cdot\vec{v}可以重写为
\partial \phi / \partial t = \nabla^2 \psi \\
\psi = \nabla\cdot\vec{v}这将是
TransientTerm(var=phi) == DiffusionTerm(var=psi)
ImplicitSourceTerm(var=psi) == ConvectionTerm(coeff=v, var=???)我需要更多地了解v和完整的方程组,以进一步建议ConvectionTerm应该是什么样子。
Korteweg-de Vries方程]: [由于这些术语来自),添加了注释
虽然不完全正确认为v不是KdV方程中某些phi的函数,但仍然没有办法将部分^3v/\\分部x^3项转化为FiPy很容易利用的形式。如果v是标量,则部分^3 v/部分x^3是向量。如果v是向量,则部分^3v/部分x^3要么是标量,要么是张量。除非你用一个单位向量来点缀它,否则没有办法使这个词的秩与其他的一致,在这种情况下,它只是一些没有有效的隐式表示的源。
从根本上讲,一维方程总是具有误导性。关键是要知道什么是标量,什么是向量。FiPy作为一种有限体积码,是在求解散度定理时应用的,因此有必要知道它是在处理通量散度( FiPy可以隐式处理)还是一些随机偏导数(它不能)。
通过对KdV方程导子的解读,可以看出,有如此多的长波近似和可变的代换使得向量演算的任何痕迹都被抛弃了。因此,这不是FiPy具有有效表单的PDE。您可以编写v.faceGrad.divergence.grad.dot([[1]]),FiPy应该接受这一点,但是它不能很有效地解决问题。
此外,由于KdV方程是关于波传播的,并且本质上是双曲的,所以FiPy确实不太适合(通常需要一些扩散单元来使FiPy下面的算法收敛)。您可以看看克劳帕普或hp-FEM。
https://stackoverflow.com/questions/57792045
复制相似问题