Commit 4ade8224 authored by Gustav Bihlmayer's avatar Gustav Bihlmayer

Corrected representation of symmetry elements in internal coordinates

for centered lattices in atom_sym.f. If generators were given, atomid()
was wrong - corrected also in atom_sym.f. Some formatting of output
improved in atom_input.f, inpgen.f90, symproperties.f, and set_inp.f90.
Calculation of bbmat fixed in setab.f.
parent 45814d81
......@@ -292,7 +292,7 @@
ENDIF
! ===> local orbitals
IF (lo0 /= ' ') THEN
WRITE (6,'(6a,i3,7a,i3,3a,a80)')
WRITE (6,'(a6,i3,a7,i3,a3,a80)')
& "nlod =",nlod0," llod =",llod," : ",lo0
lo(n) = lo0
IF (nlod0 > atoms%nlod)
......
......@@ -72,7 +72,7 @@
!---->Automatic arrays
INTEGER nneq(natmax),icount(nop48*natmax),imap(natmax)
INTEGER ity(nop48*natmax),index_op(nop48)
REAL tpos(3,nop48*natmax)
REAL tpos(3,nop48*natmax),atomid2(natmax)
REAL tr(3),tt(3),disp(3,natmax)
INTEGER mp(3,3),mtmp(3,3)
......@@ -140,6 +140,14 @@
IF ( mmrot(1,1,1)==0 ) THEN ! &gen was used
!---> save generators
IF (cartesian) THEN ! convert to lattice coords. if necessary
DO ng = 2, ngen+1
mmrot2(:,:,1) = matmul( bs, mmrot(:,:,ng) )
mmrot(:,:,ng) = matmul( mmrot2(:,:,1), as )
ttr2(:,1) = matmul( bs, ttr(:,ng) )
ttr(:,ng) = ttr2(:,1)
ENDDO
ENDIF
mmrot2(:,:,1:ngen) = mmrot(:,:,2:ngen+1)
ttr2(:,1:ngen) = ttr(:,2:ngen+1)
......@@ -334,10 +342,11 @@
natrep(na+nn) = na + 1
natmap(na+nn) = na + nn
pos(:,na+nn) = tpos(:,na+nn)
! atomid(na+nn) = atomid(n) ! gu?
atomid2(na+nn) = atomid(n)
ENDDO
na = na + neq(n)
ENDDO
atomid = atomid2
!---> check, that we have
......
......@@ -80,7 +80,7 @@ PROGRAM inpgen
IF (.not.input%film) vacuum%dvac=a3(3)
WRITE (6,*)
WRITE (6,*) title
WRITE (6,*) 'film=',input%film,'cal_symm=',cal_symm
WRITE (6,*) 'film=',input%film,'cartesian=',cartesian
WRITE (6,*) 'checkinp=',checkinp,'symor=',sym%symor
WRITE (6,*)
WRITE (6,'(a5,3f10.5)') 'a1 = ',a1(:)
......
......@@ -315,16 +315,16 @@
!HF
! rounding
atoms%rmt(:) = real(INT( atoms%rmt(:) * 100 ) / 100.)
atoms%dx(:) = real(INT( atoms%dx(:) * 1000) / 1000.)
stars%gmax = real(INT( stars%gmax * 10 ) / 10.)
input%rkmax = real(INT( input%rkmax * 10 ) / 10.)
xcpot%gmaxxc = real(INT( xcpot%gmaxxc * 10 ) / 10.)
atoms%rmt(:) = real(NINT( atoms%rmt(:) * 100 ) / 100.)
atoms%dx(:) = real(NINT( atoms%dx(:) * 1000) / 1000.)
stars%gmax = real(NINT( stars%gmax * 10 ) / 10.)
input%rkmax = real(NINT( input%rkmax * 10 ) / 10.)
xcpot%gmaxxc = real(NINT( xcpot%gmaxxc * 10 ) / 10.)
gcutm = real(INT( gcutm * 10 ) / 10.)
hybrid%gcutm2 = real(INT( hybrid%gcutm2 * 10 ) / 10.)
hybrid%gcutm2 = real(NINT( hybrid%gcutm2 * 10 ) / 10.)
IF (input%film) THEN
vacuum%dvac = real(INT(vacuum%dvac*100+1)/100.)
dtild = real(INT(dtild*100+1)/100.)
vacuum%dvac = real(NINT(vacuum%dvac*100)/100.)
dtild = real(NINT(dtild*100)/100.)
ENDIF
!
! read some lapw input
......
......@@ -112,7 +112,7 @@
ENDIF
aamat=matmul(transpose(amat),amat)
bbmat=matmul(transpose(bmat),bmat)
bbmat=matmul(bmat,transpose(bmat))
END SUBROUTINE setab
END MODULE m_setab
......@@ -89,9 +89,10 @@
WRITE(6,*)
WRITE(6,*) 'DBG: symor,zorth,oldfleur :', symor,zorth,oldfleur
WRITE(6,*) 'DBG: optype :', optype(1:nops)
WRITE(6,'(x,a13,48i5)') 'DBG: optype :', optype(1:nops)
WRITE(6,*) 'DBG: invsym,invs,zrfs,invs2 :', invsym,invs,zrfs,invs2
WRITE(6,*) 'DBG: (before reorder) invsop,zrfsop,invs2op :',
WRITE(6,'(x,a45,3i5)')
& 'DBG: (before reorder) invsop,zrfsop,invs2op :',
& invsop,zrfsop,invs2op
IF ( (.not.oldfleur) .or. (.not.zorth) ) THEN
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment