24小时热门版块排行榜    

查看: 3323  |  回复: 19
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

identation

金虫 (著名写手)

[交流] 【求助】虚频和软模是一回事么?已有10人参与

一些位移型相变,比如BaTiO3的顺电-铁电相变,在相变点附近有软模,这在第一性原理计算中怎么体现呢?是声子谱中存在虚频么?虚频和软模是一回事么?

[ Last edited by identation on 2010-7-1 at 20:02 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mudannanzi

木虫 (正式写手)


identation(金币+5):谢谢参与
我也是新手,学习中
迷糊
4楼2010-04-25 22:25:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 20 个回答

lono75

铁杆木虫 (著名写手)


identation(金币+5):谢谢参与
先用xcrysden找特殊K点,

再编译gk.f, 网站上那个F77程式有错误
生成inp.kpt

[ Last edited by lono75 on 2010-4-25 at 22:06 ]
由天命,成人事!
2楼2010-04-25 21:47:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gavinliu7390

木虫 (著名写手)

叶落鹰飞


identation(金币+5):谢谢参与
identation(金币+40): 2010-04-25 23:36
这个一般来说都是自己写的, 很简单!
那个web site不是提供了程序.
它的输入文件为syml,输出文件为inp.kpt。(你会做能带吧,这个取点跟能带的取点宗旨是一样的.)
其中syml输入文件的格式如下:
8
15 15 15 15 15 15 15
G 0.0 0.0 0.0
K -0.33333333333 0.6666666666667 0.000000000
H -0.33333333333 0.6666666666667 0.500000000
A 0.0 0.0 0.5
G 0.0 0.0 0.0
M 0.0 0.5 0.0
L 0.0 0.5 0.5
A 0.0 0.0 0.5
第一行用来标记有多少个特殊k点,下面是这些特殊k点之间每个要分多少个k点,接着就是这些特殊k点的坐标。
把下面这个程序编译,执行即可.
c +---------------------------------------------------------
c For generating k-points along the high-symmetry lines in
c Brillouin zone and for calculate band-structures !
c +----------------------------------------------------------
C ---------'syml'---------
c 6 : nhighk
c 20 20 20 10 20 : ndiv(i)
c X 0.5 0.0 0.5 : labhk(1),phighk(1,1),........
c G 0.0 0.0 0.0
c L 0.5 0.5 0.5
c W 0.5 0.25 0.75
c K 0.375 0.375 0.75
c G 0.0 0.0 0.0
c direct & reciprocal lattice vectors over 'emin, emax' line
C -----------------------
c max k-points = 200
program gk
implicit real*8 (a-h,o-z)
character*2 labhk
dimension tkpt(200,3),pk(200,3),phighk(10,3)
dimension disk(200),dish(10),labhk(10)
dimension ndiv(10)
c
open(5,file='syml',status='old')
open(7,file='inp.kpt')
c
read(5,*) nhighk
read(5,*) (ndiv(i),i=1,nhighk-1)

do i=1,nhighk-1
ntkp=ntkp+ndiv(i)
enddo
ntotkpt=ntkp+1

if(nhighk>10)then
write(*,*)'Number of high-symmetry k points must < 10!'
STOP
endif
if(ntotkpt>200)then
write(*,*)'Total number of k points must <= 200!'
STOP
endif

do i=1, nhighk
read(5,*) labhk(i),(phighk(i,j),j=1,3)
enddo
write(*,*) (labhk(i),i=1,nhighk)
c
c----- generating k-points along high symmetric lines --------
c
c
pk(1,1)=phighk(1,1)
pk(1,2)=phighk(1,2)
pk(1,3)=phighk(1,3)
ii=1
do i = 2, nhighk
delx = (phighk(i,1) - phighk(i-1,1))/float(ndiv(i-1))
dely = (phighk(i,2) - phighk(i-1,2))/float(ndiv(i-1))
delz = (phighk(i,3) - phighk(i-1,3))/float(ndiv(i-1))
do j=1, ndiv(i-1)
ii = ii + 1
pk(ii,1) = pk(ii-1,1) + delx
pk(ii,2) = pk(ii-1,2) + dely
pk(ii,3) = pk(ii-1,3) + delz
enddo
enddo
c
10 format(A34)
weight=1.d0
do i=1,ntotkpt
write(7,200) pk(i,1),pk(i,2),pk(i,3),weight
enddo
200 format(3F10.6,F6.2)
stop
end
c----------------------- end ---------------------------

网站上说的很清楚!
如果你想把两个k点分成十份, 就把15换成10就可以了!

[ Last edited by gavinliu7390 on 2010-4-25 at 22:34 ]
真理是一点点接近的!
3楼2010-04-25 22:22:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tianai3385

铜虫 (正式写手)


identation(金币+5):谢谢参与
新手,学习中
6楼2010-04-26 08:14:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见