• 懒人1719
    了解作者
  • matlab
    开发工具
  • 7KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 23
    下载次数
  • 2019-06-20 06:40
    上传日期
相关的格子玻尔兹曼的matlab应用编程,下载即可运行,包括圆柱绕流,泊肃叶流等等
LBM matlab.zip
  • 格子玻尔兹曼的matlab一些案例程序
  • Oscillating_flow_Periodical_force.m
    1.5KB
  • Oscillating_flow_Periodical_inlet.m
    2.9KB
  • Cylinder_around_flow.m
    2.1KB
  • Couette_flow.m
    1.5KB
  • eqdf.m
    184B
  • Lid_Driven_Cavity.m
    2.8KB
  • Poiseuille_flow.m
    1.6KB
内容介绍
% Oscillating % 入口密度边界,周期波动 clear;clc;close all; global cx cy w m n cx=[0,1,0,-1,0,1,-1,-1,1]; cy=[0,0,1,0,-1,1,1,-1,-1]; w=[4/9,1/9,1/9,1/9,1/9,1/36,1/36,1/36,1/36]; lx=301;ly=41; m=lx;n=ly; u0 = 0.1; % horizontal lid velocity v0 = 0; % vertical lid velocity Re = 50; % Reynolds number nu = u0 *ly / Re; % kinematic viscosity omega = 1. / (3*nu+1./2.); % relaxation parameter maxT = 30000; % total number of iterations [x,y]=meshgrid(1:m,1:n);[sx,sy]=meshgrid(1:16:m,1:16:n); u=u0*ones(m,n);v=zeros(m,n);rho=ones(m,n); fin=eqdf(u,v,rho); g=0.001*ones(m,n); tic for cycle=1:maxT f_eq=eqdf(u,v,rho); force=reshape(kron(w,rho).*kron(cx,g),m,n,9); % Collesion fout=omega*f_eq+(1-omega)*fin+force; % Streaming for k=1:9 fin(:,:,k)=circshift(fout(:,:,k),[cx(k),cy(k)]); end % BC % top 反弹边界上(2:m-1,n) fin(:,n,[ 5 8 9])=fin(:,n,[3 6 7]); % bottom 反弹边界 下(2:m-1,1) fin(:,1,[ 3 6 7])=fin(:,1,[5 8 9]); % left 压力入口边界 左(1,2:n-1) rho0=1.1+1*sin(2*pi*cycle/1000); ue=1-((sum(fin(1,2:n-1,[1 3 5]),3)+2*sum(fin(1,2:n-1,[4 7 8]),3))/rho0); fin(1,2:n-1,2)=fin(1,2:n-1,4)+2/3*rho0*ue; fin(1,2:n-1,6)=fin(1,2:n-1,8)-0.5*(fin(1,2:n-1,3)-fin(1,2:n-1,5))+rho0*ue/6; fin(1,2:n-1,9)=fin(1,2:n-1,7)+0.5*(fin(1,2:n-1,3)-fin(1,2:n-1,5))+rho0*ue/6; % Right 开放边界 右(m,2:n-1) fin(m,2:n-1,[ 4 7 8])=fin(m-1,2:n-1,[4 7 8]); % Macro Var rho=sum(fin,3); u=reshape(cx*(reshape(fin,[m*n 9]))',m,n)./rho; v=reshape(cy*(reshape(fin,[m*n 9]))',m,n)./rho; u(1,2:n-1)=u0; v(1,2:n-1)=0; % imagesc(sqrt(u.^2+v.^2)); if mod(cycle,10)==0 % subplot(2,2,1),plot(u(2,1:51));title('0.02');axis([1 51 -1 1]); % subplot(2,2,2),plot(u(32,1:51));title('0.3');axis([1 51 -1 1]); % subplot(2,2,3),plot(u(62,1:51));title('0.6');axis([1 51 -1 1]); % subplot(2,2,4),plot(u(2:201,25));title('0.9');axis([1 201 -1 1]); % % % plot(cycle/200,u(90,25),'ro');axis([1 51 -0.05 0.3]) meshc(u);axis([0 ,41,0,301,-1, 1]); new_level = -1; % Get the handle to each patch object h = findobj('type','patch'); % Create a loop to change the height of each contour zd = get(h,'ZData'); for i = 1:length(zd) set(h(i),'ZData',new_level*ones(length(zd{i}),1)) end view([113 26]); title(cycle/1000) %hold on % clf; % vv=cumsum(-0.5*(v(2:end,:)+v(1:end-1,:))); % uu=cumsum(0.5*(u(:,2:end)+u(:,1:end-1)),2); % uu(1,:)=[];vv(:,1)=[]; % strf=uu+vv; % strf=strf/max(max(abs(strf))); % contour(strf',10); % % %%% % axis equal off; drawnow toc end end %hold off
评论
    相关推荐