Sie sind auf Seite 1von 4

Computing the momentum matrix elements with Abinit code

Jose Luis Cabellos Quiroz January 24, 2013

Contents
1 Introduction 2 The wavefunction 3 Momentum matrix elements 4 Fortran code 4.1 The coecients from Abinit . . . . . . . . . . . . . . . . . . . 2 2 2 3 3

This is an unnished draft. email sollebac@gmail.com

Introduction

We present a procedure to compute the momentum matrix elements with Abinit code [?].

The wavefunction

The electronic wavefunction nk r is expressed as a linear combination of plane waves (Eq. 2.1), where k are arbitray vectors, G are a reciprocal laticce vectors and Cnk are the plane waves coecents to be read from abinit wf le. (2.1) nk r =
G

Cnk (G)ei(k+G)r

Momentum matrix elements

The momentum matrix elements are dened according to Eq. (3.1)

(3.1)

p =

dv nk r

mk r

Inserting Eq. (2.1) into Eq. (3.1) leads (3.2) p = dv


G Cnk (G)ei(k+G)r i

Cmk (G )ei(k+G )r G

Taken just the second part, and one direction i x


Cmk (G )ei(k+G )x = i Cmk (G ) G G

i(k+G )x e x i k + G ei(k+G )x

= i Cmk (G )
G

Cmk (G )
G

k + G ei(k+G )x

dv
G

Cnk (G)ei(k+G)r

Cmk (G )
G

k + G ei(k+G )x

= = =
G

dv
G G

Cnk (G)ei(k)r ei(G)r Cmk (G ) k + G ei(k)r ei(G )r

dv
G G

Cnk (G)Cmk (G ) k + G ei(G G)r

Cnk (G)Cmk (G ) k + G G

dvei(G G)r

=
G G

Cnk (G)Cmk (G ) k + G G G Cnk (G)Cmk (G) k + G G G Cnk (G)Cmk (G) k + G G

= =

there are 3 directions x, y and z (3.3) pnm


x

=
G

Cnk (G)Cmk (G) kx + Gx

(3.4)

pnm

=
G

Cnk (G)Cmk (G) ky + Gy

(3.5)

pnm

=
G

Cnk (G)Cmk (G) kz + Gz

Fortran code

How to read the wf coecients

4.1

The coecients from Abinit

6.7. The wavefunction output file This is an unformatted data file containing the planewaves coefficients of all the wavefunctions, and different supplementary data. The ground-state wf file consists of the header records, and data written with the following lines of FORTRAN (version 4.0 and more recent versions): bantot=0 <-- counts over all bands index=0 <-- index for the wavefunction location do isppol=1,nsppol do ikpt=1,nkpt write(unit) npw,nspinor,nband <- for each k point write(unit) kg(1:3,1:npw) <- plane wave reduced coordinates write(unit) eigen(1+bantot:nband+bantot),<- eigenvalues for this k point occ(1+bantot:nband+bantot) <- occupation numbers for this k point do iband=1,nband write(unit) (cg(ii+index),ii=1,2*npw*nspinor) <-- wavefunction coefficients enddo for a single band and k point bantot=bantot+nband index=index+2*npw*nspinor*nband enddo enddo

To be continued ...

Das könnte Ihnen auch gefallen