计算化学公社

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

[其它量化程序] 二次差分电荷密度分析问题

[复制链接 Copy URL]

611

帖子

2

威望

4455

eV
积分
5106

Level 6 (一方通行)

CASTEP里面貌似能够直接给出差分电荷密度,但是dmol里面貌似只能给出total density和spin density以及deform density,怎么通过这三个密度给出差分电荷密度呢,搞到一个脚本,但是具体不知道怎么使用它,脚本是perl语言的,希望高手指教下。
#!perl

use strict;
use MaterialsScript qw(:all);

# Authors: Stephen Todd and John Lear

# This script reads in the values of three fields, does some maths, and then
# writes the new field values to a new field. For this example, it calculates the
# electron density difference between a molecule and a surface.

# new field value = xsdDoc1 - ($xsdDoc2 + $xsdDoc3)

# The initial documents require a little setting up as you need to create field
# probes in each field you intend to probe. The example documents already contain field
# probes.


###############################################################################
# Begin user editable settings
#

my $xsdDoc1 = "DMol3All";                                                # Set the name of the first XSD doc

my $xsdDoc2 = "DMol3PdOnly";                                        # Set the name of the second XSD doc

my $xsdDoc3 = "DMol3COOnly";                                        # Set the name of the third XSD doc

my $fieldName = "DMol3 total electron density";                # Set the name of the original field

my $newXSD = "DensityDifferenceDmol3";                        # The name of the xsd for the new field

#
# End user editable settings
################################################################################

# Set the documents and fields up

my $doc1 = $Documents{"$xsdDoc1.xsd"};
my $field1 = $doc1->UnitCell->Fields("$fieldName");

my $doc2 = $Documents{"$xsdDoc2.xsd"};
my $field2 = $doc2->UnitCell->Fields("$fieldName");

my $doc3 = $Documents{"$xsdDoc3.xsd"};
my $field3 = $doc3->UnitCell->Fields("$fieldName");

# Copy the doc1 into a new xsd to work on - this copies the structure and field data

my $docNew = Documents->New("$newXSD.xsd");
$docNew->CopyFrom($doc1);
my $fieldNew = $docNew->UnitCell->Fields("$fieldName");

# Find extent of two of the original fields and check they match

$field1->GridSize =~ m/(\d+)\s*x\s*(\d+)\s*x\s*(\d+)/;
my $xExtent1 = $1;
my $yExtent1 = $2;
my $zExtent1 = $3;

print "$xsdDoc1 field size is:\n";
print "$xExtent1 $yExtent1 $zExtent1\n";

$field2->GridSize =~ m/(\d+)\s*x\s*(\d+)\s*x\s*(\d+)/;
my $xExtent2 = $1;
my $yExtent2 = $2;
my $zExtent2 = $3;

print "$xsdDoc2 field  size is:\n";
print "$xExtent2 $yExtent2 $zExtent2\n";

if (($xExtent1 != $xExtent2) || ($yExtent1 != $yExtent2) || ($zExtent1 != $zExtent2)) {
        die "The fields are not the same size and hence cannot be worked on";
}


# Define the field probes with the probe mode of nearest grid point. This means that the field
# probe jumps to the nearest grid point in the field. You can only edit field values if you
# are on grid points.

my $fieldProbe1;
eval q($fieldProbe1 = $field1->FieldProbe); die "Please add a field probe to $xsdDoc1" if $@;

$fieldProbe1->ProbeMode = "NearestGridPoint";

my $fieldProbe2;
eval q($fieldProbe2 = $field2->FieldProbe); die "Please add a field probe to $xsdDoc2" if $@;

$fieldProbe2->ProbeMode = "NearestGridPoint";

my $fieldProbe3;
eval q($fieldProbe3 = $field3->FieldProbe); die "Please add a field probe to $xsdDoc3" if $@;

$fieldProbe3->ProbeMode = "NearestGridPoint";

my $fieldProbeNew = $fieldNew->FieldProbe;
$fieldProbeNew->ProbeMode = "NearestGridPoint";


# Loop over the different fields, reading in the values and setting the new field value.

for (my $x=0; $x<=$xExtent1; ++$x) {
        
        for (my $y=0; $y<=$yExtent1; ++$y) {
               
                for (my $z=0; $z<=$zExtent1; ++$z) {
        
                # Set the field probe to the ProbeVoxel Position and get the field value
        
                $fieldProbe1->ProbeVoxelPosition = Point(X => $x, Y=> $y, Z => $z);
                my $fieldValue1 = $fieldProbe1->FieldValue;

                $fieldProbe2->ProbeVoxelPosition = Point(X => $x, Y=> $y, Z => $z);
                my $fieldValue2 = $fieldProbe2->FieldValue;

                $fieldProbe3->ProbeVoxelPosition = Point(X => $x, Y=> $y, Z => $z);
                my $fieldValue3 = $fieldProbe3->FieldValue;

                # From the field values, calculate the new field value

                my $newFieldValue = $fieldValue1 - ( $fieldValue2 + $fieldValue3 );
        
                # Move the field probe in the new field and set the value
        
                $fieldProbeNew->ProbeVoxelPosition = Point(X => $x, Y=> $y, Z => $z);
                $fieldProbeNew->FieldValue = $newFieldValue;

            }
          }
}

print "Calculation is complete.";


3809

帖子

3

威望

1万

eV
积分
20334

Level 6 (一方通行)

围观吃瓜群众

2#
发表于 Post on 2018-7-31 09:40:41 | 只看该作者 Only view this author
三个结构(相互作用结构+两个片段)分别用相同的晶格、截断半径、k点等计算密度,然后分别给xsdDoc1、2、3赋值你三个任务的名字运行脚本应该就行了。实际也不是非得采用perl做不可,计算密度所生成的grd文件里面的数据对应做差导出新的grd文件导入到ms也可以实现。

评分 Rate

参与人数
Participants 1
eV +3 收起 理由
Reason
wangyj + 3 谢谢

查看全部评分 View all ratings

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

611

帖子

2

威望

4455

eV
积分
5106

Level 6 (一方通行)

3#
 楼主 Author| 发表于 Post on 2018-7-31 10:04:43 | 只看该作者 Only view this author
卡开发发 发表于 2018-7-31 09:40
三个结构(相互作用结构+两个片段)分别用相同的晶格、截断半径、k点等计算密度,然后分别给xsdDoc1、2、3 ...

分别是这三个文件,但是我把程序与这些文件放在一起,运行出来啥也没有啊,就这个结果:
DMol3All field size is:
16 12 44
DMol3PdOnly field  size is:
16 12 44
Calculation is complete.

DMol3All.xsd

103.87 KB, 下载次数 Times of downloads: 16

DMol3COOnly.xsd

77 KB, 下载次数 Times of downloads: 6

DMol3PdOnly.xsd

101.28 KB, 下载次数 Times of downloads: 9

3809

帖子

3

威望

1万

eV
积分
20334

Level 6 (一方通行)

围观吃瓜群众

4#
发表于 Post on 2018-7-31 12:18:39 | 只看该作者 Only view this author
zyj19831206 发表于 2018-7-31 10:04
分别是这三个文件,但是我把程序与这些文件放在一起,运行出来啥也没有啊,就这个结果:
DMol3All field ...

检查一下三个文件的display sytle-field是否被导入,如果没有的话到analysis里面把电子密度import一下,按道理应该会生成DensityDifferenceDmol3.xsd并且包含电荷密度差的field。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

611

帖子

2

威望

4455

eV
积分
5106

Level 6 (一方通行)

5#
 楼主 Author| 发表于 Post on 2018-7-31 14:04:51 | 只看该作者 Only view this author
卡开发发 发表于 2018-7-31 12:18
检查一下三个文件的display sytle-field是否被导入,如果没有的话到analysis里面把电子密度import一下, ...

只有densitydifference这个set,没有具体的密度图示。

3809

帖子

3

威望

1万

eV
积分
20334

Level 6 (一方通行)

围观吃瓜群众

6#
发表于 Post on 2018-7-31 15:38:15 | 只看该作者 Only view this author
zyj19831206 发表于 2018-7-31 14:04
只有densitydifference这个set,没有具体的密度图示。
# The initial documents require a little setting up as you need to create field
# probes in each field you intend to probe.

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

6万

帖子

99

威望

6万

eV
积分
125126

管理员

公社社长

7#
发表于 Post on 2018-8-1 05:33:14 | 只看该作者 Only view this author
注意求助帖应当在帖子标题明确体现出提问、求助(见http://bbs.keinsci.com/thread-9348-1-1.html),给你改了

你可以产生出不同体系/电子态的.grd文件(一种记录格点数据的文件,详见《详谈Multiwfn支持的输入文件类型、产生方法以及相互转换》http://sobereva.com/379),载入到Multiwfn里,利用Multiwfn的主功能13的子功能11对格点数据进行相互求差,Multiwfn手册4.13节有例子。算完的格点数据可以在Multiwfn里直接观看,也可以导出成cube文件,用VMD、gview等绘图。
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

611

帖子

2

威望

4455

eV
积分
5106

Level 6 (一方通行)

8#
 楼主 Author| 发表于 Post on 2018-8-1 21:17:34 | 只看该作者 Only view this author
sobereva 发表于 2018-8-1 05:33
注意求助帖应当在帖子标题明确体现出提问、求助(见http://bbs.keinsci.com/thread-9348-1-1.html),给你 ...

好的,多谢社长。

23

帖子

0

威望

76

eV
积分
99

Level 2 能力者

9#
发表于 Post on 2021-3-4 16:26:10 | 只看该作者 Only view this author
同问题呀楼主,生成了densitydifference,但是没有密度图示,请问楼主最后如何解决的?

3809

帖子

3

威望

1万

eV
积分
20334

Level 6 (一方通行)

围观吃瓜群众

10#
发表于 Post on 2021-3-4 18:49:18 | 只看该作者 Only view this author
loading 发表于 2021-3-4 16:26
同问题呀楼主,生成了densitydifference,但是没有密度图示,请问楼主最后如何解决的?

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

23

帖子

0

威望

76

eV
积分
99

Level 2 能力者

11#
发表于 Post on 2021-3-5 15:02:28 | 只看该作者 Only view this author
卡开发发 发表于 2021-3-4 18:49
你用的是CASTEP还是DMol3?

dmol3,问题已经解决啦,右键,display style,isosurface,右下角,type选±,isovalue值改小一些就可以显示了

23

帖子

0

威望

76

eV
积分
99

Level 2 能力者

12#
发表于 Post on 2021-3-5 15:03:20 | 只看该作者 Only view this author
zyj19831206 发表于 2018-8-1 21:17
好的,多谢社长。

楼主,我解决了,右键,display style,isosurface,右下角,type选±,isovalue值改小一些就可以显示了

38

帖子

0

威望

537

eV
积分
575

Level 4 (黑子)

13#
发表于 Post on 2021-7-28 16:29:07 | 只看该作者 Only view this author
本帖最后由 xiapin 于 2021-7-28 16:31 编辑
sobereva 发表于 2018-8-1 05:33
注意求助帖应当在帖子标题明确体现出提问、求助(见http://bbs.keinsci.com/thread-9348-1-1.html),给你 ...

社长,请问借助Multiwfn软件做差得到的.cub文件能做出差分电荷图吗?
将.cub导进VMD,Gview都没有做出差分电荷密度图。请问能用VESTA作图吗?导进VESTA后发现得到一些黄色的点点,如图,也是没有得到想要的图。请社长帮忙解答一下作图的疑惑。

VESTA.png (23.86 KB, 下载次数 Times of downloads: 49)

VESTA.png

6万

帖子

99

威望

6万

eV
积分
125126

管理员

公社社长

14#
发表于 Post on 2021-7-29 02:09:29 | 只看该作者 Only view this author
xiapin 发表于 2021-7-28 16:29
社长,请问借助Multiwfn软件做差得到的.cub文件能做出差分电荷图吗?
将.cub导进VMD,Gview都没有做出差 ...

Multiwfn产生的记录密度差的cube文件不可能用VMD作不出来等值面图,没出来肯定是你操作不对。诸如cube文件产生流程有问题,isovalue设得不当,等等

你当前帖的如果是等值面图,肯定是cube文件里记录的根本就不是密度差数据
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

67

帖子

0

威望

223

eV
积分
290

Level 3 能力者

15#
发表于 Post on 2022-4-21 16:34:44 | 只看该作者 Only view this author
楼主请问在运行中出现该问题是什么意思该咋解决请指教
1 field size is:
99 79 44
2 field size is:
48 30 43
The fields are not the same size and hence cannot be worked on

本版积分规则 Credits rule

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

GMT+8, 2026-2-18 12:51 , Processed in 0.279570 second(s), 26 queries , Gzip On.

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