【LAMMPS学习】八、基础知识(1.7) LAMMPS 与 MDI 库代码耦合

news2025/6/28 4:58:51

8. 基础知识

此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。

 8.1.通用基础知识

8.1.1.重新启动模拟 

8.1.2.可视化 LAMMPS 快照

8.1.3.从一个输入脚本运行多个模拟

8.1.4.多副本模拟 

8.1.5. LAMMPS 的库接口

8.1.6. LAMMPS 与其他代码耦合

8.1.7.将LAMMPS 与 MDI 库进行代码耦合 

两个(或多个)代码的客户端/服务器耦合是指一个代码作为“客户端”并将请求消息(数据)发送到一个(或多个)“服务器”代码。服务器用回复消息(数据)来响应每个请求。这使得两个(或更多)代码能够协同工作来执行模拟。在这种情况下,LAMMPS 可以充当客户端或服务器代码。它通过使用由分子科学软件研究所 (MolSSI) 开发的 MolSSI 驱动程序接口 (MDI) 库来实现此目的,并受 MDI 包的支持。

将 LAMMPS 耦合到其他代码部分描述了将代码与 LAMMPS 耦合的替代方法。

客户端/服务器耦合的一些优点是代码可以作为独立的可执行文件运行;它们不需要连接在一起。因此,这两个代码都不需要具有库接口。这也使得在不同数量的处理器上运行这两个代码变得容易。如果为特定类型的模拟定义消息协议(格式和内容),则原则上实现客户端协议的任何代码都可以与实现服务器端协议的任何代码一起使用。两个代码都不需要知道它正在使用什么特定的其他代码。

在 MDI 术语中,客户端代码是“驱动程序”,服务器代码是“引擎”。一个驱动程序代码可以与一个或多个引擎代码的一个或多个实例进行通信。驱动程序和引擎代码可以用任何语言编写:C、C++、Fortran、Python 等。

除了允许驱动程序和引擎作为独立可执行文件运行之外,MDI 还允许引擎成为客户端代码的插件。在这种情况下,服务器代码被编译为共享库,并且服务器的一个(或多个)实例由驱动程序代码实例化。如果驱动程序代码并行运行,它可以将其 MPI 通信器拆分为多个子通信器,并在子通信器上启动每个插件引擎实例。该子通信器内的驱动程序处理器与相应的引擎实例交换消息,并且还可以将MPI消息发送到驱动程序中的其他处理器。驱动程序代码还可以销毁引擎实例并重新实例化它们。 LAMMPS 可以作为独立或插件 MDI 引擎运行。当它作为驱动程序运行时,它可以使用独立或插件 MDI 引擎。

MDI 驱动程序与 MDI 引擎通信的方式是进行 MDI_Send() 和 MDI_Recv() 调用,这在概念上类似于 MPI_Send() 和 MPI_Recv() 调用。每个发送或接收操作都使用字符串来标识命令名称,以及可选的一些数据,这些数据可以是单个值或任何数据类型的值向量。在 MDI 库内部,驱动程序和引擎之间通过 MPI 调用或套接字交换数据。这是用户的运行时选择。

MDI 包提供了 mdi 引擎命令,使 LAMMPS 能够作为 MDI 引擎运行。其文档页面解释了 LAMMPS 引擎识别并可以响应的各种标准和自定义 MDI 命令。

该软件包还提供了一个 mdi 插件命令,使 LAMMPS 能够作为 MDI 驱动程序运行,并将 MDI 引擎作为插件库加载。

该软件包还包括fix mdi/qm 命令,其中 LAMMPS 作为 MDI 驱动程序与作为 MDI 引擎的量子力学代码一起运行。 fix_mdi_qm.cpp 文件的 post_force() 方法显示驱动程序如何向另一个代码发出 MDI 命令。此命令可用于耦合到 MDI 引擎,该引擎可以是独立代码或插件库。

正如 fix mdi/qm 命令文档中所述,它可用于执行从头开始 MD 模拟或能量最小化,或评估一系列独立系统的量子能量和力。 examples/mdi 目录包含所有这些用例的示例输入脚本。

该软件包还有一个fix mdi/qmmm 命令,其中 LAMMPS 作为 MDI 驱动程序与量子力学代码一起作为 MDI 引擎运行,以执行 QM/MM 模拟。 LAMMPS 输入脚本将系统划分为 QM 和 MM(分子力学)原子。如下所述, examples/QUANTUM 目录具有以这种方式耦合到 3 个不同量子代码的示例。

examples/mdi 目录包含 Python 脚本和 LAMMPS 输入脚本,它们使用 LAMMPS 作为 MDI 驱动程序或引擎,或两者。目前,提供了 5 个示例用例:

  • 使用 2 个 LAMMPS 实例运行从头开始 MD (AIMD)。作为驱动程序,LAMMPS 在 NVE 或 NPT 模式下执行时间步进。作为一个引擎,LAMMPS 计算力并且是量子代码的替代品。

  • LAMMPS 作为驱动程序运行 MD 模拟。每 N 步,它都会将当前快照传递给 MDI 引擎,以评估能量、维里力和原子力。作为引擎,LAMMPS 是量子代码的替代品。

  • LAMMPS 循环处理一系列数据文件,并将配置传递给 MDI 引擎,以评估能量、维里力和原子力,从而充当模拟驱动程序。作为引擎,LAMMPS 被用作量子代码的替代品。

  • Python 脚本驱动程序调用一系列不相关的 LAMMPS 计算。计算可以是单点能量/力评估、MD 运行或能量最小化。

  • 使用 Python 驱动程序代码和 2 个 LAMMPS 实例作为引擎运行 AIMD。第一个 LAMMPS 实例执行 MD 时间步进。第二个 LAMMPS 实例充当计算力的替代 QM 代码。

注:在使用 LAMMPS 作为引擎的任何示例中,可以在其位置使用实际的 QM 代码(前提是它支持 MDI),无需修改输入脚本或启动命令,但指定 QM 代码的名称除外。

examples/mdi/Run.sh 文件说明了如何启动驱动程序和引擎代码,以便它们通过 MPI 或套接字使用 MDI 库进行通信,或者使用引擎作为独立代码或插件库进行通信。

截至 2023 年 3 月,这些是通过 LAMMPS 发行版中包含的 Python 包装脚本提供的具有 MDI 支持的量子代码。这些可以与 fix mdi/qm 和 fix mdi/qmmm 命令一起使用来执行整个系统的 QM 计算(例如 AIMD)或 QM/MM 模拟。有关更多详细信息,请参阅 examples/QUANTUM 子目录:

  • LATTE - 仅限 AIMD

  • PySCF - 仅 QM/MM

  • NWChem - AIMD 或 QM/MM

还有至少两种具有直接 MDI 支持的量子代码:Quantum ESPRESSO (QE) 和 INQ。还有一些 QM 代码通过 QCEngine 或 i-PI 获得间接支持。前者意味着它们需要一个支持 MDI 的包装程序 (QCEngine),该程序可以写入/读取文件以将数据传递给量子代码本身。 QCEngine 支持和 i-PI 支持的量子代码列表位于 MDI 网页上。

这些直接和间接支持代码应该可用于完整的系统计算(例如 AIMD)。它们是否支持 QM/MM 模型取决于各个 QM 代码。

b5194c14cbd7479d8b2784b961e33f2c.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1583915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网友将饭卡余额改成100多万

你在学校干过最疯狂的事是什么? 一位学计算机的网友说,他改造过的水卡和饭卡都能无限使用,两年后在食堂刷卡,被食堂阿姨发现余额竟然还剩一百多万,虽然没有赔钱,但是被学校教务处处分了,怎么说…

【C++基础】运算符和流程控制语句

C中的运算符和流程控制语句 一、运算符1. C和Java在通用运算符中的不同之处对比2. C中的位运算符2.1 移位运算符2.2 位逻辑运算符 3. 运算时的类型转换总结3.1 隐式类型转换3.2 显式类型转换(强制类型转换) 4. 注意 二、流程控制语句1. C和Java在通用流程…

微服务架构下的配置管理:Go 语言与 YAML 的完美结合

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力! 在微服务架构盛行的今天,每个服务都是独立部署的实体,它们通常拥有各自的配置需求。应用程序配置文件扮演…

FPN(Feature Pyramid Network)详解

文章涉及个人理解部分,可能有不准确的地方,敬请指正 0. 概述 FPN,全名Feature Pyramid Networks,中文称为特征金字塔网络。它是2017年cvpr上提出的一种网络,主要解决的是目标检测中的多尺度问题。FPN通过简单的网络连…

【Android】【root remount】【3】remount 文件详细信息获取

前言 我们在root & remount 设备后,push相关文件到systm 、vendor、product 等目录进行调试,那么我们push的文件被保存在什么地方呢? 以及我们FWS、app侧如何过去push 的文件信息呢? remount push 文件保存 push 文件保存的…

【汇编语言实战】输入2个整数求最大公约数

C语言描述该程序流程&#xff1a; //辗转相除法 #include <stdio.h> int main() {int a,b;scanf("%d %d",&a,&b);while(a-b!0){if(a>b){aa-b;}else{bb-a;}}printf("%d",a); }汇编语言&#xff1a; include irvine32.inc .data a dword …

rk3588开发板ubuntu系统下安装ftp服务器及windows客户端建立连接

出发点:两台主机之间通过ftp进行文件传输 一.服务端安装 在FileZilla官网上找到服务端版本: 支持x86-64 查询rk3588的芯片架构: uname -m 芯片架构为aarch64,因此该软件不支持。 更换为:vsftpd 操作步骤为: 1)安装:sudo apt install vsftpd 2)启动:sudo syste…

DataX 数据库同步部分源码解析

在工作中遇到异构数据库同步的问题,从Oracle数据库同步数据到Postgres&#xff0c;其中的很多数据库表超过百万&#xff0c;并且包含空间字段。经过筛选&#xff0c;选择了开源的DataXDataX Web作为基础框架。DataX 是阿里云的开源产品&#xff0c;大厂的产品值得信赖&#xff…

Day1 省选衔接题 思路总结

Day1 省选题 思路 取数 可反悔的贪心。我们开一个双向链表记录此时每个数的前/后一个数是什么。一个简单但不一定正确的贪心策略即为&#xff1a;每次都取走当前值最大的且可取的数&#xff0c;并更新列表。考虑如何使这个贪心思路正确。 设 p r e x pre_x prex​ 表示 x x …

【Java基础题型】逆序输出字符串

将一个字符串str的内容颠倒过来&#xff0c;并输出。str的长度不超过100个字符。 输入格式 输入包括一行。 第一行输入的字符串。 输出格式 输出转换好的逆序字符串。 样例输入 I am a student 样例输出 tneduts a ma I 涉及较有意思的知识点&#xff1a; &#xff08;…

el-table合计行添加按钮操作

针对于el-table中合计功能中的操作栏也可以按钮&#xff0c;并且可以添加点击事件 ElTable源码里footer部分是&#xff0c;这种方式渲染的&#xff0c;也就是 支持传递VNode。使用h第一个参数传递 组件&#xff0c;可以把组件转成VNode&#xff0c;比如现在要在右下角加一个 详…

打卡--MySQL8.0 四 (索引及执行计划)

一、索引的创建与使用 1、索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 &#xff08;1&#xff09;从 功能逻辑 上说&#xff0c;索引主要有 4 种&#xff0c;分别是普通索引、唯一索引、主键索引、全文索引。 &#xff08;…

Redis(持久化 -- RDB AOF)

持久化 通常我们认为持久化为: 重启进程/重启主机之后, 数据仍然存在不丢失 把数据存储在硬盘上 – 持久 把数据存储在内存中 – 不持久 Redis 持久化 redis 是一个内存数据库, 也就是说本身是不持久的(但是快[效率高]), 于是 Redis 提供了持久化机制 — RDB 和 AOF 二者都是对…

day55 最长递增子序列 最长连续递增子序列 最长重复子数组

题目1 300 最长递增子序列 题目链接 300 最长递增子序列 题意 找到整数数组nums的最长严格递增子序列的长度&#xff08;子序列并不改变原始的顺序&#xff0c;但是可以删除元素&#xff09; 动态规划 动规五部曲 1&#xff09;dp数组及下标i的含义 dp[i] 表示以nums[i…

SRIO学习(1)SRIO介绍以及IP核详解

文章目录 一、SRIO介绍1.1、概要1.2、RapidIO与传统嵌入互连方式的比较1.3、串行RapidIO协议&#xff08;SRIO&#xff09; 二、RapidIO协议结构及包格式2.1、逻辑层2.2 传输层2.3 物理层 三、IP核详解3.1、逻辑层3.1.1 I/O端口3.1.2 消息&#xff08;Message&#xff09;端口3…

Linux操作系统上启动redis服务

一、下载安装redis 网上找教程。 二、修改redis.conf配置文件 1.先进入redis目录 2. ls查看文件 3.修改redis.conf中的配置&#xff0c;将daemonize no改成daemonize yes。 输入指令进行修改修改 vi redis.conf 保存退出。 三、启动redis服务 在下载的redis目录下执行以…

卷积通用模型的剪枝、蒸馏---剪枝篇(此处以deeplabv3+为例,可根据模型自行定制剪枝层)

之后的两篇文章是对前段时间工作的一个总结。 一、环境配置 1.1、文章以b导的代码为模板,环境配置比较简单(第二篇蒸馏篇结束后会放置剪枝蒸馏配置好的百度网盘链接),其他算法自行配置,在剪枝之前,需要保证算法能够在本地跑通。 B导链接: https://github.com/bubbliiiin…

分享 GoLand 2024.1 激活的方案,支持JetBrains全家桶

大家好&#xff0c;欢迎来到金榜探云手&#xff01; GoLand 公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 GoLand等。这些工具被广…

串的存储结构

串其实是一种特殊的线性表&#xff0c;用什么样的存储结构实现线性表就可以类似的用什么样的方法实现串 一、串的顺序存储 1.静态数组&#xff08;定长顺序存储&#xff09;&#xff1a; //定义一个静态数组实现#define MAXLEN 255 //预定义最大串长为255 typedef st…

代码随想录35期Day08-字符串

344.反转字符串 位运算 func reverseString(s []byte) {l : 0r : len(s) - 1for l < r {s[l] ^ s[r]s[r] ^ s[l]s[l] ^ s[r]lr--} }541. 反转字符串II 没技巧 func reverseStringRange(s []byte, l int, r int) {if r > len(s) {r len(s) - 1}for l < r {s[l] ^…