首页 > 解决方案 > 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 和速度以及出口压力。如果不可能,我至少想在入口和/或出口中修复这些变量。

有什么想法吗?先感谢您。

标签: pythonpde

解决方案


推荐阅读