免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
! MacCormack1D.for !-!利用MacCormack两部差分格式求解一维激波管问题! !- program MacCormack1D implicit double precision (a-h,o-z) parameter (M=1000) common /G_def/ GAMMA,PI,J,JJ,dL,TT,Sf dimension U(0:M+1,0:2),Uf(0:M+1,0:2) dimension Ef(0:M+1,0:2) GAMMA=1.4 !气体常数 PI=3.1415926 J=M !网格数 dL=2.0 !计算区域 TT=0.4 !总时间 Sf=0.8 !时间步长因子 call Init(U,dx) T=01 dt=CFL(U,dx) T=T+dt write(*,*)T=,T,dt=,dt call MacCormack_1D_Solver(U,Uf,Ef,dx,dt)call bound(U,dx) if(T.lt.TT)goto 1 call Output(U,dx) end!-!计算时间步长!入口: U, 当前物理量,dx, 网格宽度;!返回: 时间步长。!- double precision function CFL(U,dx) implicit double precision (a-h,o-z) common /G_def/ GAMMA,PI,J,JJ,dL,TT,Sf dimension U(0:J+1,0:2) dmaxvel=1e-10 do 10 i=1,J uu=U(i,1)/U(i,0) p=(GAMMA-1)*(U(i,2)-0.5*U(i,0)*uu*uu) vel=dsqrt(GAMMA*p/U(i,0)+dabs(uu) if(vel.gt.dmaxvel)dmaxvel=vel10 continue CFL=Sf*dx/dmaxvel end !-!初始化!入口: 无;!出口: U, 已经给定的初始值,dx,网格宽度。!- subroutine Init(U,dx) implicit double precision (a-h,o-z) common /G_def/ GAMMA,PI,J,JJ,dL,TT,Sf dimension U(0:J+1,0:2)!初始条件 rou1=1.0 u1=0 v1=0 p1=1.0 rou2=0.125 u2=0 v2=0 p2=0.1 dx=dL/J do 20 i=0,J/2 U(i,0)=rou1 U(i,1)=rou1*u1 U(i,2)=p1/(GAMMA-1)+0.5*rou1*u1*u120 continue do 21 i=J/2+1,J+1 U(i,0)=rou2 U(i,1)=rou2*u2 U(i,2)=p2/(GAMMA-1)+0.5*rou2*u2*u221 continue end!-!边界条件!入口: dx,网格宽度;!出口: U, 已经给定边界。!- subroutine bound(U,dx) implicit double precision (a-h,o-z) common /G_def/ GAMMA,PI,J,JJ,dL,TT,Sf dimension U(0:J+1,0:2)!左边界 do 30 k=0,2 U(0,k)=U(1,k)30 continue!右边界 do 31 k=0,2 U(J+1,k)=U(J,k)31 continue end!-!根据U计算E!入口: U,当前U矢量;!出口: E,计算得到的E矢量,! U、E定义见Euler方程组。!- subroutine U2E(U,E,is,in) implicit double precision (a-h,o-z) common /G_def/ GAMMA,PI,J,JJ,dL,TT,Sf dimension U(0:J+1,0:2),E(0:J+1,0:2) do 40 i=is,in uu=U(i,1)/U(i,0) p=(GAMMA-1)*(U(i,2)-0.5*U(i,1)*U(i,1)/U(i,0) E(i,0)=U(i,1) E(i,1)=U(i,0)*uu*uu+p E(i,2)=(U(i,2)+p)*uu40 continue end!-!一维 差分格式求解器!入口: U, 上一时刻U矢量,! Uf、Ef,临时变量,! dx,网格宽度,dt,,时间步长;!出口: U, 计算得到得当前时刻U矢量。!- subroutine MacCormack_1D_Solver(U,Uf,Ef,dx,dt) implicit double precision (a-h,o-z) common /G_def/ GAMMA,PI,J,JJ,dL,TT,Sf dimension U(0:J+1,0:2),Uf(0:J+1,0:2) dimension Ef(0:J+1,0:2) r=dt/dx dnu=0.25 do 60 i=1,J do 60 k=0,2!开关函数 q=dabs(dabs(U(i+1,0)-U(i,0)-dabs(U(i,0)-U(i-1,0)/(dabs(U(i+1,0)-U(i,0)+dabs(U(i,0)-U(i-1,0)+1e-10)!人工黏性项 Ef(i,k)=U(i,k)+0.5*dnu*q*(U(i+1,k)-2*U(i,k)+U(i-1,k) 60 continue do 61 k=0,2 do 61 i=1,J U(i,k)=Ef(i,k)61 continue call U2E(U,Ef,0,J+1) do 63 i=0,J do 63 k=0,2!U(n+1/2)(i+1/2) Uf(i,k)=U(i,k)-r*(Ef(i+1,k)-Ef(i,k)63 continue !E(n+1/2)(i+1/2) call U2E(Uf,Ef,0,J) do 64 i=1,J do 64 k=0,2!U(n+1)(i) U(i,k)=0.5*(U(i,k)+Uf(i,k)-0.5*r*(Ef(i,k)-Ef(i-1,k) 64 continue end!-!输出结果, 用 数据格式画图!入口: U, 当前时刻U矢量,! dx,网格宽度;!出口: 无。!- subroutine Output(U,dx) implicit double precision (a-h,o-z) common /G_def/ GAMMA,PI,J,JJ,dL,TT,Sf dimension U(0:J+1,0:2) open(1,file=MacCormack_1D result.txt,status=unknown) do 80 i=0,J+1 rou=U(i,0) uu=U
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 便秘主题填空题及参考答案
- 太平岭核电相关考试试题及答案
- 高中生物 重点强化练31 细胞分裂过程中DNA、染色体、染色单体的数量变化
- 高考历史一轮复习 课后习题 第33讲 改革开放以来的国家治理、经济生活和文化交流(黑龙江版)
- 大学自动化课程测试题与答案分享
- 2025-2026学年廊坊市四年级数学第二学期期末复习检测模拟试题含解析
- 2025-2026学年广西南宁市三下数学期末教学质量检测试题(含解析)
- 2026年四川省湘教版高中化学必修第二册第7单元单元测试卷
- 范仲淹名句相关试题及参考答案
- 2026年中国广告手表数据监测报告
- 2026年泌尿外科出科试卷及答案
- 2026小学数学北师大版新教材培训:四至六年级教材解析
- 2026广西正远监理咨询有限公司第二批项目制用工招聘47人笔试模拟试题及答案详解
- 2026年成都玉林紫荆初一入学数学分班考试真题含答案
- 2025年芜湖市繁昌区区属国有企业招聘考试试卷真题
- 工程预应力张拉与灌浆质量控制措施
- 2026年医疗卫生行业结构化面试备考考试试题及答案
- 一氧化二氮的理化性质与危险特性培训
- 2026年江苏省安全员C2证(土建安全员)考试题库及答案
- 《中华人民共和国生态环境法典》深度培训
- 设计图纸审批制度
评论
0/150
提交评论