||
Markdown排版:【VASP实用脚本】 Materials Studio中*.xsd转换POSCAR 以及 POSCAR转换*.xsd的脚本
之前介绍过一个很实用的 Materials Studio Perl 脚本:xsd2pos.pl。
它可以把 Materials Studio 的 .xsd 结构转换成 VASP 使用的 POSCAR 格式,同时把 Materials Studio 中固定的原子转换成 POSCAR 中的 F F F,自由原子转换成 T T T。
原来的 xsd2pos.pl 已经非常实用,尤其适合表面、吸附、界面等需要固定部分原子的计算。
这次在原脚本的基础上又做了一些扩展,最终整理成三个比较实用的版本:
xsd2pos_single.pl
xsd2pos_batch.pl
pos2xsd.pl
分别用于:
单个 XSD → POSCAR
批量 XSD → POSCAR
POSCAR → XSD
这样 Materials Studio 和 VASP 之间就可以比较方便地进行双向结构转换。
一、回顾原版 xsd2pos.pl
原始 xsd2pos.pl 的使用方式很简单。
例如脚本中设置:
my $filename = "KNiOH";
如果 Materials Studio 中存在:
KNiOH.xsd
运行后会生成:
KNiOH.txt
其中内容就是 VASP POSCAR 格式。
原脚本最实用的地方,是可以读取 Materials Studio 中已经设置好的固定原子信息。
例如固定原子自动转换为:
F F F
自由原子转换为:
T T T
因此在 Materials Studio 中建好表面模型并固定好底层原子之后,可以直接转换成 VASP 使用的结构,不需要再手动寻找并修改固定原子。
不过原版也有几个使用上的小问题:
每次需要手动修改文件名;
一次只能处理一个 XSD;
输出坐标精度相对较低;
缺少部分输入检查;
只能 XSD → POSCAR,不能反向转换。
因此后面整理了下面三个版本。
二、xsd2pos_single.pl:单文件 XSD → POSCAR
这个版本可以理解为原 xsd2pos.pl 的增强版。
使用时只需要设置:
my $input = "test1.xsd";
运行后自动生成:
test1.xsd → test1.txt
相比原版,主要增加了以下功能:
晶格和坐标输出到 12 位小数;自动检查 UnitCell、原子数量和晶格;自动整理分数坐标到 0~1 范围;自动生成同名 .txt 文件;没有固定原子时不再强制写 Selective Dynamics;支持不同的元素排序方式;自动显示 POTCAR 应该采用的元素顺序。
例如运行完成后会显示:
Elements: H O NiCounts: 12 8 4POTCAR order must match: H -> O -> Ni
如果只是偶尔转换一个 Materials Studio 结构,推荐使用:
xsd2pos_single.pl
三、xsd2pos_batch.pl:批量 XSD → POSCAR
如果一个文件夹中有很多 XSD,一个一个修改文件名和运行脚本就比较麻烦。
例如文件夹中有:
test1.xsd
test2.xsd
test3.xsd
使用 xsd2pos_batch.pl 后,可以一次生成:
test1.txt
test2.txt
test3.txt
使用时只需要修改脚本中的文件夹路径,例如:
my $folder = q{D:\VASP\structures};
脚本会自动扫描这个文件夹中的所有 .xsd 文件,然后逐个转换。
例如:
D:\VASP\structures\test1.xsd
D:\VASP\structures\test2.xsd
D:\VASP\structures\test3.xsd
运行后会在同一个目录生成:
D:\VASP\structures\test1.txt
D:\VASP\structures\test2.txt
D:\VASP\structures\test3.txt
运行过程中会显示每个文件的转换情况,例如:
CREATED: D:\VASP\structures\test1.txtFILE SIZE: 3256 bytesOK
最后还会统计:
Success: 3
Failed: 0
如果其中某一个 XSD 出现问题,也不会影响其他文件继续转换,同时会显示失败原因。
这个版本比较适合:
一批表面模型;一批吸附构型;不同掺杂结构;大量 Materials Studio 模型;高通量计算前的结构准备。
如果结构比较多,推荐直接使用:
xsd2pos_batch.pl
四、pos2xsd.pl:POSCAR → Materials Studio XSD
前两个脚本解决的是:
Materials Studio → VASP
pos2xsd.pl 则解决反方向的问题:
VASP → Materials Studio
例如:
POSCAR.txt → POSCAR.xsd
使用时设置:
my $folder = q{D:\VASP\structures};my $input_name = "POSCAR.txt";
运行后自动生成:
POSCAR.xsd
五、pos2xsd.pl 支持的功能
目前这个脚本可以:
读取 POSCAR 晶格;读取元素和原子数量;支持 Direct 坐标;支持 Cartesian 坐标;读取 Selective Dynamics;把 F F F 恢复为 Materials Studio 固定原子;自动 Calculate Bonds;自动设置为 Ball and Stick;自动生成同名 XSD。
例如 POSCAR 中有:
Selective DynamicsDirect
0.100000 0.200000 0.300000 F F F
0.200000 0.300000 0.400000 F F F
0.300000 0.400000 0.500000 T T T
那么前两个 F F F 原子在转换成 XSD 后,会重新成为 Materials Studio 中真正的固定原子。
生成 XSD 后,可以在 Materials Studio 中选择:
Display StyleAtomColor byConstraint
查看哪些原子被固定。
这对于表面模型尤其方便。
六、自动 Calculate Bonds 和 Ball and Stick
POSCAR 本身没有 Materials Studio 中的 Bond 信息。
所以普通结构转换之后,经常还需要手动执行一次 Calculate Bonds。
pos2xsd.pl 已经把这一步自动加入。
转换完成后会自动执行 Calculate Bonds,同时把显示方式设置成 Ball and Stick。
因此生成的 XSD 打开之后基本可以直接查看,不需要再手动计算一次 Bond。
七、三个脚本怎么选?
如果只转换一个 XSD:
使用 xsd2pos_single.pl
如果需要批量转换一个文件夹中的多个 XSD:
使用 xsd2pos_batch.pl
如果需要把 POSCAR 重新转换回 Materials Studio:
使用 pos2xsd.pl
整体工作流可以理解为:
Materials Studio XSD↓xsd2pos_single.pl 或 xsd2pos_batch.pl↓POSCAR↓VASP 计算↓POSCAR / CONTCAR↓pos2xsd.pl↓Materials Studio XSD
也就是说,从原来的:
Materials Studio → VASP
扩展成了:
Materials Studio ↔ VASP
八、使用时需要注意的几个问题
POSCAR 和 POTCAR 的元素顺序必须一致
例如生成的 POSCAR 元素顺序是:
H O Ni
那么 POTCAR 也必须按照:
HONi
的顺序拼接。
xsd2pos_single.pl 和 xsd2pos_batch.pl 在运行完成后都会提示元素顺序。
生成的 .txt 本质上就是 POSCAR 格式
例如:
test1.txt
里面已经是标准的 POSCAR 内容。
真正计算之前可以根据自己的习惯把它改名为:
POSCAR
POSCAR → XSD 建议使用带元素名称的 VASP 5 格式
例如:
Ni O H4 8 2
如果 POSCAR 中只有:
4 8 2
而没有元素名称,那么仅靠 POSCAR 本身无法可靠判断具体是什么元素,因此脚本不会自动猜测。
部分方向固定目前还不能完整恢复
目前 pos2xsd.pl 可以可靠恢复:
F F FT T T
如果是:
T T FF T T
这种只固定某一个或两个方向的情况,目前不会自动转换成完全固定。
这样处理主要是为了避免改变原来的计算约束。
九、总结
原来的 xsd2pos.pl 已经非常实用,特别适合 Materials Studio 建模之后直接生成带固定原子信息的 POSCAR。
在此基础上,现在整理成三个版本:
xsd2pos_single.plxsd2pos_batch.plpos2xsd.pl
分别对应:
单文件转换;批量转换;反向转换。
如果平时经常需要在 Materials Studio 和 VASP 之间来回处理结构,这三个脚本基本可以覆盖常见的使用场景。
目前整体已经可以实现:
Materials Studio XSD↓POSCAR↓VASP↓POSCAR / CONTCAR↓Materials Studio XSD
后续如果继续完善,主要还有两个方向:
第一,T T F、F T T 等部分方向约束的完整恢复;
第二,POSCAR → XSD 时进一步自动控制 Ball and Stick 的显示参数。
目前版本以稳定转换以及尽量正确保留结构和约束信息为主。
链接 : https://pan.baidu.com/s/1kRPMyCy7i_ivHLEjK7erOw?pwd=1234 提取码: 1234
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2026-10-23 04:43
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社