格子玻尔兹曼 LBM 多孔介质沸腾 Gongchen双分布函数模型,matlab代码,有参考文献

一、代码整体概述

本代码基于格子玻尔兹曼方法(Lattice Boltzmann Method, LBM),实现了液汽相变传热过程的数值模拟,核心聚焦于池沸腾中气泡从加热表面的生长与脱离现象。代码采用双分布函数模型,通过密度分布函数描述流体流动特性,温度分布函数刻画热量传递过程,结合改进的伪势模型、Peng-Robinson状态方程及新推导的能量方程源项,有效降低了计算成本并提升了数值稳定性。

格子玻尔兹曼 LBM 多孔介质沸腾 Gongchen双分布函数模型,matlab代码,有参考文献

代码整体采用MATLAB编写,模块化结构清晰,分为初始化模块、碰撞模块、边界处理模块、力计算模块、宏观物理量更新模块、可视化模块及状态方程求解模块,各模块协同完成从初始条件设置、中间过程演化到结果输出的全流程模拟。

二、核心理论基础

1. 双分布函数模型

  • 密度分布函数:用于描述流体的质量守恒与动量传递,通过演化方程求解流体密度、速度等宏观物理量,采用D2Q9离散速度模型。
  • 温度分布函数:用于描述热量传递过程,通过能量方程演化求解温度场,同样采用D2Q9离散格式,与密度分布函数通过温度项耦合。

2. 关键物理模型

  • 改进的伪势模型:自动实现相分离,无需显式追踪相界面,降低计算复杂度,通过粒子间相互作用力公式调控相分离过程。
  • Peng-Robinson状态方程:精准描述真实气体(如本文中的水)的液汽平衡特性,通过临界温度、临界压力等参数计算流体压力,为相变速率提供热力学基础。
  • 能量方程源项:新推导的源项形式避免了密度对时间的微分计算,减少计算资源消耗,同时考虑相变过程中的能量交换。
  • 力模型:包含粒子间相互作用力、流固相互作用力(调控接触角)及重力,全面刻画流体运动的驱动力。

三、模块详细功能解读

1. 常量定义模块(constant.m)

功能定位

定义模拟所需的全局常量、物理参数及初始设定值,为整个模拟提供基础参数支撑。

核心参数说明
参数名 物理意义 取值/设定方式
lx, ly 计算域网格尺寸(x/y方向) lx=299,ly=188
a, b Peng-Robinson方程参数 a=2/49,b=2/21
R 气体常数 R=1
ome 偏心因子(水的特性参数) ome=0.344
Tc 临界温度 由a、b、R推导计算
Ts, Tb 饱和温度、本体温度 Ts=0.9*Tc,Tb=Ts+dT(dT=0.00729)
rhol, rhov 液体/蒸汽密度 rhol=5.9,rhov=0.58
c_squ 格子声速平方 c_squ=cc²/3(cc=1)
taul, taog 流体/温度松弛时间 taul=3*0.1+0.5,初始taog同tau_l
关键功能
  • 初始化网格尺寸、物理常数及热力学参数,确保模拟的一致性;
  • 设定流体的初始密度、温度基准值,为后续初始化模块提供输入;
  • 定义全局变量(如lambda、obst_r),供其他模块调用。

2. 初始化模块(initalization.m)

功能定位

完成模拟初始状态的构建,包括分布函数、宏观物理量、障碍物(固体区域)的初始化设置。

核心初始化内容
  • 分布函数初始化
  • 密度分布函数(ff):基于平衡分布函数(fequi)初始化,fequi通过D2Q9格式的平衡态公式计算,初始流速为0时,fequi仅与密度相关。
  • 温度分布函数(gg):基于温度平衡分布函数(gequi)初始化,gequi与温度、流速相关,初始流速为0时简化为温度的函数。
  • 宏观物理量初始化
  • 密度(rho):初始全域设为液体密度rho_l,后续可通过修改代码指定局部蒸汽区域。
  • 温度(T):初始全域设为饱和温度Ts。
  • 流速(ux, uy, Ux, Uy):初始全域设为0,其中Ux、Uy为温度分布函数对应的流速(包含力的影响)。
  • 障碍物与边界初始化
  • 障碍物(obst):通过坐标设定固体区域(值为1),包括左侧边界及多个离散的固体块(模拟加热表面缺陷或多孔介质结构)。
  • 边界标识(Boundary):提取障碍物区域的索引,用于后续边界条件处理。
  • 离散速度与权重:定义D2Q9格式的离散速度向量(ee)、权重系数(t)及反向速度索引(opp)。
关键功能
  • 构建符合物理场景的初始状态,如含固体障碍物的液域环境;
  • 为分布函数、宏观物理量分配内存并赋予初始值,确保模拟启动的合理性;
  • 定义离散格式的核心参数(速度、权重),为碰撞、迁移模块提供基础。

3. 碰撞模块(collision1.m)

功能定位

实现分布函数的碰撞演化过程,包括动量交换、能量交换及源项添加,是LBM模拟的核心模块。

核心计算流程
  • 速度增量计算:由流体所受合力(Fx, Fy)与密度计算速度增量(deltux, deltuy),反映力对流体运动的影响。
  • 温度松弛时间更新:根据局部密度动态调整温度松弛时间(tao_g),适配液汽两相不同的热扩散特性。
  • 密度分布函数碰撞
    1. 计算平衡分布函数(fequi)及考虑速度增量后的平衡分布函数(deltfequi);
    2. 采用精确差分法处理源项(ffout = deltfequi - fequi),避免传统方法的数值不稳定性;
    3. 应用BGK碰撞算子更新密度分布函数:fout = ff - (ff - fequi) + ffout。
  • 温度分布函数碰撞
    1. 计算温度平衡分布函数(gequi),考虑流速对温度分布的影响;
    2. 调用forcestempture函数计算温度源项(PSI),包含相变能量交换;
    3. 应用BGK碰撞算子更新温度分布函数:gout = gg - tao
    g*(gg - gequi) + PSI。
关键功能
  • 实现动量与能量的局部平衡演化,遵循LBM的动力学特性;
  • 引入动态松弛时间和精确差分法,提升数值稳定性和计算精度;
  • 耦合温度源项,实现相变过程中的能量传递模拟。

4. 力计算模块

4.1 流体力学力计算(forces.m)
功能定位

计算流体所受的各类力学作用,包括粒子间相互作用力、流固相互作用力及重力,为碰撞模块提供力输入。

核心力分量计算
  • 粒子间相互作用力(Fmx, Fmy):基于改进的伪势模型,通过有效质量(psx)及离散速度的循环移位计算,分为线性项(Fmx1, Fmy1)和二次项(Fmx2, Fmy2),通过权重系数(belt)调控。
  • 流固相互作用力(Fsx, Fsy):通过障碍物标识(sre)和流固作用强度(Gs)计算,用于调控固体表面的润湿性(接触角)。
  • 重力(Fy分量):通过密度与平均密度的差值调控,模拟重力场对气泡运动的影响(Fy = Fy - (rho - mean(rho))*1e-4)。
  • 流速修正:基于密度分布函数计算的流速(ux, uy),结合力的影响修正得到温度分布函数对应的流速(Ux = ux + 0.5*Fx/rho,Uy同理)。
关键功能
  • 全面考虑多物理场力的作用,精准刻画流体运动的驱动力;
  • 通过流固相互作用力调控接触角,适配不同的表面润湿性场景;
  • 实现流速的修正,确保双分布函数模型的耦合一致性。
4.2 温度源项计算(forces_tempture.m)
功能定位

计算温度分布函数的源项(psi),该源项反映相变过程中的能量交换及热扩散效应。

核心计算逻辑
  • 比热容插值:根据局部密度线性插值液体比热容(cpl)和蒸汽比热容(cpv),得到混合比热容(cp, cv)。
  • 热导率计算:基于比热容、密度及动态热扩散系数计算热导率(lambda)。
  • 空间导数计算:通过循环移位实现空间一阶导数(partx, party)和二阶导数(part2)的离散计算,分别对应流速散度和热扩散项。
  • 源项合成:psi = 热扩散项 - 修正项 + 相变能量项,其中相变能量项与流速散度、温度及比热容相关,反映相变过程的能量吸收/释放。
关键功能
  • 实现温度源项的精细化计算,考虑液汽两相热物理性质的差异;
  • 通过离散导数计算,确保热扩散过程的数值精度;
  • 耦合相变能量交换,为液汽相变提供热力学驱动。

5. 边界处理模块(boundary.m)

功能定位

实现计算域边界的物理条件施加,包括热边界、流动边界及固体边界的处理,确保模拟的物理合理性。

核心边界处理
  • 热边界(上下边界)
  • 下边界(ly=1):设定热流边界,温度为Tb = T(:,2) + 0.0001,采用非平衡外推法更新温度分布函数(gg),即gg(k,:,1) = gequi(k,:,1) + gg(k,:,2) - gequi(k,:,2)。
  • 上边界(ly=ly_max):设定饱和温度边界(Ts),同样采用非平衡外推法更新gg。
  • 流动边界(上边界)
  • 上边界设定液体密度(rho_l),采用非平衡外推法更新密度分布函数(ff),确保边界处的质量守恒。
  • 固体边界(障碍物区域)
  • 采用反弹边界条件,即ff(k,Boundary) = tempt(opp(k),Boundary),确保固体表面流体无穿透,动量守恒。
关键功能
  • 实现多种边界条件的灵活施加,适配热流、等温、恒密度等不同物理场景;
  • 采用非平衡外推法和反弹法,确保边界处理的数值稳定性和物理一致性;
  • 区分双分布函数的边界处理逻辑,确保流动与传热边界的耦合合理性。

6. 宏观物理量更新模块(macrop.m)

功能定位

从分布函数中提取宏观物理量(密度、温度、压力),并基于Peng-Robinson状态方程更新压力,为后续力计算和边界处理提供输入。

核心更新逻辑
  • 密度更新:rho = sum(ff, 1),即密度为密度分布函数在所有离散速度方向上的求和。
  • 温度更新:T = sum(gg, 1),即温度为温度分布函数在所有离散速度方向上的求和(仅在cycle>0时更新)。
  • 压力更新
  • 计算偏心因子修正项(phi),依赖于温度与临界温度的比值。
  • 基于Peng-Robinson状态方程计算压力:p = rhoRT/(1 - brho) - aphirho²/(1 + 2brho - b²rho²)。
关键功能
  • 实现宏观物理量与微观分布函数的转换,衔接LBM的微观演化与宏观物理表现;
  • 基于真实气体状态方程计算压力,确保液汽相变的热力学准确性;
  • 为力计算模块提供压力输入,实现力学与热力学的耦合。

7. 可视化模块(visua.m)

功能定位

实时可视化模拟过程中的关键宏观物理量,生成动态GIF文件,便于结果分析与展示。

核心可视化内容
  • 子图布局:2x2子图分别展示密度、流速大小、压力、温度的空间分布。
  • 可视化逻辑
  • 采用imagesc函数绘制二维分布,flipud函数调整坐标方向(使物理上的向上为图像的向上)。
  • 采用jet颜色映射,搭配colorbar显示数值范围。
  • 每间隔tPlot=500个时间步保存一帧图像,合成GIF文件(多孔沸腾.gif),设置循环播放和帧延迟时间。
关键功能
  • 实时监控模拟过程,直观反映气泡生长、脱离及流场、温度场的演化;
  • 生成高质量动态结果文件,为后续分析和学术展示提供支持;
  • 多物理量同步可视化,便于分析各物理场的耦合关系。

8. 状态方程求解模块(solve.m)

功能定位

独立求解Peng-Robinson状态方程,获取特定温度下的液汽平衡压力及对应的密度,用于验证模拟结果的热力学一致性。

核心求解逻辑
  • 状态方程绘图:绘制给定温度下(T=0.86*Tc)压力随比体积(Vm)的变化曲线。
  • 液汽平衡求解:通过二分法调整压力(P),使液汽两相的吉布斯自由能相等(即积分面积S1=S2),最终得到平衡压力P及对应的液体/蒸汽比体积(V1, V2),进而计算密度(rho1=1/V2, rho2=1/V1)。
关键功能
  • 验证Peng-Robinson状态方程的参数设置合理性;
  • 提供液汽平衡的基准数据,用于对比模拟中的相平衡结果;
  • 独立于主模拟流程,可单独运行用于参数校准。

9. 主程序模块(main.m)

功能定位

整合所有模块,实现模拟的循环迭代,控制模拟流程的启停与节奏。

核心流程
  1. 初始化:调用constant.m和initalization.m,完成参数与初始状态设置。
  2. 循环迭代(cycle=1到maxT=100000):
    - 碰撞演化:调用collision1.m,更新分布函数。
    - 迁移演化:通过circshift函数实现分布函数的空间迁移(沿离散速度方向)。
    - 边界处理:调用boundary.m,施加边界条件。
    - 宏观量更新:调用macrop.m,提取并更新宏观物理量。
    - 力计算:调用forces.m,计算流体所受各类力。
    - 可视化:调用visua.m,按需保存可视化结果。
关键功能
  • 按LBM的“碰撞-迁移”核心逻辑组织模拟流程,确保数值演化的正确性;
  • 控制模拟的时间步长和总时长,适配不同的模拟需求;
  • 模块化调用各功能模块,便于维护和扩展。

四、代码运行流程与依赖

1. 运行流程

  1. 启动MATLAB,将代码所在目录设为当前工作目录;
  2. 运行main.m,程序自动调用各模块完成初始化;
  3. 进入循环迭代,依次执行碰撞、迁移、边界处理、宏观量更新、力计算、可视化;
  4. 模拟结束后,生成动态GIF文件(多孔沸腾.gif),包含密度、流速、压力、温度场的演化过程。

2. 依赖说明

  • 运行环境:MATLAB(建议R2016b及以上版本),无需额外工具箱;
  • 模块依赖:各模块通过全局变量和函数调用实现数据交互,依赖关系为:main → [collision1, boundary, macrop, forces] → [forces_tempture],初始化模块为所有模块提供初始数据。

五、代码核心优势与应用场景

1. 核心优势

  • 双分布函数耦合:分离密度与温度分布函数,兼顾流动与传热的模拟精度,耦合逻辑清晰。
  • 数值稳定性高:采用改进的伪势模型、精确差分法和动态松弛时间,有效避免数值振荡。
  • 热力学一致性好:集成Peng-Robinson状态方程,精准描述真实流体的液汽平衡特性。
  • 计算效率高:无需显式追踪相界面,相分离自动实现,降低计算成本。
  • 模块化设计:各功能模块独立封装,便于修改参数、扩展功能(如扩展到3D模拟)。

2. 应用场景

  • 池沸腾中气泡生长、脱离的数值模拟;
  • 不同表面润湿性(接触角)对沸腾传热的影响研究;
  • 重力场对气泡动力学特性的影响分析;
  • 液汽相变传热的基础理论验证与参数优化。

六、注意事项与参数调整建议

1. 注意事项

  • 网格尺寸(lx, ly)需根据模拟场景调整,过小可能导致气泡演化不充分,过大则增加计算成本;
  • 力参数(G、Gs)需合理设置,G过大会导致气泡脱离过快,Gs过大会影响接触角的稳定性;
  • 松弛时间(taul, taog)需在合理范围内(通常0.5~1.0),否则可能导致数值发散;
  • 模拟总时长(maxT)需根据气泡生长周期调整,确保捕捉到完整的气泡生长-脱离过程。

2. 参数调整建议

  • 若需模拟不同流体,需修改Peng-Robinson方程参数(a, b)、偏心因子(ome)及临界温度(Tc);
  • 若需调整表面润湿性,可修改流固作用强度(Gs);
  • 若需研究重力的影响,可修改重力加速度相关参数(Fy中的1e-4项);
  • 若需提高热扩散模拟精度,可调整热扩散系数相关参数(forces_tempture.m中的0.18、0.05项)。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐