计算化学公社

标题: 固定原子优化问题 [打印本页]

作者
Author:
让你变成回忆    时间: 2017-10-17 08:45
标题: 固定原子优化问题
需要用VASP优化超胞的表面,现在的想法是需要固定超胞中下面几层的原子,而上面几层的原子优化时可以移动。

现在遇到的是问题是:对于这个超胞有很多原子(几百个),但POSCAR文件中是按照元素类型来排序原子坐标,因此如果直接生成POSCAR文件中不确定哪些原子需要固定。我现在采用的做法是通过MS先做成固定原子的cif,然后用vesta转成poscar;然后再把不需要固定的原子从ms导出cif,再转成poscar.  请教一下如果要实现这个过程,有更好、更方便的方法吗?  先谢谢了~
作者
Author:
jiangning198511    时间: 2017-10-17 09:23
把CIF文件导成POSCAR文件,按照Z方向坐标排序,根据Z方向坐标固定即可
作者
Author:
卡开发发    时间: 2017-10-17 09:33
我能想到三种方法,你看哪种方便就用哪种:
1、直接根据原子分数坐标的z分量的范围来判断,写个python或者其他语言的小程序就可以了。
2、如果不会编程的话也可以把产生坐标的格式稍微处理一下,然后拷贝到Excel对z分量做个排序,这样要被固定的原子相对比较集中,输入"F F F"往下拖就行,相对写个小程序反而操作麻烦许多。
3、如果你对vi或者ue编辑器稍微熟悉点的话,可以这么做:对要固定的原子在MS下给磁矩初猜,用CASTEP计算选项卡打开自旋极化后,在计算选项卡中files-save files,产生的文件有一个隐藏的cell文件,被标记的原子旁边会有spin的大小,你可以用这个区分原子是否需要固定,最后利用列操作删除元素符号和自旋信息,贴到POSCAR即可。
作者
Author:
让你变成回忆    时间: 2017-10-17 09:37
jiangning198511 发表于 2017-10-17 09:23
把CIF文件导成POSCAR文件,按照Z方向坐标排序,根据Z方向坐标固定即可

好的,谢谢,我去试试!
作者
Author:
让你变成回忆    时间: 2017-10-17 09:37
卡开发发 发表于 2017-10-17 09:33
我能想到三种方法,你看哪种方便就用哪种:
1、直接根据原子分数坐标的z分量的范围来判断,写个python或者 ...

好的,谢谢老师~
作者
Author:
万里云    时间: 2017-10-17 11:30
1. 安装ASE库
2. 读入poscar文件,根据z坐标添加约束
3. 输出POSCAR
作者
Author:
让你变成回忆    时间: 2017-10-18 11:09
本帖最后由 让你变成回忆 于 2017-10-18 11:19 编辑
卡开发发 发表于 2017-10-17 09:33
我能想到三种方法,你看哪种方便就用哪种:
1、直接根据原子分数坐标的z分量的范围来判断,写个python或者 ...

老师您好,按照你的第二种做法,我尝试了。并且可以知道哪些原子需要添加F F F, 但是接下来的问题是: 我这些固定的原子并不是只有一种原子,而是两种或多种, 这样做了以后岂不是原子的顺序完全打乱了?
作者
Author:
卡开发发    时间: 2017-10-18 12:19
让你变成回忆 发表于 2017-10-18 11:09
老师您好,按照你的第二种做法,我尝试了。并且可以知道哪些原子需要添加F F F, 但是接下来的问题是:  ...

添加完T和F之后再取消排序
作者
Author:
万里云    时间: 2017-10-19 10:03
本帖最后由 万里云 于 2017-10-19 10:05 编辑

举个例子:固定所有分数坐标c轴分量小于等于0.5的原子

from ase.io import read, write
from ase.constraints import FixAtoms

crystal = read("POSCAR", format="vasp")
constraint = FixedAtoms(indices=[atom.index for atom in crystal if atom.c <= 0.5])
crystal.set_constraint(constraint)
write(crystal, "POSCAR.new", format="vasp")
作者
Author:
616514185    时间: 2017-10-24 19:18
让你变成回忆 发表于 2017-10-18 11:09
老师您好,按照你的第二种做法,我尝试了。并且可以知道哪些原子需要添加F F F, 但是接下来的问题是:  ...

我也在用这种方法 记得删除元素名称。




欢迎光临 计算化学公社 (http://ccc.keinsci.com/) Powered by Discuz! X3.3