计算化学公社

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

[CASTEP/Dmol3/MS] 怎么得到这个.pot_fmt文件

[复制链接 Copy URL]

609

帖子

2

威望

4351

eV
积分
5000

Level 6 (一方通行)

按照教材那么设置,添加了那条语句,按照要求run files, 但是所得到的文件中没有以这个为扩展名的文件,无法计算平均势能,请高手赐教。

QQ图片20160124001616.jpg (967.06 KB, 下载次数 Times of downloads: 38)

书本中操作过程

书本中操作过程

QQ图片20160124001857.png (25.21 KB, 下载次数 Times of downloads: 22)

最终得到的文件

最终得到的文件

3621

帖子

3

威望

1万

eV
积分
18425

Level 6 (一方通行)

第一原理惨品小作坊

2#
发表于 Post on 2016-1-24 01:08:07 | 只看该作者 Only view this author
1、xsd文件处于激活状态下,在castep的calculation选项卡中设置好计算参数以及在job control中勾选retain server files;
2、点击calculation选项卡中的files-save files,产生计算工作目录,激活*.param文件,在其中加入WRITE_FORMATTED_POTENTIAL: TRUE;
3、激活*.param文件的状态下在castep的calculation选项卡中files-run files,计算开始进行;
4、计算完成后在MS中job explorer中右键计算完成的任务-remote control,会自动激活网页浏览器,里面有计算产生的所有文件,找到*..pot_fmt右键另存为到工作目录即可。

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
zyj19831206 + 5 谢谢

查看全部评分 View all ratings

日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

609

帖子

2

威望

4351

eV
积分
5000

Level 6 (一方通行)

3#
 楼主 Author| 发表于 Post on 2016-1-24 02:44:55 | 只看该作者 Only view this author
卡开发发 发表于 2016-1-24 01:08
1、xsd文件处于激活状态下,在castep的calculation选项卡中设置好计算参数以及在job control中勾选retain s ...

#!perl

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


my $doc=$Documents{"Layer.xsd"};
my $z;
my $slice=$doc->unitcell->slices("slice1");
for($z=0;$z<1;$z+=0.001)
{$slice->sliceFractionPosition=Point(X=>0.5,Y=>0.5,z=>$z);
PRINT $slice->sliceMappedMean,"\n";}
想用这个脚本计算异质结结构的平均势能,应该怎么操作?我把两个文件放在一个文件夹,得到了一个错误。
There is no function or property named "unitcell" on type "Document" at -e line 10.

3.png (7.42 KB, 下载次数 Times of downloads: 21)

计算文件夹

计算文件夹

5.jpg (892.55 KB, 下载次数 Times of downloads: 40)

书本计算过程

书本计算过程

Layer.zip

1.94 MB, 下载次数 Times of downloads: 16

.pot_fmt文件,压缩了下

3621

帖子

3

威望

1万

eV
积分
18425

Level 6 (一方通行)

第一原理惨品小作坊

4#
发表于 Post on 2016-1-24 16:31:51 | 只看该作者 Only view this author
需要将电势文件在Analysis导出到xsd文件当中,然后建立一个Slice,名称得叫"Slice1",然后再运行脚本。你可能没有把静电势导出并建立Slice。这个是以前回答别人的http://emuch.net/bbs/viewthread. ... =1&target=blank可以做参考,最多再多对z做个平均。

评分 Rate

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

查看全部评分 View all ratings

日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

609

帖子

2

威望

4351

eV
积分
5000

Level 6 (一方通行)

5#
 楼主 Author| 发表于 Post on 2016-1-24 18:41:31 | 只看该作者 Only view this author
本帖最后由 zyj19831206 于 2016-1-24 20:06 编辑
卡开发发 发表于 2016-1-24 16:31
需要将电势文件在Analysis导出到xsd文件当中,然后建立一个Slice,名称得叫"Slice1",然后再运行脚本。你可 ...

终于可以了,那个书的代码是有缺憾的,只能计算纵坐标,你写的是能同时计算横坐标和纵坐标的的,应该是:#!perl

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

my $doc=$Documents{"MoS2.xsd"};
my $z;
my $lengthC = $doc->Lattice3D->LengthC;
my $slice=$doc->UnitCell->Slices("Slice1");
for($z=0.0;$z<1;$z+=0.001)
{$slice->SliceFractionalPosition=Point(X=>0.5, Y=>0.5, Z=>$z);
print $z*$lengthC,"\t",$slice->SliceMappedMean,"\n";}

QQ图片20160124183654.png (14.59 KB, 下载次数 Times of downloads: 18)

静电势分布

静电势分布

609

帖子

2

威望

4351

eV
积分
5000

Level 6 (一方通行)

6#
 楼主 Author| 发表于 Post on 2016-7-13 16:30:44 | 只看该作者 Only view this author
卡开发发 发表于 2016-1-24 16:31
需要将电势文件在Analysis导出到xsd文件当中,然后建立一个Slice,名称得叫"Slice1",然后再运行脚本。你可 ...

那在异质结中,不同的物质的平均势能怎么获得?貌似运用这个程序只能得到整体的平均势能。

3621

帖子

3

威望

1万

eV
积分
18425

Level 6 (一方通行)

第一原理惨品小作坊

7#
发表于 Post on 2016-7-13 17:07:40 | 只看该作者 Only view this author
zyj19831206 发表于 2016-7-13 16:30
那在异质结中,不同的物质的平均势能怎么获得?貌似运用这个程序只能得到整体的平均势能。

这我不清楚,主要不知道两个物质的分界面怎么进行划分电势,如果知道划分的方式,分界面隔开的两部分各自做平均应该就行了。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

609

帖子

2

威望

4351

eV
积分
5000

Level 6 (一方通行)

8#
 楼主 Author| 发表于 Post on 2016-7-13 17:36:40 | 只看该作者 Only view this author
卡开发发 发表于 2016-7-13 17:07
这我不清楚,主要不知道两个物质的分界面怎么进行划分电势,如果知道划分的方式,分界面隔开的两部分各自 ...

李明宪的书里运用的是moving-slab averaging这个工具来实现的,不知道具体怎么搞。

QQ图片20160713171752.jpg (969.73 KB, 下载次数 Times of downloads: 30)

QQ图片20160713171752.jpg

3621

帖子

3

威望

1万

eV
积分
18425

Level 6 (一方通行)

第一原理惨品小作坊

9#
发表于 Post on 2016-7-13 18:46:57 | 只看该作者 Only view this author
zyj19831206 发表于 2016-7-13 17:36
李明宪的书里运用的是moving-slab averaging这个工具来实现的,不知道具体怎么搞。

哦,这样就很清楚了,划分是按照原有bulk的尺寸来估计的(也就是a和b的值)。知道划分的话只要对a和b的两个区域分别对Vavrg_a(z)和Vavrg_b(z)对z数值积分除以高度就行,当然,粗略一点的话直接数值平均也成。

评分 Rate

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

查看全部评分 View all ratings

日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

609

帖子

2

威望

4351

eV
积分
5000

Level 6 (一方通行)

10#
 楼主 Author| 发表于 Post on 2016-7-13 22:37:33 | 只看该作者 Only view this author
卡开发发 发表于 2016-7-13 18:46
哦,这样就很清楚了,划分是按照原有bulk的尺寸来估计的(也就是a和b的值)。知道划分的话只要对a和b的两 ...

是不是还需要编程什么的?那个程序只是得到平均值?

3621

帖子

3

威望

1万

eV
积分
18425

Level 6 (一方通行)

第一原理惨品小作坊

11#
发表于 Post on 2016-7-14 00:11:17 | 只看该作者 Only view this author
本帖最后由 卡开发发 于 2016-7-14 00:13 编辑
zyj19831206 发表于 2016-7-13 22:37
是不是还需要编程什么的?那个程序只是得到平均值?

里面的z应该不是变量,否则Varvg(z)就不是个定值了。最简单的处理就是直接对z∈a or b进行平均:

c=a or b
Vavrg(z∈c)=1/c*∫_(z-c/2~z+c/2) Vavrg(z')dz={∫_(z-c/2~z+c/2) Vavrg(z')dz'}/{∫_(z-c/2~z+c/2)dz'}
如果按照△z等间隔的矩形方法来数值积分,离散化之后
{∫_(z-c/2~z+c/2) Vavrg(z')dz'}→∑_(z-c/2~z+c/2) Vavrg(z')△z
{∫_(z-c/2~z+c/2)dz'}→∑_(z-c/2~z+c/2)△z=Nc△z,Nc是z-c/2~z+c/2的格点数目
Vavrg(z∈c)=∑_(z-c/2~z+c/2) Vavrg(z')△z/Nc△z=∑_(z-c/2~z+c/2) Vavrg(z')/Nc,其实也就是第一次平均得到的曲线在z∈c取平均,间隔△z不太大的情况下,误差应该不会很大。要想结果好点的话,可以写个程序,或者excel也能实现(以前见到过有用excel做RK的)。

评分 Rate

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

查看全部评分 View all ratings

日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

本版积分规则 Credits rule

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

GMT+8, 2024-11-23 09:40 , Processed in 0.185947 second(s), 25 queries , Gzip On.

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