请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 2852|回复: 36

[综合讨论] 晶格正交化[讨论]

[复制链接]

1538

帖子

3

威望

5715

eV
积分
7313

Level 6 (一方通行)

Ab Initio Amateur

发表于 2017-4-6 06:10:15 | 显示全部楼层 |阅读模式
本帖最后由 卡开发发 于 2017-4-7 13:47 编辑

特定情况下,我们希望晶体的晶格是正交的,如下图(图1)给出了2D晶格作为简单的例子,从白线到红线那样的方式做一个正交化。

图1

图1

这个过程中,相当于把两个晶格基矢线性组合,v'=v,u'=c1*u+c2*v=|u|sinγ·e_v⊥。而更方便求出u'的方案就是先求出面积,A=u·v=|u||v|sinγ,然后除以v的模长|v|,得到长度|u'|,方向则是与v垂直的e_v⊥。因为体系是周期性的,所以只需要保证两晶格基矢相对位置不变即可,晶格基矢可以任意旋转平移。若推广到3D情形,第三个轴向w也类似,可以通过体积V=|u||v||w|√[1-cos^2(α)-cos^2(β)-cos^2(γ)+2cosαcosβcosγ]除以底面积求得模长,矢量则垂直于u'v'构成的平面;围成底面积的两基矢的正交化过程就和前面2D情形完全相同;原子的直角坐标还是不变的。
但上述的做法会出现9楼http://bbs.keinsci.com/forum.php ... d=42616&fromuid=308提到的问题,也就是说晶格内部的原子不能满足平移性,为了避免这样的问题,实际上我们可以再做进一步的处理:虽然按照这样的方式平移会在一个分量上偏离原有坐标,但对于特定的晶格偏离若干次就会回到原处(图2),因此这样的情况其实只要建立一个合适大小的超胞就能够解决问题。

图二

图二

实际情形复杂很多,大部分的非正交晶格如果这样做正交化偏移的部分与相应的晶格参数之比根本就不是有理数,那么即便建立无穷大的超胞也不可能找到等价的正交晶格。此外,有些晶格正交的过程并不能限制v=v',而是u'=c11u+c12v,v'=c21u+c22v,有些本应该能够正交化的晶格也就被排除了,因此原来的C++程序可能很多情况得不到我们要的结果,所以也只好撤回这个程序。对于二维情形,如果按照u'=c11u+c12v,v'=c21u+c22v考虑,以及考虑晶格内任意一个原子平移m*n次(两个维度分别平移)能够与原来重合,问题就变得颇为复杂,笔者暂时没想到有效的算法。虽然有一些小程序也能做,但反而不及手工做redefine lattice来的灵活,大家有啥好的想法欢迎讨论。



评分

参与人数 5威望 +1 eV +14 收起 理由
dwxy + 3 とてもいい!
obaica + 1
Warm_Cloud + 5 冬哥大法好
ggdh + 5 谢谢分享
sobereva + 1

查看全部评分

满招损,谦受益。热衷于理论和方法研究水平不高但欢迎讨论。

24

帖子

0

威望

1010

eV
积分
1034

Level 4 (黑子)

发表于 2017-4-6 21:41:30 | 显示全部楼层
如果没有理解错误,即使满足上面的条件只有晶胞参数也不能还原原来晶胞,比如下图 celltransform.PNG
左边格子与右边底边和高相同,按照规则正交化后的晶胞参数是一样的。

只有矩形晶胞的晶胞参数和原来晶胞的原子直角坐标,如何得到完整晶体呢?按照矩形晶胞的正交基矢平移得到的是上面图中左边两个A点,而实际晶体中并没有左上的A点。若果平移得到黄色的晶胞,则需要额外平移信息。

评分

参与人数 1eV +5 收起 理由
卡开发发 + 5

查看全部评分

2015毕业季

295

帖子

0

威望

3266

eV
积分
3561

Level 5 (御坂)

发表于 2017-4-6 13:47:41 | 显示全部楼层
抢个沙发,顶!

24

帖子

0

威望

1010

eV
积分
1034

Level 4 (黑子)

发表于 2017-4-6 20:30:08 | 显示全部楼层
这种正交化和直接写个基组(1,0,0),(0,1,0),(0,0,V)有什么区别吗
2015毕业季

1538

帖子

3

威望

5715

eV
积分
7313

Level 6 (一方通行)

Ab Initio Amateur

 楼主| 发表于 2017-4-6 20:55:28 | 显示全部楼层
zhou 发表于 2017-4-6 20:30
这种正交化和直接写个基组(1,0,0),(0,1,0),(0,0,V)有什么区别吗

也可以直接那样写(u' 0 0) (0 v' 0) (0 0 w'),不过你得计算u' v' w',并不是任意的长度都能满足条件。如果有更好的解决方案也欢迎讨论。
满招损,谦受益。热衷于理论和方法研究水平不高但欢迎讨论。

24

帖子

0

威望

1010

eV
积分
1034

Level 4 (黑子)

发表于 2017-4-6 21:07:43 | 显示全部楼层
卡开发发 发表于 2017-4-6 20:55
也可以直接那样写(u' 0 0) (0 v' 0) (0 0 w'),不过你得计算u' v' w',并不是任意的长度都能满足条件。如 ...

如果只把晶胞参数改成正交的,加上原子的直角坐标并不能给出晶体正确的结构信息,还需要正交晶胞的周期性平移的矢量,这些矢量不是正交的。我在看gromacs手册的时候他也提到把晶胞变成砖块,这样做有什么实际的好处吗?
2015毕业季

570

帖子

11

威望

1912

eV
积分
2702

Level 5 (御坂)

发表于 2017-4-6 21:12:41 | 显示全部楼层
是不是任意的二维胞 都可以转换为正交胞啊
这样的话。做不同胞的复合层就简单多了。

1538

帖子

3

威望

5715

eV
积分
7313

Level 6 (一方通行)

Ab Initio Amateur

 楼主| 发表于 2017-4-6 21:16:13 | 显示全部楼层
zhou 发表于 2017-4-6 21:07
如果只把晶胞参数改成正交的,加上原子的直角坐标并不能给出晶体正确的结构信息,还需要正交晶胞的周期性 ...

肯定不是简单改成正交的,实际上严格一些的条件应该是要u'和u重合,v'在uv平面,实际这样做起来不复杂,这里只是提供一个思路。我上面提到了,以二维为例,如果要进行正交化又得保证给出晶体信息(当然对称性肯定是丢了)必须v=v',u'=c1*u+c2*v=usinγ。

这样做没啥特别的目的,一来是近期有个朋友问我cp2k的电势格点拿到multiwfn怎么分析,我看看问题不算复杂,就打算帮忙解决一下而已;二来就是如BigDFT貌似至今只支持正交格子的计算,也许能帮上些忙,
满招损,谦受益。热衷于理论和方法研究水平不高但欢迎讨论。

1538

帖子

3

威望

5715

eV
积分
7313

Level 6 (一方通行)

Ab Initio Amateur

 楼主| 发表于 2017-4-6 21:36:20 | 显示全部楼层
ggdh 发表于 2017-4-6 21:12
是不是任意的二维胞 都可以转换为正交胞啊
这样的话。做不同胞的复合层就简单多了。

应该不是,比如二维上面的石墨烯的单胞也是是primitive cell,这种情况只能构造超胞再转换。还有没有其他特例我还没想出来。

目前来看很多做周期系统的人也急需Multiwfn的支持,总之欢迎大家讨论,能够提供更好的方案。
满招损,谦受益。热衷于理论和方法研究水平不高但欢迎讨论。

1538

帖子

3

威望

5715

eV
积分
7313

Level 6 (一方通行)

Ab Initio Amateur

 楼主| 发表于 2017-4-6 22:22:59 | 显示全部楼层
zhou 发表于 2017-4-6 21:41
如果没有理解错误,即使满足上面的条件只有晶胞参数也不能还原原来晶胞,比如下图
左边格子与右边底边和高 ...

有道理,我研究研究,明天搞个新的版本放上来。
满招损,谦受益。热衷于理论和方法研究水平不高但欢迎讨论。

211

帖子

3

威望

2019

eV
积分
2290

Level 5 (御坂)

发表于 2017-4-7 10:10:06 | 显示全部楼层
本帖最后由 Warm_Cloud 于 2017-4-7 11:37 编辑

厉害

570

帖子

11

威望

1912

eV
积分
2702

Level 5 (御坂)

发表于 2017-4-7 15:41:27 | 显示全部楼层
卡开发发 发表于 2017-4-6 21:36
应该不是,比如二维上面的石墨烯的单胞也是是primitive cell,这种情况只能构造超胞再转换。还有没有其他 ...

如果能构建出超胞再转,那也是很不错的啊

1538

帖子

3

威望

5715

eV
积分
7313

Level 6 (一方通行)

Ab Initio Amateur

 楼主| 发表于 2017-4-7 15:56:52 | 显示全部楼层
ggdh 发表于 2017-4-7 15:41
如果能构建出超胞再转,那也是很不错的啊

看样子恐怕是不行,9楼的说法是对的,不能只是做简单的平移。我把帖子改了,目前来说我没有想到有很好的算法。
满招损,谦受益。热衷于理论和方法研究水平不高但欢迎讨论。

5

帖子

0

威望

41

eV
积分
46

Level 2 能力者

发表于 2017-9-15 12:11:22 | 显示全部楼层
一般我在处理的时候都是做切面,定义uv的值,通常六方的我会定义U(100)V(120),这样就得到正交的格子。对于其他角度的格子,会根据矢量的关系定义,一般都能得到正交化的格子。

评分

参与人数 1eV +5 收起 理由
obaica + 5 谢谢分享

查看全部评分

5

帖子

0

威望

41

eV
积分
46

Level 2 能力者

发表于 2017-9-15 12:14:03 | 显示全部楼层
风之子 发表于 2017-9-15 12:11
一般我在处理的时候都是做切面,定义uv的值,通常六方的我会定义U(100)V(120),这样就得到正交的格子。 ...

补充一下,正交后的一般会做超胞检查
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2019-7-17 17:36 , Processed in 0.273066 second(s), 29 queries .

快速回复 返回顶部 返回列表