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