您好,欢迎访问三七文档
1提出问题[问题描述]Sod激波管问题是典型的一类Riemann问题。如图所示,一管道左侧为高温高压气体,右侧为低温低压气体,中间用薄膜隔开。t=0时刻,突然撤去薄膜,试分析其他的运动。Sod模型问题:在一维激波管的左侧初始分布为:0,1,1111up,右侧分布为:0,1.0,125.0222up,两种状态之间有一隔膜位于5.0x处。隔膜突然去掉,试给出在14.0t时刻Euler方程的准确解,并给出在区间10x这一时刻up,,的分布图。2一维Euler方程组分析可知,一维激波管流体流动符合一维Euler方程,具体方程如下:矢量方程:0Uftx(0.1)分量方程:连续性方程、动量方程和能量方程分别是:222,,pu-第2页2000utxuuptxxuEpEtx(0.2)其中22vuEcT对于完全气体,在量纲为一的形式下,状态方程为:2pTMa(0.3)在量纲为一的定义下,定容热容vc为:211vcMa(0.4)联立(1.2),(1.3),(1.4)消去温度T和定容比热vc,得到气体压力公式为:2112pEu(0.5)上式中为气体常数,对于理想气体4.1。3Euler方程组的离散3.1Jacibian矩阵特征值的分裂Jacibian矩阵A的三个特征值分别是123;;uucuc,依据如下算法将其分裂成正负特征值:12222kkk(0.6)3.2流通矢量的分裂这里对流通矢量的分裂选用Steger-Warming分裂法,分裂后的流通矢量为12312322232121212122fuucucuucucw+++++++++++(0.7)-第3页12312322232121212122fuucucuucucw-----------(0.8)其中:223321cwc为量纲为一的声速:22TcMa(0.9)联立(1.3),(1.9)式,消去来流马赫数得:pc3.3一阶迎风显示格式离散Euler方程组10nniixixiUUfftx(0.10)得到n+1njj11U=Ujjjjtffffx算法如下:①已知初始时刻t=0的速度、压力及密度分布000,,jjjuP,则可得到特征值分裂值0k,从而求出流通矢量0jf;②应用一阶迎风显示格式可以计算出1tt时刻的组合变量1jU,从而得到1tt时刻的速度、压力及密度分布111,,jjjuP;③利用1tt时刻的速度、压力及密度分布111,,jjjuP可得特征值分裂值1k,从而求出流通矢量1jf;④按照步骤2的方法即可得到2tt时刻的速度、压力及密度分布222,,jjjuP;⑤循环以上过程即可得到1tnt时刻的速度、压力及密度分布n+1n+1n+1,,jjjuP。-第4页4计算结果分析实际编程中,空间步长取0.001,空间网格数为1001,时间步长取0.00001,计算到终点时刻0.14s耗费机时137s,计算时间还是可以接受的。分析图4-1~4-3,可以观察到在隔膜附近流动参数变化剧烈,与初始条件相比,可以看出激波的影响范围有限,始终在[0.3,0.75]x区间内变化。图4-1是0.14时刻的密度分布图,观察可知,在密度波的传播过程中,间断面上会出现了两次“沉降”,说明密度在沉降位置发生了剧烈变化。图4-2是0.14时刻的压力分布图,在压力波的传播过程中,在间断面上出现了一个“压力沉降”现象,说明压力在沉降位置突降。图4-3是0.14时刻的速度分布图,在间断面处产生一个向两边运动的速度,并且只有在隔膜附近才有气体流动,其他地方静止。图4-1激波管内密度分布图(0.14s)-第5页图4-2激波管内压力分布图(0.14s)图4-3激波管内速度分布图(0.14s)源程序代码:Ⅰ分量和矩阵结合编写的源程序:functionsobtubing_SW()tic;closeallee=1e-8;%%%%%%%%%%%划分时空网格%%%%%%%%%%%delta_t=0.00001;Nt=round(0.14/delta_t);delta_x=0.001;N_left=round(0.5/delta_x+1);N_right=round(0.5/delta_x+1)N=N_left+N_right-1;%1%%%%%%%%%初始条件%%%%%%%%%%%%%%%P=[ones(1,N_left-1)0.1*ones(1,N_right)];Den=[ones(1,N_left-1)0.125*ones(1,N_right)];u=zeros(1,N);gama=1.4;Den_u=Den.*u;E=P./(gama-1)+(0.5*u.^2).*Den;%%%%%%%%%%%计算特征值分裂%%%%%%%%%%%%forj=1:Ntepso=1e-8*ones(1,N);gama=1.4;C=sqrt(gama*P./Den);lamta=ones(3,N);lamta_p=ones(3,N);lamta_n=ones(3,N);lamta(1,:)=u;lamta(2,:)=u-C;lamta(3,:)=u+C;fori=1:3lamta_p(i,:)=0.5*(lamta(i,:)+sqrt(lamta(i,:).^2+epso.^2));lamta_n(i,:)=0.5*(lamta(i,:)-sqrt(lamta(i,:).^2+epso.^2));-第6页end%%%%%%%%%%%%%%计算正通量%%%%%%%%%%%%%%%gama=1.4;C=sqrt(gama*P./Den);Ftran_p=ones(3,N);f1_Pos=0.5/gama*Den.*(2*(gama-1)*lamta_p(1,:)+lamta_p(2,:)+lamta_p(3,:));f2_Pos=0.5/gama*Den.*(2*(gama-1)*lamta_p(1,:).*u+lamta_p(2,:).*(u-C)+lamta_p(3,:).*(u+C));f3_Pos=0.5/gama*Den.*((gama-1)*lamta_p(1,:).*u.^2+0.5*lamta_p(2,:).*(u-C).^2...+0.5*lamta_p(3,:).*(u+C).^2+(0.5*(3-gama)/(gama-1)*(lamta_p(2,:)+lamta_p(3,:)).*C.^2));%%%%%%%%%%%%%%计算负通量%%%%%%%%%%%%%%%gama=1.4;C=sqrt(gama*P./Den);f1_Neg=0.5/gama*Den.*(2*(gama-1)*lamta_n(1,:)+lamta_n(2,:)+lamta_n(3,:));f2_Neg=0.5/gama*Den.*(2*(gama-1)*lamta_n(1,:).*u+lamta_n(2,:).*(u-C)+lamta_n(3,:).*(u+C));f3_Neg=0.5/gama*Den.*((gama-1)*lamta_n(1,:).*u.^2+0.5*lamta_n(2,:).*(u-C).^2...+0.5*lamta_n(3,:).*(u+C).^2+(0.5*(3-gama)/(gama-1)*(lamta_n(2,:)+lamta_n(3,:)).*C.^2));%%%%%%%%%%%%%%计算流动参数%%%%%%%%%%%%%%fori=2:N-1%密度计算temp1(1,i)=(f1_Pos(1,i)-f1_Pos(1,i-1))/delta_x;temp2(1,i)=(f1_Neg(1,i+1)-f1_Neg(1,i))/delta_x;Den(1,i)=Den(1,i)-delta_t*(temp1(1,i)+temp2(1,i));%密度、速度乘积计算temp1(1,i)=(f2_Pos(1,i)-f2_Pos(1,i-1))/delta_x;temp2(1,i)=(f2_Neg(1,i+1)-f2_Neg(1,i))/delta_x;Den_u(1,i)=Den_u(1,i)-delta_t*(temp2(1,i)+temp1(1,i));%速度计算u(1,i)=Den_u(1,i)/Den(1,i);%能量计算-第7页temp1(1,i)=(f3_Pos(1,i)-f3_Pos(1,i-1))/delta_x;temp2(1,i)=(f3_Neg(1,i+1)-f3_Neg(1,i))/delta_x;E(1,i)=E(1,i)-delta_t*(temp2(1,i)+temp1(1,i));%压强计算P(1,i)=(gama-1)*(E(1,i)-0.5*Den(1,i)*u(1,i)^2);endend%结果显示x=0:0.001:1;axis([0101]);plot(x,u,'LineWidth',2);xlabel('\fontsize{14}x');ylabel('\fontsize{14}速度V');figure(2);plot(x,P,'LineWidth',2);xlabel('\fontsize{14}x');ylabel('\fontsize{14}压力P')figure(3);plot(x,Den,'LineWidth',2);xlabel('\fontsize{14}x');ylabel('\fontsize{14}密度ρ')Calculate_time=toc111,,pu
本文标题:计算流体力学大作业
链接地址:https://www.777doc.com/doc-5552250 .html