Commit 7003cb02 authored by Daniel Wortmann's avatar Daniel Wortmann

Some fixes in IO, first test adjusted

parent 7f10ed8c
......@@ -11,7 +11,7 @@ MODULE m_types_banddos
PRIVATE
PUBLIC:: t_banddos
TYPE,EXTENDS(t_fleurinput_base):: t_banddos
LOGICAL :: dos =.FALSE.
LOGICAL :: dos =.FALSE.
LOGICAL :: band =.FALSE.
LOGICAL :: l_mcd =.FALSE.
LOGICAL :: l_orb =.FALSE.
......@@ -24,9 +24,9 @@ MODULE m_types_banddos
REAL :: e_mcd_lo =-10.0
REAL :: e_mcd_up= 0.0
LOGICAL :: unfoldband =.FALSE.
INTEGER :: s_cell_x
INTEGER :: s_cell_y
INTEGER :: s_cell_z
INTEGER :: s_cell_x=1
INTEGER :: s_cell_y=1
INTEGER :: s_cell_z=1
REAL :: alpha,beta,gamma !For orbital decomp. (was orbcomprot)
CONTAINS
PROCEDURE :: read_xml=>read_xml_banddos
......@@ -69,19 +69,19 @@ CONTAINS
USE m_types_xml
CLASS(t_banddos),INTENT(INOUT)::this
TYPE(t_xml),INTENT(IN)::xml
INTEGER::numberNodes
this%band = evaluateFirstBoolOnly(xml%GetAttributeValue('/fleurInput/output/@band'))
this%band = evaluateFirstBoolOnly(xml%GetAttributeValue('/fleurInput/output/@band'))
this%dos = evaluateFirstBoolOnly(xml%GetAttributeValue('/fleurInput/output/@dos'))
this%vacdos = evaluateFirstBoolOnly(xml%GetAttributeValue('/fleurInput/output/@vacdos'))
this%l_mcd = evaluateFirstBoolOnly(xml%GetAttributeValue('/fleurInput/output/@mcd'))
numberNodes = xml%GetNumberOfNodes('/fleurInput/output/densityOfStates')
IF ((this%dos).AND.(numberNodes.EQ.0)) THEN
CALL juDFT_error("dos is true but densityOfStates parameters are not set!")
END IF
IF (numberNodes.EQ.1) THEN
this%ndir = evaluateFirstIntOnly(xml%GetAttributeValue('/fleurInput/output/densityOfStates/@ndir'))
this%e2_dos = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/output/densityOfStates/@minEnergy'))
......@@ -93,29 +93,28 @@ CONTAINS
this%ndir = -4
WRITE(*,*) 'band="T" --> Overriding "dos" and "ndir"!'
ENDIF
! Read in optional magnetic circular dichroism parameters
numberNodes = xml%GetNumberOfNodes('/fleurInput/output/magneticCircularDichroism')
IF ((this%l_mcd).AND.(numberNodes.EQ.0)) THEN
CALL juDFT_error("mcd is true but magneticCircularDichroism parameters are not set!", calledby = "r_inpXML")
END IF
IF (numberNodes.EQ.1) THEN
this%e_mcd_lo = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/output/magneticCircularDichroism/@energyLo'))
this%e_mcd_up = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/output/magneticCircularDichroism/@energyUp'))
END IF
! Read in optional parameter for unfolding bandstructure of supercell
numberNodes = xml%GetNumberOfNodes('/fleurInput/output/unfoldingBand')
IF (numberNodes.EQ.1) THEN
this%unfoldband = evaluateFirstBoolOnly(xml%GetAttributeValue('/fleurInput/output/unfoldingBand/@unfoldband'))
this%unfoldband = evaluateFirstBoolOnly(xml%GetAttributeValue('/fleurInput/output/unfoldingBand/@unfoldBand'))
this%s_cell_x = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/output/unfoldingBand/@supercellX'))
this%s_cell_y = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/output/unfoldingBand/@supercellY'))
this%s_cell_z = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/output/unfoldingBand/@supercellZ'))
END IF
END SUBROUTINE read_xml_banddos
END MODULE m_types_banddos
END MODULE m_types_banddos
......@@ -24,8 +24,8 @@ MODULE m_types_input
LOGICAL :: l_f =.FALSE.
LOGICAL :: eonly =.FALSE.
LOGICAL :: ctail =.TRUE.
INTEGER :: coretail_lmax =0
INTEGER :: itmax =9
INTEGER :: coretail_lmax =0
INTEGER :: itmax =9
REAL :: minDistance=1.0e-5
INTEGER :: maxiter=99
INTEGER :: imix=7
......@@ -36,7 +36,7 @@ MODULE m_types_input
REAL :: epsdisp =0.00001!< minimal displacement. If all displacements are < epsdisp stop
REAL :: epsforce =0.00001!< minimal force. If all forces <epsforce stop
REAL :: force_converged=0.00001
INTEGER :: forcemix=3
INTEGER :: forcemix=2
REAL :: delgau =0.001 !TODO = tkb?
REAL :: alpha=0.05
REAL :: preconditioning_param=0.0
......@@ -77,7 +77,7 @@ MODULE m_types_input
PROCEDURE :: init
PROCEDURE ::mpi_bc =>mpi_bc_input
END TYPE t_input
CONTAINS
subroutine mpi_bc_input(this,mpi_comm,irank)
use m_mpi_bc_tool
......@@ -207,7 +207,7 @@ CONTAINS
END SELECT
this%alpha = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/calculationSetup/scfLoop/@alpha'))
this%preconditioning_param = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/calculationSetup/scfLoop/@preconditioning_param'))
this%preconditioning_param = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/calculationSetup/scfLoop/@precondParam'))
this%spinf = evaluateFirstOnly(xml%GetAttributeValue('/fleurInput/calculationSetup/scfLoop/@spinf'))
! Get parameters for core electrons
this%ctail = evaluateFirstBoolOnly(xml%GetAttributeValue('/fleurInput/calculationSetup/coreElectrons/@ctail'))
......@@ -273,9 +273,19 @@ CONTAINS
this%forcealpha = evaluateFirstOnly(xml%GetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@forcealpha'))
this%epsdisp = evaluateFirstOnly(xml%GetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@epsdisp'))
this%epsforce = evaluateFirstOnly(xml%GetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@epsforce'))
this%forcemix = evaluateFirstOnly(xml%GetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@forcemix'))
this%force_converged = evaluateFirstOnly(xml%GetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@force_converged'))
this%qfix = evaluateFirstOnly(xml%GetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@qfix'))
valueString=xml%GetAttributeValue(TRIM(ADJUSTL(xPathA))//'/@forcemix')
select case(trim(valuestring))
case ("straight")
this%forcemix = 0
case ("CG")
this%forcemix = 1
case ("BFGS")
this%forcemix = 2
case default
call juDFT_error("Illegal mixing scheme for force in inp.xml:"//trim(valuestring))
end select
END IF
! Read in optional general LDA+U parameters
xPathA = '/fleurInput/calculationSetup/ldaU'
......@@ -354,4 +364,3 @@ CONTAINS
class(t_input),intent(in)::input
end subroutine init
END MODULE m_types_input
......@@ -16,9 +16,9 @@ CONTAINS
PRINT *," Welcome to FLEUR - inpgen (www.flapw.de) "
PRINT *," MaX-Release 3.0 (www.max-centre.eu)"
CALL new_argument(0,"-genEnpara","Generate an 'enpara' file for the energy parameters","")
CALL new_argument(0,"-explicit","Write out k-point list, symmetry operations, and optional input to inp.xml","")
CALL new_argument(0,"-genEnpara","Generate an 'enpara' file for the energy parameters","")
CALL new_argument(0,"-explicit","Write out k-point list, symmetry operations, and optional input to inp.xml","")
CALL new_argument(0,"-kpts_gw","add alternative k point set for GW in all outputs for the XML input file","")
CALL new_argument(0,"-noco","write out noco parameters into inp.xml","")
CALL new_argument(0,"-electronConfig","explicitely write the electron configuration into inp.xml","")
......@@ -28,12 +28,13 @@ CONTAINS
CALL new_argument(1,"-f","filename to process","")
CALL new_argument(0,"-warn_only","do not stop for warnings","")
CALL new_argument(1,"-inc","which data to include in inp.xml, e.g. +all,-species,+operations,-kpts","")
CALL new_argument(1,"-k","String to define k-point set","")
call new_argument(0,"-no_send","Do not send usage data","")
CALL new_argument(0,"-overwrite","Overwrite inp.xml if present","")
CALL new_argument(0,"-h","Print this help message","")
CALL new_argument(0,"-trace","Try to generate a traceback in case of an error","")
IF (.NOT.check_arguments()) CALL judft_warn("Invalid command line arguments",hint="Use -h option to see valid choices")
IF (.NOT. juDFT_was_argument("-h")) RETURN
......@@ -50,8 +51,12 @@ CONTAINS
CALL print_argument("-noco")
CALL print_argument("-electronConfig")
CALL print_argument("-fast_defaults")
CALL print_argument("-kpts_gw")
CALL print_argument("-h")
CALL print_argument("-inp.xml")
CALL print_argument("-inp")
CALL print_argument("-k")
CALL print_argument("-inc")
CALL print_argument("-overwrite")
WRITE(*,'(a)')""
WRITE(*,'(a)')"Please check the documentation on www.flapw.de for more details"
......
......@@ -24,7 +24,9 @@ CONTAINS
REAL :: den
INTEGER:: nk,grid(3)
character(len=20)::name=""
!defaults
l_soc_or_ss=l_socorss
tria=.false.;l_gamma=.false.
IF (judft_was_argument("-k")) THEN
IF (LEN_TRIM(str)>1) CALL judft_error("Do not specify k-points in file and on command line")
......@@ -71,7 +73,7 @@ CONTAINS
ELSE
CALL judft_error(("Could not process -k argument:"//str))
ENDIF
if (len_trim(name)>0) kpts%name=name
END SUBROUTINE make_kpoints
......@@ -99,11 +101,11 @@ CONTAINS
SUBROUTINE init_by_kptsfile(kpts,film)
CLASS(t_kpts),INTENT(out):: kpts
LOGICAL,INTENT(in) :: film
LOGICAL :: l_exist
REAL :: scale,wscale
INTEGER :: n,ios
INQUIRE(file='kpts',exist=l_exist)
IF (.NOT.l_exist) CALL judft_error("Could not read 'kpts' file")
OPEN(99,file='kpts')
......@@ -123,7 +125,7 @@ CONTAINS
IF (wscale>0.0) kpts%wtkpt=kpts%wtkpt/wscale
END SUBROUTINE init_by_kptsfile
SUBROUTINE init_special(kpts,cell,film)
USE m_types_cell
......@@ -159,7 +161,7 @@ CONTAINS
kpts%bk(:,kpts%nkpt)=kpts%specialPoints(:,i)
kpts%specialPointIndices(i)=kpts%nkpt
kpts%nkpt=kpts%nkpt+1
d=(kpts%specialPoints(:,i+1)-kpts%specialPoints(:,i))/(nk(i)+2)
d=(kpts%specialPoints(:,i+1)-kpts%specialPoints(:,i))/(nk(i)+2)
DO ii=1,nk(i)
kpts%bk(:,kpts%nkpt)=kpts%specialPoints(:,i)+d*ii
kpts%nkpt=kpts%nkpt+1
......@@ -288,7 +290,7 @@ CONTAINS
! 1 with boundary points (not for BZ integration!!!)
INTEGER ikzero ! 0 no shift of k-points;
! 1 shift of k-points for better use of sym in irrBZ
REAL kzero(3) ! shifting vector to bring one k-point to or
REAL kzero(3) ! shifting vector to bring one k-point to or
! away from (0,0,0) (for even/odd nkpt3)
INTEGER i,j,k,l,mkpt,addSym,nsym
......@@ -308,7 +310,7 @@ CONTAINS
ELSE
!------------------------------------------------------------
!
! idsyst idtype
! idsyst idtype
!
! 1 cubic primitive
! 2 tetragonal body centered
......@@ -316,7 +318,7 @@ CONTAINS
! 4 hexagonal A-face centered
! 5 trigonal B-face centered
! 6 monoclinic C-face centered
! 7 triclinic
! 7 triclinic
!
! ---> for 2 dimensions only the following Bravais lattices exist:
!
......@@ -330,9 +332,9 @@ CONTAINS
!------------------------------------------------------------
CALL bravais(cell%amat,idsyst,idtype)
CALL bravais(cell%amat,idsyst,idtype)
nsym = MERGE(sym%nop2,sym%nop,film)
nsym = MERGE(sym%nop2,sym%nop,film)
nbound = MERGE(1,0,film.AND.tria)
random = tria.AND..NOT.film
idimens = MERGE(2,3,film)
......@@ -440,7 +442,7 @@ CONTAINS
REAL, PARAMETER :: f13 = 1./3., f23 = 2./3.
INTEGER:: idsyst,idtype
CALL bravais(cell%amat,idsyst,idtype)
CALL bravais(cell%amat,idsyst,idtype)
IF (.NOT.film) THEN
IF ( (idsyst == 1).AND.(idtype == 3) ) THEN ! fcc
......@@ -506,7 +508,7 @@ CONTAINS
CALL kpts%add_special_line((/zro,zro, zro/) ,"g") ! via Sigma)
CALL kpts%add_special_line((/-f12,f12,f12/) ,"Z") ! via Y)
CALL kpts%add_special_line((/zro,zro, f12/) ,"X") ! via Delta)
CALL kpts%add_special_line((/zro,zro, zro/) ,"g")
CALL kpts%add_special_line((/zro,zro, zro/) ,"g")
CALL kpts%add_special_line((/zro,f12, zro/) ,"N") ! via Q)
CALL kpts%add_special_line((/f14,f14, f14/) ,"P") ! via W)
CALL kpts%add_special_line((/zro,zro, f12/) ,"X")
......@@ -614,17 +616,17 @@ CONTAINS
INTEGER :: ic,iop,ikpt,ikpt1
LOGICAL :: l_found
! - local arrays -
! - local arrays -
INTEGER,ALLOCATABLE :: iarr(:)
REAL :: rrot(3,3,2*sym%nop),rotkpt(3)
REAL,ALLOCATABLE :: rarr1(:,:)
INTEGER:: nsym,ID_mat(3,3)
nsym=sym%nop
IF (.NOT.sym%invs) nsym=2*sym%nop
ALLOCATE (kpts%bkf(3,nsym*kpts%nkpt))
ALLOCATE (kpts%bkp(nsym*kpts%nkpt))
ALLOCATE (kpts%bksym(nsym*kpts%nkpt))
......@@ -689,6 +691,6 @@ CONTAINS
END SUBROUTINE gen_bz
END MODULE m_make_kpoints
......@@ -34,7 +34,7 @@ CONTAINS
USE m_inped
USE m_setup
USE m_constants
IMPLICIT NONE
! Types, these variables contain a lot of data!
TYPE(t_input) ,INTENT(INOUT):: input
......@@ -54,7 +54,7 @@ CONTAINS
TYPE(t_hybrid) ,INTENT(OUT) :: hybrid
TYPE(t_oneD) ,INTENT(OUT) :: oneD
INTEGER,INTENT(OUT)::grid(3)
! .. Local Scalars ..
INTEGER :: i,n,l,m1,m2,isym,iisym,pc,iAtom,iType
......@@ -133,10 +133,10 @@ CONTAINS
CALL inped(atoms,vacuum,input,banddos,xcpot,sym,&
cell,sliceplot,noco,&
stars,oneD,hybrid,kpts,a1,a2,a3,namex,relcor,latnam,grid)
stars,oneD,hybrid,kpts,a1,a2,a3,namex,relcor,latnam,namgrp,grid)
!
IF (xcpot%needs_grad()) THEN
ALLOCATE (stars%ft2_gfx(0:stars%kimax2),stars%ft2_gfy(0:stars%kimax2))
......@@ -155,17 +155,17 @@ CONTAINS
l_krla = xcpot%data%krla.EQ.1
!Call xcpot%init(namex,l_krla,atoms%ntype)
CALL setup(atoms,kpts,&
sym,oneD,input,cell,&
enpara,latnam,namgrp)
banddos%l_orb = .FALSE.
banddos%orbCompAtom = 0
ALLOCATE(noco%socscale(atoms%ntype))
xcpot%lda_atom(:) = .FALSE.
noco%socscale(:) = 1.0
END SUBROUTINE fleur_init_old
END MODULE m_fleur_init_old
......@@ -28,7 +28,7 @@
CONTAINS
SUBROUTINE inped(atoms,vacuum,input,banddos,xcpot,sym,&
cell,sliceplot,noco,&
stars,oneD,hybrid,kpts,a1,a2,a3,namex,relcor,latnam,grid)
stars,oneD,hybrid,kpts,a1,a2,a3,namex,relcor,latnam,namgrp,grid)
USE m_rwinp
!USE m_chkmt
USE m_inpnoco
......@@ -66,9 +66,9 @@
REAL, INTENT(OUT) :: a1(3)
REAL, INTENT(OUT) :: a2(3)
REAL, INTENT(OUT) :: a3(3)
CHARACTER(len=4), INTENT(OUT) :: namex
CHARACTER(len=4), INTENT(OUT) :: namex
CHARACTER(len=12), INTENT(OUT) :: relcor
CHARACTER(len=4),INTENT(OUT) ::latnam
CHARACTER(len=4),INTENT(OUT) ::latnam,namgrp
INTEGER,INTENT(OUT):: grid(3)
! .. Local Scalars ..
REAL dr,dtild,r,kmax1,dvac1,zp
......@@ -82,12 +82,11 @@
CHARACTER(8) llr(0:1)
INTEGER jri1(atoms%ntype),lmax1(atoms%ntype)
REAL rmt1(atoms%ntype),dx1(atoms%ntype)
character(len=5)::namgrp
real ::scalecell
! ..
! .. Data statements ..
DATA llr(0)/'absolute'/,llr(1)/'floating'/
!
a1(:) = 0
......@@ -263,7 +262,7 @@
!!$ xcpot%krla = 0
!!$ IF (relcor.EQ.'relativistic') THEN
!!$ xcpot%krla = 1
!!$
!!$
!!$ ENDIF
!!$ IF (xcpot%icorr.EQ.0) WRITE(6,*) 'WARNING: using X-alpha for XC!'
......@@ -275,7 +274,7 @@
!-guta
! specification of atoms
cell%volint = cell%vol
DO n = 1,atoms%ntype
......@@ -419,7 +418,7 @@
8240 FORMAT (/,10x,'number of valence electrons=',f10.5,/,10x, 'temperature broadening =',f10.5)
WRITE (6,FMT=*) 'itmax=',input%itmax,' broy_sv=',input%maxiter,' imix=',input%imix
WRITE (6,FMT=*) 'alpha=',input%alpha,' spinf=',input%spinf
IF ((.NOT.sym%invs).AND.input%secvar) THEN
WRITE(6,*)'The second variation is not implemented in the'
WRITE(6,*)'complex version of the program.'
......
......@@ -42,12 +42,13 @@
!mod: INTEGER spg2(3,25) ! generators for 2d space groups
!mod: INTEGER gnt2(3,25) ! translations for 2d space groups
!mod: INTEGER gen2(2,2,9) ! rotation matrices for the generators
!mod: INTEGER gen2(2,2,9) ! rotation matrices for the generators
!mod: REAL tau2(2,3) ! translations for the generators
!mod: CHARACTER(len=4) :: namgr2(25) ! names of 2d space groups
!
! Determine number of 2d space group
!
n2spg=0
DO i = 1, 20
IF (namgrp.EQ.nammap(i)) n2spg = i
ENDDO
......@@ -55,8 +56,11 @@
+ AND.(n2spg.LT.18)) THEN
n2spg = n2spg + 8
ENDIF
IF (n2spg == 0) CALL juDFT_error("2D-symmetry group not found!"
IF (n2spg == 0) THEN
print *,latnam,namgrp
CALL juDFT_error("2D-symmetry group not found!"
+ ,calledby ="spg2set")
ENDIF
!
! Determine number of generators ngen
!
......@@ -77,7 +81,7 @@
tau(:,igen) = 0.0
IF (gnt2(igen-1,n2spg).NE.0) THEN
symor = .false.
tau(1:2,igen) = tau2(1:2,gnt2(igen-1,n2spg))
tau(1:2,igen) = tau2(1:2,gnt2(igen-1,n2spg))
ENDIF
ENDDO
!
......@@ -105,7 +109,7 @@
WRITE(6,'(a7,i4,a7,i4)') 'ngen = ',ngen,' nop = ',nop
CALL juDFT_error("ngen > nop",calledby="spg2set")
ENDIF
CALL matmul4(mrot(1,1,n1),tau(1,n1),
> mrot(1,1,n2),tau(1,n2),
< mrot(1,1,ngen),tau(1,ngen))
......@@ -120,7 +124,7 @@
l_new = .true.
IF (invs) THEN
ngen = ngen + 1
mrot(:,:,ngen) = - mrot(:,:,1) ! I
mrot(:,:,ngen) = - mrot(:,:,1) ! I
tau(:,ngen) = 0.0
IF (spg2(1,n2spg).EQ.2) l_new = .false. ! if c_2 & I are generators
ENDIF ! m_z is no new generator
......@@ -146,11 +150,11 @@
!
! Determine the kind of symmetry operation we have here
!
d = mrot(1,1,n)*mrot(2,2,n)*mrot(3,3,n) +
d = mrot(1,1,n)*mrot(2,2,n)*mrot(3,3,n) +
+ mrot(1,2,n)*mrot(2,3,n)*mrot(3,1,n) +
+ mrot(2,1,n)*mrot(3,2,n)*mrot(1,3,n) -
+ mrot(2,1,n)*mrot(3,2,n)*mrot(1,3,n) -
+ mrot(1,3,n)*mrot(2,2,n)*mrot(3,1,n) -
+ mrot(2,3,n)*mrot(3,2,n)*mrot(1,1,n) -
+ mrot(2,3,n)*mrot(3,2,n)*mrot(1,1,n) -
+ mrot(2,1,n)*mrot(1,2,n)*mrot(3,3,n)
t = mrot(1,1,n) + mrot(2,2,n) + mrot(3,3,n)
......
......@@ -25,7 +25,7 @@ CONTAINS
USE m_types_cell
USE m_types_hybrid
USE m_process_lattice_namelist
use m_inv3
REAL, ALLOCATABLE,INTENT(OUT) :: atom_pos(:, :),atom_id(:)
CHARACTER(len=20), ALLOCATABLE,INTENT(OUT) :: atom_Label(:)
......@@ -38,8 +38,8 @@ CONTAINS
TYPE(t_xcpot_inbuild_nf),INTENT(OUT) :: xcpot
TYPE(t_cell),INTENT(OUT) :: cell
TYPE(t_hybrid),INTENT(OUT) :: hybrid
!locals
REAL :: a1(3),a2(3),a3(3),aa,SCALE(3),mat(3,3),det
integer :: ios,n,i
......@@ -47,7 +47,7 @@ CONTAINS
logical :: l_exist
CHARACTER(len=16384):: line
type(t_atompar) :: ap
!
!read file and create normalized scratch file
!
......@@ -59,7 +59,7 @@ CONTAINS
OPEN(98,file="scratch")
CALL normalize_file(97,98)
close(97)
REWIND(98)
READ(98,"(a)",iostat=ios) input%comment
if (input%comment(1:1)=='&') then
......@@ -158,13 +158,13 @@ CONTAINS
atom_pos(:,n) = matmul(cell%bmat,matmul(mat,atom_pos(:,n)))
ENDDO
ENDIF
!set the cell
cell%amat(:,1) = aa*scale(:)*a1(:)
cell%amat(:,2) = aa*scale(:)*a2(:)
cell%amat(:,3) = aa*scale(:)*a3(:)
CALL cell%init(0.0)
END SUBROUTINE read_inpgen_input
......@@ -189,7 +189,7 @@ CONTAINS
write(kpts_str,"(a,i0,a,i0,a,i0)") "grid=",div1,",",div2,",",div3
end if
end SUBROUTINE process_kpts
SUBROUTINE process_input(line,film,symor,hybrid)
CHARACTER(len=*),INTENT(in)::line
LOGICAL,INTENT(out)::film,symor,hybrid
......@@ -201,20 +201,21 @@ CONTAINS
cartesian=.FALSE.
cal_symm=.FALSE.
oldfleur=.FALSE.
checkinp=.false.
READ(line,input,iostat=ios)
IF (ios.NE.0) CALL judft_error(("Error reading:"//line))
IF (ANY([cal_symm, checkinp,oldfleur])) CALL judft_error("Switches cal_symm, checkinp,oldfleur no longer supported")
END SUBROUTINE process_input
SUBROUTINE process_qss(line,noco)
USE m_types_noco
CHARACTER(len=*),INTENT(in)::line
TYPE(t_noco),INTENT(INOUT) :: noco
CHARACTER(len=1000) :: buf
INTEGER :: ios
buf=ADJUSTL(line(5:len_TRIM(line)-1))
READ(buf,*,iostat=ios) noco%qss
noco%l_ss=.TRUE.
noco%l_noco=.TRUE.
......@@ -227,9 +228,9 @@ CONTAINS
TYPE(t_noco),INTENT(INOUT) :: noco
CHARACTER(len=1000) :: buf
INTEGER :: ios
buf=ADJUSTL(line(5:len_TRIM(line)-1))
READ(buf,*,iostat=ios) noco%theta,noco%phi
noco%l_soc=.TRUE.
IF (ios.NE.0) CALL judft_error(("Error reading:"//line))
......@@ -250,10 +251,10 @@ CONTAINS
CHARACTER(len=1000) :: buf
REAL :: shift(3)
INTEGER :: ios,n
buf=ADJUSTL(line(7:len_TRIM(line)-1))
buf=ADJUSTL(line(7:len_TRIM(line)-1))
READ(buf,*,iostat=ios) shift
IF (ios.NE.0) CALL judft_error(("Error reading:"//line))
DO n=1,SIZE(atompos,2)
atompos(:,n)=atompos(:,n)+shift
......@@ -266,10 +267,10 @@ CONTAINS
CHARACTER(len=1000) :: buf
REAL :: factor(3)
INTEGER :: ios,n
buf=ADJUSTL(line(8:len_TRIM(line)-1))
buf=ADJUSTL(line(8:len_TRIM(line)-1))
READ(buf,*,iostat=ios) factor
IF (ios.NE.0) CALL judft_error(("Error reading:"//line))
DO n=1,SIZE(atompos,2)
atompos(:,n)=atompos(:,n)/factor
......@@ -282,12 +283,12 @@ CONTAINS