6subroutine symrvfmt(tspin,tnc,nrmt_,nrmti_,npmt_,ld,rvfmt)
10logical,
intent(in) :: tspin,tnc
11integer,
intent(in) :: nrmt_(nspecies),nrmti_(nspecies),npmt_(nspecies),ld
12real(8),
intent(inout) :: rvfmt(ld,natmtot,*)
14integer nd,isym,lspl,lspn
15integer is,ia,ja,ias,jas
18real(8) x1,x2,x3,y1,y2,y3
20real(8),
allocatable :: rvfmt1(:,:,:),rvfmt2(:,:)
27allocate(rvfmt1(ld,
natmmax,nd),rvfmt2(ld,nd))
37 rvfmt1(1:np,ia,i)=rvfmt(1:np,ias,i)
42 if (.not.
tfeqat(ia,is)) cycle
44 rvfmt(1:np,ias,1:nd)=0.d0
61 sc(1:3,1:3)=
symlatc(1:3,1:3,lspl)
67 x1=rvfmt2(i,1); x2=rvfmt2(i,2); x3=rvfmt2(i,3)
68 y1=sc(1,1)*x1+sc(1,2)*x2+sc(1,3)*x3
69 y2=sc(2,1)*x1+sc(2,2)*x2+sc(2,3)*x3
70 y3=sc(3,1)*x1+sc(3,2)*x2+sc(3,3)*x3
71 rvfmt(i,ias,1)=rvfmt(i,ias,1)+y1
72 rvfmt(i,ias,2)=rvfmt(i,ias,2)+y2
73 rvfmt(i,ias,3)=rvfmt(i,ias,3)+y3
78 rvfmt(1:np,ias,1)=rvfmt(1:np,ias,1)+t1*rvfmt2(1:np,1)
84 rvfmt(1:np,ias,i)=t0*rvfmt(1:np,ias,i)
88 if (
eqatoms(ia,ja,is).and.(ia /= ja))
then
94 call rotrfmt(
symlatc(:,:,lspl),nr,nri,rvfmt(:,ias,i),rvfmt(:,jas,i))
103 sc(1:3,1:3)=
symlatc(1:3,1:3,lspl)
109 x1=rvfmt(i,jas,1); x2=rvfmt(i,jas,2); x3=rvfmt(i,jas,3)
110 y1=sc(1,1)*x1+sc(1,2)*x2+sc(1,3)*x3
111 y2=sc(2,1)*x1+sc(2,2)*x2+sc(2,3)*x3
112 y3=sc(3,1)*x1+sc(3,2)*x2+sc(3,3)*x3
113 rvfmt(i,jas,1)=y1; rvfmt(i,jas,2)=y2; rvfmt(i,jas,3)=y3
118 rvfmt(1:np,jas,1)=t1*rvfmt(1:np,jas,1)
125deallocate(rvfmt1,rvfmt2)
logical, dimension(:,:), allocatable tfeqat
integer, dimension(48) isymlat
real(8), dimension(3, 3, 48) symlatc
integer, dimension(maxspecies) natoms
integer, dimension(:,:,:), allocatable ieqatom
integer, dimension(maxatoms, maxspecies) idxas
integer, dimension(maxsymcrys) lspnsymc
integer, dimension(48) symlatd
logical, dimension(:,:,:), allocatable eqatoms
integer, dimension(maxsymcrys) lsplsymc