9subroutine ggair_sp_2b(g2up,g2dn,gvup,gvdn,vxup,vxdn,vcup,vcdn,dxdgu2,dxdgd2, &
10 dxdgud,dcdgu2,dcdgd2,dcdgud)
22real(8),
intent(in) :: g2up(ngtot),g2dn(ngtot)
23real(8),
intent(in) :: gvup(ngtot,3),gvdn(ngtot,3)
24real(8),
intent(inout) :: vxup(ngtot),vxdn(ngtot)
25real(8),
intent(inout) :: vcup(ngtot),vcdn(ngtot)
26real(8),
intent(in) :: dxdgu2(ngtot),dxdgd2(ngtot),dxdgud(ngtot)
27real(8),
intent(in) :: dcdgu2(ngtot),dcdgd2(ngtot),dcdgud(ngtot)
31real(8),
allocatable :: rfir1(:),rfir2(:)
32complex(8),
allocatable :: zfft1(:),zfft2(:)
33allocate(rfir1(ngtot),rfir2(ngtot))
45 zfft2(ifg)=
vgc(i,ig)*
zi*zfft1(ifg)
48 rfir1(:)=rfir1(:)+rfir2(:)*gvup(:,i)
50vxup(:)=vxup(:)-2.d0*(rfir1(:)+dxdgu2(:)*g2up(:))-dxdgud(:)*g2dn(:)
58 zfft2(ifg)=
vgc(i,ig)*
zi*zfft1(ifg)
61 rfir1(:)=rfir1(:)+rfir2(:)*gvdn(:,i)
63vxdn(:)=vxdn(:)-2.d0*(rfir1(:)+dxdgd2(:)*g2dn(:))-dxdgud(:)*g2up(:)
70 zfft2(ifg)=
vgc(i,ig)*
zi*zfft1(ifg)
73 vxup(:)=vxup(:)-rfir2(:)*gvdn(:,i)
74 vxdn(:)=vxdn(:)-rfir2(:)*gvup(:,i)
86 zfft2(ifg)=
vgc(i,ig)*
zi*zfft1(ifg)
89 rfir1(:)=rfir1(:)+rfir2(:)*gvup(:,i)
91vcup(:)=vcup(:)-2.d0*(rfir1(:)+dcdgu2(:)*g2up(:))-dcdgud(:)*g2dn(:)
99 zfft2(ifg)=
vgc(i,ig)*
zi*zfft1(ifg)
102 rfir1(:)=rfir1(:)+rfir2(:)*gvdn(:,i)
104vcdn(:)=vcdn(:)-2.d0*(rfir1(:)+dcdgd2(:)*g2dn(:))-dcdgud(:)*g2up(:)
111 zfft2(ifg)=
vgc(i,ig)*
zi*zfft1(ifg)
114 vcup(:)=vcup(:)-rfir2(:)*gvdn(:,i)
115 vcdn(:)=vcdn(:)-rfir2(:)*gvup(:,i)
117deallocate(rfir1,rfir2,zfft1,zfft2)
subroutine ggair_sp_2b(g2up, g2dn, gvup, gvdn, vxup, vxdn, vcup, vcdn, dxdgu2, dxdgd2, dxdgud, dcdgu2, dcdgd2, dcdgud)
integer, dimension(3) ngridg
integer, dimension(:), allocatable igrzf
real(8), dimension(:,:), allocatable vgc