下面是一个显示材料结构的程序(例如本代码中的石墨烯)。我想要的是集成一个for循环,我可以指定x轴和y轴上的原子数,这样以后在运行代码和查看结构时就不必这样做了。我尝试创建一个空数组,并为我创建的变量循环它。例如:
x_axis=5
y_axis=5
Atoms=[]
for i in range(x_axis):
for j in range(y_axis):
R=i*a1+j*a2+b1
Atoms.append((R[0],R[1]))
这不起作用。它打印了这些原子的位置,但没有直观地显示它们的位置
下面显示的代码在没有任何循环尝试的情况下工作,但是我在添加它时遇到了问题。感谢您的帮助。请注意,ase是原子模拟器环境库
from ase import Atoms
from ase.io import read, write
from ase.visualize import view
#Lattice
a1=[+2.4410462393,0.0000000000,0.0000000000]
a2=[1.2205231197,2.1140080551,0.0000000000]
a3=[0.0000000000,0.0000000000,10.0000000000]
#Basis
b1=[0,0,0]
b2=[0,1.4093387034,0]
#Make first layer
layer_one = Atoms('C',positions=[b1], cell=[a1,a2,a3])
#Make 2nd layer
layer_two = Atoms('C',positions=[b2], cell=[a1,a2,a3])
#Combine both layers
total_layer = layer_one + layer_two
#View unit cell
view(total_layer)
#write atom object as POSCAR
write("POSCAR_carbon",total_layer)
目前没有回答
相关问题 更多 >
编程相关推荐