[Pw_forum] About band structure.

Marcel Mohr marcel at physik.tu-berlin.de
Thu Aug 7 11:02:37 CEST 2008


On Thu, 7 Aug 2008, Bipul Rakshit wrote:

> And what is /awk/java/whathever_you_are_familiar_with ?

I am afraid I can't help you there.
I do also not know what /awk/java/whatever_I_am_familar_with is,
but do know a little python,
In the attachment is a skript, that calculates the k-points along 
several endpoints ("points"), with "fineness", the number of k-points in between.

Cheers Marcel



> 
> thanks
> 
> 
> On Thu, Aug 7, 2008 at 9:45 AM, Stefano de Gironcoli <degironc at sissa.it> wrote:
>       1.) change the plotting range given in input to your plotting routine
>       2.) write a 5-10 line fortran_code/bash_script
>       /awk/java/whathever_you_are_familiar_with that makes this trivial task
>       for you and feed the resulting data to pw.x
>       best regards,
>        Stefano
> 
> 
> Bipul Rakshit wrote:
> > Hello PWscf users,
> > I have a question about the band structure.
> > 1.  I have plotted the band structure of ScSb. There i found that in
> > that post script file it draw the band very near the fermi level
> > (-12.0:3.0) only. But if I want the bands range say -20:20, what and
> > where I have to change?
> >
> > 2. I have given the K-points as used in Si calculation in examples, in
> > my ScSb file. It works well. But I am also using SIESTA, where we
> > mention the k-points as below
> >
> >     BandLinesScale  pi/a
> >      %block BandLines                  # These are comments
> >       1  0.000  0.000  0.000  \Gamma   # Begin at Gamma
> >      25  2.000  0.000  0.000     X     # 25 points from Gamma to X
> >      10  2.000  1.000  0.000     W     # 10 points from X to W
> >      15  1.000  1.000  1.000     L     # 15 points from W to L
> >      20  0.000  0.000  0.000  \Gamma   # 20 points from L to Gamma
> >      25  1.500  1.500  1.500     K     # 25 points from Gamma to K
> >      %endblock BandLines
> >
> > the first column after* %block BandLines* shows the number of points
> > between the given k-points (like 25 points between Gamma and X). In
> > this way we dont have to mention all the k-points and we get a smooth
> > graph. But in pwscf I have to mention all the k-points in order to get
> > a smooth graph as in the example of Si.
> > So my question is, is there any way so that we have to mention only
> > the points at the zone boundary, and rest of the points it will take
> > automatically?
> >
> > --
> > Bipul Rakshit
> > PhD Student,
> > Barkatullah University,
> > Bhopal 462026,
> > MP, India
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Pw_forum mailing list
> > Pw_forum at pwscf.org
> > http://www.democritos.it/mailman/listinfo/pw_forum
> >
> 
> _______________________________________________
> Pw_forum mailing list
> Pw_forum at pwscf.org
> http://www.democritos.it/mailman/listinfo/pw_forum
> 
> 
> 
> 
> --
> Bipul Rakshit
> PhD Student,
> Barkatullah University,
> Bhopal 462026,
> MP, India
> 
>
-------------- next part --------------
# This program produces a list of q-points needed for anadbb. The total amount of q-points is written.
# It connects the points <points> with <fineness> steps between. The first entry of fineness governs the steps between the 1st
# and 2nd entry of points.

from Numeric import array, Float
import sys

points=array([ [0,0,0] , [0.5,0.5,0.0] , [1 , 0 ,0]])
fineness=array([99,57])#,15,29,15,29,29,29])


counter=0
# check of fineness contains points-1 entries
if fineness.shape[0] != (points.shape[0]-1): 
	print ("Die Anzahl der Schritte und K-Punte stimmt nicht ueberein")
	sys.exit()

#produce q-points
for i in range(points.shape[0]-1):
	divisor=float(fineness[i])
	for j in range(int(divisor)):
		jfloat=float(j)
		punkt=points[i]+jfloat/divisor*(points[i+1]-points[i])
		print "\t %5.5f \t %5.5f \t %5.5f \t 1.0" % (punkt[0],punkt[1],punkt[2])
		counter=counter+1
#last point
print "\t %5.5f \t %5.5f \t %5.5f \t 1.0" % (points[i+1][0],points[i+1][1],points[i+1][2])
#print number of qpoints
print counter+1



More information about the users mailing list