计算化学公社

 找回密码 Forget password
 注册 Register
Views: 17902|回复 Reply: 9
打印 Print 上一主题 Last thread 下一主题 Next thread

[VASP] 固定原子优化问题

[复制链接 Copy URL]

490

帖子

2

威望

5126

eV
积分
5656

Level 6 (一方通行)

跳转到指定楼层 Go to specific reply
楼主
需要用VASP优化超胞的表面,现在的想法是需要固定超胞中下面几层的原子,而上面几层的原子优化时可以移动。

现在遇到的是问题是:对于这个超胞有很多原子(几百个),但POSCAR文件中是按照元素类型来排序原子坐标,因此如果直接生成POSCAR文件中不确定哪些原子需要固定。我现在采用的做法是通过MS先做成固定原子的cif,然后用vesta转成poscar;然后再把不需要固定的原子从ms导出cif,再转成poscar.  请教一下如果要实现这个过程,有更好、更方便的方法吗?  先谢谢了~

689

帖子

2

威望

4193

eV
积分
4922

Level 6 (一方通行)

2#
发表于 Post on 2017-10-17 09:23:38 | 只看该作者 Only view this author
把CIF文件导成POSCAR文件,按照Z方向坐标排序,根据Z方向坐标固定即可

3754

帖子

3

威望

1万

eV
积分
19676

Level 6 (一方通行)

围观吃瓜群众

3#
发表于 Post on 2017-10-17 09:33:02 | 只看该作者 Only view this author
我能想到三种方法,你看哪种方便就用哪种:
1、直接根据原子分数坐标的z分量的范围来判断,写个python或者其他语言的小程序就可以了。
2、如果不会编程的话也可以把产生坐标的格式稍微处理一下,然后拷贝到Excel对z分量做个排序,这样要被固定的原子相对比较集中,输入"F F F"往下拖就行,相对写个小程序反而操作麻烦许多。
3、如果你对vi或者ue编辑器稍微熟悉点的话,可以这么做:对要固定的原子在MS下给磁矩初猜,用CASTEP计算选项卡打开自旋极化后,在计算选项卡中files-save files,产生的文件有一个隐藏的cell文件,被标记的原子旁边会有spin的大小,你可以用这个区分原子是否需要固定,最后利用列操作删除元素符号和自旋信息,贴到POSCAR即可。

评分 Rate

参与人数
Participants 2
eV +5 收起 理由
Reason
让你变成回忆 + 3 谢谢
sobereva + 2 欢迎讨论

查看全部评分 View all ratings

日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

490

帖子

2

威望

5126

eV
积分
5656

Level 6 (一方通行)

4#
 楼主 Author| 发表于 Post on 2017-10-17 09:37:13 | 只看该作者 Only view this author
jiangning198511 发表于 2017-10-17 09:23
把CIF文件导成POSCAR文件,按照Z方向坐标排序,根据Z方向坐标固定即可

好的,谢谢,我去试试!

490

帖子

2

威望

5126

eV
积分
5656

Level 6 (一方通行)

5#
 楼主 Author| 发表于 Post on 2017-10-17 09:37:22 | 只看该作者 Only view this author
卡开发发 发表于 2017-10-17 09:33
我能想到三种方法,你看哪种方便就用哪种:
1、直接根据原子分数坐标的z分量的范围来判断,写个python或者 ...

好的,谢谢老师~

418

帖子

4

威望

2910

eV
积分
3408

Level 5 (御坂)

6#
发表于 Post on 2017-10-17 11:30:20 | 只看该作者 Only view this author
1. 安装ASE库
2. 读入poscar文件,根据z坐标添加约束
3. 输出POSCAR

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
sobereva + 1

查看全部评分 View all ratings

490

帖子

2

威望

5126

eV
积分
5656

Level 6 (一方通行)

7#
 楼主 Author| 发表于 Post on 2017-10-18 11:09:15 | 只看该作者 Only view this author
本帖最后由 让你变成回忆 于 2017-10-18 11:19 编辑
卡开发发 发表于 2017-10-17 09:33
我能想到三种方法,你看哪种方便就用哪种:
1、直接根据原子分数坐标的z分量的范围来判断,写个python或者 ...

老师您好,按照你的第二种做法,我尝试了。并且可以知道哪些原子需要添加F F F, 但是接下来的问题是: 我这些固定的原子并不是只有一种原子,而是两种或多种, 这样做了以后岂不是原子的顺序完全打乱了?

3754

帖子

3

威望

1万

eV
积分
19676

Level 6 (一方通行)

围观吃瓜群众

8#
发表于 Post on 2017-10-18 12:19:01 | 只看该作者 Only view this author
让你变成回忆 发表于 2017-10-18 11:09
老师您好,按照你的第二种做法,我尝试了。并且可以知道哪些原子需要添加F F F, 但是接下来的问题是:  ...

添加完T和F之后再取消排序
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

418

帖子

4

威望

2910

eV
积分
3408

Level 5 (御坂)

9#
发表于 Post on 2017-10-19 10:03:23 | 只看该作者 Only view this author
本帖最后由 万里云 于 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")

10

帖子

0

威望

197

eV
积分
207

Level 3 能力者

10#
发表于 Post on 2017-10-24 19:18:53 | 只看该作者 Only view this author
让你变成回忆 发表于 2017-10-18 11:09
老师您好,按照你的第二种做法,我尝试了。并且可以知道哪些原子需要添加F F F, 但是接下来的问题是:  ...

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

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-15 22:57 , Processed in 0.154742 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list