流体力学简单计算MATLAB程式

合集下载

Matlab在计算机流体力学数值模拟中的应用

Matlab在计算机流体力学数值模拟中的应用

开题报告Matlab在计算机流体力学数值模拟中的应用研究姓名X X X学号专业日期2010-9-61.选题依据目前,实验室研究和计算机仿真研究是进行科学研究的两种主要手段。

实验研究能够尽可能地模拟实际状况,是一种较为真实的模拟方法,但是存在着成本高、研究周期长、很多数据无法通过测试得到等不足;随着计算流体力学理论和计算仿真技术的不断完善,采用计算机模拟变得越来越准确,而且效率高、成本低,并且对计算结果的处理和分析也十分方便。

在很多情况下,计算机仿真分析已逐步替代了实验研究,成为科研的主要手段。

近年来,国内外研究者已经大量采用计算流体动力学(computational fluid Dynamics,CFD)数值模拟的方法进行研究,对于数据的可视化处理成为数据处理的重要组成部分,在CFD领域中的计算结果显示和分析方面,利用Matlab来构造具有图形用户界面(GUI)的可视化工具,可以有效的缩短开发时间,提高工作效率。

2.研究方案2.1研究目标及研究内容2.1.1研究目标对于CFD领域的研究者而言,虽然建立其数学物理模型和设计相应的算法始终是首要任务。

但是,与之紧密相关的网格生成、数值计算结果的图形显示和可视化分析等CFD的前后处理也是必不可少的组成部分,而且占用了大部分时间和精力。

具体说,就计算结果的图形显示和可视化分析而言,涉及计算机图形学和Windows 应用程序设计等方面的知识.尽管这些前后处理工具,可以在软件市场上寻求一定程度的满足,但市场上比较适合的产品不多,针对CFD开发的则更少,并且价格昂贵。

因此,在目前情况下自行开发可能是一条值得考虑的途径。

但是,其主要困难在于不易短期内熟悉掌握相关学科和领域的知识和技术,更无法单独快速开发出这些必不可少的工具。

因此,要实现自行开发前后处理工具这一目标,选择合适的软件平台将尤为重要[1].2.1.2研究内容MATLAB语言是由美国MathWorks开发推出的,是当今国际科学界最具影响力,也是最有活力的软件之一。

一维激波管问题matlab编程

一维激波管问题matlab编程

一维激波管问题matlab编程一维激波管问题是流体力学中的经典问题之一,也是研究激波传播和激波相互作用的重要工具。

在这篇文章中,我们将使用Matlab 编程来解决一维激波管问题,并分析其结果。

让我们先来了解一下什么是一维激波管问题。

一维激波管是由两个不同状态的流体组成的管道,其中一个是初始状态,另一个是激波通过后的状态。

该问题的目标是确定激波传播的速度和管道中流体的各个参数的变化情况。

为了解决这个问题,我们可以使用Matlab编程来模拟激波管中的流体流动。

首先,我们需要定义一些初始参数,如初始状态的流体密度、速度和压力,以及管道的长度。

然后,我们可以使用数值方法,如有限差分法或有限元法,来求解激波管中的流体流动方程。

在Matlab中,我们可以使用函数和循环来实现这个模拟过程。

首先,我们可以定义一个函数来计算流体的速度和压力的变化。

然后,我们可以使用循环来迭代计算管道中每个位置的流体参数。

在每个时间步长内,我们可以根据激波传播的速度和管道中的参数变化来更新流体的状态。

在模拟过程中,我们可以通过绘制图表来观察激波的传播和流体参数的变化。

例如,我们可以绘制流体的速度和压力随时间和位置的变化曲线,以及激波的传播曲线。

通过Matlab编程,我们可以得到一维激波管中流体的各个参数随时间和位置的变化情况。

这些结果可以帮助我们更好地理解激波传播和激波相互作用的机制。

此外,通过调整初始参数和管道的长度,我们还可以研究不同情况下激波传播的特性。

使用Matlab编程来解决一维激波管问题是一种有效的方法。

通过模拟激波的传播和流体参数的变化,我们可以更好地理解激波管中的流体流动。

这种方法不仅可以帮助我们解决实际问题,还可以为激波传播和激波相互作用的研究提供重要的参考。

希望本文对读者有所帮助,谢谢阅读。

流体力学简单计算MATLAB程式

流体力学简单计算MATLAB程式

用matlab进行编程计算第一问:z=30;p1=50*9.8*10^4;p2=2*9.8*10^4;jdc=0.00015;gama=9800;d=0.257;L=50000 ;mu=6*10^(-6);hf=z+(p1-p2)/(0.86*gama)xdc=2*jdc/d;beta=4.15;m=1;Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));v=4*Q/(pi*d^2);Re=v*d/mu;Re1=59.7/xdc^(8*xdc/7);Re2=(665-765*log(xdc))/xdc;i=hf/L;if Re<3000Q=Q;elseif 3000<Re<Re1m=0.25;beta=0.0246;Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));v=4*Q/(pi*d^2);Re=v*d/mu;elseif Re1<Re<Re2m=0.123;A=10^(0.127*log(jdc/d)-0.627);beta=0.0802*A;Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));v=4*Q/(pi*d^2);Re=v*d/mu;elsem=0;langda=1/(2*log(3.7*d/jdc))^2;beta=0.0816*langda;Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));v=4*Q/(pi*d^2);Re=v*d/mu;endiQRevhf =588.1395i =0.0118Q =0.0915Re =7.5526e+004v =1.7632利用IF 语句对四种流态一一进行试算,最终的结果水力损失为588.1395m ,水力坡降0.0118第二问:将其中10km换成直径305mm的管子z=30;p1=50*9.8*10^4;p2=2*9.8*10^4;jdc=0.00015;gama=9800;mu=6*10^(-6);d= [0.257 0.305];L=[40000 10000];x=zeros(4,1);Q1=0.0915;hf=z+(p1-p2)/(0.86*gama);xdc=2*jdc./d;beta=4.15;m=1;Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);Re(1)=v(1)*d(1)/mu;Re(2)=v(2)*d(2)/mu;Re1(1)=59.7/xdc(1)^(8/7);Re1(2)=59.7/xdc(2)^(8/7);Re2(1)=(665-765*log(xdc(1)))/xdc(1);Re2(2)=(665-765*log(xdc(2)))/xdc(2);if Re(1)<3000 & Re(2)<3000Q=Q;elseif 3000<Re(1)<Re1 & 3000<Re(2)<Re1m=0.25;beta=0.0246;Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);Re(1)=v(1)*d(1)/mu;Re(2)=v(2) *d(2)/mu;elseif Re1<Re(1)<Re2 & Re1<Re(2)<Re2m=0.123;A=10^(0.127*log(jdc/d)-0.627);beta=0.0802*A;Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);Re(1)=v(1)*d(1)/mu;Re(2)=v(2)*d(2)/mu;elsem=0;langda=1/(2*log(3.7*d/jdc))^2;beta=0.0816*langda;Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);Re(1)=v(1)*d(1)/mu;Re(2)=v(2)*d(2)/mu;endQ Revq=Q-Q1baifenbi=q/Q1Q =0.0978Re =1.0e+004 *8.0795 6.8080v =1.8863 1.3393q =0.0063baifenbi =0.0694先假设流态均为层流,再进行试算,最终可得输量可提高6.94个百分点。

计算流体力学有限元方法编程matlab

计算流体力学有限元方法编程matlab

计算流体力学有限元方法编程matlab
本书介绍了计算流体力学有限元方法的基本原理和实现过程,并结合MATLAB编程实现了相关算法。

本书分为五部分,分别为基础知识、有限元方法、流体动力学方程、算法实现和应用实例。

在基础知识中介绍了有限元方法的基本思想和数学基础,包括一些重要的数学知识和数值计算方法。

在有限元方法中介绍了有限元离散化的基本原理,以及常见的有限元方法,如稳定有限元方法、高阶有限元方法和自适应有限元方法。

在流体动力学方程中介绍了Navier-Stokes方程、欧拉方程和边界层方程等基本流体动力学方程的数学表达式和物理
意义。

在算法实现中详细介绍了有限元方法在计算流体力学中的应用,包括离散化、插值、积分和求解方法等。

最后,在应用实例中给出了一些典型的计算流体力学问题的数值模拟和MATLAB编程实现。

本书
适合计算机、力学、应用数学等专业的本科生和研究生,以及从事计算流体力学有限元方法研究和工程实践的科研人员和工程技术人员
参考。

- 1 -。

河流动力学论文:Matlab求解

河流动力学论文:Matlab求解

用Matlab求解河流动力学计算问题——以明渠水力计算为例在学到的河流动力学概论(包括大二所学的水力学)中,有许多计算是一个函数具有多个自变量,而且往往是都是隐函数的一元高次方程,无解析解。

在做作业时,采用的方法就是试算作图法、图解法,这些方法既很繁琐,需做大量重复运算慢慢趋近于所求解,而且精度不高。

在做作业时,采用Microsoft Excel可以避开一些重复计算,但还是很费时。

因此,我尝试用Matlab编辑程序,直接求解。

取得了较好的成果。

整个过程简捷直观,操作简单,并且能方便的用三维图形、图像等计算结果,得到的数据说明其效率和精度都非常高。

下面用Matlab 语言对明渠流的有关水力计算进行编程运算。

Eg1:有一梯形渠道,已知流量Q=4.2m3/s,底坡i = 0.0069,粗糙系数n = 0.03,边坡系数m = 1.5,渠底宽度b = 1.5m,求均匀流水深h。

解:1).梯形明渠均匀流水深及梯形渠道底宽的函数表达式。

对于梯形断面, 过水断面面积与湿周为:A()b mh h=+;2X b h=+同时:0.60.4nQ AX⎛=⎝。

联立以上三式,可得出梯形明渠均匀流水深以及渠道底宽的求解方程式:()(0.60.42b mh hb+-=+。

可写出梯形明渠均匀流的函数表达式:()(0.60.4()2b m h hf hb+⎛=-⎝+。

2)接下来,用Matlab编程求解,程序如下:>> f='(b+m*h)*h/(b+2*h*sqrt(1+m^2))^0.4-(n*Q/sqrt(I))^0.6';f=subs(f,'n',.03);f=subs(f,'Q',4.2);f=subs(f,'b',1.5);f=subs(f,'m',1.5);f=subs(f,'I',.0069);f=solve(f);r=vpa(f,10);r=double(r);sprintf('r:%10.10g',r)。

格子玻尔兹曼方法计算流体matlab

格子玻尔兹曼方法计算流体matlab

格子玻尔兹曼方法(Lattice Boltzmann Method,简称LBM)是一种用于模拟流体流动行为的计算方法。

它利用微观格子模型和玻尔兹曼方程来描述流体的宏观运动行为,通过离散化的方式进行流体动力学模拟,是流体力学领域中的一种重要数值模拟方法。

而在计算机辅助科学和工程领域,使用MATLAB进行格子玻尔兹曼方法的模拟已经成为一种常见的做法。

格子玻尔兹曼方法的核心思想是通过在空间网格上建立分布函数,利用离散速度模型对流体的密度和速度进行描述,并通过碰撞和迁移操作来模拟流体的宏观行为。

与传统的有限差分或有限元方法相比,格子玻尔兹曼方法具有更好的并行性和可扩展性,特别适用于复杂流体流动问题和多尺度现象的模拟。

在MATLAB中实现格子玻尔兹曼方法,一般需要以下几个步骤:1. 设置模拟参数首先需要确定流体的基本性质,如密度、粘度等,以及模拟的空间和时间范围。

这些参数将直接影响到模拟的精度和收敛性。

2. 网格初始化在MATLAB中,可以通过创建二维或三维的网格数据结构来表示流体的位置和速度场。

根据模拟的要求,可以选择不同的网格类型和边界条件。

3. 碰撞和迁移格子玻尔兹曼方法的核心操作是碰撞和迁移步骤。

通过离散化的碰撞算子和迁移规则,可以更新流体的分布函数,从而模拟流体分子的运动和相互作用。

4. 边界处理在模拟过程中,需要对流体的边界进行特殊处理,以保证边界条件的正确性。

这涉及到处理入流、出流、固壁等情况,需要根据具体情况进行适当的修改。

5. 结果可视化在模拟结束后,可以利用MATLAB的绘图和可视化工具对流体的密度、速度、压力等物理量进行可视化。

这对于结果分析和验证模拟的有效性非常重要。

格子玻尔兹曼方法计算流体流动在MATLAB中的实现,既需要理解流体动力学的基本原理,又需要熟练运用MATLAB的编程技巧。

通过对模拟参数和算法的合理选择,以及对结果的准确分析,可以得到符合实际的流体流动模拟结果。

在MATLAB中实现格子玻尔兹曼方法的流体模拟过程中,除了以上的基本步骤外,还可能会涉及到优化算法、并行计算、多物理场耦合等更复杂的问题。

matlab流体力学

matlab流体力学

绕圆柱无环量和有环量流动流线分布图由流体力学的相关知识可知,所有的真实流体都具有粘性和一定程度的可压缩性,但是在一些情况下,粘性及压缩性的影响较小,可以忽略,采用简化的理想不可压缩模型能很好的近似实际流动,另一些情况则是为了揭示出流动的特性的有价值的规律,采用简化的流动模型能使研究变得简单。

基本的平面势流包括均匀直线流动、点源和点汇、点涡和偶极流。

根据流函数和速度势函数的定义以及将流体近似看作是理想不可压缩流体的条件下,可以写出各个基本平面势流的流函数和速度势函数,得到流函数后,可以利用数学编程MATLAB软件将函数曲线画在坐标系下,更加直观的观察各种流动的特点以及不同基本势流叠加后的流动特性。

本文即对相关内容进行了处理。

一、绕圆柱的无环量流动由理论分析可知,均匀直线流动与偶极流叠加后可以表示均匀来流绕圆柱的无环量流动。

设均匀直线流动的速度为,沿x轴正方向,偶极中心位于坐标原点、强度为M、偶极轴沿负x方向。

由均匀直线流动和偶极流的流函数可叠加得绕圆柱的无环量流动的流函数方程为:ψ=r sin(θ)-因此符合流动的流线方程为:r sin(θ)-=C (常量)不同的C值对应不同的流函数曲线,对方程中的常熟、M以及C取不同的值编程画出一族流函数曲线,上诉方程是用极坐标给出的,为了编程方便,现将其变为直角坐标表示的形式:因为r=;sin(θ)==,所以方程化为:y-=C (常量)MATLAB程序为ezplot('23=50*y-557*y/(2*pi*(x^2+y^2))')hold onezplot('-23=50*y-557*y/(2*pi*(x^2+y^2))')hold onezplot('0=50*y-557*y/(2*pi*(x^2+y^2))')hold onezplot('46=50*y-557*y/(2*pi*(x^2+y^2))')hold onezplot('-46=50*y-557*y/(2*pi*(x^2+y^2))')得到的绕圆柱的无环量流动的流线分布图为:二、绕圆柱的有环量流动如果在绕圆柱的无环量流动之上再在圆心叠加一个点涡流动,由于点涡流动的流线为同心圆族,故圆柱面仍为流线,则可组成绕圆柱的有环量流动,设点涡为顺时针方向、强度为-г。

MATLAB在力学、机械中的应用举例

MATLAB在力学、机械中的应用举例

阵除法X=A\B直接来解。在本题中,X和B都是6×1列向量,而A
是6×6阶方阵。
在编写程序时,尽量用文字变量,先输入已知条件,在程序
开始处给它们赋值,这样得出的程序具有一定的普遍性,若要修
改参数,只需修改头几行的数据即可。
MATLAB在力学、机械中的应用举例
◆ MATLAB程序
G1=200; G2=100; L1= 2; L2=sqrt (2); %给原始参数赋值
MATLAB在力学、机械中的应用举例
MATLAB在力学、机械中的应用举例
7.1 理论力学 7.2 材料力学 7.3 机械振动
MATLAB在力学、机械中的应用举例
7.1 理论力学
【例 7-1-1】 给定由N个力 Fi (i=1,2,…,N)组成的平面
任意力系,求其合力。
解:
◆ 建模
本程序可用来对平面任意力系作简化,得出一个合力。求合
值积分的步长是MATLAB按精度自动选取的,其间隔可变,因此dt
要用数组表示。
主程序exn713:
vt=input(′vt=′); vm=input(′vm=′);
%输入主程序及函数程序共用的参数
z0=input(′[x0;y0]=′); %输入数值积分函数需要的参数
tspan=input(′tspan=[t0,tfinal]=′);
%输入数值积分函数需要的参数
[t,z]=ode23(′exn713f′,tspan,z0);
%进行数值积分
plot(z(∶,1),z(∶,2));
%绘图
MATLAB在力学、机械中的应用举例
%在惯性坐标中,M点位置的导数是相对速度,而其二次导数 则为绝对加速度
dt=diff(t); Ldt=length(dt); %为了求导数,先求各时刻处t的增量
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用matlab进行编程计算
第一问:
z=30;p1=50*9.8*10^4;p2=2*9.8*10^4;jdc=0.00015;gama=9800;d=0.257;L=50000 ;mu=6*10^(-6);
hf=z+(p1-p2)/(0.86*gama)
xdc=2*jdc/d;
beta=4.15;m=1;
Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));
v=4*Q/(pi*d^2);
Re=v*d/mu;
Re1=59.7/xdc^(8*xdc/7);
Re2=(665-765*log(xdc))/xdc;
i=hf/L;
if Re<3000
Q=Q;
elseif 3000<Re<Re1
m=0.25;beta=0.0246;
Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));
v=4*Q/(pi*d^2);Re=v*d/mu;
elseif Re1<Re<Re2
m=0.123;A=10^(0.127*log(jdc/d)-0.627);beta=0.0802*A;
Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));
v=4*Q/(pi*d^2);Re=v*d/mu;
else
m=0;langda=1/(2*log(3.7*d/jdc))^2;beta=0.0816*langda;
Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));
v=4*Q/(pi*d^2);Re=v*d/mu;
end
i
Q
Re
v
hf =
588.1395
i =
0.0118
Q =
0.0915
Re =
7.5526e+004
v =
1.7632
利用IF 语句对四种流态一一进行试算,最终的结果水力损失为588.1395m ,水力坡降0.0118
第二问:
将其中10km换成直径305mm的管子
z=30;p1=50*9.8*10^4;p2=2*9.8*10^4;jdc=0.00015;gama=9800;mu=6*10^(-6);d= [0.257 0.305];L=[40000 10000];x=zeros(4,1);Q1=0.0915;
hf=z+(p1-p2)/(0.86*gama);
xdc=2*jdc./d;
beta=4.15;m=1;
Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));
v(1)=4*Q/(pi*d(1)^2);
v(2)=4*Q/(pi*d(2)^2);
Re(1)=v(1)*d(1)/mu;
Re(2)=v(2)*d(2)/mu;
Re1(1)=59.7/xdc(1)^(8/7);
Re1(2)=59.7/xdc(2)^(8/7);
Re2(1)=(665-765*log(xdc(1)))/xdc(1);
Re2(2)=(665-765*log(xdc(2)))/xdc(2);
if Re(1)<3000 & Re(2)<3000
Q=Q;
elseif 3000<Re(1)<Re1 & 3000<Re(2)<Re1
m=0.25;beta=0.0246;
Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));
v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);Re(1)=v(1)*d(1)/mu;Re(2)=v(2) *d(2)/mu;
elseif Re1<Re(1)<Re2 & Re1<Re(2)<Re2
m=0.123;A=10^(0.127*log(jdc/d)-0.627);beta=0.0802*A;
Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));
v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);
Re(1)=v(1)*d(1)/mu;Re(2)=v(2)*d(2)/mu;
else
m=0;langda=1/(2*log(3.7*d/jdc))^2;beta=0.0816*langda;
Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));
v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);
Re(1)=v(1)*d(1)/mu;Re(2)=v(2)*d(2)/mu;
end
Q Re
v
q=Q-Q1
baifenbi=q/Q1
Q =0.0978
Re =1.0e+004 *
8.0795 6.8080
v =
1.8863 1.3393
q =
0.0063
baifenbi =
0.0694
先假设流态均为层流,再进行试算,最终可得输量可提高6.94个百分点。

相关文档
最新文档