首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何表示Fipy中的三阶导数

如何表示Fipy中的三阶导数
EN

Stack Overflow用户
提问于 2019-09-04 15:55:44
回答 1查看 155关注 0票数 0

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

在Fipy python。我知道扩散项被表示为

代码语言:javascript
复制
DiffusionTerm(coeff=D)

高阶扩散项

代码语言:javascript
复制
DiffusionTerm(coeff=(Gamma1, Gamma2))

但无法找到一种方法来表示这第三种衍生产品。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-04 17:10:58

向量v是用(标量)解变量定义的吗?如果没有,只需显式地写出这个术语:

代码语言:javascript
复制
v.divergence.faceGrad.divergence

如果v是解变量(例如\phi)的函数,那么就没有像高阶扩散那样这样做的机制,但实际上不需要(也不需要高阶扩散)。将你的方程分解成两个二阶的偏微分方程,然后把它们耦合起来:

代码语言:javascript
复制
\partial \phi / \partial t = \nabla^2 \nabla\cdot\vec{v}

可以重写为

代码语言:javascript
复制
\partial \phi / \partial t = \nabla^2 \psi \\
\psi = \nabla\cdot\vec{v}

这将是

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57792045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档