使用 ASE 来完成晶胞及原子结构的进一步优化 mol = mol_ini.clone() p1 = spdkit.to_ase_atoms(mol) calc_elastic = ElasticModel(mol, chemenv) p1.set_calculator(calc_elastic) box = Mushybox(p1) # dyn = FIRE(p1, maxstep=0.1) dyn = FIRE(box, maxstep=0.1) dyn.run(fmax=0.001, steps=100)。修改上述代码,输出ASE晶胞优化的结构以及打印晶格参数到当前目录下
时间: 2024-03-07 12:47:01 浏览: 142
好的,您可以参考下面的代码来实现:
```
import os
import numpy as np
from ase.io import write
mol = mol_ini.clone()
p1 = spdkit.to_ase_atoms(mol)
calc_elastic = ElasticModel(mol, chemenv)
p1.set_calculator(calc_elastic)
box = Mushybox(p1)
dyn = FIRE(box, maxstep=0.1)
dyn.run(fmax=0.001, steps=100)
# 打印优化后的晶格参数
lattice_params = np.array(p1.get_cell_lengths_and_angles())
print("Optimized lattice parameters:")
print(lattice_params)
# 将优化后的结构输出至当前目录下的out.cif文件中
write(os.path.join(os.getcwd(), 'out.cif'), p1)
```
以上代码会将优化后的晶格参数打印在控制台上,同时将优化后的结构输出为 CIF 格式的文件 `out.cif`,保存在当前目录下。其中,晶格参数以空格分隔。您可以根据需要修改输出格式。
相关问题
# 使用 ASE 来完成晶胞及原子结构的进一步优化 mol = mol_ini.clone() p1 = spdkit.to_ase_atoms(mol) calc_elastic = ElasticModel(mol, chemenv) p1.set_calculator(calc_elastic) box = Mushybox(p1) # dyn = FIRE(p1, maxstep=0.1) dyn = FIRE(box, maxstep=0.1) dyn.run(fmax=0.001, steps=100)。修改上述代码,输出ASE晶胞优化的结构
可以在上述代码的最后加上以下代码来输出优化后的结构:
```
# 输出优化后的结构
print("优化后的晶格参数:", box.get_cell())
print("优化后的原子坐标:")
for atom in box:
print(atom.symbol, atom.position)
```
其中,`box.get_cell()`可以获取优化后的晶格参数,`for atom in box:`可以遍历优化后的原子坐标并输出。
使用 ASE 来完成晶胞及原子结构的进一步优化 mol = mol_ini.clone() p1 = spdkit.to_ase_atoms(mol) calc_elastic = ElasticModel(mol, chemenv) p1.set_calculator(calc_elastic) box = Mushybox(p1) # dyn = FIRE(p1, maxstep=0.1) dyn = FIRE(box, maxstep=0.1) dyn.run(fmax=0.001, steps=100)。修改上述代码,输出ASE晶胞优化的结构为cif
要将优化后的晶体结构输出为cif文件,可以使用ASE中的`write()`函数。具体来说,可以在代码最后添加以下代码:
```
from ase.io import write
# 输出优化后的结构为cif文件
write('optimized_structure.cif', box, format='cif')
```
其中,`write()`函数的第一个参数是要输出的文件名,第二个参数是要输出的结构,第三个参数是输出格式,这里选择了cif格式。这样,优化后的晶体结构就会被保存到名为`optimized_structure.cif`的文件中。
阅读全文