关于OpenMx中基矢设定与坐标选取

2 views
Skip to first unread message

roc...@gmail.com

unread,
Apr 2, 2009, 5:32:54 AM4/2/09
to OpenMx交流
在这里,仅对OpenMx中最常用到的四处矢量与坐标意义与设置作简单介绍。

1. Atoms.SpeciesAndCoordinates
这里填的是所建的超胞中的各原子坐标,单位由前一行Atoms.SpeciesAndCoordinates.Unit设定,Ang为埃,
Au为原子单位。一般情况下,可以从其他软件方便的得到以埃为单位的原子坐标。在这一栏,除了原子坐标外,还可以再次加入自旋,在最后两列分别列出原子
自旋向上向下的电子个数即可,但要注意,两自旋的总电子数一定要与VPS文件中指定的价电子数相等。另外,在NC或考虑Zeeman作用时可以再次定义
局域磁场,我现在只知道可以通过定义每个原子所处的磁场强度矢量和于自身自旋方向夹角来引入外场的作用,但还没有使用过,这次就先不做介绍了。

2. Atoms.UnitVectors
这里填入的是超胞的三个基矢,可由MS等软件的输出文件数据求得。如对于六角立方结构,MS输出的.car文件中,会有一行表明超胞的a,
b, c三轴及其夹角。我们参照MS中的笛卡尔坐标将a, b, c用笛卡尔坐标的表示填入即可。

3. Band.KPath.UnitCel
这个是在计算K点时引入的坐标,在缺省状态下软件自动调用Atoms.UnitVectors. 需要注意的是,这里的三个基矢仍是正空间的
基矢,而非倒空间的。它在这里给出了对超胞的另外一种描述,之后定义的特殊K点的坐标是基于这里的基矢的。它的作用是与给出的K点坐标进行运算,最终得
出到空间中的K点坐标。

4. Band.kpath
这里用K点相对于Band.KPath.UnitCel中基矢的坐标,用来计算得出最终到空间中的K点坐标。

由于3和4中进行了一次坐标系的变换,使得在这里的设置变得尤为麻烦。为了避免在这种变换中纠缠,缪老师提供了一种可行的方法。考虑到最终的
结果是得到倒空间中的K点坐标,我们可以直接将其坐标求得,列在kpath中,而将Band.KPath.UnitCel中的基矢设为单位基矢,使之于
K点坐标的运算不影响结果。即Band.KPath.UnitCel设为:
<Band.KPath.UnitCel
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
Band.KPath.UnitCell>
K点的坐标可以由matlab的小程序求得:
a=[Atoms.UnitVectors]
b=inv(a)
c=[k1;k2;k3'''''']
d=c*b' (主义b后有一 ‘ )
d中的几个矢量即为求得的K点坐标。
我用GaAs和Febcc的例子对这个程序和方法进行了验证,发现这样得到的能带图与原能带图相同。

然而这里面中仍然存在一个问题。我们只对正空间基矢矩阵求逆,但并没有乘以2pi,因而所求得的坐标并不是真正意义上的倒空间坐标。个人认
为,这可能是由于OpenMx程序本身也只用一次求逆的过程。毕竟倒空间变换的精髓在这样一个求逆的变换上,而2pi只是一个倍数因子,不会对结果产生
本质的影响。

Reply all
Reply to author
Forward
0 new messages