couette_flow_exam.zip

  • 手扶眼睛
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 5
    下载次数
  • 2020-08-16 17:03
    上传日期
用matlab程序实现的couette 流动,用LBM方法来实现的
couette_flow_exam.zip
  • couette_flow_exam.m
    3.7KB
内容介绍
clear; clc; close; %simlulation parameters scale=1; NX=10*scale; NY=10*scale; NSTEPS=1e5*scale^2; %number of simulation time steps tau=0.9; %relaxation time omega = 1/tau; u_max=0.0001/scale; nu=(2*tau-1)/6; Re=NY*u_max/nu; %Reynolds number,scaling parameter in simulation %Lattice parameter;note zero direction is last NPOP=9; %number of velocities w=[1/9 1/9 1/9 1/9 1/36 1/36 1/36 1/36 4/9]; cx=[1 0 -1 0 1 -1 -1 1 0]; cy=[0 1 0 -1 1 1 -1 -1 0]; %node locations x=(1:NX)-0.5; y=(1:NY)-0.5; %Analytical solution:Couette velocity u_analy=u_max/NY.*y; %沿y向的速度分布 %initialize populations feq=zeros(NX,NY,NPOP); %generate 3*5*9 matrix for k=1:NPOP feq(:,:,k)=w(k); %assuming density equal on and zero velocity initial state end f=feq; fprop=feq; %convergence parameters tol=1e-12; %tolerance to steady state convergence teval=100; %time step to evaluate convergence u_old=zeros(NX,NY); %initalize clock tstart = tic; %记录运行时间 %Main algorithm for t=1:NSTEPS %Compute macroscopic quantities %density rho=sum(fprop,3);%fprop第三个维数坍塌,变成二维 %momentum components u=sum(fprop(:,:,[1 5 8]),3)-sum(fprop(:,:,[3 6 7]),3);%X方向动量 v=sum(fprop(:,:,[2 5 6]),3)-sum(fprop(:,:,[4 7 8]),3);%Y方向动量 %% %检查收敛性 if mod(t,teval)==1 %判断步数除以100的余数是不是1 conv=abs(mean(u(:))/mean(u_old(:))-1); if conv<tol break else u_old=u; end end u_2=u.^2+v.^2; for k=1:NPOP %Compute equilibrium distribution (linear equilibrium ith incompressible model) c_u=u*cx(k)+v*cy(k); %feq(:,:,k)=w(k).*rho.*(1+3*c_u+4.5*c_u.^2-1.5*u_2);%rho是密度 feq(:,:,k)=w(k)*rho*(1+3*c_u+4.5*c_u.^2); end %Collision step f=(1-omega)*fprop+omega*feq; for k=1:NPOP for j=1:NY for i=1:NX %streaming step(periodic streaming of whole domain) newx=1+mod(i-1+cx(k)+NX,NX); newy=1+mod(j-1+cy(k)+NY,NY); fprop(newx,newy,k)=f(i,j,k); %扩散步 end end end %Boundary condition (bounce back) %top wall (moving with tangential velocity u_max) fprop(:,NY,4)=f(:,NY,2); fprop(:,NY,7)=f(:,NY,5)-(1/6)*u_max; fprop(:,NY,8)=f(:,NY,6)+(1/6)*u_max; %bottom wall (rest) fprop(:,1,2)=f(:,1,4); fprop(:,1,5)=f(:,1,7); fprop(:,1,6)=f(:,1,8); fprop(1,:,5)=f(1,:,7); fprop(1,:,1)=f(1,:,3); fprop(1,:,8)=f(1,:,6); fprop(NX,:,6)=f(NX,:,8); fprop(NX,:,3)=f(NX,:,1); fprop(NX,:,7)=f(NX,:,5); end %calculation performance informatino after the simulation is finished runtime=toc(tstart); %compute error:L2 norm error=zeros(NX,1); for i=1:NX error(i)=(sqrt(sum((u(i,:)-u_analy).^2)))./sqrt(sum(u_analy.^2)); end L2=1/NX*sum(error); %Accuracy information fprintf('----accuracy information------\n'); fprintf(' L2(u):%g\n',L2); fprintf('runtime = %g \n',runtime); kk=1; for ii=1:NX for jj=1:NY velocity(kk)=sqrt(u(ii,jj)^2+v(ii,jj).^2); xx(kk)=ii; yy(kk)=jj; uu(kk)=u(ii,jj); vv(kk)=v(ii,jj); kk=kk+1; end end [X,Y,Z]=griddata(xx,yy,velocity,linspace(1,NX,100)',linspace(1,NY,100),'v4'); %pcolor(X,Y,Z); contourf(X,Y,Z,10); shading flat colorbar; figure u_2=uu*30; v_2=vv*30; quiver(xx,yy,u_2,v_2); [x_2,y_2] = meshgrid(1:NX,1:NY); %y_2=y_2+NY; startx = 1:0.01:NX; starty = ones(size(startx)); streamslice(x_2,y_2,u',v')
评论
  • TYP.R 2020-08-20 23:41:08
    警告: ZData 为非有限时,无法显示等高线
相关推荐
  • Couette_flow.rar
    求解二维Couette流动的LBM方法,速度模型是D2Q9
  • couette_BB.rar
    反弹边界库艾特流的格子玻尔兹曼matlab程序
  • Couette.zip
    LBM for Couette flow d2q9
  • matlabcnhelp.rar
    matlab中文帮助很难找的,快速下载
  • MobilePolice.rar
    移动警察,车牌识别,车牌定位系统源代码,已经运用在移动车载稽查系统中。
  • SVM(matlab).rar
    支持向量机(SVM)实现的分类算法源码[matlab]
  • svm.zip
    用MATLAB编写的svm源程序,可以实现支持向量机,用于特征分类或提取
  • Classification-MatLab-Toolbox.rar
    模式识别matlab工具箱,包括SVM,ICA,PCA,NN等等模式识别算法,很有参考价值
  • VC++人脸定位实例.rar
    一个经典的人脸识别算法实例,提供人脸五官定位具体算法及两种实现流程.
  • QPSK_Simulink.rar
    QPSK的Matlab/Simulink的调制解调仿真系统,给出接收信号眼图及系统仿真误码率,包含载波恢复,匹配滤波,定时恢复等重要模块,帮助理解QPSK的系统