当前位置: 首页 > news >正文

【LAMMPS学习】三、构建LAMMPS(6)在构建中包含软件包

3. 构建 LAMMPS 

3.6.在构建中包含软件包 

在 LAMMPS 中,包是一组启用一组特定功能的文件。例如,分子系统的力场或刚体约束都在封装中。在 src 目录中,每个包都是一个子目录,包名称为大写字母。

包文档页面上给出了包的概述。每个包的简要概述位于包详细信息页面上。

构建 LAMMPS 时,您可以选择包含或排除每个包。一般来说,如果您从不打算使用某个包的功能,则无需包含该包。

如果您收到 LAMMPS 命令或样式“未知”的运行时错误,通常是因为该命令包含在某个包中,而您的构建不包含该包。如果命令或样式在 LAMMPS 发行版中包含的包中可用,则错误消息将指示需要哪个包。使用 -h 命令行开关运行 LAMMPS 将打印构建该可执行文件时启用的所有可选命令和包。

对于大多数软件包,如果您按照以下步骤将其包含在内,那么您就可以像不安装任何软件包一样构建 LAMMPS。一些包可能需要额外的步骤,如构建附加页面上所述。

这些链接将带您访问这些选定软件包的额外说明:

ADIOS

ATC

AWPMD

COLVARS

COMPRESS

ELECTRODE

GPU

H5MD

INTEL

KIM

KOKKOS

LEPTON

MACHDYN

MDI

ML-HDNNP

ML-IAP

ML-PACE

ML-POD

ML-QUIP

MOLFILE

NETCDF

OPENMP

OPT

PLUMED

POEMS

PYTHON

QMMM

SCAFACOS

VORONOI

VTK

包含包的机制很简单,但 CMake 与 make 不同。

CMake构建

-D PKG_NAME=value          # yes or no (default)

例如:

-D PKG_MANYBODY=yes
-D PKG_INTEL=yes

所有包都以相同的方式包含在内。请参阅下面的快捷方式部分,了解如何使用 CMake 一次安装多个包。

注:如果您在使用 CMake 构建和 make 构建之间切换,则当您调用 cmake 时,无法安装 src 目录中的任何包。如果不是这种情况,CMake 将给出错误,指示如何卸载 src 目录中的所有包。

传统make

cd lammps/src
make ps                    # check which packages are currently installed
make yes-name              # install a package with name
make no-name               # uninstall a package with name
make mpi                   # build LAMMPS with whatever packages are now installed

例如:

make no-rigid
make yes-intel

所有包都以相同的方式包含在内。请参阅下面的快捷方式部分,了解如何使用 make 一次安装多个软件包。

注:在安装或卸载软件包后,您必须始终重新构建 LAMMPS(通过 make),以使操作生效。包含的依赖项跟踪将确保仅重新编译需要重建的文件。

注:您无法在具有多个目标的单个 make 命令中安装或卸载软件包并构建 LAMMPS,例如 make yes-colloid mpi 。这是因为 make 过程创建了一个源文件列表,如果包配置在同一命令中发生更改,这些源文件对于构建来说将是过时的。您可以在单个 make 命令中包含或排除多个包,例如 make yes-colloid no-manybody 。

3.6.1.两个构建系统的信息 

几乎所有包都可以包含或排除在 LAMMPS 构建中,独立于其他包。但是,某些包包含从其他包中的文件派生的文件。 LAMMPS 检查这一点并做正确的事情。仅当已包含单个文件的依赖项时,才会包含这些文件。同样,如果排除某个包,则依赖于该包的其他文件也会被排除。

注:默认情况下不安装任何软件包。然而,在 2018 年 8 月之前,如果您下载了 tarball,则会通过传统的 make 过程在 src 目录中预安装 3 个软件包(KSPACE、MANYBODY、MOLECULE)。现在情况已不再如此,因此 CMake 将按原样构建,无需卸载这些包。

3.6.2.用于安装多个软件包的 CMake 预设

CMake 允许使用脚本文件初始化其设置缓存,而不是通过命令行指定所有 CMake 选项。这些是常规 CMake 文件,可以操作和设置 CMake 变量(代表所选选项),还可以包含用于更复杂操作的控制流结构。

LAMMPS 包含多个文件来定义配置“预设”,类似于基于 Make 的系统中存在的选项。使用这些文件,您可以启用/禁用 LAMMPS 中可用包的部分内容。如果您需要自定义预设,可以复制其中之一并进行修改以满足您的需求。

cmake -C ../cmake/presets/basic.cmake    [OPTIONS] ../cmake  # enable just a few core packages
cmake -C ../cmake/presets/most.cmake     [OPTIONS] ../cmake  # enable most packages
cmake -C ../cmake/presets/download.cmake [OPTIONS] ../cmake  # enable packages which download sources or potential files
cmake -C ../cmake/presets/nolib.cmake    [OPTIONS] ../cmake  # disable packages that do require extra libraries or tools
cmake -C ../cmake/presets/clang.cmake    [OPTIONS] ../cmake  # change settings to use the Clang compilers by default
cmake -C ../cmake/presets/gcc.cmake      [OPTIONS] ../cmake  # change settings to use the GNU compilers by default
cmake -C ../cmake/presets/intel.cmake    [OPTIONS] ../cmake  # change settings to use the Intel compilers by default
cmake -C ../cmake/presets/pgi.cmake      [OPTIONS] ../cmake  # change settings to use the PGI compilers by default
cmake -C ../cmake/presets/all_on.cmake   [OPTIONS] ../cmake  # enable all packages
cmake -C ../cmake/presets/all_off.cmake  [OPTIONS] ../cmake  # disable all packages
mingw64-cmake -C ../cmake/presets/mingw-cross.cmake [OPTIONS] ../cmake  #  compile with MinGW cross-compilers
cmake -C ../cmake/presets/macos-multiarch.cmake [OPTIONS] ../cmake # compile serial multi-arch binaries on macOS

名称以“windows”开头的预设专门用于在 Windows 上本地编译 LAMMPS,而名称以“kokkos”开头的预设专门用于选择使用 KOKKOS 编译 LAMMPS 的配置。

注:以这种方式运行 cmake 可以操作当前构建目录中的 CMake 设置缓存。您可以在一次 cmake 运行中组合多个预设和选项,或者通过使用新标志运行 cmake 来增量更改设置。如果您使用礼物来选择一组编译器,它将重置之前 CMake 运行的所有设置。

示例:

# build LAMMPS with most commonly used packages, but then remove
# those requiring additional library or tools, but still enable
# GPU package and configure it for using CUDA. You can run.
mkdir build
cd build
cmake -C ../cmake/presets/most.cmake -C ../cmake/presets/nolib.cmake -D PKG_GPU=on -D GPU_API=cuda ../cmake# to add another package, say BODY to the previous configuration you can run:
cmake -D PKG_BODY=on .# to reset the package selection from above to the default of no packages
# but leaving all other settings untouched. You can run:
cmake -C ../cmake/presets/all_off.cmake .

3.6.3.创建安装多个软件包的快捷方式 

在通过传统 make 构建 LAMMPS 时,以下命令对于管理包源文件及其安装非常有用。只需在 lammps/src 中输入 make 即可查看一行摘要。

这些命令安装/卸载软件包集:

make yes-all                        # install all packages
make no-all                         # check for changes and uninstall all packages
make no-installed                   # only check and uninstall installed packages
make yes-basic                      # install a few commonly used packages'
make no-basic                       # remove a few commonly used packages'
make yes-most                       # install most packages w/o libs'
make no-most                        # remove most packages w/o libs'
make yes-lib                        # install packages that require extra libraries
make no-lib                         # uninstall packages that require extra libraries
make yes-ext                        # install packages that require external libraries
make no-ext                         # uninstall packages that require external libraries

它安装/卸载各种包集。输入 make package 将列出所有这些命令。

注:安装或卸载基于 make 的构建过程的包只需在主源目录 src 和具有包名称的子目录(例如 src/KSPACE、src/ATC)之间来回复制文件即可,以便包含或删除这些文件LAMMPS 构建时排除。仅编译 src 文件夹中的源文件。

以下 make 命令帮助管理 src 目录和包子目录中存在的文件。通常不需要使用这些命令,除非您正在编辑 LAMMPS 文件或通过 git 更新 LAMMPS。

  • 键入 make package-status 或 make ps 以显示当前安装的软件包。对于已安装的文件,它将列出 src 目录和包子目录中的所有不同文件。
  • 键入 make package-installed 或 make pi 以显示当前安装了哪些软件包,而不列出未安装的软件包的状态。
  • 如果安装了软件包,请键入 make package-update 或 make pu 以使用软件包子目录中的文件覆盖 src 文件。它应该在使用 git 更新或更改结帐后使用,这只会更新包子目录中的文件,但不会更新 src 文件夹中的副本。
  • 键入 make package-overwrite 以使用 src 文件覆盖包子目录中的文件。
  • 键入 make package-diff 以列出源目录和包目录中的文件对之间的所有差异。

相关文章:

【LAMMPS学习】三、构建LAMMPS(6)在构建中包含软件包

3. 构建 LAMMPS 3.6.在构建中包含软件包 在 LAMMPS 中,包是一组启用一组特定功能的文件。例如,分子系统的力场或刚体约束都在封装中。在 src 目录中,每个包都是一个子目录,包名称为大写字母。 包文档页面上给出了包的概述。每…...

apache commons-dbcp Apache Commons DBCP 软件实现数据库连接池 commons-dbcp2

DBCP组件 许多Apache项目支持与关系型数据库进行交互。为每个用户创建一个新连接可能很耗时(通常需要多秒钟的时钟时间),以执行可能需要毫秒级时间的数据库事务。对于一个公开托管在互联网上的应用程序,在同时在线用户数量可能非…...

8.2K star!史上最强Web应用防火墙

🚩 0x01 介绍 长亭雷池SafeLine是长亭科技耗时近 10 年倾情打造的WAF(Web Application Firewall),一款敢打出口号 “不让黑客越雷池一步” 的 WAF,我愿称之为史上最强的一款Web应用防火墙,足够简单、足够好用、足够强的免费且开源…...

浅谈RPC的理解

浅谈RPC的理解 前言RPC体系Dubbo架构最后 前言 本文中部分知识涉及Dubbo,需要对Dubbo有一定的理解,且对源码有一定了解 如果不了解,可以参考学习我之前的文章: 浅谈Spring整合Dubbo源码(Service和Reference注解部分&am…...

JDK发布信息、历史及未来规划

1.未来规划 发布日期类型版本其它信息2026-01-20CPU25.0.2, 21.0.10, 17.0.18, 11.0.30, 8u4812025-10-21CPU25.0.1, 21.0.9, 17.0.17, 11.0.29, 8u4712025-09-16Feature*25 LTS2025-07-15CPU24.0.2, 21.0.8, 17.0.16, 11.0.28, 8u4612025-04-15CPU24.0.1, 21.0.7, 17.0.15, 1…...

帅帅密码管理系统使用教程

在这个账号满天飞的大环境,密码太多,又容易遗忘,又不方便管理,存在记事本上,又担心泄漏。帅帅密码管理系统就是帮助你解决以上烦恼,用来帮助个人或团队管理众多的登陆密码,能够快速的查询、新增…...

漫谈5种注册中心

01 注册中心基本概念 1.1 什么是注册中心? 注册中心主要有三种角色: 服务提供者(RPC Server):在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。 服务消费者&…...

Vulnhub靶机:Kioptrix_2014

一、介绍 运行环境:Virtualbox和vmware 攻击机:kali(192.168.56.101) 靶机:Kioptrix: 2014(192.168.56.108) 目标:获取靶机root权限和flag 靶机下载地址:https://ww…...

Spring Boot整合Spring Security

Spring Boot 专栏:Spring Boot 从零单排 Spring Cloud 专栏:Spring Cloud 从零单排 GitHub:SpringBootDemo Gitee:SpringBootDemo Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块的默认技术…...

Rust字符串深入理解

一、概述 Rust是一种系统级语言,进行操作系统等底层应用开发,同时又具合理的抽象处理能力。在进行Rust编程时,字符串处理是程序员经常碰到的工作。本文深入解析Rust语言中字符串的使用,包括 static string,String与&a…...

TSINGSEE青犀AI智能分析网关V4酿酒厂安全挂网AI检测算法

在酿酒行业中,安全生产一直是企业经营中至关重要的一环。为了确保酒厂生产过程中的安全,TSINGSEE青犀AI智能分析网关V4的安全挂网AI检测算法发挥了重要作用。 TSINGSEE青犀AI智能分析网关V4的安全挂网检测算法是针对酒厂里酒窖挂网行为进行智能检测与识…...

LeetCode第126场双周赛个人题解

目录 100262. 求出加密整数的和 原题链接 思路分析 AC代码 3080. 执行操作标记数组中的元素 原题链接 思路分析 AC代码 100249. 替换字符串中的问号使分数最小 原题链接 思路分析 AC代码 100241. 求出所有子序列的能量和 原题链接 思路分析 AC代码 100262. 求出…...

牛客NC403 编辑距离为一【中等 模拟法 Java,Go,PHP】

题目 题目链接: https://www.nowcoder.com/practice/0b4b22ae020247ba8ac086674f1bd2bc 思路 注意:必须要新增一个,或者删除一个,或者替换一个,所以不能相等1.如果s和t相等,返回false,如果s和t长度差大于1…...

C# SetWindowPos函数

在C#中,SetWindowPos函数用于设置窗口的位置和大小。 原型: [DllImport("user32.dll", SetLastError true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int …...

zookeeper快速入门五:用zookeeper实现服务注册与发现中心

系列: zookeeper快速入门一:zookeeper安装与启动-CSDN博客 zookeeper快速入门二:zookeeper基本概念-CSDN博客 zookeeper快速入门三:zookeeper的基本操作 zookeeper快速入门四:在java客户端中操作zookeeper-CSDN博客…...

Java 中 BitSet 类的用法

Java 中 BitSet 类的用法 API构造置位为 true清除为 false查找位反转长度运算流其他 原理底层数据结构如何工作 API 构造 无参构造 :默认为 64 个 bit 的容量 BitSet bitset new BitSet();有参构造 :设置为 n 个 bit 的容量 BitSet bitset new BitSe…...

Jenkins-pipeline流水线构建完钉钉通知

添加钉钉机器人 在钉钉群设置里添加机器人拿出Webhook地址,设置关键词 Jenkins安装钉钉插件 Dashboard > 系统管理 > 插件管理,搜索构建通知,直接搜索Ding Talk也行 安装DingTalk插件,重启Jenkins 来到Dashboard > 系…...

汽车制造业供应商管理会面临哪些问题?要如何解决?

汽车行业的供应链是及其复杂的,并且呈全球化分布,企业在知识产权方面的优势很可能是阶段性的。企业需要持续保持领先,将面临巨大的挑战,尽快地将产品推向市场是保持领先的唯一途径。然而,如果没有正确的方式去实现安全…...

day28|93. 复原 IP 地址|Leetcode 78. 子集|90.子集II

Leetcode 93. 复原 IP 地址 链接&#xff1a;93. 复原 IP 地址 class Solution { public:vector<string> res;string path;int pointNum 0;vector<string> restoreIpAddresses(string s) {backtracking(0, s);return res;}void backtracking(int start, string …...

怎样提升小程序日活?签到抽奖可行吗?

一、 日活运营策略 小程序应该是即用即走的&#xff0c;每个小程序都在用户中有自己的独特定位&#xff0c;可能是生活日常必备&#xff08;美食、团购、商城&#xff09;&#xff0c;也可能是工作办公必备&#xff08;文档、打卡、工具&#xff09;。 如果你想要让自己的小程…...

STM32CubeMX实战:用IIC驱动JY61P六轴陀螺仪(附完整工程文件)

STM32CubeMX实战&#xff1a;用IIC驱动JY61P六轴陀螺仪&#xff08;附完整工程文件&#xff09; 在嵌入式开发中&#xff0c;姿态传感器是实现运动追踪、平衡控制等功能的常见组件。JY61P作为一款高性价比的六轴陀螺仪模块&#xff0c;通过IIC接口与STM32微控制器通信&#xff…...

保姆级教程:在Colab上快速部署CoTracker,5分钟搞定你的第一个视频点跟踪Demo

零基础玩转CoTracker&#xff1a;Colab环境5分钟实现视频点跟踪全流程 在短视频和智能监控时代&#xff0c;视频中的物体跟踪技术正从实验室走向大众应用。想象一下&#xff0c;你拍摄的宠物视频能自动标记小猫的运动轨迹&#xff0c;或者健身视频能实时追踪哑铃的位移曲线——…...

Ubuntu动态库路径管理全攻略:从LD_LIBRARY_PATH到ldconfig实战

1. 动态库路径管理基础 当你第一次在Ubuntu上运行程序时&#xff0c;看到"error while loading shared libraries"这样的报错&#xff0c;是不是感觉一头雾水&#xff1f;这其实是Linux系统在告诉你&#xff1a;"我找不到程序需要的动态库文件啦&#xff01;&q…...

Python Final 类型限定符详解

一、基本概念与起源 Python中的Final是一种类型限定符&#xff08;type qualifier&#xff09;&#xff0c;包含typing.Final类型标注和typing.final装饰器两种形式&#xff0c;用于告诉类型检查器&#xff08;如mypy、pyright&#xff09;某个实体不应该被重新赋值、重定义或覆…...

别再乱买网卡了!手把手教你用Kali Linux和特定型号网卡(如TP-Link TL-WN722N)抓取Wi-Fi握手包

别再乱买网卡了&#xff01;Kali Linux无线安全测试硬件选型与实战指南 当你第一次打开Kali Linux准备学习无线网络安全时&#xff0c;最令人沮丧的瞬间莫过于&#xff1a;跟着教程输入airmon-ng start wlan0后&#xff0c;屏幕上跳出"Device not supported"的红色警…...

别再被‘ANOMALY: meaningless REX prefix’弹窗搞懵了!手把手教你排查Python环境、杀软和系统监控的锅

解码"ANOMALY: meaningless REX prefix"&#xff1a;从Python环境到系统监控的全链路排查指南 当你正在Windows终端中专注地执行命令&#xff0c;突然弹出一个令人困惑的警告——"ANOMALY: meaningless REX prefix used"。这个看似晦涩的错误不仅打断了你的…...

5个惊人发现:用WechatRealFriends揭示微信好友的真相

5个惊人发现&#xff1a;用WechatRealFriends揭示微信好友的真相 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

深入解析UDS协议:汽车电子诊断服务的核心机制与应用实践

1. UDS协议&#xff1a;汽车电子诊断的通用语言 想象一下你是一位汽车医生&#xff0c;手里拿着听诊器准备给车辆做全面体检。UDS协议就是你与车辆沟通的专用语言&#xff0c;它让诊断设备&#xff08;Tester&#xff09;和电子控制单元&#xff08;ECU&#xff09;能够准确理解…...

SketchBook Pro

链接&#xff1a;https://pan.quark.cn/s/85dd8e9388c6 SketchBook Pro是一款功能强大的绘画软件&#xff0c;能够帮助用户轻松进行各种绘画工作&#xff0c;提供了铅笔、橡皮、笔刷、颜色、图层、记号笔等功能&#xff0c;让绘画更加轻松。其界面新颖动人&#xff0c;功能强大…...

10分钟训练AI歌手:Retrieval-based Voice Conversion技术完全指南

10分钟训练AI歌手&#xff1a;Retrieval-based Voice Conversion技术完全指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Vo…...