碳纳米管deform

如何将下图所示的圆形碳纳米管 (CNT) 变为压缩碳纳米管?

 

 

其实很简单, 我们只需利用vtst工具进行插值得到中间的过渡结构!

 

首先下载vtstscript文件,下载地址为: https://theory.cm.utexas.edu/vtsttools/download.html

 

把初末结构放在ini,fin两个文件夹里面,命名为CONTCAR

具体命令为: dist.pl ini/CONTCAR fin/CONTCAR N  (N是你要插值的数目)

最后得到一列的文件夹,里面的结构就是插值后的中间结构,如图所示

 

 

 

这里主要注意的是,需要把初末两个结构的原子位置得一一对应,否则会出现乱七八糟的插值结构。

 

因为我的初末结构原子位置不一致,所以我进行了相应的修改,相关python代码如下

 

filepath1 = 'cnt_(16,0)_originalPOSCAR'
with open(filepath1,'r') as f1:
	content1 = f1.readlines()

ls1 = [0] + content1[9:64+9]

filepath2 = 'cnt_(16,0)_flat-POSCAR'
with open(filepath2,'r') as f2:
	content2 = f2.readlines()
ls2 = [0] + content2[9:64+9]


trans = {1:16,3:19,
         2:17,6:22,
         4:20,7:23,
         5:21,10:26,
         40:24,35:27,
         25:25,30:30,
         41:28,36:31,
         26:29,31:34,
         42:32,37:35,
         27:33,32:38,
         43:36,38:39,
         28:37,33:42,
         44:40,39:43,
         29:41,34:46,
         8:44,11:47,
         9:45,14:50,
         12:48,15:51,
         13:49,18:54,
         16:52,19:55,
         17:53,22:58,
         60:56,55:59,
         45:57,50:62,
         61:60,56:63,
         46:61,51:64,
         62:1,57:3,
         47:2,52:6,
         63:4,58:7,
         48:5,53:10,
         64:8,59:11,
         49:9,54:14,
         20:12,23:15,
         21:13,24:18
         }

ls3 = [0]*65
for i in range(1,65):
	ls3[i] = ls1[trans[i]]

# print(ls3)

filepath3 = 'originalPOSCAR'
with open(filepath3,'w') as f3:

	f3.writelines(content1[:9])
	f3.writelines(ls3[1:])

  

 

posted @ 2022-05-20 17:25  ghzphy  阅读(71)  评论(0)    收藏  举报