计算 group 平移动量:LAMMPS compute momentum 命令完全指南
科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载compute momentum是 LAMMPS 中用于计算一组粒子平移动量translational momentum的 compute 命令。它归属于EXTRA-COMPUTE 包需要编译时启用该包才能使用输出一个长度为 3 的全局向量对应系统总动量p (p_x, p_y, p_z)。本指南将完整介绍该命令的语法、物理含义、输出特性、源码实现原理、典型应用场景如质心漂移检测、速度零点校正、NEMD 动量通量测量等以及它在 LAMMPS 输出体系中的定位与使用方法。命令语法与示例compute momentum的语法非常简单仅需三个参数compute ID group-ID momentum参数含义IDcompute 的标识符用于后续通过c_ID[I]等语法引用该计算group-ID指定参与动量计算的原子组momentum该 compute 命令的样式名称style name其中ID与group-ID的通用规则在 compute 命令文档 中有详细说明此处不再赘述。一个最典型的示例compute 1 all momentum该命令定义了名为1的 compute统计all组内所有粒子的总平移动量。物理定义与计算公式compute momentum计算的是 group 内所有粒子平移动量translational momentum的矢量和其定义为p Σᵢ mᵢ · vᵢ即对 compute group 内所有粒子 i将每个粒子的质量m与其速度矢量v相乘并求和。需要注意这里的动量是平移动量translational momentum对应粒子质心的整体运动不包含分子内旋转、振动等内部自由度带来的角动量分量。如果系统中有刚体rigid body或其他具有内部结构的多体对象本计算只统计其质心平动部分。质量的处理方式原子质量 vs 每原子质量从源码实现看compute_momentum.cpp 中compute_vector()函数对质量的取值做了两种分支处理double **v atom-v; double *rmass atom-rmass; double *mass atom-mass; int *mask atom-mask; int *type atom-type; int nlocal atom-nlocal; double mom[3] {0.0, 0.0, 0.0}; if (rmass) { for (int i 0; i nlocal; i) if (mask[i] groupbit) { for (int j 0; j 3; j) mom[j] rmass[i] * v[i][j]; } } else { for (int i 0; i nlocal; i) if (mask[i] groupbit) for (int j 0; j 3; j) mom[j] mass[type[i]] * v[i][j]; }如果系统使用每原子质量per-atom mass即rmass非空则直接用rmass[i] * v[i][j]累加如果系统使用按类型质量per-type mass即rmass为空则通过原子类型索引查表mass[type[i]]再乘以速度。此外mask[i] groupbit的位掩码判断保证了只有属于目标 group 的原子才会被纳入求和这是 LAMMPS 中所有按 group 统计计算的通用模式。并行规约MPI_Allreduce在并行MPI运行时每个处理器只拥有自己子域内的原子nlocal个本地原子因此各处理器先本地累加最后通过一次全局规约得到完整结果MPI_Allreduce(mom, vector, 3, MPI_DOUBLE, MPI_SUM, world);这一行代码将各进程的局部动量分量长度为 3 的 double 数组以求和方式归约到所有进程保证每个进程上的 compute 结果一致。该实现体现了 LAMMPS 并行架构下本地求和 全局规约的标准模式。输出信息全局向量及其引用方式compute momentum计算输出一个全局向量global vector长度为 3对应p_x, p_y, p_z三个分量。引用语法任何接受全局向量输入的 LAMMPS 命令都可以使用该结果例如在thermo_style custom中compute 1 all momentum thermo_style custom step c_1[1] c_1[2] c_1[3]在 LAMMPS 的输出体系详见 Howto output 文档中c_ID表示整个标量、向量或数组c_ID[I]表示向量的第 I 个元素或数组的第 I 列c_ID[I][J]表示二维数组的具体元素。因此c_1[1]、c_1[2]、c_1[3]分别取出总动量的 x、y、z 分量。该结果同样可以传递给fix ave/time进行时间平均、传给variable做进一步数值处理或通过thermo_style在每一时间步输出到屏幕与日志文件。量纲特性extensive该 compute 输出的是一个extensive广延量全局向量。从源码看vector_flag 1; size_vector 3; extvector 1;extvector 1表明该向量值随系统尺寸粒子数线性增长是广延量。这一点在单元测试 test_compute_global.cpp 中也有印证测试同时创建compute mom1 all momentum与compute mom2 allwater momentum分别统计全部原子和水分子子组的动量二者的数值不同体现对 group 内粒子数/质量的依赖。向量值的单位为 质量 × 速度mass·velocity随所选 units 风格而变化。例如在real单位下质量 grams/mole距离 Angstroms时间 femtoseconds速度 Angstroms/femtosecond动量单位为 grams/mole·Angstroms/femtosecond在metal单位下速度 Angstroms/picosecond相应换算在lj简约单位下则采用约化质量与约化速度的乘积。单元测试中的验证在 LAMMPS 的单元测试套件中compute momentum的数值正确性通过 test_compute_global.cpp 的ComputeGlobalTest.Geometry用例进行验证。测试流程为先检查lammps_config_has_package(EXTRA-COMPUTE)确认构建包含 EXTRA-COMPUTE 包定义pair_style lj/cut 10.0、bond_style harmonic等基本相互作用创建compute mom1 all momentum和compute mom2 allwater momentum通过thermo_style custom引入c_mom1[*]等输出用run 0 post no触发计算并校验分量数值。if (has_extra) { command(compute mom1 all momentum); command(compute mom2 allwater momentum); ... } ... EXPECT_DOUBLE_EQ_PREC(mom1[0], 0.0054219056685341164); EXPECT_DOUBLE_EQ_PREC(mom1[1], -0.054897225112275558); EXPECT_DOUBLE_EQ_PREC(mom1[2], 0.059097392692385661);这段测试同时覆盖了全系统动量与子组动量两种场景可以作为用户验证自身 LAMMPS 安装中该功能正确性的参考对照。使用限制与依赖需要 EXTRA-COMPUTE 包compute momentum是EXTRA-COMPUTE 包的一部分只有在构建 LAMMPS 时启用了该包才会被编译进来编译时通过-D PKG_EXTRA-COMPUTEonCMake或在src/下执行make yes-extra-compute传统 make 流程启用未启用该包时输入脚本中使用compute ... momentum会报错。从 compute_momentum.h 中的ComputeStyle(momentum,ComputeMomentum);宏可以看到该 compute 通过 LAMMPS 的 style 注册机制挂接到Compute基类派生的工厂注册表中属于 EXTRA-COMPUTE 目录下的扩展样式。参数数量校验源码构造函数中还包含严格的参数检查if (narg ! 3) error-all(FLERR,Illegal compute momentum command);compute momentum固定只接受 3 个参数ID、group-ID、momentum多传或少传参数都会触发Illegal compute momentum command错误并终止运行。默认值该命令没有可选的额外关键字或默认参数语法就是固定形式compute ID group-ID momentum。典型应用场景1. 检测系统的质心漂移drift动量守恒是许多 MD 模拟如 NVE 系综的基本性质。若模拟过程中系统总动量尤其 x、y、z 各分量持续偏离初始值往往意味着存在数值误差累积或非保守力干预。通过在thermo_style custom中输出c_ID[1] c_ID[2] c_ID[3]即可逐时间步监控。2. 与 fix momentum 配合实现速度零点校正compute momentum通常与 fix momentum 搭配使用fix momentum通过周期性减去 group 的总动量可包含linear、angular等关键字将系统整体平动/转动清零。而compute momentum则提供了精确的当前总动量是多少这一度量可用于在清零前后对比验证或用于判断是否需要执行velocity ... zero操作。3. 微观流场与 NEMD 分析在非平衡分子动力学NEMD中动量是分析剪切流、泊肃叶流等流动场的关键物理量。例如 VISCOSITY 示例见 examples/VISCOSITY中的 Muller-Plathe 动量通量测量即围绕动量在不同层间的输运展开对特定 group如某层原子计算动量并做时间平均可以得到该层的定向流动速度动量/质量。4. 子组动量的精细分析由于compute momentum接受任意 group-ID用户可以灵活地对指定分子类型、指定区域或指定物种的原子统计动量例如在混合体系中分别统计溶剂与溶质的整体动量观察质量输运方向。总结属性值命令格式compute ID group-ID momentum输出类型全局向量长度 3px, py, pz输出量纲质量 × 速度extensive 广延量所属包EXTRA-COMPUTE计算公式p Σᵢ mᵢ·vᵢ平移动量默认参数无实现文件src/EXTRA-COMPUTE/compute_momentum.cpp头文件src/EXTRA-COMPUTE/compute_momentum.h相关命令fix momentum测试用例unittest/commands/test_compute_global.cpp掌握compute momentum后你可以方便地在热力学输出、时间平均分析或脚本逻辑中实时获取任意原子组的总平移动量为守恒性检查、速度校正和流动分析提供基础数据。赞分享科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载相关推荐AutoHotkey源码剖析(七)内置调试器的TCP/XML协议与断点实现AutoHotkey源码剖析 七 内置调试器的TCP/XML协议与断点实现 AutoHotkey 内置了一个完整的调试器引擎它实现了通用的 DBGp 协议科研科学计算高性能计算LAMMPS compute inertia/chunk 命令完全指南逐块惯量张量计算与输出LAMMPS compute inertia/chunk 命令完全指南逐块惯量张量计算与输出 本指南以 doc/src/compute_inertia_chu科研科学计算高性能计算LAMMPS compute angmom/chunk 命令详解逐 chunk 计算角动量向量LAMMPS compute angmom/chunk 命令详解逐 chunk 计算角动量向量 本文以 LAMMPS 官方文档 compute_angmom_科研科学计算高性能计算上一篇2025最强端到端语音识别实战基于PyTorch的End-to-End ASR全流程落地指南下一篇SManga 开源项目教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

32位程序突破2GB内存限制:/LARGEADDRESSAWARE原理与实战

32位程序突破2GB内存限制:/LARGEADDRESSAWARE原理与实战

简介:本资源聚焦32位Windows程序突破默认2GB内存限制的核心技术,面向C与C#中高级开发者,解决大数据处理、图像分析或内存密集型应用在32位系统下的内存瓶颈问题。内容围绕Large Address Awareness(LAA)机制展开&#x…

2026/10/15 20:14:46 阅读更多 →
第一次做GEO?成都企业的选型路线图

第一次做GEO?成都企业的选型路线图

第一次做GEO的企业,容易犯一个同一个错:一上来就找服务商比价。顺序反了。GEO这件事,先要看清自己的现状和目标,才谈得上选谁。这篇按顺序给一张路线图,四步,每一步都有明确的产出物,也是按我们…

2026/10/15 20:14:46 阅读更多 →
CodexQA:AI时代契约驱动的代码质量验证框架

CodexQA:AI时代契约驱动的代码质量验证框架

1. 这不是“AI写得快不快”的问题,而是“我敢不敢把生产环境交出去”的问题最近在几个技术群和线下聚会里,总有人拍着桌子说:“现在让Copilot写个CRUD接口,三秒就完事,比我自己敲还顺!”话音刚落&#xff0…

2026/10/15 20:13:44 阅读更多 →

最新新闻

C++十进制转十六进制:从手写算法到标准库全解析

C++十进制转十六进制:从手写算法到标准库全解析

/* 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 5:07:31 阅读更多 →
pegasusWMS:用Python与Jupyter拆解仓库管理系统核心流程

pegasusWMS:用Python与Jupyter拆解仓库管理系统核心流程

/* 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 5:07:31 阅读更多 →
ICRA 2020三维重建论文盘点:从实时融合到动态场景的工程实践

ICRA 2020三维重建论文盘点:从实时融合到动态场景的工程实践

/* 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 5:07:31 阅读更多 →
两节串联电池主动均衡方案:基于MP2642GR-Z与MK24FN1M0VDC12的备电系统设计

两节串联电池主动均衡方案:基于MP2642GR-Z与MK24FN1M0VDC12的备电系统设计

/* 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 5:07:31 阅读更多 →
基于MP2642GR-Z与PIC18F8722的2S电池均衡系统设计

基于MP2642GR-Z与PIC18F8722的2S电池均衡系统设计

/* 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 5:07:31 阅读更多 →
基于IGH开源主站与汇川SV660N的EtherCAT实时运动控制实现

基于IGH开源主站与汇川SV660N的EtherCAT实时运动控制实现

简介:这份资源面向工业自动化与运动控制方向的开发者,提供基于IGH EtherCAT主站控制汇川SV660N伺服电机的C语言实现代码,重点解决主站与伺服之间位置控制模式(PP模式)下的通信与指令下发问题,适合已具备Eth…

2026/10/16 5:06:30 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* 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 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* 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 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/15 9:49:14 阅读更多 →