反应力场的生成物、反应路径分析方法

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 多 \color{blue}{多} 精 \color{orange}{精} 彩 \color{green}{彩}


主要专栏内容包括:
†《LAMMPS小技巧》: ‾ \textbf{ \underline{\dag《LAMMPS小技巧》:}}  LAMMPS小技巧》: 主要介绍采用分子动力学( L a m m p s Lammps Lammps)模拟相关安装教程、原理以及模拟小技巧(难度: ★ \bigstar
††《LAMMPS实例教程—In文件详解》: ‾ \textbf{ \underline{\dag\dag《LAMMPS实例教程—In文件详解》:}}  ††LAMMPS实例教程—In文件详解》: 主要介绍采用分子动力学( L a m m p s Lammps Lammps)模拟相关物理过程模拟。(包含:热导率计算、定压比热容计算,难度: ★ \bigstar ★ \bigstar ★ \bigstar
†††《Lammps编程技巧及后处理程序技巧》: ‾ \textbf{ \underline{\dag\dag\dag《Lammps编程技巧及后处理程序技巧》:}}  †††Lammps编程技巧及后处理程序技巧》: 主要介绍针对分子模拟的动力学过程(轨迹文件)进行后相关的处理分析(需要一定编程能力。难度: ★ \bigstar ★ \bigstar ★ \bigstar ★ \bigstar ★ \bigstar )。
††††《分子动力学后处理集成函数—Matlab》: ‾ \textbf{ \underline{\dag\dag\dag\dag《分子动力学后处理集成函数—Matlab》:}}  ††††《分子动力学后处理集成函数—Matlab》: 主要介绍针对后处理过程中指定函数,进行包装,方便使用者直接调用(需要一定编程能力,难度: ★ \bigstar ★ \bigstar ★ \bigstar ★ \bigstar )。
†††††《SCI论文绘图—Python绘图常用模板及技巧》: ‾ \textbf{ \underline{\dag\dag\dag\dag\dag《SCI论文绘图—Python绘图常用模板及技巧》:}}  †††††SCI论文绘图—Python绘图常用模板及技巧》: 主要介绍针对处理后的数据可视化,并提供对应的绘图模板(需要一定编程能力,难度: ★ \bigstar ★ \bigstar ★ \bigstar ★ \bigstar )。
††††††《分子模拟—Ovito渲染案例教程》: ‾ \textbf{ \underline{\dag\dag\dag\dag\dag\dag《分子模拟—Ovito渲染案例教程》:}}  ††††††《分子模拟—Ovito渲染案例教程》: 主要采用 O v i t o \rm Ovito Ovito软件,对 L a m m p s \rm Lammps Lammps 生成的轨迹文件进行渲染(难度: ★ \bigstar ★ \bigstar )。

专栏说明(订阅后可浏览对应专栏全部博文): ‾ \color{red}{\textbf{ \underline{专栏说明(订阅后可浏览对应专栏全部博文):}}}  专栏说明(订阅后可浏览对应专栏全部博文):
注意: \color{red} 注意: 注意:如需只订阅某个单独博文,请联系博主邮箱咨询。 l a m m p s _ m a t e r i a l s @ 163. c o m \rm lammps\_materials@163.com lammps_materials@163.com

♠ \spadesuit † \dag 开源后处理集成程序:请关注专栏《LAMMPS后处理——MATLAB子函数合集整理》
♠ \spadesuit † \dag † \dag 需要付费定制后处理程序请邮件联系: l a m m p s _ m a t e r i a l s @ 163. c o m \rm lammps\_materials@163.com lammps_materials@163.com

建模篇:分子动力学模型快速构建 \rm 建模篇:分子动力学模型快速构建 建模篇:分子动力学模型快速构建

M a t e r i a l S t u d i o + M o l t e m p l a t e + P a c k m o l \rm \color{red} Material\ Studio+Moltemplate+Packmol Material Studio+Moltemplate+Packmol

1、 建模篇(上):OPLSAA力场参数之快速建模—MS+Moltemplate

2 、建模篇(下):力场快速设置-AuToFF+Moltemplate

在这里插入图片描述


反应力场的生成物、反应路径分析方法

针对 《 M a t l a b 实现反应力场物产统计》 \rm 《Matlab实现反应力场物产统计》 Matlab实现反应力场物产统计》 中的案例( E x a m p l e / r e a x / C H O \rm Example/reax/CHO Example/reax/CHO)。

一、LAMMPS in文件(出自Example/reax/CHO)

根据Lammps以下的命令可以获得化学键的断裂情况以及反应生成物,那么如何统计反应路径呢?

在这里插入图片描述

# REAX potential for CHO system
# .....units		realatom_style	charge
read_data	data.CHOpair_style	reax/c NULL
pair_coeff	* * ffield.reax.cho H C Oneighbor	2 bin
neigh_modify	every 10 delay 0 check nofix		        1 all nve
fix             2 all qeq/reax 1 0.0 10.0 1e-6 param.qeq
fix             3 all temp/berendsen 500.0 5000.0 100.0
fix             4 all reax/c/species 1 1 100 species.out timestep	0.25dump		1 all atom 1000 dump.reax.chorun		100000

二、化学键生成可视化

请添加图片描述

1. Python脚本

这里用到了鲍老师(公众号: LAMMPS与AI材料设计)早起开源的代码计算,结合Ovito可以实现化学键断裂、生成的可视化。
根据Lammps的命令 f i x 1 a l l r e a x f f / b o n d s 100 b o n d s . r e a x f f \rm fix\ 1\ all\ reaxff/bonds\ 100\ bonds.reaxff fix 1 all reaxff/bonds 100 bonds.reaxff

在这里插入图片描述

#结合LAMMPS中fix bond/reaxff和dump命令的输出文件,将fix bond/reaxff中的键结信息和dump中的坐标信息转换组合写入一系列data文件中。由此就可利用ovito进行可视化。ovito可以读入系列文件,这样就可以看到分子如何断键分解,或反应物如何成键生成产物
#要求使用atom_style full,以保留分子id信息在ovito中分析
#fix bond/reaxff和dump的输出频率要一致。当模拟时间很长时输出频率不能太快。
#对于原子数很多的体系代码速度会较慢
#dump命令必须使用以下格式
#dump 1 all custom 1000 dump.lammpstrj id mol type q x y z
#work_path = "F:\\官能团\\out-12-16\\group-120-150\\新建文件夹\\New Folder\\"bonds = open(work_path + "bonds.reaxff","r")
dump = open(work_path + "dump.out","r")N_Frame = 49n_atom = 105
n_bond = 0
atom_sec = []
bond_sec = []for i in range(N_Frame):for j in range(5):line_dump = dump.readline()line_dump = dump.readline()xlo = line_dump.split()[0]xhi = line_dump.split()[1]line_dump = dump.readline()ylo = line_dump.split()[0]yhi = line_dump.split()[1]line_dump = dump.readline()zlo = line_dump.split()[0]zhi = line_dump.split()[1]line_dump = dump.readline()for k in range(n_atom):line_dump = dump.readline()atom_sec.append(line_dump)if i == 0:pre_line = 7else:pre_line = 8for j in range(pre_line):line_bond = bonds.readline()for k in range(n_atom):line_bond = bonds.readline()nb = int(line_bond.split()[2])for l in range(nb):n_bond += 1tmp = str(n_bond) + " " + "1" + " " + line_bond.split()[0] + " " + line_bond.split()[3+l] + "\n"bond_sec.append(tmp)data = open(work_path + "data" + str(i),"w")data.write("LAMMPS data from bonds\n")data.write("\n")data.write(str(n_atom) + " " + "atoms\n")data.write("3 atom types\n")data.write(str(n_bond) + " " + "bonds\n")data.write("1 bond types\n")data.write("\n")data.write(str(xlo) + " " + str(xhi) + " " + "xlo xhi\n")data.write(str(ylo) + " " + str(yhi) + " " + "ylo yhi\n")data.write(str(zlo) + " " + str(zhi) + " " + "zlo zhi\n")data.write("\n")data.write("Atoms\n")data.write("\n")data.writelines(atom_sec)data.write("\n")data.write("Bonds\n")data.write("\n")data.writelines(bond_sec)data.close()n_bond = 0atom_sec = []bond_sec = []

2. Matlab 脚本

work_path = "F:\官能团\out-12-16\group-120-150\新建文件夹\New Folder\";% 使用 fullfile 拼接路径
bonds_file_path = fullfile(work_path, "bonds.reaxff");
dump_file_path = fullfile(work_path, "dump.out");% 检查文件是否存在
if ~isfile(bonds_file_path)error("File not found: %s", bonds_file_path);
end
if ~isfile(dump_file_path)error("File not found: %s", dump_file_path);
end% 打开文件
bonds_file = fopen(bonds_file_path, 'r');
dump_file = fopen(dump_file_path, 'r');N_Frame = 49;  % 总帧数
n_atom = 105;  % 原子数% 初始化
atom_sec = {};
bond_sec = {};
n_bond = 0;for i = 1:N_Frame% 跳过前5行for j = 1:5fgetl(dump_file);end% 读取盒子尺寸line_dump = fgetl(dump_file);line_dump_split = strsplit(line_dump);xlo = str2double(line_dump_split{1});xhi = str2double(line_dump_split{2});line_dump = fgetl(dump_file);line_dump_split = strsplit(line_dump);ylo = str2double(line_dump_split{1});yhi = str2double(line_dump_split{2});line_dump = fgetl(dump_file);line_dump_split = strsplit(line_dump);zlo = str2double(line_dump_split{1});zhi = str2double(line_dump_split{2});fgetl(dump_file); % 跳过一行% 读取原子部分for k = 1:n_atomatom_sec{k} = fgetl(dump_file);end% bonds.reaxff 文件处理if i == 1pre_line = 7;elsepre_line = 8;endfor j = 1:pre_linefgetl(bonds_file);end% 读取键信息bond_idx = 1;for k = 1:n_atomline_bond = fgetl(bonds_file);bond_data = strsplit(line_bond);nb = str2double(bond_data{3});for l = 1:nbn_bond = n_bond + 1;bond_sec{bond_idx} = sprintf('%d 1 %s %s\n', n_bond, bond_data{1}, bond_data{3+l});bond_idx = bond_idx + 1;endend% 写入 data 文件data_filename = fullfile(work_path, sprintf("data%d", i));data_file = fopen(data_filename, 'w');if data_file == -1error("Failed to open file: %s", data_filename);endfprintf(data_file, "LAMMPS data from bonds\n\n");fprintf(data_file, "%d atoms\n", n_atom);fprintf(data_file, "3 atom types\n");fprintf(data_file, "%d bonds\n", n_bond);fprintf(data_file, "1 bond types\n\n");fprintf(data_file, "%f %f xlo xhi\n", xlo, xhi);fprintf(data_file, "%f %f ylo yhi\n", ylo, yhi);fprintf(data_file, "%f %f zlo zhi\n\n", zlo, zhi);fprintf(data_file, "Atoms\n\n");fprintf(data_file, "%s\n", atom_sec{:});fprintf(data_file, "\nBonds\n\n");fprintf(data_file, "%s\n", bond_sec{:});fclose(data_file);% 重置变量n_bond = 0;atom_sec = {};bond_sec = {};
end% 关闭文件
fclose(bonds_file);
fclose(dump_file);

三、反应路径分析

这里需要用到,曾晋哲等开发的《Reaxff力场反应网络分析reacnetgenerator》。

Jinzhe Zeng, Liqun Cao, Chih-Hao Chin, Haisheng Ren, John Z. H. Zhang, and Tong Zhu. ReacNetGenerator: an automatic reaction network generator for reactive molecular dynamics simulations. Phys. Chem. Chem. Phys., 22(2):683–691, 2020. doi:10.1039/C9CP05091D.

1. 安装

# upgrade pip as old pip may not be supported
pip install -U pip
pip install reacnetgenerator

在这里插入图片描述

在这里插入图片描述

2. 分析

注意 : \color{red} 注意: 注意: $\rm 轨迹文件格式: id type x y z $

针对Lammps生成的轨迹文件

reacnetgenerator --type bond -i bonds.reaxc -a C H O --nohmm

在这里插入图片描述
会在目录下生成一下文件:
在这里插入图片描述

2.1 反应网络

在这里插入图片描述

2.2 生成物

在这里插入图片描述

2.3 路径

在这里插入图片描述

四 详细案例及教程

(请点击)

在这里插入图片描述

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

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

相关文章

HarmonyOS NEXT 实战之元服务:静态案例效果---妙语集语

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: import { authentication } …

C#WPF基础介绍/第一个WPF程序

什么是WPF WPF(Windows Presentation Foundation)是微软公司推出的一种用于创建窗口应用程序的界面框架。它是.NET Framework的一部分,提供了一套先进的用户界面设计工具和功能,可以实现丰富的图形、动画和多媒体效果。 WPF 使用…

【递归与回溯深度解析:经典题解精讲(下篇)】—— Leetcode

文章目录 有效的数独解数独单词搜索黄金矿工不同的路径||| 有效的数独 递归解法思路 将每个数独的格子视为一个任务,依次检查每个格子是否合法。 如果当前格子中的数字违反了数独规则(在行、列或 33 小方块中重复),直接返回 Fals…

SpringCloudAlibaba实战入门之路由网关Gateway断言(十二)

上一节课中我们初步讲解了网关的基本概念、基本功能,并且带大家实战体验了一下网关的初步效果,这节课我们继续学习关于网关的一些更高级有用功能,比如本篇文章的断言。 一、网关主要组成部分 上图中是核心的流程图,最主要的就是Route、Predicates 和 Filters 作用于特定路…

进军AI大模型-环境配置

语言环境配置 合法上网工具: 这个T子试试,一直稳定。走我链接免费用5天: https://wibnm.com/s/ywtc01/pvijpzy python版本: python3.12 Langchain: Introduction | 🦜️🔗 LangChain v0.3 9月16日升级的版本 pip3…

`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别

文章目录 1、什么是空字符串?2、两个引号之间加上空格 好的,我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_chat_union_id ! 这两个条件之间的区别,以及它们在 SQL 查询中的作用: 1. we_chat_union_id IS NOT NULL 含…

elementUI——upload限制图片或者文件只能上传一个——公开版

最近在写后台管理系统时,遇到一个需求,就是上传图片,有且仅能上传一张。 效果图如下: 功能描述:上传图片时,仅支持单选,如果上传图片成功后,展示图片,并隐藏添加图片的…

【RabbitMQ高级篇】消息可靠性问题(1)

目录 1.消息可靠性 1.1.生产者消息确认 1.1.1.修改配置 1.1.2.定义Return回调 1.1.3.定义ConfirmCallback 1.2.消息持久化 1.2.1.交换机持久化 1.2.2.队列持久化 1.2.3.消息持久化 1.3.消费者消息确认 1.3.1.演示none模式 1.3.2.演示auto模式 1.4.消费失败重试机制…

MyBatis知识点笔记

目录 mybatis mapper-locations的作用? mybatis configuration log-impl 作用? resultType和resultMap的区别? 参数 useGeneratedKeys ,keyColumn,keyProperty作用和用法 取值方式#和$区别 动态标签有哪些 MyBat…

Vue3 使用OCR识别图片文字

Tesseract.js 是一个javascript库&#xff0c;可以从图像中获取几乎任何语言的单词&#xff0c;支持文本转pdf功能&#xff0c;精准度很高。 1. 安装 npm install tesseract.js 2. 示例代码&#xff08;vue3版&#xff09; <template><div class"container&qu…

【多维DP】力扣3366. 最小数组和

给你一个整数数组 nums 和三个整数 k、op1 和 op2。 你可以对 nums 执行以下操作&#xff1a; 操作 1&#xff1a;选择一个下标 i&#xff0c;将 nums[i] 除以 2&#xff0c;并 向上取整 到最接近的整数。你最多可以执行此操作 op1 次&#xff0c;并且每个下标最多只能执行一…

python+PyMuPDF库:(一)创建pdf文件及内容读取和写入

目录 文档操作 打开文档 获取文档信息 删除页 复制页 移动页 选择重构合并 保存关闭 页对象操作 内容读取 获取页对象的字体样式 插入文本标签 插入文本内容 字体设置 insert_text添加文本 insert_textbox添加文本 插入图片 获取页面注释、链接、表单字段 …

python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶

【1】引言 前序已经掌握了使用cv2.circle()绘制圆形的基本操作&#xff0c;相关链接为&#xff1a; python学opencv|读取图像&#xff08;二十&#xff09;使用cv2.circle()绘制圆形-CSDN博客 由于圆形本身绘制起来比较简单&#xff0c;因此可以自由操作的空间也就大&#x…

音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件

通过FFmpeg命令可以将mp4文件转换为ps文件。由于ps文件对应的FFInputFormat结构为&#xff1a; const FFInputFormat ff_mpegps_demuxer {.p.name "mpeg",.p.long_name NULL_IF_CONFIG_SMALL("MPEG-PS (MPEG-2 Program Stream)"),.p.flags …

xshell基础设置

一.查看->勾选会话管理器和快速命令栏 二.工具->选项->终端 三.工具->选项->高级 四.文件->默认会话属性->外观&#xff08;看个人喜好&#xff09;

【GlobalMapper精品教程】091:根据指定字段融合图斑(字段值相同融合到一起)

文章目录 一、加载数据二、符号化三、融合图斑1. 根据图斑位置进行融合2. 根据指定字段四、注意事项一、加载数据 订阅专栏后,从私信中查收配套实验数据包,找到data091.rar,解压并加载,如下图所示: 属性表如下: 二、符号化 为了便于比对不同的融合结果,查看属性表根据…

大语言模型(LLM)中大数据的压缩存储及其重要性

在大型语言模型&#xff08;LLM&#xff09;中&#xff0c;KV Cache&#xff08;键值缓存&#xff09;的压缩方法及其重要性。 为什么要压缩KV Cache&#xff1f; 计算效率&#xff1a;在生成文本的过程中&#xff0c;每个生成的token都需要与之前所有的token的键值&#xff…

Springboot关于格式化记录

日期格式化 返回前端日期需要格式化 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</version> </dependency>JsonFormat(pattern "yyyy-MM-dd…

条款19 对共享资源使用std::shared_ptr

目录 一、std::shared_ptr 二、std::shared_ptr性能问题 三、control block的生成时机 四、std::shared_ptr可能存在的问题 五、使用this指针作为std::shared_ptr构造函数实参 六、std::shared_ptr不支持数组 一、std::shared_ptr<T> shared_ptr的内存模型如下图&…

Linux第99步_Linux之点亮LCD

主要学习如何在Linux开发板点亮屏&#xff0c;以及modetest命令的实现。 很多人踩坑&#xff0c;我也是一样。关键是踩坑后还是实现不了&#xff0c;这样的人确实很多&#xff0c;从群里可以知道。也许其他人没有遇到这个问题&#xff0c;我想是他运气好。 1、修改设备树 1)、…