Dear Wien2k users,

Unfortunately there is a severe bug for DFT+U (or EECE) in WIEN2k_16.

It concerns all cases, where you have for your correlated atom(s) (eg. Fe in Fe3O4)

MULT > 1

Calculations with MULT=1 (eg. the standard AFM-NiO case) are not affected. Also calculations with spin-orbit coupling are not affected.

The error is in the new SRC_lapw2 code, which calculates in WIEN2k_16 the case.dmatup/dn files (instead of lapwdm in previous versions).

A corrected version of lapw2 is on the web and I include also the 3 corrected subroutines, which can be put into SRC_lapw2, replacing the old versions. Recomile with make all; and copy the lapw2, lapw2c (lapw2_mpi, lapw2c_mpi) files down (cp lapw2 ..), ...

Sorry for the inconvenience.

Peter Blaha
--

                                      P.Blaha
--------------------------------------------------------------------------
Peter BLAHA, Inst.f. Materials Chemistry, TU Vienna, A-1060 Vienna
Phone: +43-1-58801-165300             FAX: +43-1-58801-165982
Email: bl...@theochem.tuwien.ac.at    WIEN2k: http://www.wien2k.at
WWW:   http://www.imc.tuwien.ac.at/TC_Blaha
--------------------------------------------------------------------------
      SUBROUTINE P3SPLT (ALM,BLM,clm,MULT,UENORM,num,coord,dmat)    
!                                                                       
!     DECOMPOSITION OF P CHARGE IN PX,PY,PZ                             
!                                                                       
      use param
      USE charp
      use lo
      IMPLICIT REAL*8 (A-H,O-Z)

      COMPLEX*16       ALM,BLM,clm,CSUMa,csumb,csumc
      DIMENSION      ALM((lmax2+1)*(lmax2+1)),BLM((lmax2+1)*(lmax2+1))
!old      DIMENSION        cLM((lmax2+1)*(lmax2+1))
      DIMENSION        cLM((LMAX2+1)*(LMAX2+1),NUME,nloat)
      complex*16 dmat(2:4,2:4,nume)
      CHARACTER*5 COORD                                                 
      integer        jlo,jlop,i,j
!---------------------------------------------------------------------  
!     new (and reversed) definitions for p-x and p-y (6.2.89, Blaha)
!
!old      ipip=max(ilo(1),1)
      SQRT2=SQRT(2.D0)                                                  
      CSUMa=(ALM(4)-ALM(2))/SQRT2                                        
      CSUMb=(bLM(4)-bLM(2))/SQRT2                                        
      APX(num)=APX(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT
      BPX(num)=BPX(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT
      do jlo=1,ilo(1)
         CSUMc=(cLM(4,num,jlo)-cLM(2,num,jlo))/SQRT2                                        
         do jlop=1,ilo(1)
            cPX(num)=cPX(num)+((cLM(4,num,jlop)-cLM(2,num,jlop))/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         caPX(num)=caPX(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,1)*100.D0/MULT
         acPX(num)=acPX(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,1)*100.D0/MULT
         cbPX(num)=cbPX(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,1)*100.D0/MULT
         bcPX(num)=bcPX(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,1)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(ALM(4)+ALM(2))/SQRT2                                        
      CSUMb=(bLM(4)+bLM(2))/SQRT2                                        
      APy(num)=APy(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT
      BPy(num)=BPy(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT                
      do jlo=1,ilo(1)
         CSUMc=(cLM(4,num,jlo)+cLM(2,num,jlo))/SQRT2                                        
         do jlop=1,ilo(1)
            cPy(num)=cPy(num)+((cLM(4,num,jlop)+cLM(2,num,jlop))/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         caPy(num)=caPy(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,1)*100.D0/MULT
         acPy(num)=acPy(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,1)*100.D0/MULT
         cbPy(num)=cbPy(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,1)*100.D0/MULT
         bcPy(num)=bcPy(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,1)*100.D0/MULT
      enddo
!                                                                       
      APZ(num)=APZ(num)+ALM(3)*CONJG(ALM(3))*100.D0/MULT 
      BPZ(num)=BPZ(num)+BLM(3)*CONJG(BLM(3))*UENORM*100.D0/MULT
      do jlo=1,ilo(1)
         do jlop=1,ilo(1)
            cPZ(num)=cPZ(num)+cLM(3,num,jlop)*CONJG(cLM(3,num,jlo))*100.D0/MULT
         enddo
         caPz(num)=caPz(num)+Clm(3,num,jlo)*CONJG(alm(3))*pi12lo(jlo,1)*100.D0/MULT
         acPz(num)=acPz(num)+alm(3)*CONJG(Clm(3,num,jlo))*pi12lo(jlo,1)*100.D0/MULT
         cbPz(num)=cbPz(num)+Clm(3,num,jlo)*CONJG(blm(3))*pe12lo(jlo,1)*100.D0/MULT
         bcPz(num)=bcPz(num)+blm(3)*CONJG(Clm(3,num,jlo))*pe12lo(jlo,1)*100.D0/MULT
      enddo
      do i=2,4
         do j=2,4
            dmat(i,j,num)=dmat(i,j,num) + (alm(j)*conjg(alm(i))+ &
                          blm(j)*conjg(blm(i))*uenorm)/mult
            do jlo=1,ilo(1)
               dmat(i,j,num)=dmat(i,j,num) + &
                   (alm(j)*conjg(clm(i,num,jlo))*pi12lo(jlo,1)+clm(j,num,jlo)*conjg(alm(i))*pi12lo(jlo,1)+ &
                   blm(j)*conjg(clm(i,num,jlo))*pe12lo(jlo,1)+clm(j,num,jlo)*conjg(blm(i))*pe12lo(jlo,1))/mult 
               do jlop=1,ilo(1)
                  dmat(i,j,num)=dmat(i,j,num) + (clm(j,num,jlop)*conjg(clm(i,num,jlo)))/mult
               enddo
            enddo
            dmat(i,j,num)=dmat(i,j,num)  ! /mult
         enddo
      enddo

      RETURN                                                            
      END                                                               
      SUBROUTINE F7SPLT (ALM,BLM,clm,MULT,UENORM,num,coord,dmat)
!                                                                       
!     DECOMPOSITION OF F CHARGE                
!                                                                      
      USE param
      USE charf
      use lo
      IMPLICIT REAL*8 (A-H,O-Z)
      COMPLEX*16    ALM,BLM,clm,CSUM                                        
      DIMENSION  ALM((lmax2+1)*(lmax2+1)),bLM((lmax2+1)*(lmax2+1))
!old      DIMENSION        cLM((lmax2+1)*(lmax2+1))
      DIMENSION        cLM((LMAX2+1)*(LMAX2+1),NUME,nloat)
      complex*16 dmat(10:16,10:16,nume)
      CHARACTER*5 COORD                                                 
      integer    jlo,jlop
!---------------------------------------------------------------------  
!                                                                       
!old      ipip=max(ilo(3),1)
      SQRT2=SQRT(2.D0)                                                  
      Af00(num)=Af00(num)+ALM(13)*CONJG(ALM(13))*100.D0/MULT                     
      Bf00(num)=Bf00(num)+BLM(13)*CONJG(BLM(13))*UENORM*100.D0/MULT              
!                                                                       
      CSUM=(ALM(14)+ALM(12))/SQRT2                                        
      Af11(num)=Af11(num)+CSUM*CONJG(CSUM)*100.D0/MULT                      
      CSUM=(BLM(14)+BLM(12))/SQRT2                                        
      Bf11(num)=Bf11(num)+CSUM*CONJG(CSUM)*UENORM*100.D0/MULT               
!                                                                       
      CSUM=(ALM(14)-ALM(12))/SQRT2                                        
      Af1m(num)=Af1m(num)+CSUM*CONJG(CSUM)*100.D0/MULT                          
      CSUM=(BLM(14)-BLM(12))/SQRT2                                        
      Bf1m(num)=Bf1m(num)+CSUM*CONJG(CSUM)*UENORM*100.D0/MULT                   
!                                                                       
      CSUM=(ALM(15)-ALM(11))/SQRT2                                        
      Af2m(num)=Af2m(num)+CSUM*CONJG(CSUM)*100.D0/MULT                          
      CSUM=(BLM(15)-BLM(11))/SQRT2                                        
      Bf2m(num)=Bf2m(num)+CSUM*CONJG(CSUM)*UENORM*100.D0/MULT                   
!                                                                       
      CSUM=(ALM(15)+ALM(11))/SQRT2                                        
      Af22(num)=Af22(num)+CSUM*CONJG(CSUM)*100.D0/MULT                          
      CSUM=(BLM(15)+BLM(11))/SQRT2                                        
      Bf22(num)=Bf22(num)+CSUM*CONJG(CSUM)*UENORM*100.D0/MULT                   
!                                                                       
      CSUM=(ALM(16)-ALM(10))/SQRT2                                        
      Af3m(num)=Af3m(num)+CSUM*CONJG(CSUM)*100.D0/MULT                          
      CSUM=(BLM(16)-BLM(10))/SQRT2                                        
      Bf3m(num)=Bf3m(num)+CSUM*CONJG(CSUM)*UENORM*100.D0/MULT                   
!                                                                       
      CSUM=(ALM(16)+ALM(10))/SQRT2                                        
      Af33(num)=Af33(num)+CSUM*CONJG(CSUM)*100.D0/MULT                          
      CSUM=(BLM(16)+BLM(10))/SQRT2                                        
      Bf33(num)=Bf33(num)+CSUM*CONJG(CSUM)*UENORM*100.D0/MULT                   
      do i=10,16
         do j=10,16
           dmat(i,j,num)=dmat(i,j,num) + (alm(j)*conjg(alm(i))+ &
                      blm(j)*conjg(blm(i))*uenorm)/mult
           do jlo=1,ilo(3)
              dmat(i,j,num)=dmat(i,j,num) + &
                 (alm(j)*conjg(clm(i,num,jlo))*pi12lo(jlo,3)+clm(j,num,jlo)*conjg(alm(i))*pi12lo(jlo,3)+ &
                 blm(j)*conjg(clm(i,num,jlo))*pe12lo(jlo,3)+clm(j,num,jlo)*conjg(blm(i))*pe12lo(jlo,3))/mult  
              do jlop=1,ilo(3)
                 dmat(i,j,num)=dmat(i,j,num)+(clm(j,num,jlop)*conjg(clm(i,num,jlo)))/mult
              enddo
           enddo
           dmat(i,j,num)=dmat(i,j,num) !/mult
         enddo
      enddo
      RETURN                                                            
      END                                                               
      SUBROUTINE D5SPLT (ALM,BLM,clm,MULT,UENORM,num,coord,jatom,dmat) !,mu)                 
!                                                                       
!     DECOMPOSITION OF D CHARGE IN DZ2,DX2-Y2,DXY,DXZ,DYZ               
!     new (and reversed) definitions for dxz, dyz (6.2.89., Blaha)
!                                                                      
      use param
      USE chard
      use lo
      IMPLICIT REAL*8 (A-H,O-Z)
      COMPLEX*16       ALM,BLM,clm,CSUMa,csumb,csumc
      DIMENSION      ALM((lmax2+1)*(lmax2+1)),BLM((lmax2+1)*(lmax2+1))
!old      DIMENSION        cLM((lmax2+1)*(lmax2+1))
      DIMENSION        cLM((LMAX2+1)*(LMAX2+1),NUME,nloat)
      complex*16 dmat(5:9,5:9,nume)
!      complex*16 dmat(48,5:9,5:9,nume)
      CHARACTER*5 COORD                                                 
      integer          jlo,jlop
!---------------------------------------------------------------------  
!                                                                       
!old         ipip=max(ilo(2),1)
      SQRT2=SQRT(2.D0)                                                  
      SQRT3=SQRT(3.D0)                                                  
      IF (COORD.EQ.'OCTAH')  THEN                                       
!
! non standard dsplit  
! classical octahedral coordinates                          
!                                                                       
      IF (JATOM.EQ.1) THEN                                              
!     ===========================                                       
!     1. METALLATOM                                                     
!                                                                       
!
      CSUMa=( SQRT3*(ALM(9)+ALM(5))/SQRT2 - ALM(7) )*0.5                 
      CSUMb=( SQRT3*(bLM(9)+bLM(5))/SQRT2 - bLM(7) )*0.5                 
      ADz2(num)=ADz2(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDz2(num)=BDz2(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=( SQRT3*(cLM(9,num,jlo)+cLM(5,num,jlo))/SQRT2 - cLM(7,num,jlo) )*0.5                 
         do jlop=1,ilo(2)
            cdz2(num)=cdz2(num)+(( SQRT3*(cLM(9,num,jlop)+cLM(5,num,jlop))/SQRT2 - cLM(7,num,jlop) )*0.5)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadz2(num)=cadz2(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdz2(num)=acdz2(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdz2(num)=cbdz2(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdz2(num)=bcdz2(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(-1)*(ALM(8)+ALM(6))/SQRT2                                   
      CSUMb=(-1)*(BLM(8)+BLM(6))/SQRT2                                   
      ADX2Y2(num)=ADX2Y2(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT
      BDX2Y2(num)=BDX2Y2(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT
      do jlo=1,ilo(2)
         CSUMc=(-1)*(cLM(8,num,jlo)+cLM(6,num,jlo))/SQRT2                                   
         do jlop=1,ilo(2)
            cdx2y2(num)=cdx2y2(num)+((-1)*(cLM(8,num,jlop)+cLM(6,num,jlop))/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadx2y2(num)=cadx2y2(num)+ &
                      CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdx2y2(num)=acdx2y2(num)+ &
                      CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdx2y2(num)=cbdx2y2(num)+ &
                      CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdx2y2(num)=bcdx2y2(num)+ &
                      CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=( (ALM(9)+ALM(5))/SQRT2 + SQRT3*ALM(7) )*0.5                 
      CSUMb=( (BLM(9)+BLM(5))/SQRT2 + SQRT3*BLM(7) )*0.5                 
      ADXY(num)=ADXY(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDXY(num)=BDXY(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=( (cLM(9,num,jlo)+cLM(5,num,jlo))/SQRT2 + SQRT3*cLM(7,num,jlo) )*0.5                 
         do jlop=1,ilo(2)
            cdxy(num)=cdxy(num)+(( (cLM(9,num,jlop)+cLM(5,num,jlop))/SQRT2 + SQRT3*cLM(7,num,jlop) )*0.5)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadxy(num)=cadxy(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdxy(num)=acdxy(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdxy(num)=cbdxy(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdxy(num)=bcdxy(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=((ALM(9)-ALM(5))/SQRT2-(ALM(8)-ALM(6))/SQRT2)/SQRT2      
      CSUMb=((BLM(9)-BLM(5))/SQRT2-(BLM(8)-BLM(6))/SQRT2)/SQRT2      
      ADXz(num)=ADXz(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDXz(num)=BDXz(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=((cLM(9,num,jlo)-cLM(5,num,jlo))/SQRT2-(cLM(8,num,jlo)-cLM(6,num,jlo))/SQRT2)/SQRT2      
         do jlop=1,ilo(2)
            cdxz(num)=cdxz(num)+(((cLM(9,num,jlop)-cLM(5,num,jlop))/SQRT2-(cLM(8,num,jlop) - &
                      cLM(6,num,jlop))/SQRT2)/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadxz(num)=cadxz(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdxz(num)=acdxz(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdxz(num)=cbdxz(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdxz(num)=bcdxz(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=((-1.)*(ALM(9)-ALM(5))/SQRT2-(ALM(8)-ALM(6))/SQRT2)/SQRT2  
      CSUMb=((-1.)*(BLM(9)-BLM(5))/SQRT2-(BLM(8)-BLM(6))/SQRT2)/SQRT2  
      ADYz(num)=ADYz(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT
      BDYz(num)=BDYz(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT
      do jlo=1,ilo(2)
         CSUMc=((-1.)*(cLM(9,num,jlo)-cLM(5,num,jlo))/SQRT2-(cLM(8,num,jlo)-cLM(6,num,jlo))/SQRT2)/SQRT2  
         do jlop=1,ilo(2)
            cdyz(num)=cdyz(num)+(((-1.)*(cLM(9,num,jlop)-cLM(5,num,jlop))/SQRT2-(cLM(8,num,jlop) - &
                      cLM(6,num,jlop))/SQRT2)/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadyz(num)=cadyz(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdyz(num)=acdyz(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdyz(num)=cbdyz(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdyz(num)=bcdyz(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
     enddo
!                                                                       
                                                                        
                                                                        
                                                                        
      ELSE                                                              
!     ===========================                                       
!     2.METALLATOM                                                      
!                                                                       
      CSUMa=(-SQRT3*(ALM(9)+ALM(5))/SQRT2-ALM(7) )*0.5                
      CSUMb=(-SQRT3*(BLM(9)+BLM(5))/SQRT2-BLM(7) )*0.5                
      ADz2(num)=ADz2(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDz2(num)=BDz2(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=(-SQRT3*(cLM(9,num,jlo)+cLM(5,num,jlo))/SQRT2-cLM(7,num,jlo) )*0.5                
         do jlop=1,ilo(2)
            cdz2(num)=cdz2(num)+((-SQRT3*(cLM(9,num,jlop)+cLM(5,num,jlop))/SQRT2-cLM(7,num,jlop) )*0.5)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadz2(num)=cadz2(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdz2(num)=acdz2(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdz2(num)=cbdz2(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdz2(num)=bcdz2(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(-1.)*(ALM(8)-ALM(6))/SQRT2                                  
      CSUMb=(-1.)*(BLM(8)-BLM(6))/SQRT2                                  
      ADX2Y2(num)=ADX2Y2(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT         
      BDX2Y2(num)=BDX2Y2(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT
      do jlo=1,ilo(2)
         CSUMc=(-1.)*(cLM(8,num,jlo)-cLM(6,num,jlo))/SQRT2                                  
         do jlop=1,ilo(2)
            cdx2y2(num)=cdx2y2(num)+((-1.)*(cLM(8,num,jlop)-cLM(6,num,jlop))/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadx2y2(num)=cadx2y2(num)+ &
              CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdx2y2(num)=acdx2y2(num)+ &
              CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdx2y2(num)=cbdx2y2(num)+ &
              CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdx2y2(num)=bcdx2y2(num)+ &
              CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=( (-1.)*(ALM(9)+ALM(5))/SQRT2 + SQRT3*ALM(7) )*0.5           
      CSUMb=( (-1.)*(BLM(9)+BLM(5))/SQRT2 + SQRT3*BLM(7) )*0.5           
      ADXY(num)=ADXY(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDXY(num)=BDXY(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=( (-1.)*(cLM(9,num,jlo)+cLM(5,num,jlo))/SQRT2 + SQRT3*cLM(7,num,jlo) )*0.5           
         do jlop=1,ilo(2)
            cdxy(num)=cdxy(num)+(( (-1.)*(cLM(9,num,jlop)+cLM(5,num,jlop))/SQRT2 + &
                      SQRT3*cLM(7,num,jlop) )*0.5)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadxy(num)=cadxy(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdxy(num)=acdxy(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdxy(num)=cbdxy(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdxy(num)=bcdxy(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=((ALM(9)-ALM(5))/SQRT2-(ALM(8)+ALM(6))/SQRT2 )/SQRT2      
      CSUMb=((BLM(9)-BLM(5))/SQRT2-(BLM(8)+BLM(6))/SQRT2 )/SQRT2      
      ADXz(num)=ADXz(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDXz(num)=BDXz(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=((cLM(9,num,jlo)-cLM(5,num,jlo))/SQRT2-(cLM(8,num,jlo)+cLM(6,num,jlo))/SQRT2 )/SQRT2      
         do jlop=1,ilo(2)
            cdxz(num)=cdxz(num)+(((cLM(9,num,jlop)-cLM(5,num,jlop))/SQRT2-(cLM(8,num,jlop) + &
                      cLM(6,num,jlop))/SQRT2 )/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadxz(num)=cadxz(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdxz(num)=acdxz(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdxz(num)=cbdxz(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdxz(num)=bcdxz(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=((-1.)*(ALM(9)-ALM(5))/SQRT2-(ALM(8)+ALM(6))/SQRT2)/SQRT2  
      CSUMb=((-1.)*(BLM(9)-BLM(5))/SQRT2-(BLM(8)+BLM(6))/SQRT2)/SQRT2  
      ADYz(num)=ADYz(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDYz(num)=BDYz(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=((-1.)*(cLM(9,num,jlo)-cLM(5,num,jlo))/SQRT2-(cLM(8,num,jlo)+cLM(6,num,jlo))/SQRT2)/SQRT2  
         do jlop=1,ilo(2)
            cdyz(num)=cdyz(num)+(((-1.)*(cLM(9,num,jlop)-cLM(5,num,jlop))/SQRT2-(cLM(8,num,jlop) + &
                      cLM(6,num,jlop))/SQRT2)/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadyz(num)=cadyz(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdyz(num)=acdyz(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdyz(num)=cbdyz(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdyz(num)=bcdyz(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      END IF                                                            
!                                                                        
      ELSE if (COORD.EQ.'TRIGO')  THEN                                       
!
      CSUMa=(1/SQRT3)*((ALM(8)-ALM(6))+(ALM(9)+ALM(5))/SQRT2)                 
      CSUMb=(1/SQRT3)*((bLM(8)-bLM(6))+(bLM(9)+bLM(5))/SQRT2)             
      ADz2(num)=ADz2(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDz2(num)=BDz2(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=(1/SQRT3)*((cLM(8,num,jlo)-cLM(6,num,jlo))+(cLM(9,num,jlo)+cLM(5,num,jlo))/SQRT2)               
         do jlop=1,ilo(2)
            cdz2(num)=cdz2(num)+((1/SQRT3)*((cLM(8,num,jlop)-cLM(6,num,jlop))+(cLM(9,num,jlop) + &
                      cLM(5,num,jlop))/SQRT2))*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadz2(num)=cadz2(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdz2(num)=acdz2(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdz2(num)=cbdz2(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdz2(num)=bcdz2(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(1/SQRT3)*((aLM(8)+aLM(6))-(aLM(9)-aLM(5))/SQRT2)                 
      CSUMb=(1/SQRT3)*((bLM(8)+bLM(6))-(bLM(9)-bLM(5))/SQRT2)                 
      ADX2Y2(num)=ADX2Y2(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDX2Y2(num)=BDX2Y2(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=(1/SQRT3)*((cLM(8,num,jlo)+cLM(6,num,jlo))-(cLM(9,num,jlo)-cLM(5,num,jlo))/SQRT2)                 
         do jlop=1,ilo(2)
            cdx2y2(num)=cdx2y2(num)+((1/SQRT3)*((cLM(8,num,jlop)+cLM(6,num,jlop))-(cLM(9,num,jlop)- &
                        cLM(5,num,jlop))/SQRT2))*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadx2y2(num)=cadx2y2(num)+ &
              CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdx2y2(num)=acdx2y2(num)+ &
              CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdx2y2(num)=cbdx2y2(num)+ &
              CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdx2y2(num)=bcdx2y2(num)+ &
              CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=ALM(7)                  
      CSUMb=BLM(7)                 
      ADXY(num)=ADXY(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDXY(num)=BDXY(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=cLM(7,num,jlo)                  
         do jlop=1,ilo(2)
            cdxy(num)=cdxy(num)+(cLM(7,num,jlop))*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadxy(num)=cadxy(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdxy(num)=acdxy(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdxy(num)=cbdxy(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdxy(num)=bcdxy(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(1/SQRT3)*((ALM(8)+ALM(6))/SQRT2+(ALM(9)-ALM(5)))
      CSUMb=(1/SQRT3)*((bLM(8)+bLM(6))/SQRT2+(bLM(9)-bLM(5)))
      ADXz(num)=ADXz(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDXz(num)=BDXz(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=(1/SQRT3)*((cLM(8,num,jlo)+cLM(6,num,jlo))/SQRT2+(cLM(9,num,jlo)-cLM(5,num,jlo)))         
         do jlop=1,ilo(2)
            cdxz(num)=cdxz(num)+((1/SQRT3)*((cLM(8,num,jlop)+cLM(6,num,jlop))/SQRT2+(cLM(9,num,jlop)- &
                      cLM(5,num,jlop))))*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadxz(num)=cadxz(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdxz(num)=acdxz(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdxz(num)=cbdxz(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdxz(num)=bcdxz(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(1/SQRT3)*((ALM(8)-ALM(6))/SQRT2-(ALM(9)+ALM(5)))
      CSUMb=(1/SQRT3)*((bLM(8)-bLM(6))/SQRT2-(bLM(9)+bLM(5)))            
      ADYz(num)=ADYz(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDYz(num)=BDYz(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=(1/SQRT3)*((cLM(8,num,jlo)-cLM(6,num,jlo))/SQRT2-(cLM(9,num,jlo)+cLM(5,num,jlo)))       
         do jlop=1,ilo(2)
            cdyz(num)=cdyz(num)+((1/SQRT3)*((cLM(8,num,jlop)-cLM(6,num,jlop))/SQRT2-(cLM(9,num,jlop)+ & 
                      cLM(5,num,jlop))))*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadyz(num)=cadyz(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdyz(num)=acdyz(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdyz(num)=cbdyz(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdyz(num)=bcdyz(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo

      ELSE                                        

!
! standard-split
!                                                             
!if(num.eq.1) print*,num,ADZ2(num)
!if(num.eq.2) print*,num,ADZ2(num)
!if(num.eq.161) print*,num,ADZ2(num)
      ADZ2(num)=ADZ2(num)+ALM(7)*CONJG(ALM(7))*100.D0/MULT                     
      BDZ2(num)=BDZ2(num)+BLM(7)*CONJG(BLM(7))*UENORM*100.D0/MULT              
      do jlo=1,ilo(2)
         do jlop=1,ilo(2)
            cdz2(num)=cdz2(num)+cLM(7,num,jlop)*CONJG(cLM(7,num,jlo))*100.D0/MULT               
         enddo
         cadz2(num)=cadz2(num)+Clm(7,num,jlo)*CONJG(alm(7))*pi12lo(jlo,2)*100.D0/MULT
         acdz2(num)=acdz2(num)+alm(7)*CONJG(Clm(7,num,jlo))*pi12lo(jlo,2)*100.D0/MULT
         cbdz2(num)=cbdz2(num)+Clm(7,num,jlo)*CONJG(blm(7))*pe12lo(jlo,2)*100.D0/MULT
         bcdz2(num)=bcdz2(num)+blm(7)*CONJG(Clm(7,num,jlo))*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(ALM(9)+ALM(5))/SQRT2                                        
      CSUMb=(BLM(9)+BLM(5))/SQRT2                                        
      ADX2Y2(num)=ADX2Y2(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT               
      BDX2Y2(num)=BDX2Y2(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT      
      do jlo=1,ilo(2)
         CSUMc=(cLM(9,num,jlo)+cLM(5,num,jlo))/SQRT2                                        
         do jlop=1,ilo(2)
            cdx2y2(num)=cdx2y2(num)+((cLM(9,num,jlop)+cLM(5,num,jlop))/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadx2y2(num)=cadx2y2(num)+ &
              CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdx2y2(num)=acdx2y2(num)+ &
              CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdx2y2(num)=cbdx2y2(num)+ &
              CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdx2y2(num)=bcdx2y2(num)+ &
              CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(ALM(9)-ALM(5))/SQRT2                                        
      CSUMb=(BLM(9)-BLM(5))/SQRT2                                        
      ADXY(num)=ADXY(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDXY(num)=BDXY(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=(cLM(9,num,jlo)-cLM(5,num,jlo))/SQRT2                                        
         do jlop=1,ilo(2)
            cdxy(num)=cdxy(num)+((cLM(9,num,jlop)-cLM(5,num,jlop))/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadxy(num)=cadxy(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdxy(num)=acdxy(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdxy(num)=cbdxy(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdxy(num)=bcdxy(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(ALM(8)-ALM(6))/SQRT2                                        
      CSUMb=(BLM(8)-BLM(6))/SQRT2                                        
      ADXz(num)=ADXz(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDXz(num)=BDXz(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=(cLM(8,num,jlo)-cLM(6,num,jlo))/SQRT2                                        
         do jlop=1,ilo(2)
            cdxz(num)=cdxz(num)+((cLM(8,num,jlop)-cLM(6,num,jlop))/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadxz(num)=cadxz(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdxz(num)=acdxz(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdxz(num)=cbdxz(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdxz(num)=bcdxz(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!                                                                       
      CSUMa=(ALM(8)+ALM(6))/SQRT2                                        
      CSUMb=(BLM(8)+BLM(6))/SQRT2                                        
      ADYz(num)=ADYz(num)+CSUMa*CONJG(CSUMa)*100.D0/MULT                      
      BDYz(num)=BDYz(num)+CSUMb*CONJG(CSUMb)*UENORM*100.D0/MULT               
      do jlo=1,ilo(2)
         CSUMc=(cLM(8,num,jlo)+cLM(6,num,jlo))/SQRT2                                        
         do jlop=1,ilo(2)
            cdyz(num)=cdyz(num)+((cLM(8,num,jlop)+cLM(6,num,jlop))/SQRT2)*CONJG(CSUMc)*100.D0/MULT
         enddo
         cadyz(num)=cadyz(num)+CSUMc*CONJG(CSUMa)*pi12lo(jlo,2)*100.D0/MULT
         acdyz(num)=acdyz(num)+CSUMa*CONJG(CSUMc)*pi12lo(jlo,2)*100.D0/MULT
         cbdyz(num)=cbdyz(num)+CSUMc*CONJG(CSUMb)*pe12lo(jlo,2)*100.D0/MULT
         bcdyz(num)=bcdyz(num)+CSUMb*CONJG(CSUMc)*pe12lo(jlo,2)*100.D0/MULT
      enddo
!print*,num,ADZ2(num)+BDZ2(num)+cdz2(num)+cadz2(num)+acdz2(num)+cbdz2(num)+bcdz2(num),real(dmat(7,7,num))*100.d0,mult,' before'

      do i=5,9
         do j=5,9
            dmat(i,j,num)=dmat(i,j,num) + (alm(j)*conjg(alm(i)) + blm(j)*conjg(blm(i))*uenorm)/mult
            do jlo=1,ilo(2)
               dmat(i,j,num)=dmat(i,j,num) + &
                      (alm(j)*conjg(clm(i,num,jlo))*pi12lo(jlo,2)+clm(j,num,jlo)*conjg(alm(i))*pi12lo(jlo,2)+ &
                      blm(j)*conjg(clm(i,num,jlo))*pe12lo(jlo,2)+clm(j,num,jlo)*conjg(blm(i))*pe12lo(jlo,2))/mult 
               do jlop=1,ilo(2)
                  dmat(i,j,num)=dmat(i,j,num) + (clm(j,num,jlop)*conjg(clm(i,num,jlo)))/mult 
               enddo
               dmat(i,j,num)=dmat(i,j,num)    ! /mult 
!if(num.gt.40) then
!write(6,200) mu,num,i,j,dconjg(alm(i)),alm(j)
! 200   format('mu=',i1,' num=',i3,' m=',i1,' mp=',i1,2f10.4,3x,2f10.4,3x,f10.4)
!endif
            enddo
         enddo
      enddo
!if(num.eq.1) print*,num,ADZ2(num)+BDZ2(num)+cdz2(num)+cadz2(num)+acdz2(num)+cbdz2(num)+bcdz2(num),real(dmat(7,7,num))*100.d0,mult
!if(num.eq.2) print*,num,ADZ2(num)+BDZ2(num)+cdz2(num)+cadz2(num)+acdz2(num)+cbdz2(num)+bcdz2(num),real(dmat(7,7,num))*100.d0
!if(num.eq.161) print*,num,ADZ2(num)+BDZ2(num)+cdz2(num)+cadz2(num)+acdz2(num)+cbdz2(num)+bcdz2(num),real(dmat(7,7,num))*100.d0
      endif
      RETURN                                                            
    END SUBROUTINE D5SPLT
_______________________________________________
Wien mailing list
Wien@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

Reply via email to