quantum-espresso/PH/psyme.f90

65 lines
1.4 KiB
Fortran

!
! Copyright (C) 2001 PWSCF group
! This file is distributed under the terms of the
! GNU General Public License. See the file `License'
! in the root directory of the present distribution,
! or http://www.gnu.org/copyleft/gpl.txt .
!
#include "f_defs.h"
!
!-----------------------------------------------------------------------
SUBROUTINE psyme (dvtosym)
!-----------------------------------------------------------------------
!
! ... p-symmetrize the charge density.
!
USE pwcom
USE kinds, ONLY : DP
USE phcom
USE mp_global, ONLY : me_pool
USE pfft, ONLY : npp, ncplane
!
IMPLICIT NONE
!
COMPLEX(DP) :: dvtosym (nrxx, nspin, 3)
! the potential to symmetrize
!-local variable
!
#if defined (__PARA)
!
INTEGER :: i, is, iper, npp0
COMPLEX(DP), ALLOCATABLE :: ddvtosym (:,:,:)
! the potential to symmet
!
!
ALLOCATE (ddvtosym ( nrx1 * nrx2 * nrx3, nspin, 3))
npp0 = 0
DO i = 1, me_pool
npp0 = npp0 + npp (i)
ENDDO
npp0 = npp0 * ncplane+1
DO iper = 1, 3
DO is = 1, nspin
CALL cgather_sym (dvtosym (1, is, iper), ddvtosym (1, is, iper) )
ENDDO
ENDDO
CALL syme (ddvtosym)
DO iper = 1, 3
DO is = 1, nspin
CALL ZCOPY (npp (me_pool+1) * ncplane, ddvtosym (npp0, is, iper), &
1, dvtosym (1, is, iper), 1)
ENDDO
ENDDO
DEALLOCATE (ddvtosym)
#endif
RETURN
END SUBROUTINE psyme