Commit 1f653f97 authored by Gregor Michalicek's avatar Gregor Michalicek

Some preparations for noco with XML input

Note: This is not yet functional.
      Also the test Fe_bct_LOXML is not yet complete.
parent 7e8462cb
......@@ -11,6 +11,7 @@ io/eig66_hdf.F90
io/eig66_io.F90
io/eig66_mem.F90
io/eig66_mpi.F90
io/nocoInputCheck.F90
io/inpnoco.F90
io/loddop.f90
io/rw_inp.f90
......
......@@ -5,7 +5,7 @@
!--------------------------------------------------------------------------------
MODULE m_inpnoco
use m_juDFT
!**********************************************************************
! This subroutine reads the Euler angles of the magnetic field
! directions and other noncollinear parameters from the file nocoinp
......@@ -21,6 +21,7 @@
USE m_constants, ONLY : tpi_const
USE m_rwnoco
USE m_types
USE m_nocoInputCheck
IMPLICIT NONE
TYPE(t_atoms),INTENT(INOUT) ::atoms
TYPE(t_input),INTENT(INOUT) ::input
......@@ -31,84 +32,6 @@
! ..
! .. Local Scalars ..
INTEGER itype,iatom
LOGICAL l_relax_any
!---> make sure that the complex program has been compiled
#ifdef CPP_INVERSION
WRITE (6,*) 'Non-collinear calculations can only be done with'
WRITE (6,*) 'the complex program. Please compile without the'
WRITE (6,*) 'option "CPP_INVERSION".'
CALL juDFT_error&
& ("for l_noco = T: recompile without CPP_INVERSION!"&
& ,calledby ="inpnoco")
#endif
!---> make sure Wu-diagonalization is switched off
IF (input%isec1 .LE. input%itmax) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the Wu-diagonalization!!'
WRITE (6,*) 'itmax = ',input%itmax,'isec1 = ',input%isec1
CALL juDFT_error("Wu-diagonalization cannot be used!!!",&
& calledby="inpnoco")
ENDIF
!---> make sure second variation is switched off
IF (input%secvar) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the second variation!!'
CALL juDFT_error("Second variation cannot be used!!!" ,calledby&
& ="inpnoco")
ENDIF
!---> make sure histogram method is used
IF (input%gauss) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the Gaussian smearing for '
WRITE (6,*) 'the Brillouin zone integration!!'
WRITE (6,*) 'Please use the histogram method.'
CALL juDFT_error&
& ("Only histogram Brillouin zone integration can be used!!!"&
& ,calledby ="inpnoco")
ENDIF
!---> make sure force is switched off
IF (input%l_f) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'does not support force calculations.'
CALL juDFT_error("force calculations not supported!!!",calledby&
& ="inpnoco")
ENDIF
!---> make sure nstm equals zero
IF (vacuum%nstm.NE.0) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'does not support STM calculations(nstm .NE. 0).'
CALL juDFT_error("nstm /= 0 not supported!",calledby ="inpnoco"&
& )
ENDIF
!---> make sure starcoeff is switched off
! IF (starcoeff) THEN
! WRITE (6,*) 'This non-collinear version of the flapw program'
! WRITE (6,*) 'does not support starcoefficients output.'
! CALL juDFT_error("starcoefficients output (for STM) cannot be !!!"
! generated
! ENDIF
!---> make sure coretails are switched off
IF (input%ctail) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the coretail option!! '
CALL juDFT_error("Coretail option cannot be used!!!",calledby&
& ="inpnoco")
ENDIF
!---> make sure score is false
IF (input%score) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the score option!! '
CALL juDFT_error("score must be false!!!",calledby ="inpnoco")
ENDIF
OPEN (24,file='nocoinp',form='formatted',status='old')
......@@ -119,38 +42,9 @@
WRITE (6,*)'moment vector phi and theta respectively.'
WRITE (6,*)
CALL rw_noco_read(&
& atoms,jij,noco,input)
CALL rw_noco_read(atoms,jij,noco,input)
!---> make sure that moments are not relaxed and constrained
l_relax_any = .false.
DO itype = 1,atoms%ntype
l_relax_any = l_relax_any.OR.noco%l_relax(itype)
ENDDO
IF (l_relax_any.AND.noco%l_constr) THEN
WRITE (6,*)'The relaxation of the moment is switched on for at'
WRITE (6,*)'least one atom. At the same time the constrained'
WRITE (6,*)'moment option has been switched on!!!'
! CALL juDFT_error("relaxation of moments and constraint are sw
ENDIF
!---> make sure that perp. component of mag. is calculated if needed
IF ( (l_relax_any .or. noco%l_constr) .and. (.not. noco%l_mperp) ) THEN
WRITE (6,*)'The relaxation of the moment is switched on for at'
WRITE (6,*)'least one atom or the constrained moment option is'
WRITE (6,*)'switched on. In either case, you need to set'
WRITE (6,*)'l_mperp=T !!'
CALL juDFT_error&
& ("Stop: Set l_mperp = T to relax or constrain the moments!!"&
&,calledby ="inpnoco")
ENDIF
!---> make sure l_constr is switched off in the case of spin spirals
IF (noco%l_constr .and. noco%l_ss) THEN
WRITE (6,*)'The constraint moment option is not implemeted'
WRITE (6,*)'for spin spirals.'
CALL juDFT_error&
& ("Stop: constraint not implemented for spin spirals!!"&
& ,calledby ="inpnoco")
ENDIF
CALL nocoInputCheck(atoms,input,vacuum,jij,noco)
IF (.not.jij%l_j.and.noco%l_ss) THEN
!
......
!--------------------------------------------------------------------------------
! Copyright (c) 2016 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
! This file is part of FLEUR and available as free software under the conditions
! of the MIT license as expressed in the LICENSE file in more detail.
!--------------------------------------------------------------------------------
MODULE m_nocoInputCheck
CONTAINS
SUBROUTINE nocoInputCheck(atoms,input,vacuum,jij,noco)
USE m_juDFT
USE m_types
IMPLICIT NONE
TYPE(t_atoms), INTENT(IN) :: atoms
TYPE(t_input), INTENT(IN) :: input
TYPE(t_vacuum), INTENT(IN) :: vacuum
TYPE(t_Jij), INTENT(IN) :: Jij
TYPE(t_noco), INTENT(IN) :: noco
INTEGER itype
LOGICAL l_relax_any
!---> make sure that the complex program has been compiled
#ifdef CPP_INVERSION
WRITE (6,*) 'Non-collinear calculations can only be done with'
WRITE (6,*) 'the complex program. Please compile without the'
WRITE (6,*) 'option "CPP_INVERSION".'
CALL juDFT_error("for l_noco = T: recompile without CPP_INVERSION!",calledby ="nocoInputCheck")
#endif
!---> make sure Wu-diagonalization is switched off
IF (input%isec1 .LE. input%itmax) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the Wu-diagonalization!!'
WRITE (6,*) 'itmax = ',input%itmax,'isec1 = ',input%isec1
CALL juDFT_error("Wu-diagonalization cannot be used!!!",calledby="nocoInputCheck")
END IF
!---> make sure second variation is switched off
IF (input%secvar) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the second variation!!'
CALL juDFT_error("Second variation cannot be used!!!" ,calledby="nocoInputCheck")
END IF
!---> make sure histogram method is used
IF (input%gauss) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the Gaussian smearing for '
WRITE (6,*) 'the Brillouin zone integration!!'
WRITE (6,*) 'Please use the histogram method.'
CALL juDFT_error("Only histogram Brillouin zone integration can be used!!!",calledby ="nocoInputCheck")
END IF
!---> make sure force is switched off
IF (input%l_f) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'does not support force calculations.'
CALL juDFT_error("force calculations not supported!!!",calledby="nocoInputCheck")
END IF
!---> make sure nstm equals zero
IF (vacuum%nstm.NE.0) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'does not support STM calculations(nstm .NE. 0).'
CALL juDFT_error("nstm /= 0 not supported!",calledby ="nocoInputCheck")
END IF
!---> make sure starcoeff is switched off
! IF (starcoeff) THEN
! WRITE (6,*) 'This non-collinear version of the flapw program'
! WRITE (6,*) 'does not support starcoefficients output.'
! CALL juDFT_error("starcoefficients output (for STM) cannot be !!!"
! generated
! ENDIF
!---> make sure coretails are switched off
IF (input%ctail) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the coretail option!! '
CALL juDFT_error("Coretail option cannot be used!!!",calledby="nocoInputCheck")
END IF
!---> make sure score is false
IF (input%score) THEN
WRITE (6,*) 'This non-collinear version of the flapw program'
WRITE (6,*) 'cannot be used with the score option!! '
CALL juDFT_error("score must be false!!!",calledby ="nocoInputCheck")
END IF
!---> make sure that moments are not relaxed and constrained
l_relax_any = .FALSE.
DO itype = 1,atoms%ntype
l_relax_any = l_relax_any.OR.noco%l_relax(itype)
END DO
IF (l_relax_any.AND.noco%l_constr) THEN
WRITE (6,*)'The relaxation of the moment is switched on for at'
WRITE (6,*)'least one atom. At the same time the constrained'
WRITE (6,*)'moment option has been switched on!!!'
! CALL juDFT_error("relaxation of moments and constraint are sw
ENDIF
!---> make sure that perp. component of mag. is calculated if needed
IF ( (l_relax_any .or. noco%l_constr) .and. (.not. noco%l_mperp) ) THEN
WRITE (6,*)'The relaxation of the moment is switched on for at'
WRITE (6,*)'least one atom or the constrained moment option is'
WRITE (6,*)'switched on. In either case, you need to set'
WRITE (6,*)'l_mperp=T !!'
CALL juDFT_error("Stop: Set l_mperp = T to relax or constrain the moments!!",calledby ="nocoInputCheck")
ENDIF
!---> make sure l_constr is switched off in the case of spin spirals
IF (noco%l_constr .and. noco%l_ss) THEN
WRITE (6,*)'The constraint moment option is not implemeted'
WRITE (6,*)'for spin spirals.'
CALL juDFT_error("Stop: constraint not implemented for spin spirals!!",calledby ="nocoInputCheck")
ENDIF
END SUBROUTINE nocoInputCheck
END MODULE m_nocoInputCheck
......@@ -56,6 +56,7 @@ SUBROUTINE r_inpXML(&
USE m_writegw
USE m_apwsdim
USE m_sort
USE m_nocoInputCheck
USE m_enpara, ONLY : r_enpara
IMPLICIT NONE
......@@ -1586,6 +1587,19 @@ SUBROUTINE r_inpXML(&
atoms%taual(3,na) = evaluatefirst(valueString) / cell%amat(3,3)
atoms%pos(:,na) = matmul(cell%amat,atoms%taual(:,na))
END DO
!Read in atom group specific noco parameters
xPathB = TRIM(ADJUSTL(xPathA))//'/nocoParams'
numberNodes = xmlGetNumberOfNodes(TRIM(ADJUSTL(xPathB)))
IF (numberNodes.GE.1) THEN
noco%l_relax(iType) = evaluateFirstBoolOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@l_relax'))
Jij%l_magn(iType) = evaluateFirstBoolOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@l_magn'))
Jij%M(iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@M'))
noco%alph(iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@alpha'))
noco%beta(iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@beta'))
noco%b_con(1,iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@b_cons_x'))
noco%b_con(2,iType) = evaluateFirstOnly(xmlGetAttributeValue(TRIM(ADJUSTL(xPathB))//'/@b_cons_y'))
END IF
END DO
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
......@@ -1863,6 +1877,28 @@ SUBROUTINE r_inpXML(&
END DO
END IF
! Check noco stuff and calculate missing noco parameters
IF (noco%l_noco) THEN
CALL nocoInputCheck(atoms,input,vacuum,jij,noco)
IF (.not.jij%l_j.and.noco%l_ss) THEN
!---> the angle beta is relative to the spiral in a spin-spiral
!---> calculation, i.e. if beta = 0 for all atoms in the unit cell
!---> that means that the moments are "in line" with the spin-spiral
!---> (beta = qss * taual). note: this means that only atoms within
!---> a plane perpendicular to qss can be equivalent!
na = 1
DO iType = 1,atoms%ntype
noco%phi = tpi_const*dot_product(noco%qss,atoms%taual(:,na))
noco%alph(iType) = noco%alph(iType) + noco%phi
na = na + atoms%neq(iType)
END DO
END IF
END IF
! Calculate missing kpts parameters
WRITE(*,*) 'Post processing of input: k-points'
......
strho=F,film=F,dos=F,isec1= 99,ndir= 0,secvar=F
Fe fcc 2-atom uc
squ any ,invs=T,zrfs=T,invs2=T,jspins=2,l_noco=t,l_J=F
4.82246838
6.82000000 6.82000000 1.00000000
pbe non-relativi
igrd=1,lwb=F,ndvgrd=6,idsprs=0,chng=-0.100D-11
2
**********************************
Fe 26 5 8 565 2.350000 0.021000
1,force =T,nlo= 1,llo= 1
0.000000 0.000000 0.000000 4.000000
**********************************
Fe 26 5 8 565 2.350000 0.021000
1,force =T,nlo= 1,llo= 1
2.000000 2.000000 2.000000 4.000000
**********************************
10.200000 8.500000
vchk=F,cdinf=F,pot8=F,gw=0,gw_neigd= 0
lpr=0,form66=F,l_f=F,eonly=F,eig66=F,soc66=T
6 6
1 0
Window # 1
-0.80000 1.00000 28.00000
3.40000 =kmax
gauss=F 0.00100tria=F
0.000000 0.000000,l_soc=F,spav=F,off=F
frcor=F,slice=F,ctail=f,disp=F,kcrel=0,u2f=F,f2u=F,bmt=F
itmax= 4,maxiter= 99,imix= 7,alpha= 0.05,spinf= 2.00
swsp=F 2.20 2.20
lflip=F 1 1
vacdos=F,layers= 0,integ=F,star=F,nstars= 0 0.00 0.00 0.00 0.00,nstm=0,tworkf= 0.000000
iplot=F,score=F,plpot=F,band=F
0 0.000000 0.000000,nnne= 0,pallst=F
xa= 2.00000,thetad= 330.00000,epsdisp= 0.00001,epsforce= 0.00001
relax 111 111
emin_dos= -0.50000,emax_dos= 0.50000,sig_dos= 0.01500
nkpt= 5
atom-type 1,l_relax=F
alpha = 0.0000000000,b_cons_x = 0.0000000000
beta = 0.0000000000,b_cons_y = 0.0000000000
atom-type 2,l_relax=F
alpha = 0.0000000000,b_cons_x = 0.0000000000
beta = 3.1415926536,b_cons_y = 0.0000000000
-- logical parameters --
l_ss=F,l_mperp=F,l_constr=F
mix_b= 0.500
qss=( 0.0000000000, 0.0000000000, 0.0000000000)
16 16 T ! nop,nop2,symor
! 1
1 0 0 0.00000
0 1 0 0.00000
0 0 1 0.00000
! 2
-1 0 0 0.00000
0 1 0 0.00000
0 0 1 0.00000
! 3
1 0 0 0.00000
0 -1 0 0.00000
0 0 1 0.00000
! 4
-1 0 0 0.00000
0 -1 0 0.00000
0 0 1 0.00000
! 5
0 -1 0 0.00000
-1 0 0 0.00000
0 0 1 0.00000
! 6
0 -1 0 0.00000
1 0 0 0.00000
0 0 1 0.00000
! 7
0 1 0 0.00000
-1 0 0 0.00000
0 0 1 0.00000
! 8
0 1 0 0.00000
1 0 0 0.00000
0 0 1 0.00000
! 9
1 0 0 0.00000
0 1 0 0.00000
0 0 -1 0.00000
! 10
-1 0 0 0.00000
0 1 0 0.00000
0 0 -1 0.00000
! 11
1 0 0 0.00000
0 -1 0 0.00000
0 0 -1 0.00000
! 12
-1 0 0 0.00000
0 -1 0 0.00000
0 0 -1 0.00000
! 13
0 -1 0 0.00000
-1 0 0 0.00000
0 0 -1 0.00000
! 14
0 -1 0 0.00000
1 0 0 0.00000
0 0 -1 0.00000
! 15
0 1 0 0.00000
-1 0 0 0.00000
0 0 -1 0.00000
! 16
0 1 0 0.00000
1 0 0 0.00000
0 0 -1 0.00000
This diff is collapsed.
This diff is collapsed.
strho=F,film=F,dos=F,isec1= 99,ndir= 0,secvar=F
bcc Fe
any any ,invs=T,zrfs=F,invs2=F,jspins=2,l_noco=F,l_J=F
-2.67728003 2.67728003 2.67728003
2.67728003 -2.67728003 2.67728003
2.67728003 2.67728003 -2.67728003 -2.67728003 1.00000000
pbe non-relativi
igrd=1,lwb=F,ndvgrd=6,idsprs=0,chng=-0.100D-11
1
**********************************
Fe 26 7 8 747 2.260000 0.016000
1,force =T,nlo= 0,llo=
0.000000 0.000000 0.000000 2.000000
**********************************
10.600000 8.800000
vchk=F,cdinf=F,pot8=F,gw=0,numbands= 0
lpr=0,form66=F,l_f=F,eonly=F,eig66=F,soc66=T
6
1 0
ellow, elup, valence electrons:
-0.80000 1.00000 8.00000
3.50000 =kmax
gauss=F 0.00100tria=F
0.000000 0.000000,l_soc=F,spav=F,off=F
frcor=F,slice=F,ctail=T,disp=F,kcrel=0,u2f=F,f2u=F,bmt=F
itmax= 9,maxiter= 99,imix= 7,alpha= 0.05,spinf= 2.00
swsp=F 2.20
lflip=F 1
vacdos=F,layers= 0,integ=F,star=F,nstars= 0 0.00 0.00 0.00 0.00,nstm=0,tworkf= 0.000000
iplot=F,score=F,plpot=F,band=F
0 0.000000 0.000000,nnne= 0,pallst=F
xa= 2.00000,thetad= 330.00000,epsdisp= 0.00001,epsforce= 0.00001
relax 111
emin_dos= -0.50000,emax_dos= 0.50000,sig_dos= 0.01500
nkpt= 59
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fleurInput fleurInputVersion="0.27">
<comment>
Fe fcc 2-atom uc
</comment>
<calculationSetup>
<cutoffs Kmax="3.40000000" Gmax="10.20000000" GmaxXC="8.50000000" numbands="0"/>
<scfLoop itmax="4" maxIterBroyd="99" imix="Anderson" alpha=".05000000" spinf="2.00000000"/>
<coreElectrons ctail="T" frcor="F" kcrel="0"/>
<magnetism jspins="2" l_noco="F" l_J="F" swsp="F" lflip="F"/>
<soc theta=".00000000" phi=".00000000" l_soc="F" spav="F" off="F" soc66="T"/>
<nocoParams l_ss="F" l_mperp="F" l_constr="F" l_disp="F" sso_opt="FFF" mix_b="0.5" thetaJ="0.0" nsh="0">
<qss>0.0 0.0 0.0</qss>
</nocoParams>
<expertModes gw="0" pot8="F" eig66="F" lpr="0" isec1="99" secvar="F"/>
<geometryOptimization l_f="F" xa="2.00000000" thetad="330.00000000" epsdisp=".00001000" epsforce=".00001000"/>
<bzIntegration valenceElectrons="8.00000000" mode="hist" fermiSmearingEnergy=".00100000">
<kPointCount count="5" gamma="F"/>
</bzIntegration>
<energyParameterLimits ellow="-.80000000" elup="1.00000000"/>
</calculationSetup>
<cell>
<symmetryFile filename="sym.out"/>
<bulkLattice scale="1.000000000000" latnam="squ">
<a1>4.82246838</a1>
<c>6.82000000</c>
</bulkLattice>
</cell>
<xcFunctional name="pbe" relativisticCorrections="F"/>
<atomSpecies>
<species name="Fe-1" element="Fe" atomicNumber="26" coreStates="5" magMom="2.20000000" flipSpin="T">
<mtSphere radius="2.35000000" gridPoints="565" logIncrement=".02100000"/>
<atomicCutoffs lmax="8" lnonsphr="6"/>
<energyParameters s="4" p="4" d="3" f="4"/>
<lo type="SCLO" l="1" n="3" eDeriv="0"/>
</species>
</atomSpecies>
<atomGroups>
<atomGroup species="Fe-1">
<relPos>0.0 0.0 0.0</relPos>
<force calculate="T" relaxXYZ="TTT"/>
<nocoParams l_relax="F" l_magn="F" M="0.0" alpha="0.0" beta="0.0" b_cons_x="0.0" b_cons_y="0.0"/>
</atomGroup>
<atomGroup species="Fe-1">
<relPos>0.5 0.5 0.5</relPos>
<force calculate="T" relaxXYZ="TTT"/>
<nocoParams l_relax="F" l_magn="F" M="0.0" alpha="0.0" beta="3.1415926536" b_cons_x="0.0" b_cons_y="0.0"/>
</atomGroup>
</atomGroups>
<output dos="F" band="F" vacdos="F" slice="F">
<checks vchk="F" cdinf="F" disp="F"/>
<densityOfStates ndir="0" minEnergy="-.50000000" maxEnergy=".50000000" sigma=".01500000"/>
<vacuumDOS layers="0" integ="F" star="F" nstars="0" locx1=".00000000" locy1=".00000000" locx2=".00000000" locy2=".00000000" nstm="0" tworkf=".00000000"/>
<plotting iplot="F" score="F" plplot="F"/>
<chargeDensitySlicing numkpt="0" minEigenval=".00000000" maxEigenval=".00000000" nnne="0" pallst="F"/>
<specialOutput form66="F" eonly="F" bmt="F"/>
</output>
</fleurInput>
bcc Fe
&input film=f /
&lattice latsys=cI a0=1.8897269 a=2.83351 /
1
26 0.0 0.0 0.0
This diff is collapsed.
CRYSTAL
PRIMVEC
-1.4167556 1.4167556 1.4167556
1.4167556 -1.4167556 1.4167556
1.4167556 1.4167556 -1.4167556
PRIMCOORD
1 1
26 .0000000 .0000000 .0000000
48 48 T ! nop,nop2,symor
! 1
1 0 0 0.00000
0 1 0 0.00000
0 0 1 0.00000
! 2
-1 0 0 0.00000
-1 1 0 0.00000
-1 0 1 0.00000
! 3
1 -1 0 0.00000
0 -1 0 0.00000
0 -1 1 0.00000
! 4
0 -1 0 0.00000
1 -1 0 0.00000
0 -1 1 0.00000
! 5
-1 1 0 0.00000
-1 0 0 0.00000
-1 0 1 0.00000
! 6
0 1 0 0.00000
1 0 0 0.00000
0 0 1 0.00000
! 7
1 0 -1 0.00000
0 1 -1 0.00000
0 0 -1 0.00000
! 8
0 0 -1 0.00000
0 1 -1 0.00000
1 0 -1 0.00000
! 9
0 1 -1 0.00000
1 0 -1 0.00000
0 0 -1 0.00000
! 10
0 1 -1 0.00000
0 0 -1 0.00000
1 0 -1 0.00000
! 11
1 0 -1 0.00000
0 0 -1 0.00000
0 1 -1 0.00000
! 12
0 0 -1 0.00000
1 0 -1 0.00000
0 1 -1 0.00000
! 13
-1 0 0 0.00000
0 -1 0 0.00000
0 0 -1 0.00000
! 14
1 0 0 0.00000
1 -1 0 0.00000
1 0 -1 0.00000
! 15
0 -1 0 0.00000
-1 0 0 0.00000
0 0 -1 0.00000
! 16
1 -1 0 0.00000
1 0 0 0.00000
1 0 -1 0.00000
! 17
0 1 0 0.00000
-1 1 0 0.00000
0 1 -1 0.00000
! 18
-1 1 0 0.00000
0 1 0 0.00000
0 1 -1 0.00000
! 19
-1 0 0 0.00000
0 0 -1 0.00000
0 -1 0 0.00000
! 20
1 0 0 0.00000
1 0 -1 0.00000
1 -1 0 0.00000
! 21
0 -1 0 0.00000
0 0 -1 0.00000
-1 0 0 0.00000
! 22
1 -1 0 0.00000
1 0 -1 0.00000
1 0 0 0.00000
! 23
0 1 0 0.00000
0 1 -1 0.00000
-1 1 0 0.00000
! 24
-1 1 0 0.00000
0 1 -1 0.00000
0 1 0 0.00000
! 25
0 0 -1 0.00000
-1 0 0 0.00000
0 -1 0 0.00000
! 26
1 0 -1 0.00000
1 0 0 0.00000
1 -1 0 0.00000
! 27
0 0 -1 0.00000
0 -1 0 0.00000
-1 0 0 0.00000
! 28
1 0 -1 0.00000
1 -1 0 0.00000
1 0 0 0.00000
! 29
0 1 -1 0.00000
0 1 0 0.00000
-1 1 0 0.00000
! 30
0 1 -1 0.00000
-1 1 0 0.00000
0 1 0 0.00000
! 31
-1 0 1 0.00000
-1 1 0 0.00000
-1 0 0 0.00000
! 32
0 0 1 0.00000
0 1 0 0.00000
1 0 0 0.00000
! 33
0 -1 1 0.00000
1 -1 0 0.00000
0 -1 0 0.00000
! 34
0 -1 1 0.00000
0 -1 0 0.00000
1 -1 0 0.00000
! 35