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

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.mzph.cn/news/805694.shtml

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

相关文章

【现代C++】委托构造函数

现代C中的委托构造函数(Delegating Constructors)是C11引入的特性,它允许一个构造函数调用同一个类中的另一个构造函数,以避免代码重复。这种特性在初始化对象时提高了代码的复用性和清晰性。 1. 基本用法 在同一个类中&#xf…

(小红书平台)2024用户画像洞察报告

现今的小红书坐拥3亿月活用户,男女比例达到3:7,95后占比为50%,00后占比为35%,一二线城市用户占比50%。社区分享者超8000万,日均用户搜索渗透达到60%,UGC内容占比达90%。(数据来源:小…

[lesson16]类的真正形态

类的真正形态 类的关键字 struct在C语言中以及有了自己的含义,必须继续兼容 在C中提供了新的关键字class用于类的定义 class和struct的用法是完全相同的 在用struct定义类时,所有成员的默认访问级别为public 在用class定义类时,所有成员…

虚拟网络设备的真正使命:实现有控制的通信

在数字化时代📲,网络安全🔒成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁🔥,传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备🖧,作为网络架构中…

谈谈功率IC巨头—士兰微

大家好,我是砖一。 今天给大家分享一下士兰微电子公司,,有做功率元器件&开关电源和IC的朋友可以了解一下,希望对你有用~ 1 公司介绍 士兰微电子成立于1997年,于2003年上市,总部位于杭州,…

unity按路径移动

using System; using System.Collections; using System.Collections.Generic; using UnityEngine;public class FollowPathMove : MonoBehaviour {public Transform[] wayPointArray;[SerializeField] private Transform PathA;//路径点的父物体[SerializeField]private Trans…

【春招面试篇】大厂面试干货分享

💓博主CSDN主页:杭电码农-NEO💓   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学更多面经   🔝🔝 面试经验分享 1. 前言2. 去哪儿投简历?内推是否有用?3. 投递简历前的准备…

美团一面,面试官让介绍AQS原理并手写一个同步器,直接凉了

写在开头 今天在牛客上看到了一个帖子,一个网友吐槽美团一面上来就让手撕同步器,没整出来,结果面试直接凉凉。 就此联想到一周前写的一篇关于AQS知识点解析的博文,当时也曾埋下伏笔说后面会根据AQS的原理实现一个自定义的同步器…

【MySQL数据库 | 第二十五篇】深入探讨MVCC底层原理

前言: 在当今互联网时代,数据库扮演着数据存储和管理的关键角色。对于大型Web应用程序和企业级系统而言,高效地处理并发访问和事务管理是至关重要的。多版本并发控制(MVCC)是一种数据库事务处理的技术,旨…

【软件测试】个人博客系统测试

个人博客系统测试 一、项目背景1.1 技术背景1.2 功能背景 二、自动化测试2.1 什么是自动化测试2.2 通过使用selenium进行自动化测试的编写(Java实现)2.3 编写测试用例,执行自动化测试2.3.1 输入用户名:test,密码:123,登录成功2.3.…

CRM集成:解锁业务增长与客户关系管理的关键

预计从2021年至2028年,CRM领域的市场规模将大幅跃升,从约580亿美元增长至1290亿美元。这一显著的增长并非偶然,而是源于CRM平台为企业带来的巨大价值。客户关系管理平台助力销售高效开发潜在客户,客户成功经理有效支持客户&#x…

unable to find a medium containing a live file system解决办法!

背景: 用Ventoy制作U盘系统安装盘,只需要把ISO镜像拷进去就可以,可以放多少个镜像取决于U盘的大小,无需重复制作。Ventoy 将U盘的第一个分区默认格式化为exFAT文件系统来存放ISO文件。 但是,今天鲲鹏920平台安装银河…

Golang | Leetcode Golang题解之第16题最接近的三数之和

题目&#xff1a; 题解&#xff1a; func threeSumClosest(nums []int, target int) int {sort.Ints(nums)var (n len(nums)best math.MaxInt32)// 根据差值的绝对值来更新答案update : func(cur int) {if abs(cur - target) < abs(best - target) {best cur}}// 枚举 a…

心跳机制原理学习

心跳机制 应用场景&#xff1a; 在长连接下&#xff0c;有可能很长一段时间都没有数据往来。理论上说&#xff0c;这个连接是一直保持连接的&#xff0c;但是实际情况中&#xff0c;如果中间节点出现什么故障是难以知道的。更要命的是&#xff0c;有的节点&#xff08;防火墙…

【鸿蒙开发】组件状态管理@Prop,@Link,@Provide,@Consume,@Observed,@ObjectLink

1. Prop 父子单向同步 概述 Prop装饰的变量和父组件建立单向的同步关系&#xff1a; Prop变量允许在本地修改&#xff0c;但修改后的变化不会同步回父组件。当父组件中的数据源更改时&#xff0c;与之相关的Prop装饰的变量都会自动更新。如果子组件已经在本地修改了Prop装饰…

【数据结构练习题】队——1.用队实现栈2.用栈实现队

♥♥♥♥♥个人主页♥♥♥♥♥ ♥♥♥♥♥数据结构练习题总结专栏♥♥♥♥♥ ♥♥♥♥♥上一章&#xff1a;堆的练习题♥♥♥♥♥ 文章目录 1.用队去实现栈1.1问题描述1.2思路分析1.3绘图分析1.4代码实现2.用栈实现队2.1问题描述2.2思路分析1.3绘图分析2.4代码实现 1.用队去实现…

FreeRTOS学习 -- 再识

工作中一直使用FreeRTOS进行着开发&#xff0c;但是没有进行过系统的总结过。现在将快速使用几天时间将FreeRTOS相关知识点加以总结。 官网&#xff1a; https://www.freertos.org/zh-cn-cmn-s/ 参看资料&#xff1a; 正点原子 STM32F1 FreeRTOS开发手册_V1.2.pdf The FreeRTOS…

Linux CPU利用率

Linux CPU利用率 在线上服务器观察线上服务运行状态的时候&#xff0c;绝大多数人都是喜欢先用 top 命令看看当前系统的整体 cpu 利用率。例如&#xff0c;随手拿来的一台机器&#xff0c;top 命令显示的利用率信息如下 这个输出结果说简单也简单&#xff0c;说复杂也不是那么…

使用Mac自带终端进行远程ssh连接Linux服务器

废话不多说&#xff0c;直接上图 好吧&#xff0c;我承认我是多此一举&#xff0c;脱裤子放pi了&#xff0c;其实只需要在终端输入一行命令就可以了&#xff08;呜呜&#xff5e;&#xff09; ssh rootip -p 22 需要注意的是&#xff0c;命令里的ip地址同样要替换成你自己的服…

前端工程化理解 (2024 面试题)

最好介绍远古世界最好随性一点&#xff0c;不要太刻板 &#xff0c;不然像背书 什么是前端工程化&#xff1f; - 知乎 前端工程化的历史 互联网初期&#xff0c;09 年以前&#xff0c;页面只需要展示一些列表、表格、文章内容以及简单图片即可&#xff0c;其目的是为了传送信…