C     /////////////////////////////////////                             
C     // CALCULATION OF THE TOTAL ENERGY //                             
C     /////////////////////////////////////                             
      SUBROUTINE ENERGY(TOTCH,ETOT1,ETOT2,ETOTAL,SCHGPC,EPC)
      IMPLICIT REAL(A-H,O-Y)                                          
      IMPLICIT COMPLEX(Z)                                            
      INCLUDE 'PACVPP' 
!XOCL SUBPROCESSOR PS(IPARA)=PQ(1:IPARA)
!XOCL INDEX PARTITION IP=(PS,INDEX=1:KNV3,PART=BAND) 
      DIMENSION EKK(KEG,KNV3),OCCUU(KEG,KNV3) 
!XOCL LOCAL EKK(:,/IP),OCCUU(:,/IP) 
      EQUIVALENCE (EKO,EKK),(OCCUP,OCCUU) 
cGEN
*pdir serial 
C     /////////////////////////////////////////////////                 
C     // PSEUDOPOTENTIAL-CORRECTION AND EWALD ENERGY //                 
C     /////////////////////////////////////////////////                 
      ETOTAL = ETOT1*TOTCH + ETOT2 
C     ///////////////////////////////////////////////////////////       
C     // BAND ENERGY(1) <- "VXC" AND "VHR"   WITH "OLD CHARGE" //       
C     ///////////////////////////////////////////////////////////       
      CALL XCFFT(2,SCHGPC) 
      ETOTAL = ETOTAL - UNIVOL*DREAL(DCONJG(ZVXC(1))*ZCHG(1))           
     &          + UNIVOL*DREAL(DCONJG(ZEXC(1))*(ZCHG(1)+ZRHPC(1)))      
      DO 10 I=2,KG
      ETOTAL = ETOTAL - UNIVOL*                                         
     &         ( DREAL(DCONJG(ZVXC(I))*ZCHG(I)) +                       
     &           PAI4*REAL( (DCONJG(ZCHGO(I)))*ZCHG(I) )*RGG(I)  )    
     &                + UNIVOL*                                         
     &         ( DREAL(DCONJG(ZEXC(I))*(ZCHG(I)+ZRHPC(I))) +            
     &           PAI2*REAL( (DCONJG(ZCHG(I)))*ZCHG(I) )*RGG(I)  )     
10    CONTINUE 
*pdir endserial
cGEN 
C     //////////////////////////////////////////////                    
C     // BAND ENERGY(3); BRILLOUIN ZONE SUMMATION //                    
C     //////////////////////////////////////////////                    
      FFF = FLOAT(KV3)
      TTT = 0.D0                                                  
cGEN
      totsum = 0.0D0 
!XOCL SPREAD DO /IP 
cGEN
*pdir pardo 
      DO 2 I=1,KV3                                                
      DO 100 IBAN=NBD1,NBD2
            TTT = TTT + OCCUU(IBAN,I)*                                  
     &      EKK(IBAN,I)                                                 
  100 CONTINUE 
    2 CONTINUE                                                    
!XOCL END SPREAD SUM(TTT) 
cGEN
*pdir critical
      totsum = totsum + TTT
*pdir endcritical
cGEN
*pdir serial
      TTT = totsum 
      ETOTAL = ETOTAL + 2.D0*TTT/FFF                                    
C FOR PARTIAL CORE CORRECTION     90.11.3                               
      ETOTAL = ETOTAL-EPC                                               
      WRITE(6,1104) ITER,ETOTAL,ETOTAL                                  
      WRITE(19,1104) ITER,ETOTAL,ETOTAL                                 
 1104 FORMAT(1H ,'TOTAL ENERGY FOR',I4,'-TH ITERATION=',                
     &            F12.7,5X,D15.7)                                       
*pdir endserial
cGEN 
      RETURN                                                            
      END