查看原文
其他

Statistic Disorder—枚举合金结构工具的使用与注意事项

唯理计算 科学指南针一模拟计算联盟 2022-07-09


在年初的MS建模公开课上面,我们简单提到过该脚本工具的使用。此后,一直有同学来问要脚本资源和使用方法。今天借着推送脚本干货的机会,和大家说一下怎么去操作的问题。



想听MS建模公开课的小伙伴,可扫描下方二维码进行购买,更多计算好课也可进入店铺购买



首先说明一下,该脚本不是我写的,而是官方给了使用的模板,见MS帮助文件的以下路径:


Scripting in Materials Studio > MaterialsScript API > Tools > Disorder > StatisticalDisorder


我们只是做了修改,我们给出的脚本是:


#!perl


use strict;
use Getopt::Long;
use MaterialsScript qw(:all);


my $disorderedStructure = $Documents{"Ag2.xsd"};
my $results = Tools->Disorder->StatisticalDisorder->GenerateSuperCells
($disorderedStructure,2,2,2);
my $table = $results->StudyTable;

perl脚本头部就不多解释了,这里是定义一个叫做disorderedStructure的标量,里面是一个叫做Ag2.xsd的文件,该文件包含了分数占据合金体系。然后通过调用StatisticalDisorder工具中GenerateSuperCells function完成该工作(Generates disordered structures based on atom mixtures and occupancy)。


01

GenerateSuperCells function官方的语法说明


object = task->GenerateSuperCells(<source>, <settings>)


Source这里放入的是3D Atomistic Document,所以这里直接用$disorderedStructure指向了那个Ag2.xsd


后面的如果写为1,1,1代表使用原来的晶胞,不做超胞。如果超胞可以自行更高数值(谨慎操作,一不小心就一等几万年),此处是2*2*2超胞


GenerateSuperCells后面括号里面可以定义的参数远不止这些,还有其他的用法,可以参考Scripting in Materials Studio > MaterialsScript API > Tools > Disorder > StatisticalDisorder > GenerateSuperCells


02

如何构建混合占据的3D Atomistic Document


比如金银1:3的合金构建。


1.导入一个Au或者Ag的晶胞,这个在MS自带的结构中就有。我这里导入的是Ag。


然后选中某个原子(因为对称性问题,你选中了一个其实就是选中了全部,我们此时就是要改变全部的)



2.在左边的Properties窗口找到Is Mixture Atom并双击,



3.按照下图添加Au原子在改位置,



4.修改其中金银在此处的比例,并点击OK。即可得到金银比例为1:3的合金



5.将该文件另存为Ag2.xsd以示区别。


6.再点击看着蓝色的Ag原子,左边Properties窗口的参数就变了,



唯理计算友情提醒:聪明的同学肯定想到了cif文件的语法中本身就有分数占据的定义方法,就是那个_atom_site_occupancy ,那么能不能通过导入定义好分数占据的cif来直接生成Ag2.xsd?答案是否定的。因为MS不能很好识别分数占据cif,而且你够建好的Ag2.xsd也是无法导出成分数占据cif的。分数占据相关说明


03

如何运行脚本


此时需要把我们提供的Disorder.pl放到和Ag2.xsd在同一路径下。然后点击图中的下拉三角,设置脚本在什么地方运行,这种耗时费力的计算,建议用服务器算。当然本文例子计算量很小,办公电脑就能做,选择my computer就可以。


然后点击Run on server当然你也可以直接点击那个三角形的运行按键,那个就是直接在当前电脑做。


        


一般不会有报错的情况,如果出现报错,大家仔细看一下,分数占据时候指定的比例,能不能在指定的超胞结构中实现,如果无法实现要扩胞或者及时修改。比如某体系扩胞后总共32个原子,你这边指定9:1的合金结构就属于为难软件了。


当前的计算体系,我以1*1*1的胞去生成,得到如下结构



Report中写入如下信息:


Enumeration of Disorder:
Substitutions:
Ag:0.75 (a)
Au:0.25 (b)
Weighted Configurations: 1 out of 4
4:baaa

原本一个胞内4个原子,替换掉其中一个就是对的,那么理论上有4种可能的结构,但其实都等效于上述看到的结构,所以才会在报告中那么去写。


2*2*2的胞报告如下:


Enumeration of Disorder:
Substitutions:
Ag:0.75 (a)
Au:0.25 (b)
Weighted Configurations: 8043 out of 10518300
32:baaaaaabbaaaaaababaaaabaabaaaaba
192:baaaaaabbaaaaaabbaaaaaababaaaaba
32:baaaaaabbaaaaaabbaaaaaabbaaaaaab
192:baabaaaaaaaabaabbaaaaaabaaabbaaa
384:baabaaaaaaaabaabbaaaaaababaaaaba
192:baabaaaaaaaabaabbaaaaaabbaaaaaab



能够看懂1*1*1 的,再看这个没有难度了。


无论是哪个计算,算完后打开Ag2_Disorder.std,双击Structures那一列 任意一个结构都能够出现符合比例要求的结构。


本期附件为1*1*1和2*2*2计算的原始文件,使用2019和2020版可以直接打开,其他版本同学可以使用里面提供的脚本文件,自行创建合金结构去学习使用。


大家应该感受到了2*2*2的数据量之巨,有没有办法少生成点?大家可以参考如下脚本写法去设置:


my $disorderTask = Tools->Disorder->StatisticalDisorder;
my $results = $disorderTask->GenerateSuperCells
($disorderedStructure,
2,2,2,
Settings(MaxStructures => 100));
my $table = $results->StudyTable;
print "The limit on the number of disordered structures was exceeded!\n"
if ($results->ExceededMaxStructures);

本文留下2个思考:


1.如果把这个枚举脚本,用作生成原子空穴,那么该如何设置?


2.用2*2*2超胞生成的合金和用1*1*1生成之后再去超胞变成2*2*2,两者有什么区别?


附件获取后台回复:0625


END





万众期待的Python课终于来啦!

0基础+免费学+清华大牛还不心动?

转发下方海报集赞即可免费学习

联系小鱼师妹:18310372802(微信同)








往期推荐

BerkeleyGW软件推荐(求解准粒子激发和材料的光学性质)

HER描述符汇总(二)

Gaussian计算CD谱图引发的小技巧讨论

DMF中N原子是sp2杂化还是sp3杂化?(NBO简单应用举例)



感谢与热爱计算的你相遇↓↓↓

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存