[Pw_forum] Problems with Polarization calculations

Sohrab Ismail-Beigi sohrab.ismail-beigi at yale.edu
Fri Oct 19 05:01:35 CEST 2007


Dear PWSCF forum,

I've been having a problem running PWSCF for the Berry phase  
calculations of polarization for elements with f (l=3) and higher  
pseudopotentials (i.e. any lanthanides, etc.)  My system is an oxide  
that has La in it, and my pseudopotential is norm conserving and has  
lmax=3.

Here is the error that the program produces upon entering the Berry  
phase code (bp_c_phase.f90):

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      from  ylm_q : error # 181312304
       not programmed for L>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

OK, that is a bit cryptic. The error is coming from the "ylm_q"  
subroutine inside the file "bp_ylm_q.f".  The ylm_q subroutine just  
calculates (real) spherical harmonics and has code for doing so up to  
l=4 (impressive actually).  ylm_q exists with the error above if one  
tries to calculate higher angular momenta than l=4.  The routine is  
given an integer index which it decodes into (l,m):  e.g. index=1  
means l=0; index=4 -> l=1; index = 9 -> l=2, etc.  It is coded up to  
index=25.

Now, the problem is cause by ylm_q being called on being called on  
line 400 of bp_c_phase.f90:

    CALL ylm_q(lmaxq*lmaxq,dk,dkmod,ylm_dk)

It is being asked to compute the angular momentum ylm for a very  
large index lmaxq*lmaxq.   lmaxq itself is set when reading the  
pseudopotential in "allocate_nlpot.f90" where it is set to "lmaxq =  
2*lmaxkb+1".  For lmaxkb=2 (i.e. up to angular momentum l=2), lmaxq=5  
so lmaxq*lmaxq=25 and ylm_q just manages to work.  But for any atom  
with f projectors, lmax=3 -> lmaxq=7, and lmaxq*lmaxq=49 which causes  
the error and failure.

My questions are two-fold:

(1)  First, this is clearly an unintentional bug of some sort.   
Apparently no elements with f projectors (e.g. transition metals)  
were ever used for Berry phase...!??!  Personally, I don't understand  
the "lmaxq*lmaxq" bit at all in this code; it is mysterious.  In  
fact, as far as I can see, the output from ylm_q is being sent to  
"qvan3" which only needs something like lmaxq entries rather  
lmaxq*lmaxq....  But it is hard to be sure without more comments.

(2) On a more global and physics-related point, there are segments of  
the code in bp_c_phase.f90 (in particular the ylm_q calls and related  
quantities) that don't seem to make sense for norm conserving  
pseudopotentials.  Namely, the Berry phase calculation for standard  
orthonormal wavefunctions (from norm-conserving psps) only depends on  
the inner product of Bloch states and neighboring k-points:  one  
shouldn't be needing any angular momentum operators at all!

The ylm_q and related codes, from what I can gather from the code,  
seem to be designed to add a contribution to the electronic part of  
the Berry phase that has the form of some type of non-local atomic  
pseudopotential, which makes me think this is appropriate for ultra- 
soft psps where norm-conservation has been relaxed so one has to have  
some non-local projectors in the augmentation region to fix this up  
when calculating Berry phases.

Therefore, does the bp_c_phase.f90 code implicitly assume ultra-soft  
psps?

Any help you can provide is great --- as it is, there is no way to  
proceed forward unless one finds the real representations of Ylm up  
to some very high l!!!

Thanks,

--Sohrab

---------------------------------------------
Sohrab Ismail-Beigi
Associate Professor of Applied Physics and Physics
Dept. of Applied Physics
Yale University
P.O. Box 208284
New Haven, CT  06520
Phone: 203.432.2107
Fax: 203.432.4283
Email: sohrab.ismail-beigi at yale.edu
http://volga.eng.yale.edu/ - group home page
http://www.eng.yale.edu/aphy/ - dept. page w/ links
http://www.eng.yale.edu/graduate -- info about graduate studies in AP  
and brochures




More information about the users mailing list