20 #include "../base/base_uses.f90"
28 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'pw_copy_all'
29 LOGICAL,
PARAMETER,
PRIVATE :: debug_this_module = .false.
42 TYPE(pw_c1d_gs_type),
INTENT(IN) :: pw1
43 TYPE(pw_c1d_gs_type),
INTENT(INOUT) :: pw2
45 COMPLEX(KIND=dp),
ALLOCATABLE,
DIMENSION(:) :: cc
46 INTEGER :: group_size, ig1, ig2, ip, jg2, me, ng1, &
48 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: ngr
49 INTEGER,
ALLOCATABLE,
DIMENSION(:, :) :: g_hat
50 INTEGER,
DIMENSION(3) :: k1, k2
51 TYPE(mp_comm_type) :: group
52 TYPE(pw_grid_type),
POINTER :: pg1, pg2
60 group = pg1%para%group
61 group_size = pg1%para%group_size
63 ALLOCATE (ngr(group_size))
65 ngr(me + 1) = pg1%ngpts_cut_local
69 cc(1:ng1) = pw1%array(1:ng1)
70 cc(ng1 + 1:ngm) = cmplx(0.0_dp, 0.0_dp, kind=
dp)
72 ALLOCATE (g_hat(3, ngm))
74 g_hat(1:3, 1:ng1) = pg1%g_hat(1:3, 1:ng1)
78 IF (penow < 0) penow = penow + group_size
80 DO ig1 = 1, ngr(penow + 1)
81 k1(1:3) = g_hat(1:3, ig1)
84 k2(1:3) = pg2%g_hat(1:3, ig2)
85 IF (sum(abs(k1 - k2)) == 0)
THEN
90 IF (jg2 /= 0) pw2%array(jg2) = cc(ig1)
92 IF (ip /= group_size)
THEN
94 CALL group%shift(g_hat)
99 DEALLOCATE (ngr, cc, g_hat)
Defines the basic variable types.
integer, parameter, public dp
Interface to the message passing library MPI.
subroutine, public pw_copy_match(pw1, pw2)
copy a pw type variable