Commit 58b69859 authored by Daniel Wortmann's avatar Daniel Wortmann

first compiling version of inpgen2

parent 7a6dfd39
......@@ -18,6 +18,7 @@ include("cmake/filespecific.cmake")
include("cmake/ReportConfig.txt")
add_subdirectory("inpgen/new")
......
......@@ -50,14 +50,14 @@ inpgen/element.f inpgen/atom_input.f inpgen/crystal.f inpgen/lattice2.f inpgen/s
inpgen/atom_sym.f inpgen/generator.f inpgen/read_record.f inpgen/soc_or_ssdw.f inpgen/symproperties.f
inpgen/bravais_symm.f inpgen/set_atom_core.f inpgen/spg_gen.f global/triang.f
inpgen/lapw_input.f inpgen/struct_input.f inpgen/write_struct.f
io/calculator.f global/ss_sym.f global/soc_sym.f math/inv3.f io/rw_symfile.f
io/calculator.f global/ss_sym.f global/soc_sym.f io/rw_symfile.f
kpoints/kptgen_hybrid.f kpoints/od_kptsgen.f kpoints/bravais.f kpoints/divi.f kpoints/brzone.f
kpoints/kptmop.f kpoints/kpttet.f init/bandstr1.F kpoints/ordstar.f kpoints/fulstar.f kpoints/kprep.f
kpoints/tetcon.f kpoints/kvecon.f init/boxdim.f global/radsra.f global/differ.f math/inwint.f
math/outint.f math/grule.f )
set(inpgen_F90 ${inpgen_F90} global/constants.f90 io/xsf_io.f90
eigen/orthoglo.F90 math/ylm4.F90 mpi/mpi_bc_tool.F90
eigen/orthoglo.F90 math/ylm4.F90 mpi/mpi_bc_tool.F90 math/inv3.f90
global/sort.f90 global/chkmt.f90 inpgen/inpgen.f90 inpgen/set_inp.f90 inpgen/inpgen_help.f90 io/rw_inp.f90 global/find_enpara.f90
inpgen/closure.f90 math/intgr.F90
io/w_inpXML.f90 kpoints/julia.f90 global/utility.F90
......
......@@ -17,7 +17,7 @@ CONTAINS
!! Different schemes are implemented. Nqn (main quantum number) is used as a switch.
!! This code was previously in lodpot.f
REAL FUNCTION find_enpara(lo,l,n,jsp,nqn,atoms,mpi,vr)RESULT(e)
USE m_types_setup
USE m_types_atoms
USE m_types_mpi
USE m_radsra
USE m_differ
......@@ -36,7 +36,7 @@ CONTAINS
REAL FUNCTION priv_method1(lo,l,n,jsp,nqn,atoms,mpi,vr)RESULT(e)
USE m_types_setup
USE m_types_atoms
USE m_types_mpi
USE m_radsra
USE m_differ
......@@ -154,7 +154,7 @@ CONTAINS
END FUNCTION priv_method1
REAL FUNCTION priv_method2(lo,l,n,jsp,nqn,atoms,mpi,vr)RESULT(e)
USE m_types_setup
USE m_types_atoms
USE m_types_mpi
USE m_radsra
USE m_differ
......
......@@ -5,7 +5,7 @@
!--------------------------------------------------------------------------------
MODULE m_utility
USE m_juDFT
IMPLICIT NONE
CONTAINS
......
wortmann@mb-wortmann.68050
\ No newline at end of file
cmake_minimum_required(VERSION 3.0)
project(FLEUR LANGUAGES Fortran)
#These options should be adjusted
option(INPGEN_USE_DEBUG "Set CPP_DEBUG when compiling code" OFF)
#In addition you might want to set
#set(JUDFT_LIBRARIES "-lsomething")
#set(JUFDT_COMPILEOPTS "-r8")
set(FLEUR_SRC "/home/fleur/")
add_executable(inpgen2
inpgen_help.f90
inpgen.f90
bravais_symm.f90
make_crystal.f90
make_spacegroup.f90
check_mt_radii.f90
make_atom_groups.f90
make_defaults.f90
process_lattice_namelist.f90
atompar.F90
film_sym.f90
make_atomic_defaults.f90
read_inpgen_input.f90
closure.f90
super_check.f90
${FLEUR_SRC}/init/compile_descr.F90
${FLEUR_SRC}/global/constants.f90
${FLEUR_SRC}/global/sort.f90
${FLEUR_SRC}/math/inv3.f90
${FLEUR_SRC}/io/calculator.f
${FLEUR_SRC}/io/w_inpXML.f90
${FLEUR_SRC}/kpoints/divi.f
${FLEUR_SRC}/kpoints/bravais.f
${FLEUR_SRC}/kpoints/brzone2.f90
${FLEUR_SRC}/kpoints/kpttet.f
${FLEUR_SRC}/kpoints/kptmop.f
${FLEUR_SRC}/kpoints/ordstar.f
${FLEUR_SRC}/kpoints/fulstar.f
${FLEUR_SRC}/kpoints/tetcon.f
${FLEUR_SRC}/kpoints/kvecon.f
${FLEUR_SRC}/kpoints/gen_bz.F90
${FLEUR_SRC}/kpoints/kprep.f
${FLEUR_SRC}/math/util.F
${FLEUR_SRC}/types/types_input.F90
${FLEUR_SRC}/types/types_xcpot.F90
${FLEUR_SRC}/types/types_xcpot_inbuild_nofunction.F90
${FLEUR_SRC}/types/types_xcpot_data.F90
${FLEUR_SRC}/types/types_kpts.f90
${FLEUR_SRC}/types/types_input.F90
${FLEUR_SRC}/types/types_sym.F90
${FLEUR_SRC}/types/types_cell.F90
${FLEUR_SRC}/types/types_oneD.F90
${FLEUR_SRC}/types/types_noco.F90
${FLEUR_SRC}/types/types_atoms.F90
${FLEUR_SRC}/types/types_econfig.F90
${FLEUR_SRC}/types/types_hybrid.F90
${FLEUR_SRC}/types/types_stars.F90
${FLEUR_SRC}/types/types_vacuum.F90
${FLEUR_SRC}/types/types_sphhar.f90
${FLEUR_SRC}/types/types_banddos.f90
${FLEUR_SRC}/types/types_sliceplot.f90
${FLEUR_SRC}/types/types_potden.F90
${FLEUR_SRC}/types/types_enpara.F90
${FLEUR_SRC}/types/types_mpi.F90
${FLEUR_SRC}/types/types_dos.f90
${FLEUR_SRC}/types/types_forcetheo.f90
${FLEUR_SRC}/types/types_dimension.f90
${FLEUR_SRC}/types/types_regionCharges.f90
${FLEUR_SRC}/types/types_misc.f90
${FLEUR_SRC}/io/xmlOutput.F90
${FLEUR_SRC}/global/utility.F90
${FLEUR_SRC}/global/radsra.f
${FLEUR_SRC}/global/differ.f
${FLEUR_SRC}/global/soc_sym.f
${FLEUR_SRC}/global/ss_sym.f
${FLEUR_SRC}/math/inwint.f
${FLEUR_SRC}/math/outint.f
${FLEUR_SRC}/math/intgr.F90
${FLEUR_SRC}/global/find_enpara.F90
${FLEUR_SRC}/mpi/mpi_bc_tool.F90
${FLEUR_SRC}/math/d_wigner.F90
${FLEUR_SRC}/io/xsf_io.f90
)
#Set module directories
include_directories("${CMAKE_CURRENT_BINARY_DIR}/modules/inpgen")
set_target_properties(inpgen2 PROPERTIES Fortran_MODULE_DIRECTORY modules/inpgen)
target_compile_definitions(inpgen2 PUBLIC ${FLEUR_DEFINITIONS})
target_link_libraries(inpgen2 ${FLEUR_LIBRARIES})
target_link_libraries(inpgen2 ${FLEUR_LINK_LIBRARIES})
target_link_libraries(inpgen2 juDFT)
MODULE m_atompar
IMPLICIT NONE
USE m_judft
IMPLICIT NONE
type t_atompar
integer :: id = -1
integer :: nucnumber = 0
......@@ -26,7 +26,7 @@ contains
class(t_atompar),intent(inout)::ap
TYPE(t_atompar):: ap_d
INTEGER :: n
if (ap%rmt>0) then
......@@ -54,7 +54,7 @@ contains
ap%lmax=10
endif
endif
IF(ap%lnonsph==0) ap%lnonsph=MIN( MAX( (ap%lmax(:)-2),3 ), 8 )
IF(ap%lnonsph==0) ap%lnonsph=MIN( MAX( (ap%lmax-2),3 ), 8 )
IF (ap%lnonsph>ap%lmax) THEN
WRITE(*,*) "lnonsph had to be reduced for some atom"
ap%lnonsph=ap%lmax
......@@ -85,10 +85,11 @@ contains
END IF
!make sure there are no blanks in lo
DO n=1,len_TRIM(lo)
IF (ad%lo(n:n)=' ') THEN
ad%lo(n:LEN(ad%lo)-n)=ad%lo(n+1:)
ad%lo(LEN(ad%lo):LEN(ad%lo))=' '
DO n=1,len_TRIM(ap%lo)
IF (ap%lo(n:n)==' ') THEN
ap%lo(n:LEN(ap%lo)-n)=ap%lo(n+1:)
ap%lo(LEN(ap%lo):LEN(ap%lo))=' '
END IF
ENDDO
......@@ -193,7 +194,7 @@ contains
ap=t_atompar(id=id,nucnumber=z,rmt=rmt,rmt_min=rmt_min,jri=jri,dx=dx,bmu=bmu,lmax=lmax,lnonsph=lnonsph,lo=lo,econfig=econfig,desc=desc)
ELSE
!try old namelist
CALL read_params_old(99,ap)
CALL read_atom_params_old(99,ap)
END IF
CALL add_atompar(ap)
ENDIF
......@@ -270,7 +271,7 @@ contains
ENDDO
END FUNCTION element_to_z
END SUBROUTINE read_params_old
END SUBROUTINE read_atom_params_old
SUBROUTINE dump_list()
INTEGER::n
......
......@@ -9,7 +9,7 @@ MODULE m_bravaissymm
!********************************************************************
CONTAINS
SUBROUTINE bravais_symm(cell,nops,mrot)
USE m_types_cell
IMPLICIT NONE
!==> Arguments
......@@ -32,9 +32,9 @@ CONTAINS
d1 = cell%aamat(1,1)
d2 = cell%aamat(2,2)
d3 = cell%aamat(3,3)
b1 = ( cell%bmat(1,1)/scale(1) )**2 + ( cell%bmat(1,2)/scale(2) )**2 + ( cell%bmat(1,3)/scale(3) )**2
b2 = ( cell%bmat(2,1)/scale(1) )**2 + ( cell%bmat(2,2)/scale(2) )**2 + ( cell%bmat(2,3)/scale(3) )**2
b3 = ( cell%bmat(3,1)/scale(1) )**2 + ( cell%bmat(3,2)/scale(2) )**2 + ( cell%bmat(3,3)/scale(3) )**2
b1 = ( cell%bmat(1,1) )**2 + ( cell%bmat(1,2) )**2 + ( cell%bmat(1,3) )**2
b2 = ( cell%bmat(2,1) )**2 + ( cell%bmat(2,2) )**2 + ( cell%bmat(2,3) )**2
b3 = ( cell%bmat(3,1) )**2 + ( cell%bmat(3,2) )**2 + ( cell%bmat(3,3) )**2
!---> determine the cutoffs along each direction a_i:
dmax = max( d1,d2,d3)
......
......@@ -11,8 +11,11 @@ MODULE m_check_mt_radii
!---------------------------------------------------------------------
CONTAINS
SUBROUTINE check_mt_radii(atoms,input,vacuum,cell,oneD,l_test,rmt1,overlap)
USE m_types
USE m_types_input
USE m_types_atoms
USE m_types_vacuum
USE m_types_cell
USE m_types_oneD
USE m_sort
USE m_inv3
USE m_juDFT
......
MODULE m_closure
use m_juDFT
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
! Contains 3 subroutines that more or less check the closure:
! closure : checks whether the space group operations close
! close_pt: checks that the point group of the bravais
! lattice closes
! check_close: additionally calculate the multiplication table,
! inverse operations and also determines the type
! of every operation mw99,gs00
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CONTAINS
SUBROUTINE closure(mops,mrot,tau,nops,index_op,lclose)
IMPLICIT NONE
INTEGER, INTENT (IN) :: mops ! number of operations of the bravais lattice
INTEGER, INTENT (IN) :: nops ! number of operations in space group
INTEGER, INTENT (IN) :: mrot(3,3,mops) ! refer to the operations of the
REAL, INTENT (IN) :: tau(3,mops) ! bravais lattice
INTEGER, INTENT (IN) :: index_op(nops) ! mapping function between space group
! op's and those of the bravais lattice
LOGICAL, INTENT (OUT) :: lclose
REAL ttau(3),eps7
INTEGER i,ii,j,jj,k,kk,mp(3,3),map(nops)
eps7 = 1.0e-7
! loop over all operations
DO jj = 1, nops
j = index_op(jj)
map(1:nops) = 0
! multiply {R_j|t_j}{R_i|t_i}
DO ii = 1, nops
i = index_op(ii)
mp = matmul( mrot(:,:,j) , mrot(:,:,i) )
ttau = tau(:,j) + matmul( mrot(:,:,j) , tau(:,i) )
ttau = ttau - anint( ttau - eps7 )
! determine which operation this is
DO kk=1,nops
k = index_op(kk)
IF ( all( mp(:,:) == mrot(:,:,k) ) .AND. all( abs( ttau(:)-tau(:,k) ) < eps7 ) ) THEN
IF ( map(ii) .eq. 0 ) THEN
map(ii) = kk
ELSE
write(6,*)'ERROR Closure: Multiplying ', jj,' with ',kk, ' and with ',map(ii)
write(6,*) 'yields the same matrix'
lclose = .false.
RETURN
END IF
END IF
END DO
IF (map(ii).eq.0) THEN
write(6,*)'ERROR Closure:',ii,' times',jj,' leaves group'
lclose = .false.
RETURN
END IF
END DO
END DO
lclose = .true.
END SUBROUTINE closure
!*********************************************************************
SUBROUTINE close_pt(nops,mrot,mtable)
IMPLICIT NONE
INTEGER, INTENT (IN) :: nops,mrot(3,3,nops)
INTEGER, INTENT (OUT) :: mtable(nops,nops) ! table(i,j) = {R_i|0}{R_j|0}
INTEGER :: i,j,k,mp(3,3),map(nops)
! loop over all operations
DO j = 1, nops
map(1:nops) = 0
! multiply {R_j|0}{R_i|0}
DO i = 1, nops
mp = matmul( mrot(:,:,j) , mrot(:,:,i) )
! determine which operation this is
DO k = 1, nops
IF ( all( mp(:,:)==mrot(:,:,k) ) ) THEN
IF ( map(i) .eq. 0 ) THEN
map(i) = k
ELSE
WRITE (6,'(" Symmetry error : multiple ops")')
CALL juDFT_error("close_pt: Multiple ops (Bravais)",calledby ="closure")
END IF
END IF
END DO
IF (map(i).eq.0) THEN
WRITE(6,*) 'Symmetry operations:'
DO k = 1, nops
WRITE(6,*) 'Matrix ', k, ':'
WRITE(6,'(3i7)') mrot(:,1,k)
WRITE(6,'(3i7)') mrot(:,2,k)
WRITE(6,'(3i7)') mrot(:,3,k)
WRITE(6,*) ''
END DO
WRITE (6,'(" Group not closed (Bravais lattice)")')
WRITE (6,'(" operation j=",i2," map=",12i4,:/,(21x,12i4))') j, map(1:nops)
WRITE(6,*) ''
WRITE(6,*) 'Expected product of operations ', j, ' and ', i, ':'
WRITE(6,'(3i7)') mp(:,1)
WRITE(6,'(3i7)') mp(:,2)
WRITE(6,'(3i7)') mp(:,3)
WRITE(6,*) ''
CALL juDFT_error("close_pt:Not closed",calledby="closure")
END IF
END DO
mtable(j,1:nops) = map(1:nops)
END DO
END SUBROUTINE close_pt
!*********************************************************************
SUBROUTINE check_close(nops,mrot,tau,multtab,inv_op,optype)
IMPLICIT NONE
INTEGER, INTENT (IN) :: nops
INTEGER, INTENT (IN) :: mrot(3,3,nops)
REAL, INTENT (IN) :: tau(3,nops)
INTEGER, INTENT (OUT) :: inv_op(nops)
INTEGER, INTENT (OUT) :: multtab(nops,nops)
INTEGER, INTENT (OUT) :: optype(nops)
REAL ttau(3)
INTEGER i,j,n,k,mp(3,3),mdet,mtr
REAL, PARAMETER :: eps=1.0e-7
INTEGER, PARAMETER :: cops(-1:3)=(/ 2, 3, 4, 6, 1 /)
inv_op(1:nops) = 0
multtab = 0
! loop over all operations
DO j = 1, nops
! multiply {R_j|t_j}{R_i|t_i}
DO i = 1, nops
mp = matmul( mrot(:,:,j) , mrot(:,:,i) )
ttau = tau(:,j) + matmul( mrot(:,:,j) , tau(:,i) )
ttau = ttau - anint( ttau - eps )
! determine which operation this is
DO k=1,nops
IF ( all( mp(:,:) == mrot(:,:,k) ) .and. all( abs( ttau(:)-tau(:,k) ) < eps ) ) THEN
IF ( multtab(j,i) .eq. 0 ) THEN
multtab(j,i) = k
IF (k .eq. 1) inv_op(j)=i
ELSE
WRITE(6,'(" Symmetry error: multiple ops")')
CALL juDFT_error("check_close: Multiple ops",calledby ="closure")
END IF
END IF
END DO
IF (multtab(j,i).eq.0) THEN
WRITE (6,'(" Group not closed")')
WRITE (6,'(" j , i =",2i4)') j,i
CALL juDFT_error("check_close: Not closed",calledby="closure")
END IF
END DO
END DO
! determine the type of each operation
DO n = 1, nops
mtr = mrot(1,1,n) + mrot(2,2,n) + mrot(3,3,n)
mdet = mrot(1,1,n)*(mrot(2,2,n)*mrot(3,3,n)-mrot(3,2,n)*mrot(2,3,n)) +&
mrot(1,2,n)*(mrot(3,1,n)*mrot(2,3,n)-mrot(2,1,n)*mrot(3,3,n)) +&
mrot(1,3,n)*(mrot(2,1,n)*mrot(3,2,n)-mrot(3,1,n)*mrot(2,2,n))
optype(n) = mdet*cops(mdet*mtr)
END DO
END SUBROUTINE check_close
END MODULE m_closure
MODULE m_film_sym
IMPLICIT NONE
USE m_juDFT
IMPLICIT NONE
CONTAINS
SUBROUTINE film_sym(nop,mrot,error)
INTEGER,INTENT(in)::nop,mrot(:,:,:)
......@@ -9,7 +9,7 @@ CONTAINS
INTEGER:: n
DO n=1,nop
IF (ANY(mrot(1:2,3).NE.0).OR.ANY(mrot(3,1:2).NE.0)) error(n)=.TRUE.
IF (ANY(mrot(1:2,3,n).NE.0).OR.ANY(mrot(3,1:2,n).NE.0)) error(n)=.TRUE.
END DO
END SUBROUTINE film_sym
END MODULE m_film_sym
......@@ -14,51 +14,55 @@ PROGRAM inpgen
! M.Weinert and implemented in the FLAIR-code by G.Schneider. !
! gb`02 |
!----------------------------------------------------------------------------+
use m_juDFT
USE m_structinput
USE m_crystal
USE m_socorssdw
USE m_rwsymfile
USE m_setinp
USE m_writestruct
USE m_xsf_io, ONLY : xsf_write_atoms
USE m_types
USE m_inpgen_help
USE m_constants
USE m_juDFT
USE m_inpgen_help
USE m_read_inpgen_input
USE m_make_crystal
USE m_make_atomic_defaults
USE m_make_defaults
!use m_make_kpoints
USE m_winpxml
USE m_xsf_io
USE m_types_input
USE m_types_atoms
USE m_types_cell
USE m_types_sym
USE m_types_noco
USE m_types_vacuum
USE m_types_banddos
USE m_types_hybrid
USE m_types_xcpot_inbuild_nofunction
USE m_types_forcetheo
USE m_types_kpts
USE m_types_enpara
USE m_types_oneD
USE m_types_sliceplot
USE m_types_stars
IMPLICIT NONE
INTEGER natmax,nop48,nline,natin,ngen,i,j,bfh
INTEGER nops,no3,no2,na,numSpecies,i_c,element
INTEGER infh,errfh,warnfh,symfh,dbgfh,outfh,dispfh
LOGICAL cal_symm,checkinp,newSpecies
LOGICAL cartesian,oldfleur,l_hyb ,inistop
REAL aa
REAL a1(3),a2(3),a3(3),scale(3),factor(3)
INTEGER :: elementNumSpecies(0:104)
INTEGER, ALLOCATABLE :: mmrot(:,:,:)
REAL, ALLOCATABLE :: ttr(:, :),atompos(:, :),atomid(:)
REAL, ALLOCATABLE :: idlist(:)
INTEGER, ALLOCATABLE :: ntyrep(:) ! these variables are allocated with
INTEGER, ALLOCATABLE :: natype(:),natrep(:),natmap(:) ! or 'nat'
INTEGER, ALLOCATABLE :: speciesRepAtomType(:),atomTypeSpecies(:)
INTEGER, PARAMETER :: xl_buffer=16384 ! maximum length of read record
CHARACTER(len=xl_buffer) :: buffer
CHARACTER(len=80):: title
CHARACTER(len=7) :: symfn
CHARACTER(len=4) :: dispfn
CHARACTER(LEN=8) :: tempNumberString
REAL, ALLOCATABLE :: atompos(:, :),atomid(:)
CHARACTER(len=20), ALLOCATABLE :: atomLabel(:)
LOGICAL :: l_fullinput,l_explicit,l_inpxml
TYPE(t_input) :: input
TYPE(t_atoms) :: atoms
TYPE(t_cell) :: cell
TYPE(t_sym) :: sym
TYPE(t_noco) :: noco
TYPE(t_vacuum) :: vacuum
TYPE(t_banddos) :: banddos
TYPE(t_hybrid) :: hybrid
TYPE(t_xcpot_inbuild_nf)::xcpot
TYPE(t_enpara) :: enpara
TYPE(t_forcetheo):: forcetheo
TYPE(t_kpts) :: kpts
TYPE(t_oned) :: oned
TYPE(t_sliceplot):: sliceplot
TYPE(t_stars) :: stars
CHARACTER(len=40):: kpts_str
!Start program and greet user
CALL inpgen_help()
......@@ -68,25 +72,23 @@ PROGRAM inpgen
IF (judft_was_argument("-inp")) THEN
STOP "not yet"
!CALL read_old_input()
full_input=.TRUE.
l_fullinput=.TRUE.
ELSEIF (judft_was_argument("-inp.xml")) THEN
STOP "not yet"
!CALL r_inpXML()
full_input=.TRUE.
l_fullinput=.TRUE.
ELSEIF(judft_was_argument("-f")) THEN
!read the input
CALL read_inpgen_input(atom_pos,atom_id,atom_label,amat,
film,symor,atomid,atompos,atomlabel,amat,dvac,noco)
full_input=.FALSE.
CALL read_inpgen_input(atompos,atomid,atomlabel,kpts_str,&
input,sym,noco,vacuum,stars,xcpot,cell,hybrid)
l_fullinput=.FALSE.
ELSE
CALL judft_error("You should either specify -inp,-inp.xml or -f command line options. Check -h if unsure")
ENDIF
IF (.NOT.full_input) THEN
IF (.NOT.l_fullinput) THEN
!First we determine the spacegoup and map the atoms to groups
CALL make_crystal(film,symor,atomid,atompos,atomlabel,amat,dvac,noco,&
CALL make_crystal(input%film,atomid,atompos,atomlabel,vacuum%dvac,noco,&
cell,sym,atoms)
!All atom related parameters are set here. Note that some parameters might
......@@ -94,31 +96,31 @@ PROGRAM inpgen
CALL make_atomic_defaults(input,vacuum,cell,oneD,atoms)
!Set all defaults that have not been specified before or can not be specified in inpgen
CALL make_defaults(atoms,vacuum,input,stars,sliceplot,forcetheo,banddos,&
cell,sym,xcpot,noco,oneD,hybrid,kpts)
CALL make_defaults(atoms,sym,cell,vacuum,input,stars,&
xcpot,noco,hybrid)
ENDIF
!
! k-points can also be modified here
!
call make_kpoints()
!call make_kpoints()
!
!Now the IO-section
!
IF (.NOT.l_inpxml) THEN
!the inp.xml file
l_explicit=judft_was_argument("-explicit")
CALL dump_FleurInputSchema()
!CALL dump_FleurInputSchema()
CALL w_inpxml(&
atoms,vacuum,input,stars,sliceplot,forcetheo,banddos,&
cell,sym,xcpot,noco,oneD,hybrid,kpts,&
div,l_gamma,& !should be in kpts!?
namex,relcor,dtild_opt,name_opt,&!?should be somewhere...
.false.,"inp.xml",&
l_explicit,enpara)
!the sym.xml file
CALL sym%writeXML(0,"sym.xml")
PRINT *,"sym->XML missing"
!CALL sym%writeXML(0,"sym.xml")
ENDIF
CALL kpts%writeXML(0,"kpts.xml")
PRINT *,"kpts->XML missing"
!CALL kpts%writeXML(0,"kpts.xml")
! Structure in xsf-format
OPEN (55,file="struct.xsf")
......
!--------------------------------------------------------------------------------
! Copyright (c) 2017 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_inpgen_help
IMPLICIT NONE
CONTAINS
SUBROUTINE inpgen_help()
USE m_compile_descr
USE m_constants
USE m_juDFT
USE m_check_arguments
IMPLICIT NONE
CHARACTER(:), ALLOCATABLE:: infostring
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,"-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","")
CALL new_argument(0,"-fast_defaults","generate more aggressive (and less stable) input parameters for faster calculations","")
CALL new_argument(0,"-inp.xml","modify existing inp.xml file","")
CALL new_argument(0,"-inp","convert old inp file to inp.xml file","")
CALL new_argument(1,"-f","filename to process","")
CALL new_argument(0,"-h","Print this help message","")
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
!now print version info and help on command line arguments:
CALL get_compile_desc_string(infostring)
WRITE(*,'(a)') infostring
WRITE(*,'(a)')
WRITE(*,'(a)')"------------------------------------------------------"
WRITE(*,'(a)')"inpgen usage info:"
WRITE(*,'(a)')"The following command line options are known:"
WRITE(*,'(a)')""
CALL print_argument("-genEnpara")