38 integer lspl(48),lspn(48),ilspl
39 real(8) v0(3),v1(3),v2(3),t1
40 real(8) apl1(3,maxatoms,maxspecies)
41 real(8) apl2(3,maxatoms,maxspecies)
43 integer iea(natmmax,nspecies,48)
44 real(8) vtl(3,natmmax**2+1)
49 allocate(
eqatoms(natmmax,natmmax,nspecies))
51 allocate(
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 writetest(id, descr, nv, iv, iva, tol, rv, rva, zv, zva)
integer, dimension(maxsymcrys) lspnsymc
logical, dimension(:,:), allocatable tfeqat
integer, dimension(48) isymlat
integer, dimension(3, 3, 48) symlat
real(8), dimension(3, maxsymcrys) vtlsymc
logical, dimension(:,:,:), allocatable eqatoms
integer, parameter maxsymcrys
integer, dimension(:,:,:), allocatable ieqatom
logical, dimension(maxsymcrys) tv0symc
real(8), dimension(3, maxatoms, maxspecies) atposl
integer, dimension(maxsymcrys) lsplsymc
real(8), dimension(3, 3) avec
pure subroutine r3frac(eps, v)
integer, dimension(maxspecies) natoms
subroutine findsym(apl1, apl2, nsym, lspl, lspn, iea)
pure subroutine r3mv(a, x, y)
real(8), dimension(3, maxatoms, maxspecies) atposc
real(8), dimension(3) efieldc
real(8), dimension(3, maxsymcrys) vtcsymc