python - PyPDE:理解代码以及如何修复边界条件?
问题描述
我正在寻找一种使用 Python 轻松总结一维可压缩流的好方法。现在,我正在尝试使用 PyPDE 库来解决这个问题。他们的网站上有很好的例子,但几乎没有解释(如果有任何可用的文档,请告诉我)。基于他们的 1D 示例,我可以编写以下内容:
from numba import njit
from numpy import zeros
# material constants
gam = 1.4
@njit
def internal_energy(E, v):
return E - (v[0]**2 + v[1]**2 + v[2]**2) / 2
def F(Q, d):
r = Q[0]
E = Q[1] / r
v = Q[2:5] / r
lam = Q[5] / r
e = internal_energy(E, v)
# pressure
p = (gam - 1) * r * e
F_ = v[d] * Q
F_[1] += p * v[d]
F_[2 + d] += p
return F_
from numpy import inner, array
def energy(r, p, v):
return p / ((gam - 1) * r) + inner(v, v) / 2
nx = 100
L = [1.]
tf = 5
rL = 2.
pL = 3.
vL = [0, 0, 0]
EL = energy(rL, pL, vL)
rR = 0.887565
pR = 2.
vR = [0, 0, 0]
ER = energy(rR, pR, vR)
QL = rL * array([1, EL] + vL)
QR = rR * array([1, ER] + vR)
Q0 = zeros([nx, 5])
for i in range(nx):
if i / nx < 0.99:
Q0[i] = QL
else:
Q0[i] = QR
import matplotlib.pyplot as plt
from pypde import pde_solver
out = pde_solver(Q0, tf,
L, F=F,
stiff=False,
flux='roe', order=3)
for i in range(len(out[:, :, 0])):
plt.plot(out[i, :, 0])
plt.show()
尽管如此,我仍在努力应对这些变量。我想修复入口 rho 和速度以及出口压力。如果不可能,我至少想在入口和/或出口中修复这些变量。
有什么想法吗?先感谢您。
解决方案
推荐阅读
- c++ - 无状态非常量值可用于常量表达式吗?
- jenkins - Jenkins管道锁没有被释放
- python - 基于正则表达式 python 规则的 eliza 实现
- html - 像 domain.com/index.html 这样的 url 来自哪里以及如何修复 404
- c - 链表数组类型“NAME”(又名“char [41]”)不可分配
- javascript - 为什么我的 If-Else 语句默认为“else”?
- html - 指向网络服务器加载 .html 页面而不是子目录索引
- php - jQuery成功没有在codeigniter中显示结果
- elasticsearch - 用于从文档中获取准确结果的 ElasticSearch 查询
- python - 如何为多面 xarray 图设置单个标题?