[Wien] setrmt_lapw #4

John Rundgren jru at kth.se
Tue Oct 2 11:54:41 CEST 2012


Dear Professor Blaha,

Many thanks for the final remarks on the radial extension of vcoul. A
similar extension of clmsum is also needed (no spin). 

In lapw0.F a statement concerning clm is found, line 563,
    READ(8,2021) (CLM(J,LM1,JATOM), J=1,JRI(JATOM))
leading down to lines 1109:1141 where summations occur just as in the
Fourier extension of vcoul, namely, 
    DO J=2,NKK ...
    DO LM1=1,LLMM ...
    CQ(lm1)=CQ(lm1)+RHOKT*YKA(LM1)*BES(LL+1)

I should be most obliged for a piece of code in which CQ is transformed
into
    new_clm(j,lm1,jatom), j=1,jrx(jatom), jrx(jatom)>jri(jatom) 

Best regards,
John Rundgren


On Sun, 2012-09-30 at 20:35 +0200, Peter Blaha wrote:
> I can see that now the potential is at least continuous, but the slopes
> still do not match.
> 
> I don't have the equations with me at home, but as far as I can see:
> 
> I hope, you have redimensioned the arrays    r, jrx  properly.
> 
>  >        elseif(r(irad)>rmt(jatom))then
>  >          SURFIN=CVOUT(irad,LM1)*(-4.D0*PI)*(RMT(JATOM)/R(IRAD))**L* &
>  >            IMAG**L*VOUTF
>  >        endif
> 
> I don't think this is ok. The modification of cvout by r(i)/r(RMT) is valid only
> inside the spheres, where the coulomb potential depends on on both, the
> charge inside the sphere and the (scaled) potential at RMT.
> 
> Outside the sphere, we only need the bessel expansion of the plane waves, i.e.
> 
>            SURFIN=CVOUT(irad,LM1)*(-4.D0*PI)*IMAG**L*VOUTF
> ----------------------------------------------------------------------------------
> PS: We want the coefficients V_LM(r) of V(r) = SUM_LM (V_LM(r) Y_LM(r-hat))   (1)
> 
> In the interstitial the potential is given as:
>                               V(r) = 1/vol sum_K (c_K exp (iKr) )        (2)
> 
> 
> We expand the exp (iKr) = 4 pi sum_LM (i**L j_L(Kr) Y_LM(K) * Y_LM(r)    (3)
> 
> we set equ (1) = equ (2); put (3) into (2); and multiply this equality by Y_LM(r)
> and integrate over the angles.
> Then from (1) only one LM remains, i.e. only V_LM(r) remains (thats the coefficient you are looking for) and
> 
> V_LM(r) = 4 pi/vol sum_K [ c_K  i**L j_L(Kr) Y_LM(K) ]
> 
> This is (besides the constants)    CVOUT(jj,LM1)=CVOUT(jj,LM1) + POTK(J)*BES(L)*YKA(LMMULT1)
> 
> Depending how you later on "use" the calculated quantities, it may need an additional
> r**2, or a factor of 1/sqrt(4pi), which is equal to Y_00 ! or similar....
> 
> and this is probably added in the SURFIN line.
> 
> Best regards
> Peter
> 
> 
> Am 30.09.2012 16:03, schrieb John Rundgren:
> > Dear Professor Blaha,
> >
> > I should be most grateful if you would criticize the following attempt
> > to extend vcoul beyond RMT. Below are my modifications following your
> > advice of 09/14/2012. TiO2 in UG is used for testing.
> >
> > 1) External radii > RMT are defined:
> >        rext=(/2.6d0,2.2d0/) !for TiO2.
> >
> >        do JATOM=NSTART(myid),NSTOP(myid)
> >          do J=1,jri(jatom)+100
> >            R(J)=R0(JATOM)*EXP(dble(J-1)*DX(JATOM))
> >            if(r(j)>rext(jatom))then
> >              jrx(jatom)=j-1
> >              exit
> >            endif
> >          enddo
> >        enddo
> >        !cvout depends on jrx(jatom) below.
> >        allocate(cvout(maxval(jrx),ncom+3))
> >
> > 2) The part of code where exp(iKr) is expanded in Bessel functions.
> >        CVOUT=(0.d0,0.d0)
> >
> >        do jj=jri(jatom),jrx(jatom)
> >          r(jj)=r0(jatom)*exp(dx(jatom)*dble(jj-1))
> >
> >          DO J=2,NKK
> >            ARG=r(jj)*ABSK(J) !RMT(JATOM) replaced by r(jj).
> >            CALL SPHBES(lmax2+1,ARG,BES)
> >            CALL YKAV(J,JATOM,YKA,LMMTMX,LMMULT,LLMM)
> >            LMMULT1=0
> >
> >            DO LM1=1,LLMM
> >              L=IABS( LM(1,LM1,JATOM) )
> >              M=LM(2,LM1,JATOM)
> >              LMMULT1=LMMULT1+1
> >              IF (LMMULT1.NE.1) THEN
> >                IF ((L.EQ.IABS(LMMULT(1,LMMULT1-1,JATOM))).AND. &
> >                  (M.EQ.LMMULT(2,LMMULT1-1,JATOM))) THEN
> >                  LMMULT1=LMMULT1-1
> >                endif
> >              endif
> >              CVOUT(jj,LM1)=CVOUT(jj,LM1) + POTK(J)*BES(L)*YKA(LMMULT1)
> >            ENDDO !LM1
> >
> >            IF(SWITCH.EQ.'COUL')  call
> > rhopw(rhok(j),yka,ABSK(J),rhopw0r,jrj,rhopw0)
> >
> >          ENDDO !J
> >        enddo !jj
> >        jrj=jrx(jatom)
> >
> >        !cvout = constant in interval [R0,RMT] as in original code.
> >        do lm1=1,llmm
> >          do jj=1,jri(jatom)-1
> >            cvout(jj,lm1)=cvout(jri(jatom),lm1)
> >          enddo
> >        enddo
> >
> > 3) Statement
> >              CVOUT(lm1)=CVOUT(lm1)/IMAG1*SQRT2
> >     is replaced by
> >              CVOUT(1:jrx(jatom),lm1)=CVOUT(1:jrx(jatom),lm1)/IMAG1*SQRT2
> >
> > 4) Statement SURFIN=... is modified. Is **L due to a Legendre expansion?
> >        if(r(irad)<=rmt(jatom))then
> >          SURFIN=CVOUT(irad,LM1)*(-4.D0*PI)*(R(IRAD)/RMT(JATOM))**L* &
> >            IMAG**L*VOUTF
> >        elseif(r(irad)>rmt(jatom))then
> >          SURFIN=CVOUT(irad,LM1)*(-4.D0*PI)*(RMT(JATOM)/R(IRAD))**L* &
> >            IMAG**L*VOUTF
> >        endif
> >
> > The modifications are meant to be valid for all LM's. Please, see the
> > Attachment depicting TiO2_R.vcoul in Rydberg units, LM=0,0. The test
> > indicates that "run SCF" is not perturbed by the modifications made.
> >
> > I wonder what your decision will be about the modifications.
> > Best regards,
> > John Rundgren
> >
> >
> >
> > _______________________________________________
> > Wien mailing list
> > Wien at zeus.theochem.tuwien.ac.at
> > http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
> >
> 




More information about the Wien mailing list