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

关注 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		real

atom_style	charge
read_data	data.CHO

pair_style	reax/c NULL
pair_coeff	* * ffield.reax.cho H C O

neighbor	2 bin
neigh_modify	every 10 delay 0 check no

fix		        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.25

dump		1 all atom 1000 dump.reax.cho

run		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 = 49

n_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 = 7
    else:
        pre_line = 8
    for 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 += 1
            tmp = 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 = 0
    atom_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:5
        fgetl(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_atom
        atom_sec{k} = fgetl(dump_file);
    end

    % bonds.reaxff 文件处理
    if i == 1
        pre_line = 7;
    else
        pre_line = 8;
    end
    for j = 1:pre_line
        fgetl(bonds_file);
    end

    % 读取键信息
    bond_idx = 1;
    for k = 1:n_atom
        line_bond = fgetl(bonds_file);
        bond_data = strsplit(line_bond);
        nb = str2double(bond_data{3});
        for l = 1:nb
            n_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;
        end
    end

    % 写入 data 文件
    data_filename = fullfile(work_path, sprintf("data%d", i));
    data_file = fopen(data_filename, 'w');
    if data_file == -1
        error("Failed to open file: %s", data_filename);
    end
    
    fprintf(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 路径

在这里插入图片描述

四 详细案例及教程

(请点击)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GIT与github的链接(同步本地与远程仓库)

1.官网下载GIT Git - 安装 Git 2.GIT生成密钥 2.1 打开gitbash配置邮箱与用户名(非初次使用GIT跳过这一步) git config --global user.name "你的用户名" git config --global user.email "你的邮箱" 2.2 生成ssh密匙 1&#xff0…

从虚拟到现实:AI与AR/VR技术如何改变体验经济?

引言:体验经济的崛起 在当今消费环境中,产品与服务早已不再是市场竞争的唯一焦点,能够提供深刻感知和独特体验的品牌,往往更能赢得消费者的青睐。这种转变标志着体验经济的崛起。体验经济不仅仅是简单的买卖行为,而是通…

利用Python爬虫速卖通按关键字搜索AliExpress商品

在当今互联网时代,数据的价值不言而喻,尤其是在电子商务领域。对于从事市场研究、数据分析或者个人项目开发的人士来说,能够从电商平台如速卖通(AliExpress)获取商品数据是一项非常有用的技能。Python以其简洁明了的语…

qt QZipWriter详解

1、概述 QZipWriter是Qt框架中用于创建ZIP文件的类。它允许开发者将多个文件和目录压缩成一个ZIP文件,支持多种压缩算法,并且易于集成到现有的Qt项目中。通过QZipWriter,开发者可以轻松实现文件的压缩、管理压缩包中的文件等功能。 需要注意…

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

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

【Java】Jackson序列化案例分析

1.Jackson介绍 Jackson 是一个流行的 Java 库,用于处理 JSON 数据。它提供了高效的序列化和反序列化功能,能够将 Java 对象转换为 JSON 格式,反之亦然。 它由 FasterXML 开发和维护。Jackson 的设计目标是提供高效、灵活且易于使用的 JSON 处…

Java反射学习(2)(“反射“机制获取构造方法及内部信息(Constructor类))

目录 一、"Class"对象实例化的常见三种方式以及使用时机。 (1)源代码(编写)阶段——使用全限定类名.forName()。 (2)加载阶段——使用类名.class。 (3)运行阶段——使用对象.getClass()。 二、Ja…

洛谷 P1595 信封问题 C语言dp

题目描述 某人写了 n 封信和 n 个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。 输入格式 一个信封数 n,保证 n≤20。 输出格式 一个整数,代表有多少种情况。 输入输出样例 输入 #1 2 输出 #1 1 输入 #2 3 输…

【LuaFramework】服务器模块相关知识

目录 一、客户端代码 二、本地服务器代码 三、解决服务器无法多次接收客户端消息问题 一、客户端代码 连接本地服务器127.0.0.1:2012端口(如何创本地服务器,放最后说),连接成功后会回调 协议号Connect是101,其他如下…

解决Ascend上vllm运行时出现urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]

背景 尝试使用vllm模型,脚本代码如下: from vllm import LLM, SamplingParamsprompts ["Hello, my name is","The president of the United States is","The capital of France is","The future of AI is", …

【卷积神经网络】常用评价指标总结

评估指标 概述 该评价指标适合分类任务与目标检测,主要用于评估模型的性能。该文章对相关指标进行总结,同时对输出的图片进行学习分析 混淆矩阵的组成 TP(True Positives,真正例):实际为正例,…

HarmonyOS NEXT 的技术发展和市场趋势:打造1+8+N的万物互联新世界

随着5G、AI、物联网等技术的飞速发展,全球智能设备和操作系统的竞争也日益激烈。在这一背景下,华为推出的HarmonyOS NEXT正逐渐成为智能设备生态中一个重要的参与者,其独特的18N战略布局以及跨设备、跨平台的互联互通理念,正在塑造…

免费 IP 归属地接口

免费GEOIP,查询IP信息,支持IPV4 IPV6 ,包含国家地理位置,维度,asm,邮编 等,例如 例如查询1.1.1.1 http://geoip.91hu.top/?ip1.1.1.1 返回json 对象

以太网通信--读取物理层PHY芯片的状态

PHY芯片通过MDIO接口进行读写,框图如下所示: 原理很简单,就是按照时序将PHY芯片的指定寄存器信息读出或者写入。 MDC时钟需要输出到PHY芯片,一般不低于80MHz。 MDIO是双向接口,FPGA读出状态信息时为输入,FP…

Docker服务发现新纪元:探索Consul的无限魅力

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 •座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元个人主页:团儿.-CSDN博客 目录 前言&…

OpenHarmony-6.IPC/RPC组件

IPC/RPC组件机制 1.基本概念 IPC:设备内的进程间通信(Inter-Process Communication)。 RPC:设备间的进程间通信(Remote Procedure Call)。 IPC/RPC用于实现跨进程通信,不同的是前者使用Binder驱…

0.机顶盒晶晨s905l3b芯片--刷入第三方系统+安卓9 root教程+armbian写入EMMC教程

机顶盒s905l3b芯片刷第三方系统安卓9 root教程刷armbian写入EMMC教程 声明: 由于固件、软件、镜像等持续更新,本文仅代表当前所使用版本的流畅安装记录。行文略长,关键代码处会配以截图展示,请自行对比是否存在差异导致安装失败…

视频监控平台:Liveweb视频汇聚融合平台智慧安防视频监控应用方案

Liveweb是一款功能强大、灵活部署的安防视频监控平台,支持多种主流标准协议,包括GB28181、RTSP/Onvif、RTMP等,同时兼容海康Ehome、海大宇等厂家的私有协议和SDK接入。该平台不仅提供传统安防监控功能,还支持接入AI智能分析&#…

汇编语言学习

想要理解栈溢出的最基本原理,汇编和栈是必不可少的,不然想我之前学了也是白学,原理都不知道 一、准备 1.安装gcc sudo apt-get build-dep gcc 这里显示版本不对,我用的是国内镜像源,需要换一下配置 sudo nano /e…

“乡村探索者”:村旅游网站的移动应用开发

3.1 可行性分析 从三个不同的角度来分析,确保开发成功的前提是有可行性分析,只有进行提前分析,符合程序开发流程才不至于开发过程的中断。 3.1.1 技术可行性 在技术实现层次,分析了好几种技术实现方法,并且都有对应的成…