% 圆柱绕流问题
clear,clc;
% 流体的一般常量
lx=250;
ly=51;
obst_x=lx/5+1;
obst_y=ly/2+1; % 障碍物的坐标,y向不能对称
obst_r=ly/10+1; % 圆柱的半径
uMax=0.02; %(泊肃叶流)管内不可压缩粘性层流的最大速度
Re=100; % 雷诺数
nu=uMax*2.*obst_r/Re;% 运动粘度
omega=1./(3*nu+1./2.);% 松弛因子
maxT=40000; % 迭代最大次数
tPlot=5; % 循环次数
% D2Q9的晶格常数
t=[4/9,1/9,1/9,1/9,1/9,1/36,1/36,1/36,1/36];
cx=[0,1,0,-1,0,1,-1,-1,1];
cy=[0,0,1,0,-1,1,1,-1,-1];
opp=[1,4,5,2,3,8,9,6,7];
col=[2:(ly-1)];
[y,x]=meshgrid(1:ly,1:lx); %生成网格采样点
obst=(x-obst_x).^2+(y-obst_y).^2<=obst_r.^2;
obst(:,[1,ly])=1;
bbRegion=find(obst); %寻找障碍物在矩阵中的位置
% 初始条件:(rho=0, u=0) ==> fIn(i) = t(i)
fIn=reshape(t'*ones(1,lx*ly),9,lx,ly); %重新调整矩阵的行数、列数、维数
% 主循环
for cycle=1:maxT
% 宏观变量
rho=sum(fIn);
ux=reshape( ...
(cx * reshape(fIn,9,lx*ly)), 1,lx,ly) ./rho;
uy=reshape( ...
(cy * reshape(fIn,9,lx*ly)), 1,lx,ly) ./rho;
% 狄利克雷边界条件
% 输入端:泊肃叶剖面
L=ly-2; y =col-1.5;
ux(:,1,col)=4*uMax/(L*L)*(y.*L-y.*y);
uy(:,1,col)=0;
rho(:,1,col) = 1 ./ (1-ux(:,1,col)) .* ( ...
sum(fIn([1,3,5],1,col)) + ...
2*sum(fIn([4,7,8],1,col)) );
% 输出端:rho/ux的梯度为0
rho(:,lx,col)=rho(:,lx-1,col);
uy(:,lx,col)=0;
ux(:,lx,col)=ux(:,lx-1,col);
% 碰撞过程
for i=1:9
cu = 3*(cx(i)*ux+cy(i)*uy);
fEq(i,:,:)=rho.*t(i).*(1+cu +1/2*(cu.*cu)-3/2*(ux.^2+uy.^2));
fOut(i,:,:)=fIn(i,:,:)-omega .*(fIn(i,:,:)-fEq(i,:,:));
end
% 微观的边界条件
for i=1:9
% Left boundary
fOut(i,1,col) = fEq(i,1,col) + ...
18*t(i)*cx(i)*cy(i)* ( fIn(8,1,col) - ...
fIn(7,1,col)-fEq(8,1,col)+fEq(7,1,col) );
% Right boundary
fOut(i,lx,col) = fEq(i,lx,col) + ...
18*t(i)*cx(i)*cy(i)* ( fIn(6,lx,col) - ...
fIn(9,lx,col)-fEq(6,lx,col)+fEq(9,lx,col) );
% Bounce back region 反弹区
fOut(i,bbRegion) = fIn(opp(i),bbRegion);
end
% 迁移过程
for i=1:9
fIn(i,:,:)=circshift(fOut(i,:,:),[0,cx(i),cy(i)]);
end
% 可视化
if (mod(cycle,tPlot)==0) %余数等于0
u=reshape(sqrt(ux.^2+uy.^2),lx,ly);
u(bbRegion)=nan; %挖掉圆柱区域
imagesc(u');
axis equal; drawnow
end
end
%[x,y]=meshgrid(1:250,1:1);
x=1:250;y=1:51;
for i=1:51
ux1(i,:)=ux(:,:,i);
uy2(i,:)=uy(:,:,i);
end
figure(2)
quiver(x,y,ux1,uy2)
%streamline(x,y,ux(:,:,51),uy(:,:,51))
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的对格子Boltzmann方法中经典的D2Q9模型进行编程求解 单相流体在单通道中的流动情况+使用说明文档
共2个文件
md:1个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 133 浏览量
2024-05-22
17:32:01
上传
评论
收藏 6KB RAR 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的对格子Boltzmann方法中经典的D2Q9模型进行编程求解该程序模拟了单相流体在单通道中的流动情况,在流动通道中可以添加不渗透固体,从而用于模拟流体扰流的情况进一步可以增加不渗透固体的数量,达到模拟流体在多孔介质中的二维流动该程序适用于初学者对LBM方法编程求解的理解,经二次开发后可以用于油气勘探开发领域+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的对格子Boltzmann方法中经典的D2Q9模型进行编程求解该程序模拟了单相流体在单通道中的流动情况,在流动通道中可以添加不渗透固体,从而用于模拟流体扰流的情况进一步可以增加不渗透固体的数量,达到模拟流体在多孔介质中的二维流动该程序适用于初学者对LBM方法编程求解的理解,经二次开发后可以用于油气勘探开发领域+使用说明文档.rar (2个子文件)
使用说明文档.md 13KB
lattice boltzmann method for single phase flow.m 3KB
共 2 条
- 1
资源评论
IT狂飙
- 粉丝: 4776
- 资源: 2641
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功