[Wien] plane wave exhausted

Michael Sluydts Michael.Sluydts at UGent.be
Fri Jun 14 14:12:46 CEST 2013


Hello wasim,

There's a patch that resolves this error. I can't immediately find it in 
the archives so I'll attach it. I'm not certain if there are any more 
elegant solutions remaining, if not then you'll have to add the patch 
and recompile.


Regards,

Michael Sluydts


Op 14/06/2013 13:57, wasim raja Mondal schreef:
> Dear wien2k experts,
>
>  I am running one  peroskite  structure. Initially I was facing dtsrt 
> error. But with the help from Lyudmila I have solved the problem and 
> there is no error in the initialization process. But when I am running 
> scf I am getting the following error:
>
> Error in LAPW1
>  'LOPW' - Plane waves exhausted
>
>
> The possible reason for the this error is:
>
> (1) Increase the RK max value
>
> (2) see the precession for the atomic position which is sensitive for 
> space group 194. For example
>        0.33367 should be o.33366667
>
> (3) change  lo+apw.
>
> possibility 1 and 2 I have done. For (1) I have set rk value up to 9.5 
> and for (2) I have carefully checked. But I am getting same error. For 
> the third I have not checked because I donot know how to do this. I am 
> using wien2k_12. I am attaching the structure file and *.rsp file.
>
>
>
> _______________________________________________
> Wien mailing list
> Wien at zeus.theochem.tuwien.ac.at
> http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
> SEARCH the MAILING-LIST at:  http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/index.html

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://zeus.theochem.tuwien.ac.at/pipermail/wien/attachments/20130614/050efb28/attachment.htm>
-------------- next part --------------
      SUBROUTINE LOPW(NAT)
!
      use matrices, only: HSROWS, KZZ, XK, YK, ZK
      use lolog, only : nlo, ilo
      use lstapw, only  : NV
      use rotmat, only: ROTIJ, ROTLOC
      use struk, only : POS, MULT, NDF
      use parallel, only: myid,abort_parallel
      IMPLICIT NONE
      INCLUDE 'param.inc'
!
!        Scalar Arguments
!
      INTEGER            NAT
!
!     ..................................................................
!
!        generates the LAPW (K+G)-vector for local orbitals
!
!     ..................................................................
!
!        Locals
!
      INTEGER            IA1, IEQ, IIX, INDEX, J, K, KOFF, L, LM, LMDN
      INTEGER            LMUP, LMX, N, NATX, NATXX, NB, NBM
      INTEGER            JLO,ipass
      DOUBLE PRECISION   HL, RKGM, SX, TPI, check
      DOUBLE PRECISION   ROTV1(3), ROTV2(3), VEC(3)
      COMPLEX*16         CC
!      COMPLEX*16         HH((LOMAX+1)**2*NDF,(LOMAX+1)**2*NDF)
      COMPLEX*16         HH((2*LOMAX+1)*48,(2*LOMAX+1)*48)
      COMPLEX*16         SF(NDF), YL(0:(LOMAX+1)**2) !,nv:HSROWS)
!
!        External Subroutines
!
      EXTERNAL           ROTATE, YLM
!
!        Intrinsic Functions
!
      INTRINSIC          ATAN, DCMPLX, DCONJG, EXP, SQRT
!
!     ** Maybe Experiment **
      DOUBLE PRECISION  VEC2(3), TMP1, TMP2
!
      TPI = 8.0D+0*ATAN(1.0D+0)
!
      check=2.0D-2
      ipass=0
 1    continue
      check=check/2.d0

      KOFF = NV
      IA1 = 0
      DO 140 N = 1, NAT
         DO 130 L = 0, LOMAX
!            IF (LOOR(L,N)) THEN
            do jlo=1,ilo(l,n)
               LMDN = L*L + 1
               LMUP = (L+1)*(L+1)
               INDEX = 0
               NB = 0
               NBM = MULT(N)*(1+LMUP-LMDN)
               DO 120 IEQ = 1, MULT(N)
                  DO 110 LM = LMDN, LMUP
                     NB = NB + 1
                     K = KOFF + NB
   10                CONTINUE
                     INDEX = INDEX + 1
                     IF (INDEX .GT. NV) GOTO 900
!                  WRITE (6,*) 'INDEX,K,N,L,IEQ,LM',INDEX,K,N,L,IEQ,LM
                     KZZ(1,K) = KZZ(1,INDEX)
                     KZZ(2,K) = KZZ(2,INDEX)
                     KZZ(3,K) = KZZ(3,INDEX)
                     XK(K) = XK(INDEX)
                     YK(K) = YK(INDEX)
                     ZK(K) = ZK(INDEX)
                     RKGM = SQRT(XK(K)*XK(K)+YK(K)*YK(K)+ZK(K)*ZK(K))
                     IF (NBM .NE. 1) THEN
                        DO 20 NATX = 1, MULT(N)
                           NATXX = IA1 + NATX
                           SX = KZZ(1,K)*POS(1,NATXX) + &
                                KZZ(2,K)*POS(2,NATXX) + &
                                KZZ(3,K)*POS(3,NATXX)
!                          SF(NATX) = EXP(DCMPLX(0.0D+0,TPI*SX))
                           SF(NATX) = DCMPLX(DCOS(TPI*SX),DSIN(TPI*SX))
   20                   CONTINUE
                        IIX = 0
                        DO 50 NATX = 1, MULT(N)
                           IF (RKGM .LE. 1.0D-5) THEN
                              DO 30 LMX = LMDN, LMUP
!                                YL(LMX-1,K) = (0.0D+0,0.0D+0)
                                 YL(LMX-1) = 0.0D0
   30                         CONTINUE
!                             YL(0,K) = (1.0D+0,0.0D+0)
                              YL(0) = 1.D0 
                           ELSE
                              VEC(1) = XK(K)
                              VEC(2) = YK(K)
                              VEC(3) = ZK(K)
                              CALL ROTATE(VEC,ROTIJ(1,1,IA1+NATX),ROTV1)
                              CALL ROTATE(ROTV1,ROTLOC(1,1,N),ROTV2)
                              CALL YLM(ROTV2,LOMAX,YL(0)) !,K))
                           ENDIF
                           DO 40 LMX = LMDN, LMUP
                              IIX = IIX + 1
                              HH(IIX,NB) = SF(NATX)*YL(LMX-1) !,K)
   40                      CONTINUE
   50                   CONTINUE
                        IF (NB .NE. 1) THEN
                           DO 80 J = 1, NB - 1
                              CC = (0.0D+0,0.0D+0)
                              DO 60 IIX = 1, NBM
                                 CC = CC + HH(IIX,NB)*DCONJG(HH(IIX,J))
   60                         CONTINUE
                              DO 70 IIX = 1, NBM
                                 HH(IIX,NB) = HH(IIX,NB) - CC*HH(IIX,J)
   70                         CONTINUE
   80                      CONTINUE
                        ENDIF
                        HL = 0.0D+0
                        DO 90 IIX = 1, NBM
                           HL = HL + DCONJG(HH(IIX,NB))*HH(IIX,NB)
   90                   CONTINUE
!
!       Change here to increase test so now it is RMS > 0.1D0
!
                        IF (HL .LE. dble(NBM)*check) GOTO 10  !! PB Change here, was 1.0D-3
#        WRITE (6,6001) n,l,ieq,index,K, RKGM, (KZZ(J,K),J=1,3),hl
 6001   format(' atom',i3,' L',i2,' equiv',i2,' PW',i5,i5,f10.4,3i4,e15.5)
!
!       *** Maybe Experiment **
!       Ensure that the K vectors themselves are not linearly dependent
!       This can be done quicker by storing the VEC2 values....
                        IF(NB .GT. 2) THEN
                                TMP1=KZZ(1,K)*KZZ(1,K)+KZZ(2,K)*KZZ(2,K)+KZZ(3,K)*KZZ(3,K)
                                IF(TMP1 .lt. 1D-15)TMP1=1.D0
                                VEC(1:3)=KZZ(1:3,K)/sqrt(TMP1)
                                DO J = 1, NB-1
                                        IIX=KOFF+J
                                        TMP2=KZZ(1,IIX)*KZZ(1,IIX)+KZZ(2,IIX)*KZZ(2,IIX)+KZZ(3,IIX)*KZZ(3,IIX)
                                        IF(TMP2 .lt. 1D-15)TMP2=1.D0
                                        VEC2(1:3)=KZZ(1:3,IIX)/sqrt(TMP2)

                                        if((abs(VEC(1)-VEC2(1)).lt. 1D-10) .and. &
                                          ( abs(VEC(2)-VEC2(2)).lt. 1D-10) .and. &
                                          ( abs(VEC(3)-VEC2(3)).lt. 1D-10) ) GOTO 10

                                        if((abs(VEC(1)+VEC2(1)).lt. 1D-10) .and. &
                                          ( abs(VEC(2)+VEC2(2)).lt. 1D-10) .and. &
                                          ( abs(VEC(3)+VEC2(3)).lt. 1D-10) ) GOTO 10
                                ENDDO
                        ENDIF
!       *** End of Experiment **

                     ELSE
                        GOTO 110
                     ENDIF
                     HL = 1.0D+0/SQRT(HL)
                     DO 100 IIX = 1, NBM
                        HH(IIX,NB) = HH(IIX,NB)*HL
  100                CONTINUE
  110             CONTINUE
  120          CONTINUE
!               KOFF = KOFF + MULT(N)*(LDIFF(N)+1)**2
               KOFF = KOFF + MULT(N)*(2*L + 1)
            ENDdo
  130    CONTINUE
         IA1 = IA1 + MULT(N)
  140 CONTINUE
!
!      DO 150 K=nv+1, NV+NLO
!        WRITE (6,6000) K, RKGM, (KZZ(J,K),J=1,3), XK(K), YK(K), ZK(K)
! 150  CONTINUE
6000  FORMAT (5X,I5,F15.8,3I5,10X,3F10.5,5X)
!
      RETURN
!
!        Error messages
!
  900 if(ipass.lt.5) then
       ipass=ipass+1
       if(myid.eq.0) write(6,901) n,ipass,check
       if(myid.eq.0) write(21,901) n,ipass,check
 901   format(':WAR   : LOPW-exhausted for atom',i5,' PASS',i2,'  had to reduce check',f9.6) 
       goto 1
      endif
      CALL OUTERR('LOPW','Plane waves exhausted ') 
      call abort_parallel
      STOP 'LOPW - Error'
!
!        End of 'LOPW'
!
      END


More information about the Wien mailing list