如何将这个for循环正确地集成到我的程序中?

2024-06-07 01:09:03 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一个显示材料结构的程序(例如本代码中的石墨烯)。我想要的是集成一个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)

Tags: 代码fromimportlayera2fora1cell