python - 使用隐式源项在 python 中求解 pde
问题描述
我想使用 fipy 在 python 中解决以下 3 个耦合 pdes
∇2n − (∇2ψ)n − (∇ψ).∇n = n/10,
∇2p + (∇2ψ)p + (∇ψ).∇p = p/10,
∇2ψ = −(p − n)
变量p
是n
和ψ
。从第一个和第二个方程可以看出,第一项可以设置为fipy中pde求解器中的扩散项。如果将第一个和第二个方程的其他项合并到 fipy pde 求解器中,我想它们应该合并到 fipy 中的隐式源项中。但是考虑到这些术语中向量恒等式的存在,我在将这些方程合并到 fipy pde 求解器中时遇到了一些困难。对此的任何帮助将不胜感激。
解决方案
假设2
你的方程中出现的实例是 nabla (del) 运算符的平方,你当然可以为第一个方程写:
DiffusionTerm(var=n) - ImplicitSourceTerm(coeff=psi.faceGrad.divergence, var=n) - psi.grad.dot(n.grad) == ImplicitSourceTerm(coeff=1./10, var=n)
然而,这不是一个非常隐含的表示。
更好的是应用链式法则:
$\nabla (n \nabla \psi) \equiv \nabla n \cdot \nabla \psi + n \nabla^2 \psi$
这样
$\nabla^2 n - \nabla(n \nabla psi) == n / 10$
这时候
DiffusionTerm(var=n) - DiffusionTerm(coeff=n, var=psi) == ImplicitSourceTerm(coeff=1./10, var=n)
如果你想耦合你的方程,并且
DiffusionTerm(var=n) - ConvectionTerm(coeff=psi.faceGrad, var=n) == ImplicitSourceTerm(coeff=1./10, var=n)
如果你不这样做。
推荐阅读
- asp.net-core - gRPC:需要多少个 proto 服务?
- javascript - js 变量日志在 console.log 中完美,但在创建 cookie 函数中不起作用
- javascript - 承诺返回待处理
- python - (Python)我如何制作一个计算某人活了多少天的程序?
- javascript - 如何调用子构造函数方法?
- html - Bootstrap 下拉选择 CSS 不适用于 !important
- reactjs - 如何在我的设备上保存大部分 React JS 组件?
- excel - 合并包含公式/单元格引用的多个工作表中的数据
- python - 如何使用 Python 将 int 发送到 arduino
- java - WildFly 23.0.2 BASIC 身份验证不起作用