计算流体力学大作业
西工大-计算流体力学大作业

计算流体力学大作业学号: 姓名:1、不可压平面流通过二维容器(如图)。
采用 简单迭代、超松弛迭代 求解 势流方程获得容器内的速势和速度分布 。
边界条件按照课本中给,即流经 A 、B 的体积流量为1。
要求: 1)推导差分方程的迭代公式;2)编写计算机程序 ; 3)绘制计算结果曲线 。
答:1)迭代公式推导对于容器中的定常流场,其支配方程为22220x yφφ∂∂+=∂∂ 求解域为下图所示矩形区域则支配方程由有限差分形式代换,得1,,1,,1,,122220()()i j i j i ji j i j i j x y φφφφφφ+-+--+-++=∆∆具有22()()x y ∆+∆的截断误差对于正方形网格,有22()()x y h ∆=∆=,则上式可改写为n=17,1,1,,1,11()4i j i j i j i j i j φφφφφ+-+-=+++若采用简单迭代公式,即Liebmann 公式,则有(1)()(1)()(1),1,1,,1,11()4n n n n n i j i j i j i j i j φφφφφ++++-+-=+++若采用超松弛迭代,即SOR 公式,则有(1)()()(1)()(1),,1,1,,1,1(1)()4n n n n n n i j i j i j i j i j i j ωφωφφφφφ++++-+-=-++++其中松弛因子12ω<<。
ω最佳值opt ω为opt ω=式中cos(/)cos(/)m n αππ=+,m ,n 分别表示在网格系统中垂直线和水平线的总数。
2)计算机程序本程序采用C 语言编写。
程序源代码如下: #include<stdio.h> #include<math.h> void main() { int m=25,n=17,ilast[17],jlast[25]; int step1,step2; double h=0.25; double psi_j[25][17],psiprv_j,vel_j[25][17],velx_j[25][17],vely_j[25][17]; double psi_c[25][17],psiprv_c,vel_c[25][17],velx_c[25][17],vely_c[25][17]; double Pi,Alpha,Omega,Error; int i,j; for(i=0;i<17;i++) jlast[i]=17; for(i=17;i<m;i++) jlast[i]=17-(i-16); for(j=0;j<9;j++) ilast[j]=25; for(j=9;j<n;j++) ilast[j]=25-(j-8); //数据初始化 for(j=0;j<n;j++) { psi_j[0][j]=1.0; psi_c[0][j]=1.0;}for(i=1;i<m;i++){psi_j[i][jlast[i]-1]=1.0;psi_c[i][jlast[i]-1]=1.0; }for(j=0;j<8;j++){psi_j[m-1][j]=1.0;psi_c[m-1][j]=1.0;}for(i=1;i<m-1;i++){if(i>6 && i<21){psi_j[i][0]=0.0;psi_c[i][0]=0.0;}else{psi_j[i][0]=1.0;psi_c[i][0]=1.0;}}for(i=1;i<m-1;i++){for(j=1;j<jlast[i]-1;j++){psi_j[i][j]=0.5;psi_c[i][j]=0.5;}}//处理右上角数据for(i=0;i<m;i++){for(j=0;j<n;j++){if(j>jlast[i]-1){psi_j[i][j]=0;vel_j[i][j]=3;psi_c[i][j]=0;vel_c[i][j]=3;}}}Pi=4.0*atan(1.0);Alpha=cos(Pi/m)+cos(Pi/n);Omega=(8.0-4*sqrt(4-pow(Alpha,2)))/pow(Alpha,2);//计算速势step1=0;step2=0;//简单迭代while(1){Error=0.0;for(i=1;i<m-1;i++){for(j=1;j<jlast[i]-1;j++){psiprv_j=psi_j[i][j];psi_j[i][j]=(psi_j[i-1][j]+psi_j[i+1][j]+psi_j[i][j-1]+psi_j[i][j+1])/4.0;Error=Error+fabs(psi_j[i][j]-psiprv_j);}}step1++;if(step1>1000)break;if(Error<=0.001)break;}//超松弛迭代while(1){Error=0.0;for(i=1;i<m-1;i++){for(j=1;j<jlast[i]-1;j++){psiprv_c=psi_c[i][j];psi_c[i][j]=(1-Omega)*psi_c[i][j]+Omega*(psi_c[i-1][j]+psi_c[i+1][j]+psi_c[i][j-1]+psi_c[i][j+1])/4.0;Error=Error+fabs(psi_c[i][j]-psiprv_c);}}step2++;if(step2>1000)break;if(Error<=0.001)break;}//计算速度for(i=0;i<m;i++){for(j=0;j<jlast[i];j++){if(j==0){vely_j[i][j]=(-3*psi_j[i][j]+4*psi_j[i][j+1]-psi_j[i][j+2])/2/h;vely_c[i][j]=(-3*psi_c[i][j]+4*psi_c[i][j+1]-psi_c[i][j+2])/2/h;}else if(j==jlast[i]-1){vely_j[i][j]=(psi_j[i][j-2]-4*psi_j[i][j-1]+3*psi_j[i][j])/2/h;vely_c[i][j]=(psi_c[i][j-2]-4*psi_c[i][j-1]+3*psi_c[i][j])/2/h;}else{vely_j[i][j]=(psi_j[i][j+1]-psi_j[i][j-1])/2/h;vely_c[i][j]=(psi_c[i][j+1]-psi_c[i][j-1])/2/h;}}}for(j=0;j<n;j++){for(i=0;i<ilast[j];i++){if(i==0){velx_j[i][j]=(-3*psi_j[i][j]+4*psi_j[i+1][j]-psi_j[i+2][j])/2/h;velx_c[i][j]=(-3*psi_c[i][j]+4*psi_c[i+1][j]-psi_c[i+2][j])/2/h;}else if(i==ilast[j]-1){velx_j[i][j]=(psi_j[i-2][j]-4*psi_j[i-1][j]+3*psi_j[i][j])/2/h;velx_c[i][j]=(psi_c[i-2][j]-4*psi_c[i-1][j]+3*psi_c[i][j])/2/h;}else{velx_j[i][j]=(psi_j[i+1][j]-psi_j[i-1][j])/2/h;velx_c[i][j]=(psi_c[i+1][j]-psi_c[i-1][j])/2/h;}}}for(i=0;i<m;i++){for(j=0;j<jlast[i];j++){vel_j[i][j]=sqrt(pow(velx_j[i][j],2)+pow(vely_j[i][j],2));vel_c[i][j]=sqrt(pow(velx_c[i][j],2)+pow(vely_c[i][j],2));}}//输出结果分布FILE *fp;fp=fopen("f:\\ESL\\YFresult.txt","w");fprintf(fp,"简单迭代结果\n");fprintf(fp,"速度势分布\n");for(j=n-1;j>=0;j--){for(i=0;i<ilast[j];i++){fprintf(fp,"%-10.6f\n",psi_j[i][j]);}}fprintf(fp,"速度分布\n");for(j=n-1;j>=0;j--){for(i=0;i<ilast[j];i++){fprintf(fp,"%-10.6f\n",vel_j[i][j]);}}fprintf(fp,"超松弛迭代结果\n");fprintf(fp,"速度势分布\n");for(j=n-1;j>=0;j--){for(i=0;i<ilast[j];i++){fprintf(fp,"%-10.6f\n",psi_c[i][j]);}}fprintf(fp,"速度分布\n");for(j=n-1;j>=0;j--){for(i=0;i<ilast[j];i++){fprintf(fp,"%-10.6f\n",vel_c[i][j]);}}fclose(fp);//输出tecplot数据FILE *fp1;fp1=fopen("f:\\ESL\\TECPLOT-result.txt","w");fprintf(fp1,"title=erwei grid\n");fprintf(fp1,"variables=x, y, psi_easy, velocity_easy, psi_SOR\n, velocity_SOR\n");fprintf(fp1,"zone t=grid,i=25,j=17,f=point\n");for(j=0;j<n;j++){for(i=0;i<m;i++){fprintf(fp1,"%-10.6f,%-10.6f,%-10.6f,%-10.6f,%-10.6f,%-10.6f\n",i*h,j*h,psi_j[i][j],vel_j[i][j],p si_c[i][j],vel_c[i][j]);}}fclose(fp1);}3)计算结果采用简单迭代,容器内的速势和速度分布速势分布(简单迭代)速度分布(简单迭代)采用超松弛迭代,容器内的速势和速度分布速势分布(SOR ) 速度分布(SOR )2、用点源(汇)分布在对称轴的源汇模拟流体绕过NACA0012旋称体的二维轴对称势流解。
《计算流体力学》作业答案

计算流体力学作业答案问题1:什么是计算流体力学?计算流体力学(Computational Fluid Dynamics,简称CFD)是研究流体力学问题的一种方法,它使用数值方法对流体流动进行数值模拟和计算。
主要包括求解流体运动的方程组,通过空间离散和时间积分等计算方法,得到流体在给定条件下的运动和相应的物理量。
问题2:CFD的应用领域有哪些?CFD的应用领域非常广泛,包括但不限于以下几个方面:1.汽车工业:CFD可以用于汽车流场的模拟和优化,包括空气动力学性能和燃烧过程等。
2.航空航天工业:CFD可以用于飞机、火箭等流体动力学性能的预测和优化,包括机身、机翼的设计和改进等。
3.能源领域:CFD可以用于燃烧、热交换等能源领域的流体力学问题求解和优化。
4.管道流动:CFD可以用于石油、化工等行业的管道流动模拟和流体输送优化。
5.空气净化:CFD可以用于大气污染物的传输和分布模拟,以及空气净化设备的设计和改进。
6.生物医药:CFD可以用于生物流体输送和生物反应过程的模拟和分析,包括血液流动、药物输送等。
问题3:CFD的数值方法有哪些?CFD的数值方法一般包括以下几种:1.有限差分法(Finite Difference Method,FDM):将模拟区域划分为网格,并在网格上离散化流体运动的方程组,利用有限差分近似求解。
2.有限体积法(Finite Volume Method,FVM):将模拟区域划分为有限体积单元,通过对流体流量和通量的控制方程进行离散化,求解离散化方程组。
3.有限元法(Finite Element Method,FEM):将模拟区域划分为有限元网格,通过对流体运动方程进行弱形式的变分推导,将流动问题转化为求解线性方程组。
4.谱方法(Spectral Method):采用谱方法可以对流体运动方程进行高精度的空间离散,通常基于傅里叶变换或者基函数展开的方式进行求解。
5.计算网格方法(Meshless Methods):不依赖网格的数值方法,主要包括粒子方法(Particle Methods)、网格自适应方法(Gridless Method)等。
计算流体力学课程大作业

《计算流体力学》课程大作业——基于涡量-流函数法的不可压缩方腔驱动流问题数值模拟张伊哲 航博1011、 引言和综述2、 问题的提出,怎样使用涡量-流函数方法建立差分格式3、 程序说明4、 计算结果和讨论5、 结论1引言虽然不可压缩流动的控制方程从形式上看更为简单,但实际上,目前不可压缩流动的数值方法远远不如可压缩流动的数值方法成熟。
考虑不可压缩流动的N-S 方程:01()P t νρ∇⋅=⎧⎪∂⎨+∇⋅=-∇+∆⎪∂⎩U UUU f U (1.1)其中ν是运动粘性系数,认为是常数。
将方程组写成无量纲的形式:01()Re P t∇⋅=⎧⎪∂⎨+∇⋅=-∇+∆⎪∂⎩U UUU f U (1.2) 其中Re 是雷诺数。
从数学角度看,不可压缩流动的控制方程中不含有密度对时间的偏导数项,方程表现出椭圆-抛物组合型的特点;从物理意义上看,在不可压缩流动中,压力这一物理量的波动具有无穷大的传播速度,它瞬间传遍全场,以使不可压缩条件在任何时间、任何位置满足,这就是椭圆型方程的物理意义。
这就造成不可压缩的N-S 方程不能使用比较成熟的发展型...偏微分方程的数值求解理论和方法。
如果将动量方程和连续性方程完全耦合求解,即使使用显示的离散格式,也将会得到一个刚性很强的、庞大的稀疏线性方程组,计算量巨大,更重要的问题是不易收敛。
因此,实际应用中,通常都必须将连续方程和动量方程在一定程度上解耦。
目前,求解不可压缩流动的方法主要有涡量-流函数法,SIMPLE 法及其衍生的改进方法,有限元法,谱方法等,这些方法各有优缺点。
其中涡量-流函数法是解决二维不可压缩流动的有效方法。
作者本学期学习了研究生计算流体课程,为了熟悉计算流体的基本方法,选择使用涡量-流函数法计算不可压缩方腔驱动流问题,并且对于不同雷诺数下的解进行比较和分析,得出一些结论。
本文接下来的内容安排为:第2节提出不可压缩方腔驱动流问题,并分析该问题怎样使用涡量-流函数方法建立差分格式、选择边界条件。
计算流体力学大作业

计算液体力学基础及应用课程期末作业-----程序调试最终版学号:134212059 姓名:徐影ContentsCFD模型示意图一、拟一维喷管理论解求解二、拟一维喷管的CFD求解三、理论值与CFD解的对比CFD模型示意图两圆弧直径为10米,喉部直径为0.59米,长为3米clear all;I=imread('xuying.png'); imshow(I)一、拟一维喷管理论解求解喷管内马赫数的变化公依赖于面积比A/A0,所以可以将Ma作为x的函数1.2.采用隐函数绘图给出理论的马赫数解gamma=1.4;h0=59/100;% 取学生学号后两位数的十分之一作喉部直径syms x Ma A_x y;% xz为x坐标,Ma为马赫数A_x=((10.59-2*sqrt(25-(x-1.5)^2))/0.59)^2;% A_x为面积系数figure('Color',[1 1 1]);set(gcf,'position',[0,0,1.5*468,468]);plot_Ma=A_x^2-(2/(gamma+1)+(gamma-1)/(gamma+1)*y^2)^((gamma+1)/(gamma-1))/y^2;subplot(1,2,1);gca=ezplot(plot_Ma,[0,3]);xlabel('x');ylabel('马赫数');title('采用隐函数求解的马赫数结果');grid on; % 得到两条曲线,由递增规律选取上升曲线段,从该曲线上得到一系列点的坐标为[x0,Ma0]load tk.mat;x_0=tk(:,1);Ma_0=tk(:,2);% 这里load的数据采用某算法从上面出的图取点拟合得到,用到polyval和polyfit函数subplot(1,2,2);plot(x_0,Ma_0);xlabel('x');ylabel('马赫数');title('马赫数的理论解');grid on;求出马赫数后,压力、密度、温度的变化都是Ma的函数,求出理论值并绘图1.2.3.p_0=(1+(gamma-1)/2*Ma_0.^2).^(-gamma/(gamma-1));rho_0=(1+(gamma-1)/2*Ma_0.^2).^(-1/(gamma-1));t_0=(1+(gamma-1)/2*Ma_0.^2).^-1;figure('Color',[1 1 1]);set(gcf,'position',[0,0,1.5*468,1.5*468]);subplot(3,1,1);plot(x_0,p_0);title('压力比理论值');xlabel('x');ylabel('p');grid on; subplot(3,1,2);plot(x_0,rho_0);title('密度比理论值');xlabel('x');ylabel('rho');grid on; subplot(3,1,3);plot(x_0,t_0);title('温度比理论值');xlabel('x');ylabel('T');grid on;二、拟一维喷管的CFD求解clear all;L=3;N=31;dx=L/(N-1);x=linspace(0,L,N);C=0.5;n=2000;student_num=59;A=((10+student_num/100-2*((25-((x-1.5).^2))).^0.5)/(student_num/100)).^2;%面积比A/A_0与x坐标的关系第一步,密度比、温度比、速度比的初始条件设定1.2.3.Rou=1-0.3146*x;rhobi=zeros(1,n);T=1-0.2314*x;V=(0.1+1.09*x).*sqrt(T);P_rou_t=zeros(size(Rou));P_v_t=zeros(size(Rou));P_T_t=zeros(size(Rou));P_rou_t_2=zeros(size(Rou));P_v_t_2=zeros(size(Rou));P_T_t_2=zeros(size(Rou));第二步,预估步第三步,并求Δt,求rou, V, T的预测量1.2.3.第四步,修正步第五步,求平均时间导数1.2.3.最后,得到t+Delta t时刻流动参数的修正值为1.2.3.第七步,边界条件处理for j=1:ntemp=Rou(16);% 第二步,预估步for i=2:30P_rou_t(i)=-V(i)*((Rou(i+1)-Rou(i))/dx)-Rou(i)*((V(i+1)-V(i))/dx)-Rou(i)*V(i)*((log(A(i+1))-log(A(i)))/dx);P_v_t(i)=-V(i)*((V(i+1)-V(i))/dx)-((T(i+1)-T(i))/dx+((Rou(i+1)-Rou(i))/dx)*T(i)/Rou(i))*1/1.4;P_T_t(i)=-V(i)*((T(i+1)-T(i))/dx)-0.4*T(i)*(((V(i+1)-V(i))/dx)+V(i)*((log(A(i+1))-log(A(i)))/dx));end% 第三步,并求Δt,求rou, V, T的预测量dt=C*(dx./(V(2:30)+sqrt(T(2:30))));dt=min(dt);Rou1(2:30)=Rou(2:30)+P_rou_t(2:30).*dt;V1(2:30)=V(2:30)+P_v_t(2:30).*dt;T1(2:30)=T(2:30)+P_T_t(2:30).*dt;V1(1)=V(1);T1(1)=T(1);Rou1(1)=Rou(1);% 第四步,修正步%for i=2:30P_rou_t_2(i)=-V1(i)*((Rou1(i)-Rou1(i-1))/dx)-Rou1(i)*((V1(i)-V1(i-1))/dx)-Rou1(i)*V1(i)*((log(A(i))-log(A(i-1)))/dx); P_v_t_2(i)=-V1(i)*((V1(i)-V1(i-1))/dx)-((T1(i)-T1(i-1))/dx+((Rou1(i)-Rou1(i-1))/dx)*T1(i)/Rou1(i))*1/1.4;P_T_t_2(i)=-V1(i)*((T1(i)-T1(i-1))/dx)-0.4*T1(i)*(((V1(i)-V1(i-1))/dx)+V1(i)*((log(A(i))-log(A(i-1)))/dx));end% 第五步,求平均时间导数P_rou_av=(P_rou_t+P_rou_t_2)/2;P_v_av=(P_v_t+P_v_t_2)/2;P_T_av=(P_T_t+P_T_t_2)/2;% 最后,得到t+Delta t时刻流动参数的修正值为Rou(2:30)=Rou(2:30)+P_rou_av(2:30).*dt;T(2:30)=T(2:30)+P_T_av(2:30).*dt;V(2:30)=V(2:30)+P_v_av(2:30).*dt;P(2:30)=Rou(2:30).*T(2:30);% 第七步,边界条件处理V(1)=2*V(2)-V(3);V(31)=2*V(30)-V(29);Rou(31)=2*Rou(30)-Rou(29);T(31)=2*T(30)-T(29);p=Rou.*T;Ma=V./sqrt(T);rhobi(j)=abs((temp-Rou(16))/temp); % 计算后一次时间步与前一时间步之间的密度比的变化情况,以此检验CFD过程收敛性质end最终结果的绘图figure('Color',[1 1 1]);set(gcf,'position',[0,0,1.2*468,1.5*468]);subplot(3,1,1);plot(1:n,rhobi);xlabel('x');ylabel('Ma');title('相对密度比');grid on;% 密度比收敛情况绘图subplot(3,1,2);plot(x,Ma);title('喷管内马赫数分布');xlabel('x');ylabel('Ma');grid on;% 马赫数CFD值绘图subplot(3,1,3);plot(x,p);title('喷管内压力分布');xlabel('x');ylabel('p');grid on; % 压力分布CFD值绘图shu=[x;A;Ma;V;T;p;Rou];显示各参量最终计算结果fprintf('%6s\t%12s\t%12s\t%12s\t%12s\t%12s\t%12s\r\n','x','A/A_0','Ma','v/v_0','T/T_0','p/p_0','rho')% 依次显示坐标点、形状参数、马赫数、速度、温度、压力的结果fprintf('%6.1f\t%12.4f\t%12.4f\t%12.4f\t%12.4f\t%12.4f\t%12.4f\r\n',shu)x A/A_0 Ma v/v_0 T/T_0 p/p_0 rho0.0 3.1709 0.1859 0.1859 1.0000 1.0000 1.00000.1 2.8156 0.2124 0.2121 0.9975 0.9915 0.99390.2 2.5056 0.2389 0.2383 0.9956 0.9847 0.98900.3 2.2361 0.2711 0.2700 0.9922 0.9728 0.98050.4 2.0030 0.3056 0.3038 0.9885 0.9602 0.97140.5 1.8022 0.3451 0.3422 0.9834 0.9433 0.95910.6 1.6303 0.3882 0.3838 0.9775 0.9234 0.94470.7 1.4844 0.4364 0.4298 0.9700 0.8989 0.92670.8 1.3617 0.4891 0.4794 0.9611 0.8701 0.90540.9 1.2600 0.5469 0.5331 0.9502 0.8362 0.88001.0 1.1771 0.6096 0.5903 0.9374 0.7974 0.85071.1 1.1116 0.6776 0.6508 0.9224 0.7536 0.81701.2 1.0620 0.7507 0.7142 0.9051 0.7053 0.77921.3 1.0273 0.8289 0.7800 0.8855 0.6532 0.73761.4 1.0068 0.9119 0.8475 0.8636 0.5982 0.69271.5 1.0000 0.9998 0.9160 0.8394 0.5416 0.64521.6 1.0068 1.0921 0.9849 0.8132 0.4847 0.59601.7 1.0273 1.1887 1.0534 0.7853 0.4288 0.54611.8 1.0620 1.2893 1.1210 0.7559 0.3753 0.49641.9 1.1116 1.3934 1.1869 0.7255 0.3250 0.44802.0 1.1771 1.5009 1.2507 0.6943 0.2788 0.40152.1 1.2600 1.6113 1.3119 0.6629 0.2371 0.35762.2 1.3617 1.7245 1.3705 0.6315 0.2001 0.31682.3 1.4844 1.8398 1.4258 0.6006 0.1678 0.27952.4 1.6303 1.9576 1.4782 0.5702 0.1400 0.24552.5 1.8022 2.0764 1.5269 0.5408 0.1163 0.21512.6 2.0030 2.1983 1.5732 0.5122 0.0962 0.1879。
计算流体力学与传热学大作业

########学院计算流体力学与传热学学号:专业:学生姓名:任课教师:教授2013年12月目录第一章验证显式格式的稳定性 (4)1.1 概述 (4)1.2 数学推导 (4)1.3 问题描述 (4)1.4 数值模拟 (4)1.5 结果及分析 (5)第二章判断肋片可以按一维问题处理的主要依据 (6)2.1 概述 (6)2.2 问题描述及算法 (6)2.3 数值模拟 (7)2.4 结果及分析 (8)第三章三层墙导热 (9)3.1 概述 (9)3.2 问题描述 (9)3.3 TDMA算法 (9)3.4 结果 (10)第四章一维无源稳态对流扩散问题 (11)4.1 公式及初值 (11)4.2 情况一 (11)4.3 情况二 (12)4.4 情况三 (13)第五章用ADI算法计算长方肋内的温度分布 (14)5.1 问题描述 (14)5.2 初始参数 (14)5.3 情况一,一列列扫 (14)5.4 情况二,一行行扫 (14)5.5 情况三,采用ADI算法 (15)5.6 结果分析 (15)参考文献 (16)第一章 验证显式格式的稳定性1.1 概述将一维非稳态热传导方程用显式格式差分化为代数方程,在求解的迭代过程中必须满足一定的条件,才能使方程收敛且结果正确。
此处即验证β≤½。
1.2 数学推导方程: 22T t T x α∂∂=∂∂(1)显式离散格式: 此处时间向前差分,空间中心差分11122n n n n ni i i i i T T T T T t x α+-+--+=∆∆1112(2)n n n n ni i i i i t T T T T T xα+-+∆-=-+∆ 令β=2tx α∆∆则: 111(2)n n n n ni i i i i T T T T T β+-+-=-+ (2)误差也应该满足上式,故:()()1()()()2()()iiiiiIkx Ikx Ik x x Ikx Ik x x n n n n nT e T e T e T e T e ψψβψψψ----∆--+∆+⎡⎤-=-+⎣⎦()()()1()12()()()iiiiIkx Ikx Ik x x Ik x x n n n nT e T e T e T e ψβψβψψ----∆-+∆+⎡⎤=-++⎣⎦()()1()12()()iiiIkx Ikx Ikxn n Ik x Ik x n T e T e e e T e ψβψβψ---+-∆∆=-++()()1()121()n Ik x Ik x nT e e T ψββψ+-∆∆=-++≤ 因此 β≤½。
计算流体力学大作业

1 提出问题[问题描述]Sod 激波管问题是典型的一类Riemann 问题。
如图所示,一管道左侧为高温高压气体,右侧为低温低压气体,中间用薄膜隔开。
t=0 时刻,突然撤去薄膜,试分析其他的运动。
Sod 模型问题:在一维激波管的左侧初始分布为:0 ,1 ,1111===u p ρ,右侧分布为:0 ,1.0 ,125.0222===u p ρ,两种状态之间有一隔膜位于5.0=x 处。
隔膜突然去掉,试给出在14.0=t 时刻Euler 方程的准确解,并给出在区间10≤≤x 这一时刻u p , ,ρ的分布图。
2 一维Euler 方程组分析可知,一维激波管流体流动符合一维Euler 方程,具体方程如下: 矢量方程:0U ft x∂∂+=∂∂ (0.1)分量方程:连续性方程、动量方程和能量方程分别是:222,,p u ρ()()()()2000u tx u u pt x x u E p E tx ρρρρ∂⎧∂+=⎪∂∂⎪⎪∂∂∂⎪++=⎨∂∂∂⎪⎪∂+⎡⎤∂⎣⎦+=⎪∂∂⎪⎩ (0.2)其中 22v u E c T ρ⎛⎫=+ ⎪⎝⎭对于完全气体,在量纲为一的形式下,状态方程为:()2p T Ma ργ∞=(0.3)在量纲为一的定义下,定容热容v c 为:()211v c Ma γγ∞=- (0.4)联立(1.2),(1.3),(1.4)消去温度T 和定容比热v c ,得到气体压力公式为:()2112p E u γρ⎛⎫=-- ⎪⎝⎭(0.5)上式中γ为气体常数,对于理想气体4.1=γ。
3 Euler 方程组的离散3.1 Jacibian 矩阵特征值的分裂Jacibian 矩阵A 的三个特征值分别是123;;u u c u c λλλ==+=-,依据如下算法将其分裂成正负特征值:()12222k k k λλελ±±+=(0.6)3.2 流通矢量的分裂这里对流通矢量的分裂选用Steger-Warming 分裂法,分裂后的流通矢量为()()()()()()()12312322232121212122f u u c u c u u c u c w γλλλργλλλγλλγλ⎛⎫⎪-++ ⎪=-+-++ ⎪ ⎪ ⎪-+-+++ ⎪⎝⎭+++++++++++(0.7)()()()()()()()12312322232121212122f u u c u c u u c u c w γλλλργλλλγλλγλ⎛⎫⎪-++ ⎪=-+-++ ⎪ ⎪ ⎪-+-+++ ⎪⎝⎭-----------(0.8)其中:()()()223321c w γλλγ±±±-+=- c 为量纲为一的声速:22Tc Ma ∞=(0.9)联立(1.3),(1.9)式,消去来流马赫数得:ργp c =3.3 一阶迎风显示格式离散Euler 方程组 10n n i i x i x i U U f f t xδδ+-++--++=∆∆ (0.10)得到()()n+1nj j 11U =U j j j j t f f f f x++---+∆⎡⎤--+-⎣⎦∆ 算法如下:① 已知初始时刻t=0的速度、压力及密度分布000,,j j j u P ρ,则可得到特征值分裂值0k λ±,从而求出流通矢量0j f ±;② 应用一阶迎风显示格式可以计算出1t t =∆时刻的组合变量1j U ,从而得到1t t =∆时刻的速度、压力及密度分布111,,j j j u P ρ;③ 利用1t t =∆时刻的速度、压力及密度分布111,,j j j u P ρ可得特征值分裂值1k λ±,从而求出流通矢量1j f ±;④ 按照步骤2的方法即可得到2t t =∆时刻的速度、压力及密度分布222,,j j j u P ρ;⑤ 循环以上过程即可得到()1t n t =+∆时刻的速度、压力及密度分布n+1n+1n+1,,j j j u P ρ。
计算流体力学大作业报告

课程综合作业课程名称: _________ 计算流体力学 ___________专业班级: _______________ 研究方向:_______________ 学生姓名: ________________ 学号:________________完成日期: _______________________________________计算流体力学课程综合报告1. 简介计算流体动力学(Computational Fluid Dynamics ,简称CFD是通过计算机数值计算和图像显示,对包含有流体流动和热传导等相关物理现象的系统所做的分析。
其基本思想为: 把原来在时间域及空间域上连续的物理量的场,如速度场和压力场,用一系列有限个离散点上的变量值的集合来代替,通过一定的原则和方式建立起关于这些离散点上场变量之间关系的代数方程组,然后求解代数方程组获得场变量的近似值。
CFD可以看作是在流动基本方程(质量守恒方程、动量守恒方程、能量守恒方程)控制下对流动的数值模拟。
通过这种数值模拟,我们可以得到极其复杂问题的流场内各个位置上的基本物理量(速度、压力、温度、浓度等)的分布,以及这些物理量随时间的变化情况,确定旋涡分布特性、空化特性及脱流区等。
还可据此算出相关的其他物理星,如旋转式流体机械的转矩、水力损失和效率等。
此外,与CAD联合,还可进行结构优化设计等。
2. 计算流体动学的特点:①流动问题的控制方程一般是非线性的,自变量多,计算域的几何形状和边界条件复杂,很难求得解析解,而用CFD方法则有可能找出满足工程需要的数值解。
②可利用计算机进行各种数值试验,例如,选择不同流动参数进行物理方程中各项有效性和敏感性试验,从而进行方案比较。
③它不受物理模型和实验模型的限制,省钱省时,有较多的灵活性,能给出详细和完整的资料,很容易模拟特殊尺寸、高温、有毒、易燃等真实条件和实验中只能接近而无法达到的理想条件。
④数值解法是一种离散近似的计算方法,依赖于物理上合理、数学上适用、适合于在计算机上进行计算的离散的有限数学模型,且最终结果不能提供任何形式的解析表达式,只是有限个离散点上的数值解,并有一定的计算误差。
计算流体力学大作业sod激波管

Байду номын сангаас
•
Γ
S
无源:SΦ=0;稳态:非稳态项=0,简化为:
d u d Γ d
dx dx dx
方程离散化
对简化后的控制方程在目标节点所在的控制容积内积分:
e
w
du
dx
dx
e
w
d dx
Γ
d
dx
dx
扩散项采用中心差分,得:
u
e
u w
Γe x
E
P
Γe x
P W
PE
WP
记对流强度F=ρu,扩散传导性D=Γ/Δx。Fe=(ρu)e,Fw=(ρu)w;De=Γe/ΔxPE, Dw=Γw/ΔxWP。针对本问题,采用均匀网格,Fe=Fw=ρu,De=Dw=Γ/Δx。代入 上式,得到:
300 continue write(4,*)bb-deltx/2,upfai(M) close(unit = 4)
(3)网格数n=20;u=2.0m/s(Pe=1.0,F=2.0,D=2.0)
离散方程满足守恒性、有界 性和输运性三个物理特征。数据 显示,混合格式的结果与中心差 分的结果一致,相较于一阶上风 格式误差较小,因为该情况下扩 散占的比重较对流大,一阶上风 会过高估计上游信息对下游的影 响。
1.内节点法:
(1)网格数n=5;u=0.1m/s(Pe=0.2,F=0.1,D=0.5)
节点 位置
表1 u=0.1m/s,Δx=0.2m结果对比表
数值解与误差率
解析解
中心差分
误差率
一阶上风 误差率
混合
误差率
1
x=0.1
0.9388
0.9421
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 提出问题[问题描述]Sod 激波管问题是典型的一类Riemann 问题。
如图所示,一管道左侧为高温高压气体,右侧为低温低压气体,中间用薄膜隔开。
t=0 时刻,突然撤去薄膜,试分析其他的运动。
Sod 模型问题:在一维激波管的左侧初始分布为:0 ,1 ,1111===u p ρ,右侧分布为:0 ,1.0 ,125.0222===u p ρ,两种状态之间有一隔膜位于5.0=x 处。
隔膜突然去掉,试给出在14.0=t 时刻Euler 方程的准确解,并给出在区间10≤≤x 这一时刻u p , ,ρ的分布图。
2 一维Euler 方程组分析可知,一维激波管流体流动符合一维Euler 方程,具体方程如下: 矢量方程:0U ft x∂∂+=∂∂ (0.1)分量方程:连续性方程、动量方程和能量方程分别是:222,,p u ρ()()()()2000u tx u u pt x x u E p E tx ρρρρ∂⎧∂+=⎪∂∂⎪⎪∂∂∂⎪++=⎨∂∂∂⎪⎪∂+⎡⎤∂⎣⎦+=⎪∂∂⎪⎩ (0.2)其中 22v u E c T ρ⎛⎫=+ ⎪⎝⎭对于完全气体,在量纲为一的形式下,状态方程为:()2p T Ma ργ∞=(0.3)在量纲为一的定义下,定容热容v c 为:()211v c Ma γγ∞=- (0.4)联立(1.2),(1.3),(1.4)消去温度T 和定容比热v c ,得到气体压力公式为:()2112p E u γρ⎛⎫=-- ⎪⎝⎭(0.5)上式中γ为气体常数,对于理想气体4.1=γ。
3 Euler 方程组的离散3.1 Jacibian 矩阵特征值的分裂Jacibian 矩阵A 的三个特征值分别是123;;u u c u c λλλ==+=-,依据如下算法将其分裂成正负特征值:()12222k k k λλελ±±+=(0.6)3.2 流通矢量的分裂这里对流通矢量的分裂选用Steger-Warming 分裂法,分裂后的流通矢量为()()()()()()()12312322232121212122f u u c u c u u c u c w γλλλργλλλγλλγλ⎛⎫⎪-++ ⎪=-+-++ ⎪ ⎪ ⎪-+-+++ ⎪⎝⎭+++++++++++(0.7)()()()()()()()12312322232121212122f u u c u c u u c u c w γλλλργλλλγλλγλ⎛⎫⎪-++ ⎪=-+-++ ⎪ ⎪ ⎪-+-+++ ⎪⎝⎭-----------(0.8)其中:()()()223321c w γλλγ±±±-+=- c 为量纲为一的声速:22Tc Ma ∞=(0.9)联立(1.3),(1.9)式,消去来流马赫数得:ργp c =3.3 一阶迎风显示格式离散Euler 方程组 10n n i i x i x i U U f f t xδδ+-++--++=∆∆ (0.10)得到()()n+1nj j 11U =U j j j j t f f f f x++---+∆⎡⎤--+-⎣⎦∆ 算法如下:① 已知初始时刻t=0的速度、压力及密度分布000,,j j j u P ρ,则可得到特征值分裂值0k λ±,从而求出流通矢量0j f ±;② 应用一阶迎风显示格式可以计算出1t t =∆时刻的组合变量1j U ,从而得到1t t =∆时刻的速度、压力及密度分布111,,j j j u P ρ;③ 利用1t t =∆时刻的速度、压力及密度分布111,,j j j u P ρ可得特征值分裂值1k λ±,从而求出流通矢量1j f ±;④ 按照步骤2的方法即可得到2t t =∆时刻的速度、压力及密度分布222,,j j j u P ρ;⑤ 循环以上过程即可得到()1t n t =+∆时刻的速度、压力及密度分布n+1n+1n+1,,j j j u P ρ。
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)图4-2激波管内压力分布图(0.14s)图4-3激波管内速度分布图(0.14s)源程序代码:Ⅰ分量和矩阵结合编写的源程序:function sobtubing_SW()tic;close allee=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;%%%%%%%%%%%计算特征值分裂%%%%%%%%%%%%for j=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;for i=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));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,:)+lamt a_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,:)+lamt a_n(3,:)).*C.^2));%%%%%%%%%%%%%%计算流动参数%%%%%%%%%%%%%%for i=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);% 能量计算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([0 1 0 1]);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('\f ontsize{14}压力P')figure(3);plot(x,Den,'LineWidth',2);xlabel('\fontsize{14}x');ylabel(' \fontsize{14}密度ρ')Calculate_time=toc。