第八章——正激波方程

        从路线图可以看出,这一章的内容也是相对较少,先从激波的基本控制方程推导开始,即连续性方程、动量方程和能量方程,在利用这些基本方程推导出计算激波流动的详细方程,中间还推导了声速公式、能量方程的特殊形式和如何判断可压缩流动,能够帮助我们更好理解可压缩流动,最后讲了如何测量可压缩流动中的速度。

 1、激波流动的基本方程

2、声速公式的推导

 3、能量方程的特殊形式

 

         在这里回答一下我上次的疑问,就是总压在可压缩流动中的含义,在这里我们可以看到,所有滞止参数的表达式都是从能量方程推导得到,之前不可压缩的总压定义在这里已经不在适用,总压是根据等熵关系式得到,并不能像伯努利方程中的总压一样代表着机械能,这里的理解可能不太严谨,后续可能会有更好的理解。

4、可压缩流动的判定

        在前面章节提到过,以马赫数0.3为判据来决定流动是否可压缩,即密度是否保持不变,根据上述的等熵关系式,可以得到密度随马赫数的变化曲线,如下图所示,可以看出,当马赫数下雨0.3是,密度变化不超过百分之五,可以视为常数,即不可压缩流动。

 

 5、正激波的具体计算

        

 

        从推导过程来看,激波前后的密度、压强、温度和激波后马赫数均是激波前马赫数的函数,当激波前马赫数为1时,激波前后状态无变化,马赫数小于1时,激波关系式不在适用,因为不满足热力学第二定律。

 6、可压缩流动中的速度测量

        可压缩流动中的速度测量分为亚音速和超音速,在亚音速流动中,不存在激波,可视为等熵过程,测量点的总压就等于来流总压,利用等熵关系式可以得到马赫数与总压静压之间的关系,在测得当地声速就可以得到来流的速度。

        对于超声速流动来说,测量点和来流之间存在激波,所以测量点的总压要小于来流总压,故需要利用激波关系式进行换算,得到马赫数和测量总压与来流静压比值的关系,进而求得速度。

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算流体力学(CFD)是指在气体中传播的一种压缩,它是由气体的压缩和加速引起的。通常出现在高速流动、喷气发动机、飞行器进出口等应用中,这些应用中需要对气体的流动进行精确的数值模拟。 的数学模型可以使用一组非线性偏微分方程来描述,称为欧拉方程组。该方程组包括质量守恒方程、动量守恒方程和能量守恒方程。这些方程可以用以下方式表述: $$\frac{\partial \rho}{\partial t} + \nabla \cdot (\rho \mathbf{v})=0$$ $$\frac{\partial (\rho \mathbf{v})}{\partial t}+\nabla \cdot (\rho \mathbf{v} \mathbf{v}+p\mathbf{I})=0$$ $$\frac{\partial (\rho E)}{\partial t}+\nabla \cdot (\mathbf{v}(\rho E +p))=0$$ 其中,$\rho$ 是气体密度,$\mathbf{v}$ 是速度矢量,$p$ 是气体压力,$\mathbf{I}$ 是单位矩阵,$E$ 是气体总能量。 为了求解这些方程,可以使用数值方法,如有限体积法或有限元法。以下是使用 Python 编写的求解欧拉方程组的示例代码: ```python import numpy as np # 设置模拟参数 nx = 81 dx = 0.25 dt = 0.0002 gamma = 1.4 # 初始化气体状态 rho_l = 1.0 v_l = 0.0 p_l = 100000.0 rho_r = 0.125 v_r = 0.0 p_r = 10000.0 x_l = 0.5 x_r = 1.0 u = np.zeros((nx, 3)) for i in range(nx): if i < nx/2: u[i, 0] = rho_l u[i, 1] = rho_l * v_l u[i, 2] = p_l/(gamma-1) + 0.5*rho_l*v_l**2 else: u[i, 0] = rho_r u[i, 1] = rho_r * v_r u[i, 2] = p_r/(gamma-1) + 0.5*rho_r*v_r**2 # 定义守恒量到原始量的转换函数 def primitive_variables(u): rho = u[:, 0] v = u[:, 1] / rho p = (gamma-1) * (u[:, 2] - 0.5*rho*v**2) return rho, v, p # 定义原始量到守恒量的转换函数 def conservative_variables(rho, v, p): u1 = rho u2 = rho * v u3 = p/(gamma-1) + 0.5*rho*v**2 return np.array([u1, u2, u3]).T # 定义计算通量的函数 def flux(u): rho, v, p = primitive_variables(u) f1 = u[:, 1] f2 = u[:, 1]**2 / u[:, 0] + p f3 = u[:, 1]/u[:, 0] * (u[:, 2] + p) return np.array([f1, f2, f3]).T # 定义计算通量梯度的函数 def flux_gradient(u): rho, v, p = primitive_variables(u) df1_du = np.array([[0, 1, 0]]*u.shape[0]) df2_du = np.array([[-(gamma-3)/2*v**2, (3-gamma)*v, gamma-1]]*u.shape[0]).T df3_du = np.array([[gamma*v*(p/rho+(gamma-1)/2*v**2), -gamma*(p/rho+(gamma-1)*v**2), gamma*(p/rho+(gamma-1)*v**2)]]*u.shape[0]).T return np.array([df1_du, df2_du, df3_du]) # 定义计算通量向量的函数 def Riemann_solver(u_l, u_r): rho_l, v_l, p_l = primitive_variables(u_l) rho_r, v_r, p_r = primitive_variables(u_r) c_l = np.sqrt(gamma*p_l/rho_l) c_r = np.sqrt(gamma*p_r/rho_r) S_l = np.minimum(v_l-c_l, v_r-c_r) S_r = np.maximum(v_l+c_l, v_r+c_r) if S_l >= 0: f_l = flux(u_l) return f_l elif S_r <= 0: f_r = flux(u_r) return f_r else: f_l = flux(u_l) f_r = flux(u_r) return (S_r*f_l - S_l*f_r + S_l*S_r*(u_r - u_l)) / (S_r - S_l) # 定义计算时间步长的函数 def compute_dt(u, dx): rho, v, p = primitive_variables(u) c = np.sqrt(gamma*p/rho) u_abs = np.abs(v) + c return 0.9*dx / np.max(u_abs) # 执行主程序 t = 0.0 while t < 0.01: dt = compute_dt(u, dx) if t+dt > 0.01: dt = 0.01 - t u_old = u.copy() for i in range(1, nx-1): u_l = u_old[i-1, :] u_r = u_old[i, :] f = Riemann_solver(u_l, u_r) u[i, :] = u_old[i, :] - dt/dx * (f[i,:] - f[i-1,:]) t += dt # 输出结果 rho, v, p = primitive_variables(u) x = np.linspace(0, nx*dx, nx) import matplotlib.pyplot as plt plt.plot(x, rho, 'r-', label='Density') plt.plot(x, v, 'b-', label='Velocity') plt.plot(x, p, 'g-', label='Pressure') plt.legend() plt.show() ``` 在上面的代码中,我们使用有限体积法来求解欧拉方程组,并使用 Riemann 求解器来计算通量向量。该代码模拟了一个在气体中传播的过程,并输出了气体密度、速度和压力随时间和位置的变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值