这个例子采用 MRT-LBM 模拟矩形腔绕流--基于 MRT-LBM 的流场与声场仿真计算 --王富海2017

%这个例子采用 MRT-LBM 模拟矩形腔绕流
%基于 MRT-LBM 的流场与声场仿真计算 --王富海2017
%上边界速度边界,其它边界-上下非平衡反弹格式-无滑移壁面
%还是老规矩先宣传一下QQ群: 格子玻尔兹曼救星:293267908。
clc
clear
close all
 
%设置仿真参数
 uMax=0.1;%中间最大速度
 xLen=151; %水平方向格子数   
 yLen=101;%垂直方向格子数
 Re=100; %雷诺数
 nu=uMax*(xLen-1)/Re; %运动粘性
 Cs=sqrt(1/3);%格子声速
 tau=1/2+3*nu;%松弛时间
 omega=1/tau;%松弛频率
 step=1000;%最大迭代次数
 rhoo=1;%初始化密度
 checkStep=100;%收敛计算间隔
 saveStep=20;%保存结果间隔
 filePath=uigetdir('*.*','D:\MyStudy\MATLAB\YuBrian')%仿真中间过程图片的保存路径
 VSSum=[];%所有节点格子速度总和-每 saveStep 步记录一次
 VSSum2=[]; %所有节点格子速度总和-每 checkStep 步记录一次,监视收敛曲线
 %D2Q9 模型参数
 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];%各方向 x 速度分量
 cy=[ 0 1 0 -1 1 1 -1 -1 0];%各方向 y 速度分量
 M=[1 1 1 1 1 1 1 1 1;-4 -1 -1 -1 -1 2 2 2 2;4 -2 -2 -2 -2 1 1 1 1; ...
        0 1 0 -1 0 1 -1 -1 1;0 -2 0 2 0 1 -1 -1 1;0 0 1 0 -1 1 1 -1 -1; ...
        0 0 -2 0 2 1 1 -1 -1;0 1 -1 1 -1 0 0 0 0;0 0 0 0 0 1 -1 1 -1;]
 %  由于分布函数 0 索引被放置在 matlab  索引 9 的位置,所以将 M 第一列放到最后。
 
M=circshift(M,[-1 -1]);                                                                  
        s1(9)=0;
        s1(3)=s1(9);
          s1(5)=s1(9);
          s1(7)=omega;
          s1(8)=s1(7);
          s1(4)=1.2;
          s1(6)=s1(4);
          s1(1)=omega;
          s1(2)=s1(1)-0.1;
 s=diag(s1);%对角矩阵-松弛因子
 Minv=inv(M);
 Minv_s=Minv*s;
 
 
%  网格节点初始化,初始化各节点密度=1  ,初始化各节点速度为 0,初始化各节点分布函数=平衡分布函数
 
for i=1:xLen
      for j=1:yLen
          rho(i,j)=rhoo;
      

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MRT-LBM是一种基于Lattice Boltzmann方法的流体模拟算法。在该算法中,通过跟踪分布函数的矩以及求解矩的守恒方程,从而实现对流体的模拟。而多松弛MRT-LBM算法则是对传统MRT-LBM算法的改进,通过在求解扰动矩的同时将矩与流体的不同物理量相关联,提高了其稳定性和精度。 在多松弛MRT-LBM代码的优化过程中,可以考虑以下几个方面。首先,对于遍历网格的方式和遍历顺序进行优化,减少内存读取的次数,提高代码的效率。其次,可以针对特定模拟场景,将不同的物理量和相应的矩分别处理,进一步提高程序的效率。此外,可以对流体粘性以及模拟场景的物理参数进行适当调整,优化算法的计算过程,从而实现更高的模拟速度和更精准的模拟结果。 另外,在运行代码之前,我们还需要对计算设备进行合理配置和优化,如选择合适的硬件设备、调整相应的驱动程序和系统设置等。此外,在代码的开发中,也需要充分考虑代码的可读性和可维护性,提高代码的稳定性和可扩展性,以便于进行后续的优化和修复工作。 综上所述,多松弛MRT-LBM代码的优化需要从多个方面进行考虑,包括对遍历方式、物理量处理、参数调整、计算设备配置等等,以实现其效率和精度的最佳平衡。同时也需要注重代码的可读性和可维护性,以便于后续的开发和修复工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值