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

关注 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.mzph.cn/pingmian/65466.shtml

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

相关文章

“自动驾驶第一股” 图森未来退市转型:改名 CreateAI、发布图生视频大模型 “Ruyi”

12 月 19 日,自动驾驶公司图森未来(TuSimple)宣布启用全新品牌 CreateAI,并发布多项在生成式 AI 领域的进展。 CreateAI 宣布获著名武侠 IP《金庸群侠传》正版授权,将开发一款大型武侠开放世界 RPG 游戏。 新的 Creat…

FreeRTOS实战——一、基于HAL库项目的FreeRTOS移植步骤

FreeRTOS实战——一、基于HAL库项目的移植步骤 文章目录 FreeRTOS实战——一、基于HAL库项目的移植步骤前言一、下载和移植FreeRTOS二、系统文件配置2.1 FreeRTOSConfig.h中添加如下3个配置:2.2 修改stm32f1xx_it.c 前言 废话不多说,在FreeRTOS基础&…

编程初学者使用 MariaDB 数据库反射生成

编程初学者使用 MariaDB 数据库反射生成 数据库反射生成,是动词算子式通用代码生成器提供的高级功能,可以利用已有的数据库,反射生成相应数据库的前端和后端项目。此功能自动化程度很高,并且支持完善的元数据和数据编辑&#xff…

yolov6算法及其改进

yolov6算法及其改进 1、YOLOV6简介2、RepVGG重参思想3、YOLOv6架构改进3.1、Backbone方面3.2、SPP改进3.3、Neck改进3.4、Head改进 4、正负样本匹配与损失函数4.1、TaskAligned样本匹配4.2、VFL Loss分类损失函数4.3、SIOU损失函数4.4、DFL损失函数 1、YOLOV6简介 YOLOv6设计主…

Redis字符串底层结构对数值型的支持常用数据结构和使用场景

字符串底层结构 SDS (Simple Dynamic Strings) 是 Redis 中用于实现字符串类型的一种数据结构。SDS 的设计目标是提供高效、灵活的字符串操作,同时避免传统 C 字符串的一些缺点。 struct sdshdr {int len; // 已使用的长度int free; // 未使用的长度char bu…

面试241228

面试可参考 1、cas的概念 2、AQS的概念 3、redis的数据结构 使用场景 不熟 4、redis list 扩容流程 5、dubbo 怎么进行服务注册和调用,6、dubbo 预热 7如何解决cos上传的安全问题kafka的高并发高吞吐的原因ES倒排索引的原理 spring的 bean的 二级缓存和三级缓存 spr…

小程序配置文件 —— 13 全局配置 - window配置

全局配置 - window配置 这里讲解根目录 app.json 中的 window 字段,window 字段用于设置小程序的状态栏、导航条、标题、窗口背景色; 状态栏:顶部位置,有网络信号、时间信息、电池信息等;导航条:有一个当…

深度解析:Maven 和 Gradle 的使用比较及常见仓库推荐

Maven 和 Gradle 是 Java 项目中最常用的构建工具。它们各有优势,适用于不同的场景。本文将对两者进行详细的对比,并推荐一些常用的 Maven 和 Gradle 仓库,帮助开发者高效管理依赖。 一、Maven 和 Gradle 的使用比较 1.1 基本介绍 Maven 基…

STM32 与 AS608 指纹模块的调试与应用

前言 在嵌入式系统中,指纹识别作为一种生物识别技术,广泛应用于门禁系统、考勤机、智能锁等场景。本文将分享如何在 STM32F103C8T6 开发板上使用 AS608 指纹模块,实现指纹的录入和识别功能。 硬件准备 STM32F103C8T6 开发板AS608 指纹模块…

3GPP R18 MT-SDT

Rel-17 指定MO-SDT允许针对UL方向的数据包进行小数据包传输。对于DL,MT-SDT(即DL触发的小数据)可带来类似的好处,即 通过不转换到 RRC_CONNECTED来减少信令开销和UE功耗,并通过允许快速传输(小而少见的)数据包(例如用于定位)来减少延迟。 在R17中,NR_SmallData_INACTIVE的工…

微信小程序打印生产环境日志

微信小程序打印生产环境日志 新建一个log.js文件,写入以下代码: let log wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : nullmodule.exports {debug() {if (!log) returnlog.debug.apply(log, arguments)},info() {if (!log) returnlog.i…

Flutter路由工具类RouteUtils,可二次开发,拿来即用

一、RouteUtils路由核心类 /*** 路由封装*/ class RouteUtils {RouteUtils._();static final navigatorKey GlobalKey<NavigatorState>();// App 根节点Contextstatic BuildContext get context > navigatorKey.currentContext!;static NavigatorState get navigato…

小程序基础 —— 02 微信小程序账号注册

微信小程序账号注册 小程序开发与网页开发不一样&#xff0c;在开始微信小程序开发之前&#xff0c;需要访问微信公众平台&#xff0c;注册一个微信小程序账号。 有了小程序的账号以后&#xff0c;才可以开发和管理小程序&#xff0c;后续需要通过该账号进行开发信息的设置、…

分類タスクの評価指標をわかりやすく解説!

分類タスクの評価指標をわかりやすく解説&#xff01; 1. 正解率&#xff08;Accuracy&#xff09;2. 適合率&#xff08;Precision&#xff09;3. 再現率&#xff08;Recall&#xff09;4. F1スコア&#xff08;F1 Score&#xff09;まとめ こんにちは&#xff01;今日は、機械…

两个链表的第一个公共结点

输入两个链表&#xff0c;找出它们的第一个公共结点。 当不存在公共节点时&#xff0c;返回空节点。 数据范围 链表长度 [1,2000] 保证两个链表不完全相同&#xff0c;即两链表的头结点不相同。 算法思想描述 如上图所示&#xff0c;两种链表的出现的情况只有图中2中&…

4.基于 Couchbase 构建数据仓库的元数据管理方案

在基于 Couchbase 构建数据仓库时&#xff0c;元数据管理至关重要&#xff0c;它能够帮助跟踪数据结构、数据源、ETL作业、分区、索引等信息。以下是几个关键步骤和实现思路&#xff1a; 1. 元数据的定义范围 元数据在数仓中的主要用途包括&#xff1a; 数据库和表的组织&…

OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载

在人工智能的浪潮中&#xff0c;OpenAI的12天发布会无疑是2024年科技界的一场盛宴。从12月5日开始&#xff0c;OpenAI连续12天每天发布一个新应用或功能&#xff0c;标志着AI技术的又一次飞跃。本文将梳理这些激动人心的发布&#xff0c;带你一探究竟。 OpenAI发布会概览 Ope…

MMaudio AI:如何通过 AI 实现精准的视频到音频合成

1. 引言&#xff1a;视频音效制作的新纪元 无论是短视频创作者还是电影后期制作团队&#xff0c;音效始终是提升作品质量的关键。然而&#xff0c;手动调整音效不仅耗时&#xff0c;还容易出错。试想&#xff0c;如果一项 AI 技术能够根据视频内容自动生成与画面完美同步的音效…

理解数列和函数的极限

什么是数列 数列就是按照1定顺序排列的数字&#xff0c; 也可以理解为包含数字元素的队列 格式: a 1 , a 2 , a 3 , . . . , a n a_1, a_2, a_3, ..., a_n a1​,a2​,a3​,...,an​, n ∈ N n \in N n∈N 或者 { a n } \{ a_n \} {an​}, n ∈ N n \in N n∈N 其中 a n…

TOP K问题:利用堆排序找出数组中最小的k个数

设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 找小的数需要建大堆来解决&#xff0c;首先将数组中前K个数建成一个大堆&#xff0c;将从k1个数直到数组结束的所有数与堆顶的数进行比较&#xff0c;如果比堆顶的数小&#xff0c;则替换堆顶的数…