微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyPDE:理解代码以及如何修复边界条件?

如何解决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]
EL = energy(rL,pL,vL)

rR = 0.887565
pR = 2.
vR = [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 和速度以及出口压力。如果不可能,我希望至少在入口和/或出口修复这些变量。

有什么想法吗?提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。