[Pw_forum] question about LDOS calculation within boxes using pp.x

Guido Fratesi fratesi at mater.unimib.it
Mon Aug 1 18:01:06 CEST 2011

Dear Habibi,

> I have been trying to use pp.x on a Cr(001) slab, and I would like to calculate PDOS in a box above de surface.
I guess you are referring to projwfc.x rather than pp.x

> As a matter of fact, I would like to see the decrease of the 
> wavefunctions in the vacuum, by analysing the PDOS in boxes at different 
> heights.
Maybe you could be more interested in using indeed pp.x to extract the DOS 
as a function of position. To make the distinction clear (?):

1) the local DOS is a function of position and energy, say D(r,E);

2) projwfc.x allows to compute and plot *as a function of E*, the integral 
of D in a specified volume (box)

3) pp.x allows to compute and plot *as a function of r*, the integral of D 
in a specified energy window (see plot_num=10)

It seems to me that this last point is what you are interested in. You 
have to choose your energy window. Alternatively, pick up just one 
wavefunction (plot_num=7).

> After a calculation on small boxes, I would like to have, now, an 
> average type box, on the whole surface, so let's say a pavement-like 
> box.
> After a pp.x regular PDOS calculation, I have noticed that the 
> segmentation along x and y direction is 30, I thought that regarding 
> this information, I could take a box with a width of 30 on x and y 
> direction for another pp.x calculation with the boxes to get the big box 
> I need.

If your FFT grid contains 30 points, you can select the full cell (in that 
direction) by putting irmin=1 and irmax=30. See example16. (irmin=0, from 
your input, is equivalent to 30; the first and last points you specify are 

> Hence, pp.x generates a .xsf file for visualizing the boxes. When I 
> would calculate it with a small box (width=2 on x and y directions, ie 
> irmin(1)=1, irmax(1)=3 in the pp.x input file), I could see the box with 
> xcrysden. However, using the big values (30) for my boxes boundaries, I 
> cannot visualize them. But I still get a result about ldos in the boxes.

The box is visualized as xsf files with 3D datagrids, valued 1.0 inside 
the box volume and 0 outside (visualize them as isosurfaces with isovalue 
0.5). If the box is as large as the unit cell, all values are =1.0 and no 
isosurface=0.5 can be shown. There's no box boundary, in a periodic world.

> My questions are the following : how can I be sure that the ldos 
> calculation are actually done within my big boxes boundaries? Is it 
> correct to use that big segmentation in the first place?
Try a few tests to practice: compute the LDOS in the full cell; compute it 
in two halves; ... Notice that augmentation charge contribution is not 
included, so you should use norm-conserving pseudopotentials if you want 
to compare this to the full DOS.

Hope this helps,
Guido Fratesi

Guido Fratesi

Dipartimento di Scienza dei Materiali
Universita` degli Studi di Milano-Bicocca

More information about the users mailing list