ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:375.01KB ,
资源ID:10819178      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10819178.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(附录E-有限体积法求解库塔流(E).doc)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

附录E-有限体积法求解库塔流(E).doc

1、附录E 二维不可压缩黏性流体流动问题 的有限体积算法与计算程序 二维流动是一个不可压缩黏性流动的典型流动,并有解析解,可以用来检验数值算法计算精度和可靠性。对它采用有限体积算法一阶迎风型离散格式进行数值求解。同时,为了初学者入门和练习方便,这里给出了用语言和语言编写的计算二维不可压缩黏性流体流动问题计算程序,供大家学习参考。 E-1利用有限体积算法一阶迎风型离散格式求解二维 不可压缩黏性流体流动问题 1.二维不可压缩黏性流体流动问题的提法 二维不可压缩黏性流体流动:有两个无限长平板,间距为,两板之间充满密度为1、静止的不可压缩黏性流体。无限长平板组成的通道两端压力相等,下板固定不

2、动,上板以量纲为一的速度1自左向右平移运动(图E.1)。 图E.1二维不可压缩黏性流体流动问题示意图 2. 基本方程组、初始条件和边界条件 设流体是黏性流体。二维流动问题在数学上可以由二维不可压缩黏性流动方程组来表示,把它写成通用变量的微分方程组形式,有: (E.1) 其中为变量在水平方向的流速,为在垂直方向的流速,为黏度,为源项。源项中不仅包含压力梯度项,也包含时间导数项。 初始条件:上板以量纲为一的速度1沿着上壁面方向自左向右运动。 边界条件:流动速度在上下壁面可采用无滑移边界条件,在左右两端采用自由输出边界条件;压强

3、采用自由输出边界条件。 3. 计算网格划分和控制体单元与节点定义 采用交错网格。图E.2和图E.3是计算网格、控制体单元和节点示意图。 图E.3计算采用的交错网格示意图 图E.2方腔流动计算网格、 控制体单元和节点示意图 节点所在主控制体单元如图E.2中有阴影部分所示。在方向与节点相邻的节点为和,在方向与节点相邻的节点为和,主控制单元界面分别为。压力和速度分别在三套不同网格中,如图E.3中有阴影部分所示。 4. 有限体积算法离散格式 对方程(E.1)在图E.2所示节点主控制单元内积分,有: (E.2) 由于不可压缩黏性流体流动是二维问题,因此,控制体

4、单元体积仅是面积,而它的边界是长度。设 ,利用定理,可将方程(E.2)改写成如下有限体积离散格式: (E.3) 对上式中采用一阶向前差分近似,则有: (E.4) 同时记: (E.5) (E.6) 则式(E.2)写成: (E.7) 式中都是主控制单元内节点上的已知量,如果利用差分计算得到主控制单元边界上的流通量,就可以求出节点上的未知量。、 为了便

5、于讨论,现对一维对流扩散方程的一阶迎风型离散格式进行分析。首先讨论无源项一维对流扩散方程的一阶迎风型离散格式。 当流动为正向时,即,主控制单元界面取值: (E.8) 则方程(E.7)离散为: (E.9) 当流动为负向时,即,控制体单元界面取值为: (E.10) 则方程(E.7)离散为: (E.11) 将两种流动方向离散格式(E.9)和(E.11)合并后,得到统一的一维对流扩散方程一阶迎风型离散格式表达式:

6、 (E.12) 式中 (E.12a) 同理,可以得到带有源项的二维对流扩散方程的一阶迎风型离散格式: (E.13) 式中 (E.13a) 源项为: (E.14) 若把表示为时刻的动量,表示时刻的动量,则可以得到源项离散格式为: (E.15) 最后,得到带有源项的二维对流扩散方程有限体积算法一阶迎风型显式离散格式:

7、 (E.16) 式中系数为一阶迎风格式中各对应系数。 5. 计算结果分析 利用上述有限体积算法一阶迎风型离散格式和相应的初始条件和边界条件,采用MAC算法中压力耦合方程,求解二维不可压缩黏性流体流动问题。图E.4 给出了二维不可压缩黏性流体流动沿y方向的速度分布,并和精确解进行了比较,十分吻合。图E.5是二维不可压缩黏性流体流动水平x方向的速度云图。图E.6是二维不可压缩黏性流体流动速度矢量分布图。 图E.4 二维不可压缩黏性流体流动沿y方向的速度分布 图E.5 二维不可压缩黏性流体流动水平x方向速度云图 图E.6 二维不可压缩黏性流体流动速度

8、矢量分布图 E-2 二维不可压缩黏性流体流动问题的数值计算源程序 1. 语言源程序 // fvm_upwind_MAC_couette.cpp /*------------------------------------------------------------------------------------------------------------------- 以一阶迎风型格式和压力迭代求解二维流动问题(C语言版本) -----------------------------------------------------------

9、/ #include #include #include #define MX 100 //最大网格数 #define MY 20 //最大网格数 #define Lambda 0.002 //Chorin压力迭代常数,直接影响收敛性 #define Re 100.00 //雷诺数 #define dt 0.0005 //时间步长 dou

10、ble u[MX+1][MY+2],v[MX+2][MY+1],p[MX+2][MY+2],un[MX+1][MY+2],vn[MX+2][MY+1]; //全局变量 double max(double a,double b) //定义max函数 { double c; if(a

11、 ,初始速度、压强和空间步长。 ----------------------------------------------------------------------*/ void init(double u[MX+1][MY+2],double v[MX+2][MY+1],double p[MX+2][MY+2],double& dx,double& dy) { int i,j; dx=1.0/MX; dy=0.2/MY; for(i=0;i<=MX;i++) { for(j=0;j<=MY+1;j++) { u[i][j]=0

12、0; if(j==MY+1) u[i][j]=2.0; } } for(i=0;i<=MX+1;i++) for(j=0;j<=MY;j++) v[i][j]=0.0; for(i=0;i<=MX+1;i++) for(j=0;j<=MY+1;j++) p[i][j]=1.0; } /*------------------------------------------------------------------------ 迭代更新压强 输入:u、v、p、dx、dy ,n时刻速度、压强、空间步长; 输出:p

13、n+1时刻压强。 -----------------------------------------------------------------------------*/ void getp(double u[MX+1][MY+2],double v[MX+2][MY+1],double p[MX+2][MY+2],double dx,double dy) { double d[MX+2][MY+2]; int i,j; for(i=1;i<=MX;i++) for(j=1;j<=MY;j++) d[i][j]=(u[i][j]-u[i-1]

14、[j])/dx + (v[i][j]-v[i][j-1])/dy; for(i=1;i<=MX;i++) for(j=1;j<=MY;j++) p[i][j]=p[i][j]-Lambda*d[i][j]; for(i=1;i<=MX;i++) { p[i][0]=p[i][1]; p[i][MY+1]=p[i][MY]; } for(j=1;j<=MY;j++) { p[0][j]=p[1][j]; p[MX+1][j]=p[MX][j]; } } /*---------------------------------

15、 一阶迎风格式 输入:u、v、p、dx、dy ,n时刻速度、n+1时刻压强,空间步长; 输出:un、vn ,n+1时刻速度。 ------------------------------------------------------------------------------------------*/ void upwind(double u[MX+1][MY+2],double v[MX+2][MY+1],double p[MX+2][MY+2],double un[M

16、X+1][MY+2],double vn[MX+2][MY+1],double dx,double dy) { int i,j; double aw,ae,as,an,df,ap,miu; miu=1.0/Re; for(i=1;i<=MX-1;i++) { for(j=1;j<=MY;j++) { aw=miu+max(0.5*(u[i-1][j]+u[i][j])*dy,0.0); ae=miu+max(0.0,-0.5*(u[i][j]+u[i+1][j])*dy); as=miu+max(0.5*(v[i][j-1]

17、v[i+1][j-1])*dx,0.0); an=miu+max(0.0,-0.5*(v[i][j]+v[i+1][j])*dx); df=0.5*(u[i+1][j]-u[i-1][j])*dy+0.5*(v[i][j]+v[i+1][j]-v[i][j-1]-v[i+1][j-1])*dx; ap=aw+ae+as+an+df; un[i][j]=u[i][j]+dt/dx/dy*(-ap*u[i][j]+aw*u[i-1][j]+ae*u[i+1][j]+as*u[i][j-1]+an*u[i][j+1]) -dt*(p[i+1][j]-p[i][j]

18、)/dx; } } //边界条件 for(i=1;i<=MX-1;i++) { un[i][0]=-un[i][1]; un[i][MY+1]=2.0-un[i][MY]; } for(j=0;j<=MY+1;j++) { un[0][j]=un[1][j]; un[MX][j]=un[MX-1][j]; } for(i=1;i<=MX;i++) { for(j=1;j<=MY-1;j++) { aw=miu+max(0.5*(u[i-1][j]+u[i-1][j+1])*dy,0.0);

19、ae=miu+max(0.0,-0.5*(u[i][j]+u[i][j+1])*dy); as=miu+max(0.5*(v[i][j-1]+v[i][j])*dx,0.0); an=miu+max(0.0,-0.5*(v[i][j]+v[i][j+1])*dx); df=0.5*(u[i][j]+u[i][j+1]-u[i-1][j]-u[i-1][j+1])*dy+0.5*(v[i][j+1]-v[i][j-1])*dx; ap=aw+ae+as+an+df; vn[i][j]=v[i][j]+dt/dx/dy*(-ap*v[i][j]+aw*v[i

20、1][j]+ae*v[i+1][j]+as*v[i][j-1]+an*v[i][j+1]) -dt*(p[i][j+1]-p[i][j])/dy; } } //边界条件 for(i=1;i<=MX;i++) { vn[i][0]=0.0; vn[i][MY]=0.0; } for(j=0;j<=MY;j++) { vn[0][j]=-vn[1][j]; vn[MX+1][j]=-vn[MX][j]; } } /*------------------------------------------------

21、 格式输出,采用数据格式画图 输入:u、v、p、dx、dy ,最后结果; 输出:无。 --------------------------------------------------------------------------------*/ void output(double u[MX+1][MY+2],double v[MX+2][MY+1],double p[MX+2][MY+2],double dx,double dy) { double uo,vo,po; int i,j; FILE *

22、fp; fp=fopen("Result.plt","w"); fprintf(fp,"variables=x,y,u,v,p\nzone i=%d,j=%d,f=point\r\n",MX+1,MY+1); for(j=0;j<=MY;j++) { for(i=0;i<=MX;i++) { uo=0.5*(u[i][j]+u[i][j+1]); vo=0.5*(v[i][j]+v[i+1][j]); po=0.25*(p[i][j]+p[i+1][j]+p[i][j+1]+p[i+1][j+1]); fprintf

23、fp,"%20.10e %20.10e %20.10e %20.10e %20.10e\r\n",i*dx,j*dy,uo,vo,po); } } fclose(fp); } /*------------------------------------------------------ 主程序 -------------------------------------------------------*/ void main() { double dx,dy,err,value; int i,j,step; init(u,v,p,dx,dy);

24、 err=100.0; step=0; while(err>1e-6 && step<1e6) //err,收敛限制;step,迭代次数限制 { err=0.0; getp(u,v,p,dx,dy); //更新压强 upwind(u,v,p,un,vn,dx,dy); //更新速度 for(i=0;i<=MX;i++) { for(j=0;j<=MY+1;j++) { value=fabs(un[i][j]-u[i][j])/dt; if(value>err) err=v

25、alue; u[i][j]=un[i][j]; } } for(i=0;i<=MX+1;i++) { for(j=0;j<=MY;j++) { value=fabs(vn[i][j]-v[i][j])/dt; if(value>err) err=value; v[i][j]=vn[i][j]; } } printf("err=%le\n",err); } output(u,v,p,dx,dy); //输出结果 ---------------------------

26、 ----------------------------------------------------------------------------------------------------- 2. 语言源程序 program fvm_upwind_MAC_couette !-------------------------------------------------------------------

27、 以一阶迎风型离散格式和压力迭代求解二维流动问题 (语言版本) !------------------------------------------------------------------------------------------------------------------- parameter(mx=101,my=21) implicit double precision(a-h,o-z) dimension u(mx,my+1),v(

28、mx+1,my),p(mx+1,my+1),un(mx,my+1),vn(mx+1,my) double precision lambda integer step re=100. !雷诺数 dt=0.0005 !时间步长 lambda=0.002 !Chorin压力迭代常数,直接影响收敛性 dx=1.0d0/(mx-1) dy=0.2d0/(my-1) step=0 err=100. call initial(u,v,p) !初始化

29、do while(err>1e-6.and.step<1e6) !err,收敛限制;step,迭代次数限制 err=0.0 step=step+1 ! write(*,*) step call calp(u,v,p,mx,my,dx,dy,lambda) !Chorin压力迭代 call upwind(u,v,p,un,vn,mx,my,dx,dy,dt,re) !一阶迎风型离散格式求解动量方程 do i=1,mx do j=1,my+1 temp=abs(u(

30、i,j)-un(i,j))/dt if(temp>err) err=temp u(i,j)=un(i,j) enddo enddo do i=1,mx+1 do j=1,my temp=abs(v(i,j)-vn(i,j))/dt if(temp>err) err=temp v(i,j)=vn(i,j) enddo enddo write(*,*) 'err=',err enddo cal

31、l output(u,v,p,mx,my,dx,dy) !输出 End !------------------------------------------------------------------------------ !初始化 !输入:无; !输出:u、v、p,初始速度、压强。 !------------------------------------------------------------------------------- subroutine initial(u,v,p) parameter(mx=101,my=

32、21) double precision u(mx,my+1),v(mx+1,my),p(mx+1,my+1) do i=1,mx+1 do j=1,my+1 p(i,j)=1.0 enddo enddo do i=1,mx do j=1,my+1 u(i,j)=0.0 if(j==my+1) u(i,j)=2.0 enddo enddo do i=1,mx+1 do j=1,my v(i,j)=0.0

33、 enddo enddo endsubroutine !----------------------------------------------------------------------------------------------- ! Chorin压力迭代 !输入:u、v、p、mx、my、dx、dy、lambda ,n时刻速、压强、其他各量; !输出:p ,n+1时刻压强。 !--------------------------------------------------------------------------------

34、 subroutine calp(u,v,p,mx,my,dx,dy,lambda) implicit double precision(a-h,o-z) dimension u(mx,my+1),v(mx+1,my),p(mx+1,my+1),d(mx+1,my+1) double precision lambda do i=2,mx do j=2,my d(i,j)=(u(i,j)-u(i-1,j))/dx+(v(i,j)-v(i,j-1))/dy enddo enddo do i=

35、2,mx do j=2,my p(i,j)=p(i,j)-lambda*d(i,j) enddo enddo do i=2,mx p(i,1)=p(i,2) p(i,my+1)=p(i,my) enddo do j=1,my+1 p(1,j)=p(2,j) p(mx+1,j)=p(mx,j) enddo endsubroutine !-----------------------------------------------------------------

36、 !一阶迎风型离散格式 !输入:u、v、pn、mx、my、dx、dy、dt、re ,n时刻速度、n+1时刻压强、其他各量; !输出:un,vn,n+1时刻速度。 !---------------------------------------------------------------------------------------------------------------- subroutine upwind(u,v,pn,un,vn,mx,my,dx,dy,dt,re)

37、 implicit double precision(a-h,o-z) dimension u(mx,my+1),v(mx+1,my),pn(mx+1,my+1),un(mx,my+1),vn(mx+1,my) double precision miu miu=1.0/re do i=2,mx-1 do j=2,my aw=miu+max(0.5*(u(i-1,j)+u(i,j))*dy,0.0) ae=miu+max(0.0,-0.5*(u(i,j)+u(i+1,j))*dy) a

38、s=miu+max(0.5*(v(i,j-1)+v(i+1,j-1))*dx,0.0) an=miu+max(0.0,-0.5*(v(i,j)+v(i+1,j))*dx) df=0.5*(u(i+1,j)-u(i-1,j))*dy+0.5*(v(i,j)+v(i+1,j)-v(i,j-1)-v(i+1,j-1))*dx ap=aw+ae+as+an+df un(i,j)=u(i,j)+dt/dx/dy*(-ap*u(i,j)+aw*u(i-1,j)+ae*u(i+1,j)+as*u(i,j-1)+an*u(i,j+1)) &

39、dt*(pn(i+1,j)-pn(i,j))/dx enddo enddo !--------------------------------- do i=2,mx-1 un(i,1)=-un(i,2) un(i,my+1)=2.0-un(i,my) enddo do j=1,my+1 un(1,j)=un(2,j) un(mx,j)=un(mx-1,j) enddo !u边界条件 !-------------------------------- !---------------------

40、 do i=2,mx do j=2,my-1 aw=miu+max(0.5*(u(i-1,j)+u(i-1,j+1))*dy,0.0) ae=miu+max(0.0,-0.5*(u(i,j)+u(i,j+1))*dy) as=miu+max(0.5*(v(i,j-1)+v(i,j))*dx,0.0) an=miu+max(0.0,-0.5*(v(i,j)+v(i,j+1))*dx) df

41、0.5*(u(i,j)+u(i,j+1)-u(i-1,j)-u(i-1,j+1))*dy+0.5*(v(i,j+1)-v(i,j-1))*dx ap=aw+ae+as+an+df vn(i,j)=v(i,j)+dt/dx/dy*(-ap*v(i,j)+aw*v(i-1,j)+ae*v(i+1,j)+as*v(i,j-1)+an*v(i,j+1)) & -dt*(pn(i,j+1)-pn(i,j))/dy enddo enddo !------------------------------- do i=2,

42、mx vn(i,1)=0.0 vn(i,my)=0.0 enddo do j=1,my vn(1,j)=-vn(2,j) vn(mx+1,j)=-vn(mx,j) enddo !v边界条件 !-------------------------------- Endsubroutine !-------------------------------------------------------------------------------- !格式输出,采用Tecplot数据格式画图 !输入:u、v、

43、p、mx、my、dx、dy,最后结果; !输出:无。 !-------------------------------------------------------------------------------- subroutine output(u,v,p,mx,my,dx,dy) implicit double precision(a-h,o-z) dimension u(mx,my+1),v(mx+1,my),p(mx+1,my+1) dimension uc(mx,my),vc(mx,my),pc(mx,my),x(mx),y(my)

44、 do i=1,mx x(i)=(i-1)*dx enddo do j=1,my y(j)=(j-1)*dy enddo do i=1,mx do j=1,my uc(i,j)=0.5*(u(i,j)+u(i,j+1)) vc(i,j)=0.5*(v(i,j)+v(i+1,j)) pc(i,j)=0.25*(p(i,j)+p(i+1,j)+p(i,j+1)+p(i+1,j+1)) enddo e

45、nddo open(1,file='result.plt') write(1,*) 'TITLE = "2D Results"' write(1,*) 'VARIABLES = "X", "Y", "U", "V", "P"' write(1,*) 'ZONE I=',mx, 'J=',my, 'F=POINT' write(1,10) ((x(i),y(j),uc(i,j),vc(i,j),pc(i,j),i=1,mx),j=1,my) close(1) 10 format(5(e15.8,5x))

46、 endsubroutine --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- -E.15-

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服