38integer lspl(48),lspn(48),ilspl
39real(8) v0(3),v1(3),v2(3),t1
40real(8) apl1(3,maxatoms,maxspecies)
41real(8) apl2(3,maxatoms,maxspecies)
43integer iea(natmmax,nspecies,48)
44real(8) vtl(3,natmmax**2+1)
49allocate(
eqatoms(natmmax,natmmax,nspecies))
51allocate(
tfeqat(natmmax,nspecies))
64 apl1(:,ia,is)=
atposl(:,ia,is)-v0(:)
78 v1(:)=apl1(:,ia,is0)-apl1(:,ja,is0)
85 if (abs(t1) >
epslat)
goto 10
88 t1=abs(vtl(1,i)-v1(1))+abs(vtl(2,i)-v1(2))+abs(vtl(3,i)-v1(3))
105 apl2(:,ia,is)=apl1(:,ia,is)+vtl(:,i)
109 call findsym(apl1,apl2,nsym,lspl,lspn,iea)
114 write(*,
'("Error(findsymcrys): too many crystal symmetries")')
115 write(*,
'(" Adjust maxsymcrys in modmain and recompile code")')
155 ja=findloc(
eqatoms(1:ia,ia,is),.true.,1)
172 atposl(:,ia,is)=apl1(:,ia,is)+v1(:)
188 v2(:)=
symlat(:,1,ilspl)*v1(1) &
189 +
symlat(:,2,ilspl)*v1(2) &
204 v1(:)=
atposl(:,1,is0)-v0(:)
206 t1=abs(v1(1))+abs(v1(2))+abs(v1(3))
209 write(*,
'("Info(findsymcrys): atomic basis shift (lattice) :")')
210 write(*,
'(3G18.10)') v1(:)
211 write(*,
'("See GEOMETRY.OUT for new atomic positions")')
subroutine findsym(apl1, apl2, nsym, lspl, lspn, iea)
logical, dimension(:,:), allocatable tfeqat
integer, dimension(48) isymlat
real(8), dimension(3) efieldc
real(8), dimension(3, maxatoms, maxspecies) atposc
integer, dimension(maxspecies) natoms
integer, dimension(:,:,:), allocatable ieqatom
real(8), dimension(3, 3) avec
real(8), dimension(3, maxsymcrys) vtlsymc
integer, dimension(maxsymcrys) lspnsymc
logical, dimension(maxsymcrys) tv0symc
real(8), dimension(3, maxsymcrys) vtcsymc
logical, dimension(:,:,:), allocatable eqatoms
integer, dimension(3, 3, 48) symlat
integer, parameter maxsymcrys
real(8), dimension(3, maxatoms, maxspecies) atposl
integer, dimension(maxsymcrys) lsplsymc
subroutine writetest(id, descr, nv, iv, iva, tol, rv, rva, zv, zva)
pure subroutine r3frac(eps, v)
pure subroutine r3mv(a, x, y)