I can confirm the problem. It will happen to all structures with
non-primitive translations in the symmetry operations which cannot be
written as 1/n.
Seems to be a logical but in SRC_pairhess/struct2cif.f.
In subroutine tau2xyz.f it was assumed that non-primitive translations
of a symmetry operation are 1/2, 1/3, 1/4,...
but 3/4 was not supported.
copy the attached tau2xyz.f into SRC_pairhess and recompile.
On 10/28/2013 06:27 PM, Stefaan Cottenier wrote:
Dear wien2k community,
There might be a small bug in struct2cif, as it crashes on this test:
cp $WIENROOT/example_struct_files/silicon.struct test.struct
x sgroup
cp test.struct_sgroup test.struct
x struct2cif
Error, displacment 0.750 not understood
Error with symmetry
This happens whenever struct2cif is applied to a diamond lattice.
Stefaan
___
Wien mailing list
Wien@zeus.theochem.tuwien.ac.at
http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
SEARCH the MAILING-LIST at:
http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/index.html
--
P.Blaha
--
Peter BLAHA, Inst.f. Materials Chemistry, TU Vienna, A-1060 Vienna
Phone: +43-1-58801-165300 FAX: +43-1-58801-165982
Email: bl...@theochem.tuwien.ac.atWWW:
http://info.tuwien.ac.at/theochem/
--
subroutine tau2xyz
use struct
use symetr
!
! Purpose, write a cif symmetry tag by decoding the iz tau matrices
! This is overkill since iz is integer, if it is not one can uncomment lines below
!
! L. D. Marks, June 2009
!
implicit real*8 (a-h,o-z)
character*20 tag
character*1 VarS(3)
data VarS/'x','y','z'/
save Vars
write(31,200)
!
! Loop over operations
DO J=1,IORD
itag=1
! Loop over first three indices
DO K1=1,3
DO K=1,3
TMP=iz(K,K1,J)
!
if( abs(TMP).gt.1D-5)then
! Code in +/- of variable
if(tmp .gt. 1D-5)then
write(tag(itag:itag+1),100)VarS(K)
itag=itag+2
else if (abs(TMP+1) .lt. 1D-5)then
write(tag(itag:itag+1),101)VarS(K)
itag=itag+2
endif
!
!
! Search for divisors -- use if iz is not an integer
!Tmp=abs(Tmp)
!if( TMP .lt.0.99D0 )then
! DO KK=2,9
! if(abs(TMP*KK-1).lt.1D-5)then
! write(tag(itag:itag+1),102)KK
! itag=itag+2
! goto 10
! endif
! ENDDO
! If we get here, there was a divisor but it was not found !
! We could use NINT(1.D0/TMP), but the symmetry in Wien2k might be bad
! write(*,*)'Error, symmetry element ',iz(K,K1,J),' not understood'
! STOP 'Error with symmetry matrix'
!10CONTINUE
! endif
ENDIF
ENDDO
!
! Do the same think for shifts
TMP=tau(K1,J)
if(abs(TMP).gt.1D-5)then
!
! Search
Tmp=abs(Tmp)
DO KK=2,9
do jj=1,8
if(abs(TMP*KK-jj).lt.1D-5)then
if(tau(k1,j) .gt. 1D-5)then
write(tag(itag:itag+1),110) jj
itag=itag+2
else if (abs(tau(k1,j)+1) .lt. 1D-5)then
write(tag(itag:itag+1),111) jj
itag=itag+2
endif
write(tag(itag:itag+1),102)KK
itag=itag+2
goto 20
endif
! if(abs(TMP*KK-3).lt.1D-5)then
! write(tag(itag:itag+1),102)KK
! itag=itag+2
! goto 20
! endif
enddo
ENDDO
!If we get here, there was a divisor but it was not found !
!We could use NINT(1.D0/TMP), but the symmetry in Wien2k might be bad
write(*,*)'Error, displacment ',tau(K1,J),' not understood'
STOP 'Error with symmetry'
20 continue
ENDIF
if(k1.lt.3)then
tag(itag:itag+1)=','