9subroutine symrvfir(tspin,tnc,ngridg_,ngtot_,ngvec_,nfgrz_,igfft_,igrzf_,ld, &
36logical,
intent(in) :: tspin,tnc
37integer,
intent(in) :: ngridg_(3),ngtot_,ngvec_,nfgrz_
38integer,
intent(in) :: igfft_(ngvec_),igrzf_(nfgrz_),ld
39real(8),
intent(inout) :: rvfir(ld,*)
42integer isym,lspl,lspn,sym(3,3)
43integer nd,ig,jg,ifg,jfg
44integer i1,i2,i3,j1,j2,j3,i
45real(8) sc(3,3),v1,v2,v3,t1
48complex(8),
allocatable :: zfft1(:,:),zfft2(:,:)
55allocate(zfft1(ngtot_,nd),zfft2(nfgrz_,nd))
58 zfft1(1:ngtot_,i)=rvfir(1:ngtot_,i)
59 call zfftifc(3,ngridg_,-1,zfft1(:,i))
61zfft2(1:nfgrz_,1:nd)=0.d0
74 sym(1:3,1:3)=
symlat(1:3,1:3,lspl)
82 sc(1:3,1:3)=
symlatc(1:3,1:3,lspl)
86 if (ig > ngvec_) cycle
92 j1=sym(1,1)*i1+sym(2,1)*i2+sym(3,1)*i3
93 j2=sym(1,2)*i1+sym(2,2)*i2+sym(3,2)*i3
94 j3=sym(1,3)*i1+sym(2,3)*i2+sym(3,3)*i3
103 zfft2(ifg,1:nd)=zfft2(ifg,1:nd)+zfft1(jfg,1:nd)
107 z1=zfft1(jfg,1); z2=zfft1(jfg,2); z3=zfft1(jfg,3)
108 zfft2(ifg,1)=zfft2(ifg,1)+sc(1,1)*z1+sc(1,2)*z2+sc(1,3)*z3
109 zfft2(ifg,2)=zfft2(ifg,2)+sc(2,1)*z1+sc(2,2)*z2+sc(2,3)*z3
110 zfft2(ifg,3)=zfft2(ifg,3)+sc(3,1)*z1+sc(3,2)*z2+sc(3,3)*z3
113 zfft2(ifg,1)=zfft2(ifg,1)+sc(3,3)*zfft1(jfg,1)
118 t1=
vgc(1,jg)*v1+
vgc(2,jg)*v2+
vgc(3,jg)*v3
119 z0=cmplx(cos(t1),-sin(t1),8)
121 zfft2(ifg,1:nd)=zfft2(ifg,1:nd)+z0*zfft1(jfg,1:nd)
124 z1=zfft1(jfg,1); z2=zfft1(jfg,2); z3=zfft1(jfg,3)
125 zfft2(ifg,1)=zfft2(ifg,1)+z0*(sc(1,1)*z1+sc(1,2)*z2+sc(1,3)*z3)
126 zfft2(ifg,2)=zfft2(ifg,2)+z0*(sc(2,1)*z1+sc(2,2)*z2+sc(2,3)*z3)
127 zfft2(ifg,3)=zfft2(ifg,3)+z0*(sc(3,1)*z1+sc(3,2)*z2+sc(3,3)*z3)
129 zfft2(ifg,1)=zfft2(ifg,1)+sc(3,3)*z0*zfft1(jfg,1)
138 call rzfftifc(3,ngridg_,1,rvfir(:,i),zfft2(:,i))
139 rvfir(1:ngtot_,i)=t1*rvfir(1:ngtot_,i)
141deallocate(zfft1,zfft2)
real(8), dimension(3, 3, 48) symlatc
integer, dimension(maxsymcrys) lspnsymc
integer, dimension(48) symlatd
logical, dimension(maxsymcrys) tv0symc
integer, dimension(:,:), allocatable ivg
real(8), dimension(3, maxsymcrys) vtcsymc
real(8), dimension(:,:), allocatable vgc
integer, dimension(3, 3, 48) symlat
integer, dimension(:,:,:), allocatable ivgig
integer, dimension(maxsymcrys) lsplsymc