LAMMPS fix lb/viscous 命令详解:将格子玻尔兹曼流体水动力作用于粒子

发布时间:2026/10/16 2:01:20

LAMMPS fix lb/viscous 命令详解:将格子玻尔兹曼流体水动力作用于粒子 科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载导读fix lb/viscous是 LAMMPS LATBOLTZ 包中与fix lb/fluid配套的核心命令当系统中存在显式格子玻尔兹曼Lattice-BoltzmannLB流体时它负责把流体对粒子的水动力反作用力施加到 MD 粒子上使粒子随流体漂移等效于一个流体被显式建模的 Langevin 恒温器。本文结合 fix_lb_viscous 官方文档、fix_lb_fluid 文档 与 源码实现讲解其语法、底层力计算、与积分器/热噪声的配合方式并通过 LATBOLTZ 包自带的微流变、拖曳、聚合物易位等示例给出可直接运行的实战配置。命令定位LATBOLTZ 包与显式 LB 流体LATBOLTZ 包在 LAMMPS 中实现了一个覆盖整个模拟域的背景格子玻尔兹曼流体用于模拟受水动力影响的 MD 粒子。该包位于 src/LATBOLTZ共提供三个 fix见 src/LATBOLTZ/README文件命令职责fix_lb_fluid.cppfix lb/fluid在网格上创建并演化 LB 流体接收粒子对流体施加的力fix_lb_viscous.cppfix lb/viscous把流体的水动力反作用力施加到粒子上fix_lb_momentum.cppfix lb/momentum周期性清零系统粒子流体总动量根据 Packages_details.rstLATBOLTZ 包由 University of Western Ontario 的 Frances Mackay 与 Colin Denniston 开发要求 LAMMPS 以 MPI 并行模式构建——fix_lb_fluid.h中通过#error The LATBOLTZ package cannot be compiled in serial with MPI STUBS强制了这一约束因此不能使用串行 Makefile 编译。关键的一点是fix lb/fluid只计算粒子施加给流体的力本身并不把流体对粒子的水动力反作用力加回粒子详见 fix_lb_fluid 文档 中的 note。如果只使用fix lb/fluid而不搭配fix lb/viscous物理上等价于一个质量无穷大的粒子穿过流体——因为粒子与流体的碰撞不会改变粒子速度。fix lb/viscous正是唯一负责把水动力hydrodynamic力写入粒子总受力的途径。语法与示例fix lb/viscous的语法极为简洁没有任何额外参数fix ID group-ID lb/viscousID、group-ID的语义与所有 fix 命令 一致lb/viscous是该 fix 的风格名。官方示例fix 1 flow lb/viscous由于 LATBOLTZ 包的多个实例脚本都直接沿用了这一写法例如 microrheology/in.microrheology、translocation/in.translocation、dragforce/in.dragtest实际使用中最常见的形态是fix 2 FluidAtoms lb/viscous即把 fix 施加到与流体相互作用的粒子组例如胶体颗粒表面的壳层原子FluidAtoms上。工作原理拖曳力与质量因子与 fix viscous 的关系官方文档明确指出fix lb/viscous与 fix viscous 类似但只能在通过fix lb/fluid创建了 LB 流体的系统中使用并替代fix viscous。fix viscous施加的阻尼力是F_i -γ·v_iγ 由用户直接给定量纲为力/速度而fix lb/viscous无需用户指定任何阻尼系数——流体速度场、局部流体质量和力耦合常数全部由fix lb/fluid在内部计算完成。底层力计算源码视角从 fix_lb_viscous.cpp 的post_force()可以看出核心逻辑double **f atom-f; double *massp fix_lb_fluid-massp; double **hydroF fix_lb_fluid-hydroF; if (rmass) { for (int i 0; i nlocal; i) if (mask[i] groupbit) { massfactor rmass[i] / (rmass[i] massp[i]); f[i][0] hydroF[i][0] massfactor * f[i][0]; f[i][1] hydroF[i][1] massfactor * f[i][1]; f[i][2] hydroF[i][2] massfactor * f[i][2]; } }即每个原子的最终受力为F_total F_hydrodynamic (m_particle / (m_particle m_fluid_local)) · F_other其中hydroF[i]是fix lb/fluid内部计算并保存的水动力力源自在 fix_lb_fluid.cpp 中由F_jα γ(v_n - u_f)ζ反演得到的粒子所受流体作用力单位为 LAMMPS 单位massp[i]是该粒子所耦合的代表性流体质量m_u在 fix_lb_fluid.cpp 中由mnode * dm_lb换算得到massfactor用于把粒子原有的其他受力如成键、硬球排斥按质量比拆分一部分留给粒子、一部分传给流体保证粒子所耦合流体系统的动量守恒。这一设计的物理含义是fix lb/fluid内部按公式γ (2·m_u·m_v) / (m_u m_v) · (1/Δt)计算力耦合常数见 fix_lb_fluid 文档使粒子与其周围流体在时间步末速度一致——类似约束如 SHAKE会扣除部分自由度这些自由度在算法内部被自动计入。fix lb/viscous在POST_FORCE阶段把流体反力合入粒子总力随后由任何内置积分器完成粒子运动积分。力方向的直观理解官方文档将该 fix 的作用概括为对每个原子施加粘性力使其随流体以相同速度运动——流体对粒子的拖曳力方向与粒-流相对速度相反v_n - u_f这正是无滑移 Stokes 拖曳的离散实现而等大反向的力通过fix lb/fluid施加到流体的对应网格点上源码中以Ffull[k]通过插值权重TfP[isten]分布回流体网格见 fix_lb_fluid.cpp从而构成粒子-流体的双向动量交换。与 fix lb/fluid 的配合显式流体的Langevin 等效fix lb/viscous必须与fix lb/fluid成对使用。当fix lb/fluid指定了noise选项热 LB 算法基于 Adhikari 等人的 fluctuating lattice Boltzmann 方法时流体自带涨落粒子在受到拖曳力的同时还会感受到随机碰撞力从而被热化到与流体相同的温度。官方文档给出的等价关系是fix lb/viscousfix lb/fluid 内置积分器如fix nve或fix rigid≈fix langevin但此处流体是显式的差异在于普通fix langevin中的随机力与阻尼项全部来自隐式溶剂模型而 LATBOLTZ 方案中能量注入与耗散均来自真实演化的流体场因此可以自然再现布朗运动、流体力学相互作用HI与流动场耦合等效应。粒子的温度可以通过fix lb/fluid输出的全局标量监测f_ID可被thermo_style等输出命令访问。该标量是粒子组 与之约束共同运动的流体的当前温度由动能和内部计算的总自由度得出。若粒子还受额外约束例如用fix rigid刚性积分被约束扣除的自由度不会自动计入此时需通过fix lb/fluid的dof关键字手动指定自由度总数。此外fix lb/fluid还输出一个含 5 项的全局数组第 1 项为流体温度第 2 项为流体粒子总质量第 3~5 项为总动量三分量均可用于输出与守恒量监控。实战配置基于官方示例的完整用法LATBOLTZ 包在 examples/PACKAGES/latboltz 下提供了 9 组示例microrheology、translocation、polymer、diffusingsphere、confined_colloid、dragforce、pit_geometry、planewall、toycar全部以fix lb/viscous作为水动力反馈环节。以下提炼三种典型模式。模式一微流变学——刚性胶体在热流体中布朗运动microrheology/in.microrheology 模拟两个胶体颗粒在水中的布朗运动其核心配置为units nano dimension 3 boundary p p p atom_style molecular neighbor 0.3 bin neigh_modify delay 0 every 1 comm_modify cutoff 2.5 # 通信截断至少为 2 dx pair_style lj/cut 5.88 pair_coeff * * 0.0 0.0 5.88 pair_coeff 1 1 100.0 5.238484463 5.88 pair_modify shift yes mass * 0.0002398 timestep 0.00025 group ForceAtoms type 1 # 胶体中心不直接与流体作用负责硬球势 group FluidAtoms type 2 # 胶体表面壳层与流体作用 fix 1 FluidAtoms lb/fluid 1 1.0 0.0009982071 dx 1.2 stencil 2 noise 300.0 2762 fix 2 FluidAtoms lb/viscous fix 3 all rigid molecule fix 4 all lb/momentum 50000 linear 1 1 1 run 2000要点注释中明确说明fix lb/fluid只计算粒子对流体的力反作用力必须由fix lb/viscous完成脚本注释原文this is accomplished through the use of the lb/viscous fix水的参数取viscosity1.0、density0.0009982071、dx1.2stencil 2使用三线性插值模板支撑 8 个格点默认选项适合贴近壁面/其他物体的场景noise 300.0 2762启用 300 K 热 LB 流体使粒子获得布朗运动胶体作为刚性分子整体运动fix 3 all rigid molecule每 50000 步用fix lb/momentum清零系统总动量以防止数值误差积累邻居列表须满足delay 0 every 1且 bin 尺寸小于 LB 网格间距保证粒子始终处于其所属处理器的 LB 网格内否则报错终止。模式二拖曳测试——外力驱动下测量水动力阻力dragforce/in.dragtest 以恒定外力拖拽胶体粒子穿过 LB 流体用于拖曳系数drag测试fix drag all addforce ${node_force} v_oscillateY v_oscillateZ # 外力须在 lb/fluid、lb/viscous 之前定义 fix FL all lb/fluid 1 1.0 0.0009982071 stencil ${stpts} dx 1.2 fix 2 all lb/viscous fix 3 all nve # 单节点粒子用 NVE多节点复合粒子用 rigid脚本通过变量stpts2/3/4可切换三线性、3 点浸没边界IBM支撑 27 格点与 4 点 Keys 插值支撑 64 格点模板目录下的多个log.*文件即对应不同插值模板的对照输出。值得注意的是脚本注释强调外部驱动力addforce必须定义在lb/fluid与lb/viscous之前以保证力施加顺序符合 LATBOLTZ 的内部约定。模式三易位/受限流动——scaleGamma 设定无限质量粒子translocation/in.translocation 模拟粗粒化聚合物在压差驱动流中穿过固态纳米孔fix 1 FluidAtoms lb/fluid 1 0.1 0.00009982071 dx 1.0 scaleGamma 3 -1 stencil 2 pressurebcx 1200 noise 300.0 5252 fix 2 FluidAtoms lb/viscous fix 3 Polymer rigid/small molecule fix freeze WallAtoms setforce 0 0 0这里scaleGamma 3 -1将第 3 类原子孔壁原子被setforce冻结的力耦合常数 γ 置为 -1从而在 fix_lb_fluid.cpp 中走Gamma[type[i]] 0分支——进入粒子静止/指定运动、质量趋向无穷的极限流体仍感受到来自壁面的阻力但粒子的hydroF被置零hydroF[i][k] 0.0这正是官方文档所述无限质量粒子极限的显式实现。同时pressurebcx 1200在 x 方向施加压力跳变驱动流动noise提供温度涨落。模式四流体驱动刚体玩具车演示toycar/in.toycar 以 cgs 单位构建一辆由圆柱、棱柱拼装而成的玩具车在fix FL all lb/fluid ... zwall_velocity 0 0创建的流体中行驶fix FL all lb/fluid 1 0.0002 ${density} stencil 2 dx ${dx} zwall_velocity 0 0 fix 2 all lb/viscous fix 4 not_wheels nve fix 3 wheels rigid group 4 gcylinder1 gcylinder2 gcylinder3 gcylinder4 ...zwall_velocity 0 0给 z 方向上下壁面指定 y 向速度需boundary p p f固定壁面边界lb/viscous施加于全部原子all轮子按刚性组积分、其余部件 NVE 积分是流动场驱动复杂形状刚体的直观展示。重启、输出与能量最小化行为fix lb/viscous本身不产生任何重启或输出量其行为与fix viscous完全一致见 fix_viscous 文档 的对应小节重启不向二进制重启文件写入任何信息fix lb/fluid的流体数据可经其write_restart/read_restart关键字独立保存但与主 LAMMPS 重启文件互不关联fix_modify所有选项均不适用输出不存储全局或每原子量温度监测请使用fix lb/fluid的标量输出run start/stop不支持能量最小化min_post_force()会调用post_force()见 fix_lb_viscous.cpp即最小化时该 fix 的力依然生效但只能配合允许非保守力的阻尼动力学最小化器使用如 damped dynamics 类的min_style详见 min_style 文档。从源码看该 fix 通过setmask()注册了POST_FORCE、POST_FORCE_RESPA与MIN_POST_FORCE三个钩子fix_lb_viscous.cpp因此同时支持 Verlet 积分、r-RESPA 多时间步积分post_force_respa仅在最外层 level 生效见 fix_lb_viscous.cpp与最小化流程。使用限制与构建前提包依赖属于 LATBOLTZ 包必须启用该包并完成 MPI 构建-D PKG_LATBOLTZon或make yes-latboltz详见 Build package 文档 与 Packages_details.rst顺序约束必须在fix lb/fluid之后定义构造时即通过modify-get_fix_by_style(lb/fluid)查找 LB 流体找不到则直接报错见 fix_lb_viscous.cpp组约束lb/viscous组内的原子必须同时属于fix lb/fluid的组否则构造时报错Atoms must be in the fix lb/fluid group to apply a fluid force to themfix_lb_viscous.cpp——这也是各示例中两个 fix 使用同一组名如FluidAtoms的原因区域约束fix lb/fluid只能用于正交模拟域边界条件仅支持p p p、p p f、p f f三种一致组合shrunk-wrapped 边界不允许见 fix_lb_fluid 文档积分器必须搭配内置积分器fix nve或fix rigid等使用lb/viscous本身不积分粒子运动。相关命令与引用文献相关命令fix lb/fluid、fix lb/momentum、fix viscous、fix langevin、fix nve、fix rigid源码LATBOLTZ 包实现见 src/LATBOLTZ包级说明见 src/LATBOLTZ/README示例完整可运行脚本见 examples/PACKAGES/latboltz各目录附带对应 log 输出可供对照验证算法细节与测试结果请参阅官方文档引用的文献Denniston, C., Afrasiabian, N., Cole-Andre, M.G., Mackay, F. E., Ollila, S.T.T., and Whitehead, T., LAMMPS lb/fluid fix version 2: Improved Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 275 (2022) 108318若在发表的研究工作中使用该 fix请按此引用流体-粒子保守力耦合细节可参见 Mackay, F. E., and Denniston, C., J. Comput. Phys. 237 (2013) 289-298热fluctuatingLB 算法参见 Adhikari, R., Stratford, K., Cates, M. E., and Wagner, A. J., Europhys. Lett. 71 (2005) 473-479。赞分享科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载相关推荐LAMMPS 中的 fix lb/momentum消除含格子玻尔兹曼流体体系的系统线性动量漂移LAMMPS 中的 fix lb/momentum消除含格子玻尔兹曼流体体系的系统线性动量漂移 导读 fix lb/momentum 是 LAMMPS LAT科研科学计算高性能计算Jellyfin Media Player强大的跨平台媒体播放解决方案Jellyfin Media Player强大的跨平台媒体播放解决方案 Jellyfin Media Player 是一款基于 Jellyfin web 界面高性能计算科学计算LAMMPS fix nvt/body 命令详解体粒子body particle的 Nose/Hoover 恒温 NVT 集成LAMMPS fix nvt/body 命令详解体粒子body particle的 Nose/Hoover 恒温 NVT 集成 本文基于 LAMMPS 官科研科学计算高性能计算上一篇微信视频号直播数据抓取的3个核心难题与wxlivespy的解决方案下一篇LDAP测试工具告别繁琐调试让LDAP集成变得轻松自如创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/16 1:56:19

2S被动均衡设计:基于MP2642GR-Z与MKV42F128VLH16

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 1:56:19

Qt绘图软件核心实现:坐标系、事件驱动与图元存储全解析

简介:面向Qt初学者的2D绘图开发教程与完整源码包,以paintExample示例为主线讲解QPainter绘图、QPaintEvent处理、QGraphicsView/Scene高级图形对象交互等核心机制。压缩包内含114个文件,约3.54MB,包括18个h头文件与15个cpp源文件、…

2026/10/16 9:22:29

Zigbee串口上位机设计:C#稳定通信与实时数据解析

简介:这是一套面向物联网开发初学者与嵌入式上位机开发者的学习实践资源,聚焦C#桌面应用与Zigbee无线传感网络的串口通信集成,解决传感器数据实时采集、可视化显示及远程控制等典型工业监控场景需求。资源包共87个文件,含11个核心…

2026/10/16 9:22:29

储能电池主动均衡方案:MP2642GR-Z与PIC18F87K22实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 9:22:29

DP动态规划立体匹配:从原理到工程实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 9:22:29

叮当小宝CS接入:京东客服怎么配置?咚咚接待与工单联动

新店在京东开起来的前几天,咨询量不大,一部手机就能盯完全程。等类目活动上过一轮、店铺权重起来,咚咚的咨询会在两个时段集中涌进来:上午开播前后和晚上八点以后。这时候没有配置好的接待规则,通常会出现两件事&#…

2026/10/16 9:22:29

AI替代不了你的真相:价值、信任与定义问题的能力

1. 先别急着恐慌:用“替代坐标系”判断AI到底能做什么1.1 我的真实经历:AI先替代了最没风险感的岗位几年前我带过一个数据标注团队,二十几号人,每天对着屏幕框选图片、标注文本。当时我以为这种工作需要耐心和细心,短期…

2026/10/16 9:17:28

UVR 人声分离工具:4 步从伴奏里「拎」出干净人声

UVR 人声分离工具:4 步从伴奏里「拎」出干净人声 【免费下载链接】ultimatevocalremovergui GUI for a Vocal Remover that uses Deep Neural Networks. 项目地址: https://gitcode.com/GitHub_Trending/ul/ultimatevocalremovergui 手里有首歌,…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/16 0:01:11

Cephadm实战指南:Linux系统工程师的生产级Ceph集群部署与排障

简介:本资源是一份完整的Ceph分布式存储系统中文技术文档合集,面向Linux系统运维工程师、云平台架构师及存储方向开发者,帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储(RGW)、块设备&#xf…

2026/10/16 0:01:11

ITK中SpatialObject几何体系解析:坐标系、变换与管道集成

1. 空间对象的定位:为什么 ITK 需要一套几何描述体系很多刚开始接触 ITK 的朋友,包括我自己,最初都是被它的图像滤波、配准、分割这些“正统”功能吸引进来的。等真正上手做点实际项目,比如把分割出来的器官边界做量化分析、给血管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑