mirror of https://gitlab.com/QEF/q-e.git
72 lines
1.6 KiB
Fortran
72 lines
1.6 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 psymdvscf (nper, irr, 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
|
|
!
|
|
INTEGER :: nper, irr
|
|
! the number of perturbations
|
|
! the representation under consideration
|
|
COMPLEX(DP) :: dvtosym (nrxx, nspin, nper)
|
|
! the potential to symmetrize
|
|
!-local variable
|
|
!
|
|
#if defined (__PARA)
|
|
!
|
|
INTEGER :: i, is, iper, npp0
|
|
|
|
COMPLEX(DP), ALLOCATABLE :: ddvtosym (:,:,:)
|
|
! the potential to symm
|
|
|
|
|
|
IF (nsymq.EQ.1.AND. (.NOT.minus_q) ) RETURN
|
|
CALL start_clock ('psymdvscf')
|
|
|
|
ALLOCATE (ddvtosym ( nrx1 * nrx2 * nrx3, nspin, nper))
|
|
npp0 = 1
|
|
DO i = 1, me_pool
|
|
npp0 = npp0 + npp (i) * ncplane
|
|
|
|
ENDDO
|
|
DO iper = 1, nper
|
|
DO is = 1, nspin
|
|
CALL cgather_sym (dvtosym (1, is, iper), ddvtosym (1, is, iper) )
|
|
ENDDO
|
|
|
|
ENDDO
|
|
|
|
CALL symdvscf (nper, irr, ddvtosym)
|
|
DO iper = 1, nper
|
|
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)
|
|
|
|
CALL stop_clock ('psymdvscf')
|
|
|
|
#endif
|
|
|
|
RETURN
|
|
|
|
END SUBROUTINE psymdvscf
|