⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poiseuille01.m

📁 伯肃叶流动用格子boltzmann方法去扩展新的研究方法
💻 M
字号:
%*****************Poiseuille flow using LBM***********************%%Based on procedures as explained in 'Lattice Gas Cellular Automata and Lattice  Boltzmann%Models'by Wolf Gladrow%code may have errors as it is my first experience with LBM.Readers are%suggested to check the code for errors.For feedback%vinuvargheseijk@gmail.comOMEGA=0.2;%Relaxation factorTAU=1/OMEGA;XMAX=20;%Mesh size in x-directionYMAX=20;%Mesh size in y-directionFORCING=(1.024)/YMAX^3;%Forcing term in Poiseuille equationKVISC = ((1/OMEGA)-0.5)/3;%lattice viscosityUX=(0.5*FORCING*YMAX*YMAX)/KVISC;%Velocity in x-direction cx=[1 0 -1 0 1 -1 -1 1 0];%components of lattice velocities in x-directioncy=[0 1 0 -1 1 1 -1 -1 0];%components of lattice velocities in y-directionjx=zeros(XMAX,YMAX);%creating an array for storing momentum in x-directionjy=zeros(XMAX,YMAX);%creating an array for storing momentum in y-directionrho=ones(XMAX,YMAX);%creating an array for storing densitiesf=zeros(XMAX,YMAX);%creating an array for storing distributionsfprop=zeros(XMAX,YMAX);%creating an array for storing propagating distributionsx=1:XMAX;y=1:YMAX;MAXIT=input('Number of iterations');%Initializataion of distributions        u=jx./rho;        v=jy./rho;      f(x,y,1) = (rho./9)*(1+3.*u+4.5.*u.*u-1.5.*(u.^2+v.^2));      f(x,y,2) = (rho./9)*(1+3.*v+4.5.*v.*v-1.5*(u.^2+v.^2));      f(x,y,3) = (rho./9)*(1-3.*u+4.5.*u.*u-1.5*(u.^2+v.^2));      f(x,y,4) = (rho./9)*(1-3.*v+4.5.*v.*v-1.5*(u.^2+v.^2));      f(x,y,5) = (rho./36)*(1+3.*(u+v)+4.5*(u+v).^2-1.5*(u.^2+v.^2));      f(x,y,6) = (rho./36)*(1+3.*(-u+v)+4.5*(-u+v).^2-1.5*(u.^2+v.^2));      f(x,y,7) = (rho./36)*(1-3.*(u+v)+4.5*(u+v).^2-1.5*(u.^2+v.^2));      f(x,y,8) = (rho./36)*(1+3.*(u-v)+4.5*(u-v).^2-1.5*(u.^2+v.^2));      f(x,y,9) = (4/9)*rho.*(1-1.5*(u.^2+v.^2));%Initialization completed%Assign first fprop to equilibrium distributions.      fprop=f;        feq=zeros(20,20,9);for iter=1:MAXIT      u=jx./rho;      v=jy./rho;                       feq(x,2:YMAX-1,1) = (rho(x,2:YMAX-1)./9).*(1+3.*u(x,2:YMAX-1)+4.5.*u(x,2:YMAX-1).*u(x,2:YMAX-1)-1.5.*(u(x,2:YMAX-1).^2+v(x,2:YMAX-1).^2));      feq(x,2:YMAX-1,2) = (rho(x,2:YMAX-1)./9).*(1+3.*v(x,2:YMAX-1)+4.5.*v(x,2:YMAX-1).*v(x,2:YMAX-1)-1.5.*(u(x,2:YMAX-1).^2+v(x,2:YMAX-1).^2));      feq(x,2:YMAX-1,3) = (rho(x,2:YMAX-1)./9).*(1-3.*u(x,2:YMAX-1)+4.5.*u(x,2:YMAX-1).*u(x,2:YMAX-1)-1.5.*(u(x,2:YMAX-1).^2+v(x,2:YMAX-1).^2));      feq(x,2:YMAX-1,4) = (rho(x,2:YMAX-1)./9).*(1-3.*v(x,2:YMAX-1)+4.5.*v(x,2:YMAX-1).*v(x,2:YMAX-1)-1.5.*(u(x,2:YMAX-1).^2+v(x,2:YMAX-1).^2));      feq(x,2:YMAX-1,5) = (rho(x,2:YMAX-1)./36).*(1+3.*(u(x,2:YMAX-1)+v(x,2:YMAX-1))+4.5*(u(x,2:YMAX-1)+v(x,2:YMAX-1)).^2-1.5*(u(x,2:YMAX-1).^2+v(x,2:YMAX-1).^2));      feq(x,2:YMAX-1,6) = (rho(x,2:YMAX-1)./36).*(1+3.*(-u(x,2:YMAX-1)+v(x,2:YMAX-1))+4.5*(-u(x,2:YMAX-1)+v(x,2:YMAX-1)).^2-1.5*(u(x,2:YMAX-1).^2+v(x,2:YMAX-1).^2));      feq(x,2:YMAX-1,7) = (rho(x,2:YMAX-1)./36).*(1-3.*(u(x,2:YMAX-1)+v(x,2:YMAX-1))+4.5*(u(x,2:YMAX-1)+v(x,2:YMAX-1)).^2-1.5*(u(x,2:YMAX-1).^2+v(x,2:YMAX-1).^2));      feq(x,2:YMAX-1,8) = (rho(x,2:YMAX-1)./36).*(1+3.*(u(x,2:YMAX-1)-v(x,2:YMAX-1))+4.5*(u(x,2:YMAX-1)-v(x,2:YMAX-1)).^2-1.5*(u(x,2:YMAX-1).^2+v(x,2:YMAX-1).^2));      feq(x,2:YMAX-1,9) = ((4/9)*rho(x,2:YMAX-1)).*(1-1.5*(u(x,2:YMAX-1).^2+v(x,2:YMAX-1).^2));      %propagating distributions fprop by applying kinetic equation.      fprop = (1.0-OMEGA).* f + OMEGA.* feq;      force =FORCING/6;      fprop(x,2:YMAX-1,1) = fprop(x,2:YMAX-1,1) + force;      fprop(x,2:YMAX-1,3) = fprop(x,2:YMAX-1,3) - force;      fprop(x,2:YMAX-1,5) = fprop(x,2:YMAX-1,5) + force;      fprop(x,2:YMAX-1,6) = fprop(x,2:YMAX-1,6) - force;      fprop(x,2:YMAX-1,7) = fprop(x,2:YMAX-1,7) - force;      fprop(x,2:YMAX-1,8) = fprop(x,2:YMAX-1,8) + force;       %Copying the boundary values.            fprop(x,1,:) = f(x,1,:);            fprop(x,YMAX,:) = f(x,YMAX,:);%        C6  C2  C5       ^ y%          \ | /          |%        C3-C0-C1         | %          / | \          | %        C7  C4  C8         -----> x       p=2:XMAX;       q=2:YMAX;       r=1:XMAX-1;       s=1:YMAX-1;       %Propagating C1              f(p,y,1) = fprop(p-1,y,1);      %Propagating C2       f(x,q,2) = fprop(x,q-1,2);      %Propagating C3       f(r,y,3) = fprop(r+1,y,3);      %Propagating C4          f(x,s,4) = fprop(x,s+1,4);       %Propagating C5        f(p,q,5) = fprop(p-1,q-1,5);      %Propagating C6       f(r,p,6) = fprop(r+1,p-1,6);      %Propagating C7      f(r,s,7) = fprop(r+1,s+1,7);      %Propagating C8      f(p,s,8) = fprop(p-1,s+1,8);            %Propagating C9      f(x,y,9) = fprop(x,y,9);            %Complete Bounce Back Boundary Conditions      %1.Implementing Periodic BC.f(x(1),y,1)=fprop(XMAX,y,1);f(XMAX,y,3)=fprop(x(1),y,3);f(x(1),2:YMAX,5)=fprop(XMAX,1:YMAX-1,5);f(XMAX,2:YMAX,6)=fprop(x(1),1:YMAX-1,6);f(XMAX,1:YMAX-1,7)=fprop(x(1),2:YMAX,7);f(x(1),1:YMAX-1,8)=fprop(XMAX,2:YMAX,8);   %2.Bounce Back Begins.temp=f(1:XMAX,1,2);f(1:XMAX,1,2)=f(1:XMAX,1,4);f(1:XMAX,1,4)=temp;temp=f(1:XMAX,YMAX,4);f(1:XMAX,YMAX,4)=f(1:XMAX,YMAX,2);f(1:XMAX,YMAX,4)=temp;temp=f(1:XMAX,1,5);f(1:XMAX,1,5)=f(1:XMAX,1,7);f(1:XMAX,1,7)=temp;temp=f(1:XMAX,YMAX,7);f(1:XMAX,YMAX,7)=f(1:XMAX,YMAX,5);f(1:XMAX,YMAX,5)=temp;temp=f(1:XMAX,1,6);f(1:XMAX,1,6)=f(1:XMAX,1,8);f(1:XMAX,1,8)=temp;temp=f(1:XMAX,YMAX,8);f(1:XMAX,YMAX,8)=f(1:XMAX,YMAX,6);f(1:XMAX,YMAX,6)=temp;rho(x,y) = f(x,y,1)+f(x,y,2)+f(x,y,3)+f(x,y,4)+f(x,y,5)+f(x,y,6)+f(x,y,7)+f(x,y,8)+f(x,y,9);jx(x,y)=f(x,y,1)-f(x,y,3)+f(x,y,5)-f(x,y,6)-f(x,y,7)+f(x,y,8);%Distributions multiplied by lattice velocities in x-directionsjy(x,y)=f(x,y,2)-f(x,y,4)+f(x,y,5)+f(x,y,6)-f(x,y,7)-f(x,y,8);%Distributions multiplied by lattice velocities in y-directionsuprofile(1:YMAX)=sum(jx(1:XMAX,1:YMAX)./rho(1:XMAX,1:YMAX))/XMAX;%Velocity profile in x-directionplot(uprofile)pause(.1)end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -