自学内容网 自学内容网

保姆级教程 | Linux中grep命令使用 & 分子动力学轨迹文件输出特定原子电荷值

背景

由于课题需要,现根据lammps运行得到的轨迹需要提取出目标原子的电荷值

步骤

思路

首先确定目标原子在轨迹中的序号(lammps每个原子都有自己独立的【分子号+原子号】)
其次要十分清楚体系中的分子号排序方式,然后只要筛选出目标原子的编号即可知道电荷值

1. 进入目标文件夹(conp-04_2V-02)
2. 确定目标原子序号:

vi lm-conp-0V.inp

查看阴阳离子数和气体个数,进行求和,记为A:106*2+32

其中,type里最后一位代表金属原子(我们的目标原子),记为B:21

不放心的话,可以查看最后一帧输出的data文件,序号仍为21

vi res.002

3. 输出最后一帧里目标原子的电荷值:

(如果lammps输出的data文件轨迹部分的原子序号没有按从小到大的排列的情况:) 

grep "A+1 B" res.002

 grep是linux中的提取命令,使用格式参考:linux命令查询某个条件的前10行

"A+1 B" 的格式是熟知res.002中轨迹格式后的总结

第一次获得的第一列数值记为C:5095

再取A+3输出一次,第一列数值记为D:6102

(两次是因为有上下两个极板,A+3是熟知原子序号的叠加方式后的总结,A和A+3都是目标原子所在的分子号,B是目标原子的原子号)

4. 如果是课题需要,建议使用目标原子电荷值的均值(虽然目前体系也处于平衡态,但个别数据存在波动性而不具备代表性)

在运行过程中,mote.charge文件存放了每一帧内所有原子的电荷值

grep "C " mote.charge | tail -n 120

这里注意:C后面有个空格(否则重复的太多了)

tail指的是输出mote.charge尾部的数据,如果是头部的话用head

这段命令意义:输出mote.charge中满足条件("")的尾部120行数据到屏幕上,如果需要放到文件put.txt里,可以用下面的命令:

grep "C " mote.charge | tail -n 120 > put.txt

 

 第一列为原子序号值,然后三列为原子的xyz值,最后一列是电荷值

将最后一列拷贝到Excel里,数据-分列-完成删除杂乱的内容,数据-筛选(核查原子序号是否都是满足条件的),求和后取均值即可

(没删干净:)

(删干净了:)

5. 最后一帧和求均值的结果对比:(求均值更可靠)

6.把数据导入origin中:


原文地址:https://blog.csdn.net/baguette/article/details/142756965

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!