Commit 54a47cb1 authored by Daniel Wortmann's avatar Daniel Wortmann

Merge branch 'k-refactor' into develop

parents 8a8cfe1f 7a600f2a
......@@ -37,6 +37,7 @@ include(wannier/CMakeLists.txt)
include(wannier/uhu/CMakeLists.txt)
include(forcetheorem/CMakeLists.txt)
include(rdmft/CMakeLists.txt)
include(kpoints/CMakeLists.txt)
include(tests/tests_old.cmake)
......@@ -48,19 +49,19 @@ inpgen/atom_sym.f inpgen/generator.f inpgen/read_record.f inpgen/soc_or_ssdw.f i
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
global/sort.f init/kptgen_hybrid.f init/od_kptsgen.f init/bravais.f init/divi.f init/brzone.f
init/kptmop.f init/kpttet.f init/bandstr1.F init/ordstar.f init/fulstar.f init/kprep.f
init/tetcon.f init/kvecon.f init/boxdim.f math/ylm4.f global/radsra.f math/intgr.F global/differ.f math/inwint.f
global/sort.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 math/ylm4.f global/radsra.f math/intgr.F global/differ.f math/inwint.f
math/outint.f xc-pot/gaunt.f math/grule.f
)
set(inpgen_F90 ${inpgen_F90} global/constants.f90 io/xsf_io.f90
eigen/vec_for_lo.f90 eigen/orthoglo.F90 juDFT/usage_data.F90
global/enpara.f90 global/chkmt.f90 inpgen/inpgen.f90 inpgen/set_inp.f90 inpgen/inpgen_help.f90 io/rw_inp.f90 juDFT/juDFT.F90 global/find_enpara.f90 inpgen/closure.f90
juDFT/info.F90 juDFT/stop.F90 juDFT/args.F90 juDFT/time.F90 juDFT/init.F90 juDFT/sysinfo.F90 io/w_inpXML.f90 init/julia.f90 global/utility.F90
init/compile_descr.F90 init/kpoints.f90 io/xmlOutput.F90 init/brzone2.f90 cdn/slab_dim.f90 cdn/slabgeom.f90 dos/nstm3.f90 cdn/int_21.f90
juDFT/info.F90 juDFT/stop.F90 juDFT/args.F90 juDFT/time.F90 juDFT/init.F90 juDFT/sysinfo.F90 io/w_inpXML.f90 kpoints/julia.f90 global/utility.F90
init/compile_descr.F90 kpoints/kpoints.f90 io/xmlOutput.F90 kpoints/brzone2.f90 cdn/slab_dim.f90 cdn/slabgeom.f90 dos/nstm3.f90 cdn/int_21.f90
cdn/int_21lo.f90 cdn_mt/rhomt21.f90 cdn_mt/rhonmt21.f90 force/force_a21.F90 force/force_a21_lo.f90 force/force_a21_U.f90 force/force_a12.f90
eigen/tlmplm_store.F90 init/unfoldBandKPTS.f90)
eigen/tlmplm_store.F90 kpoints/unfoldBandKPTS.f90)
set(fleur_SRC ${fleur_F90} ${fleur_F77})
......
set(fleur_F77 ${fleur_F77}
init/bandstr1.F
init/boxdim.f
init/bravais.f
init/brzone.f
init/convn_dim.f
init/divi.f
init/old_inp/first_glance.f
init/fulstar.f
init/gtest.f
init/ifft235.f
init/kprep.f
init/kptgen_hybrid.f
init/kptmop.f
init/kpttet.f
init/kvecon.f
init/lhcal.f
init/local_sym.f
init/mod_symdata.f
init/od_chisym.f
init/od_kptsgen.f
init/ordstar.f
init/prp_xcfft_box.f
init/ptsym.f
init/spg2set.f
init/spgrot.f
init/strgn_dim.F
init/tetcon.f
)
set(fleur_F90 ${fleur_F90}
init/compile_descr.F90
init/kpoints.f90
init/apws_dim.f90
init/old_inp/apws_dim.f90
init/checks.F90
init/old_inp/dimen7.F90
init/old_inp/dimens.F90
init/efield.f90
init/gen_bz.F90
init/gen_map.f90
init/gkptwgt.f90
init/old_inp/inped.F90
init/inpeig.f90
init/old_inp/inpeig_dim.f90
init/julia.f90
init/mapatom.F90
init/od_mapatom.F90
init/od_strgn1.f90
......@@ -52,10 +36,8 @@ init/setlomap.F90
init/old_inp/setup.f90
init/stepf.F90
init/strgn.f90
init/brzone2.f90
init/postprocessInput.F90
init/initParallelProcesses.F90
init/old_inp/fleur_init_old.F90
init/lapw_dim.F90
init/unfoldBandKPTS.f90
)
......@@ -15,7 +15,6 @@ SUBROUTINE postprocessInput(mpi,input,field,sym,stars,atoms,vacuum,obsolete,kpts
USE m_juDFT
USE m_types
USE m_constants
USE m_julia
USE m_lapwdim
USE m_ylm
USE m_convndim
......@@ -35,7 +34,6 @@ SUBROUTINE postprocessInput(mpi,input,field,sym,stars,atoms,vacuum,obsolete,kpts
USE m_convn
USE m_efield
USE m_od_mapatom
USE m_kptgen_hybrid
USE m_od_kptsgen
USE m_gen_bz
USE m_nocoInputCheck
......
......@@ -61,6 +61,9 @@
WRITE(*,*) "Please check and report if you believe you found a bug"
CALL writetimes()
CALL PRINT_memory_info()
#ifdef CPP_MPI
CALL MPI_ABORT(MPI_COMM_WORLD,error,ierr)
#endif
STOP "Signal"
intel_signal_handler=0
END FUNCTION intel_signal_handler
......
......@@ -176,6 +176,7 @@ CONTAINS
CALL endXMLOutput()
END IF
END IF
IF (TRIM(message)=="") STOP ! simple stop if no end message is given
WRITE(0,*)
WRITE(0,*) "*****************************************"
WRITE(0,*) "Run finished successfully"
......
set(fleur_F77 ${fleur_F77}
kpoints/bravais.f
kpoints/brzone.f
kpoints/divi.f
kpoints/fulstar.f
kpoints/kprep.f
kpoints/kptgen_hybrid.f
kpoints/kptmop.f
kpoints/kpttet.f
kpoints/kvecon.f
kpoints/od_kptsgen.f
kpoints/ordstar.f
kpoints/tetcon.f
)
set(fleur_F90 ${fleur_F90}
kpoints/gkptwgt.f90
kpoints/julia.f90
kpoints/kpoints.f90
kpoints/unfoldBandKPTS.f90
kpoints/gen_bz.F90
kpoints/brzone2.f90
)
......@@ -5,7 +5,7 @@ main/cdngen.F90
main/fleur.F90
main/fleur_init.F90
main/fleur_job.F90
main/fleur_help.f90
main/fleur_help.F90
main/fleur_info.f90
main/mix.F90
main/optional.F90
......
!--------------------------------------------------------------------------------
! 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_fleur_help
IMPLICIT NONE
PRIVATE
TYPE t_fleur_param
INTEGER :: TYPE
CHARACTER(len=20) :: name
CHARACTER(len=200) :: desc
CHARACTER(len=200) :: values
END TYPE t_fleur_param
#ifdef CPP_HDF
INTEGER,PARAMETER:: no_params=20
#else
INTEGER,PARAMETER:: no_params=16
#endif
TYPE(t_fleur_param) :: fleur_param(no_params)=(/&
!Input options
t_fleur_param(0,"-toXML","Convert an old 'inp' file into the new XML format",""),&
t_fleur_param(1,"-xmlXpath","modify the xml-xpath of the inp.xml file",""),&
!Control the job
t_fleur_param(0,"-check","run in check mode, i.e. stop after init",""),&
t_fleur_param(0,"-info","Print out information on recommended parallelization and available charge densities",""),&
t_fleur_param(2,"-wtime","run for # minutes (used to estimate if another iteration is started)",""),&
t_fleur_param(1,"-j","Distribute MPI ranks to run subjobs (Format PE:DIR meaning run with PE in directory DIR)",""),&
t_fleur_param(1,"-f","Obtain info on subjobs from file",""),&
t_fleur_param(2,"-n_min_size","Try to use at least specified number of PE in eigenvalue parallelization",""),&
t_fleur_param(1,"-diag","Choose method for diagonalization","lapack,debugout"&
#ifdef CPP_SCALAPACK
//",scalapack"&
#endif
#ifdef CPP_ELPA
//",elpa"&
#endif
#ifdef CPP_CHASE
//",chase"&
#endif
#ifdef CPP_MAGMA
//",magma"&
#endif
),&
t_fleur_param(1,"-eig","Method for storing the eigenvectors","mem,da"&
#ifdef CPP_MPI
//",mpi"&
#endif
#ifdef CPP_HDF
//",hdf"&
#endif
),&
!Debugging
t_fleur_param(0,"-warn_only","Continue execution after a warning message",""),&
t_fleur_param(0,"-trace","Try to generate a stacktrace in case of an error",""),&
t_fleur_param(0,"-debugtime","Write the start/stop of all timers to the console",""),&
!Output
t_fleur_param(0,"-no_out","Do not open the 'out' file but write to stdout",""),&
t_fleur_param(0,"-gen_enpara","Generate an 'enpara' file for the energy parameters",""),&
t_fleur_param(0,"-h","Print this message","")&
!HDF density
#ifdef CPP_HDF
,t_fleur_param(0,"-no_cdn_hdf","Disable HDF charge density mode (activated by default if HDF5 is available)","")&
,t_fleur_param(0,"-last_extra","Generate an additional file cdn_last.hdf that contains only the last density","")&
,t_fleur_param(2,"-sd","use starting density N, where N is the index of the density according to -info","")&
,t_fleur_param(1,"-delden","delete densities (either an index N, a range N-M or the keyword 'allbutlast' should be given)","")&
#endif
/)
PUBLIC fleur_help
CONTAINS
SUBROUTINE check_arguments()
USE m_judft_stop
IMPLICIT NONE
INTEGER :: i,n
CHARACTER(len=200):: str
i=1
DO WHILE(i<=COMMAND_ARGUMENT_COUNT())
CALL GET_COMMAND_ARGUMENT(i,str)
param_loop:DO n=1,SIZE(fleur_param)
IF (TRIM(str)==fleur_param(n)%name) THEN
SELECT CASE (fleur_param(n)%TYPE)
CASE(1)
i=i+1
CALL GET_COMMAND_ARGUMENT(i,str)
IF (TRIM(fleur_param(n)%values)/="") THEN
IF (INDEX(TRIM(fleur_param(n)%values),TRIM(str))==0) THEN
PRINT *,"Invalid value :",TRIM(str)
PRINT *,"Possible values:",TRIM(fleur_param(n)%values)
CALL judft_warn("Invalid value to command line argument")
END IF
END IF
CASE(2)
i=i+1
END SELECT
EXIT param_loop
END IF
ENDDO param_loop
IF (n>SIZE(fleur_param)) CALL judft_warn("Unkown command line argument:"//str)
i=i+1
ENDDO
END SUBROUTINE check_arguments
SUBROUTINE print_param(name)
IMPLICIT NONE
CHARACTER(len=*),INTENT(in):: name
INTEGER :: n
DO n=1,no_params
IF (TRIM(name)==TRIM(fleur_param(n)%name)) THEN
IF (fleur_param(n)%TYPE==0) THEN !parameter without option
WRITE(*,1001) TRIM(fleur_param(n)%name),TRIM(fleur_param(n)%desc)
ELSEIF (fleur_param(n)%TYPE==1) THEN
IF (fleur_param(n)%values=="") THEN !parameter with string
WRITE(*,1002) TRIM(fleur_param(n)%name),TRIM(fleur_param(n)%desc)
ELSE !parameter with string and choice
WRITE(*,1003) TRIM(fleur_param(n)%name),TRIM(fleur_param(n)%values),TRIM(fleur_param(n)%desc)
END IF
ELSE !parameter with number
WRITE(*,1004) TRIM(fleur_param(n)%name),TRIM(fleur_param(n)%desc)
ENDIF
RETURN
ENDIF
END DO
1001 FORMAT(t5,a,t20,": ",a)
1002 FORMAT(t5,a," $$$",t20,": ",a)
1003 FORMAT(t5,a," [",a,"]",/,t20,": ",a)
1004 FORMAT(t5,a," #",t20,": ",a)
PRINT *,"BUG IN FLEUR, check handling of parameters in fleur_help.f90"
PRINT *,name
END SUBROUTINE print_param
SUBROUTINE fleur_help()
USE m_compile_descr
USE m_constants
USE m_juDFT
IMPLICIT NONE
CHARACTER(LEN=500):: infostring
PRINT *," Welcome to FLEUR (www.flapw.de) "
PRINT *," MaX-Release 2.1 (www.max-centre.eu)"
CALL check_arguments()
IF (.NOT. (juDFT_was_argument("-h").OR.juDFT_was_argument("--help"))) RETURN
!now print version info and help on command line arguments:
CALL get_compile_desc_string(infostring)
WRITE(*,'(a500)') infostring
WRITE(*,'(a)')
WRITE(*,'(a)')"------------------------------------------------------"
WRITE(*,'(a)')"Usage info:"
WRITE(*,'(a)')"The following command line options are known:"
WRITE(*,'(a)')""
WRITE(*,'(a)')"Control the input:"
CALL print_param("-toXML")
CALL print_param("-xmlXpath")
WRITE(*,'(a)')""
WRITE(*,'(a)')"Output options:"
CALL print_param("-no_out")
CALL print_param("-gen_enpara")
CALL print_param("-h")
WRITE(*,'(a)')""
WRITE(*,'(a)')"Control FLEUR job:"
CALL print_param("-check")
CALL print_param("-info")
CALL print_param("-wtime")
CALL print_param("-j")
CALL print_param("-f")
CALL print_param("-n_min_size")
CALL print_param("-diag")
CALL print_param("-eig")
WRITE(*,'(a)')""
WRITE(*,'(a)')"Options useful for debugging:"
CALL print_param("-warn_only")
CALL print_param("-trace")
CALL print_param("-debugtime")
#ifdef CPP_HDF
WRITE(*,'(a)')""
WRITE(*,'(a)')"HDF density file relevant options:"
CALL print_param("-no_cdn_hdf")
CALL print_param("-last_extra")
CALL print_param("-sd")
CALL print_param("-delden")
#endif
WRITE(*,'(a)')""
WRITE(*,'(a)')"Please check the documentation on www.flapw.de for more details."
CALL juDFT_end("",l_endXML=.FALSE.) !No message so do a not print more on exit
END SUBROUTINE fleur_help
END MODULE m_fleur_help
!--------------------------------------------------------------------------------
! 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_fleur_help
IMPLICIT NONE
CONTAINS
SUBROUTINE fleur_help()
USE m_compile_descr
USE m_constants
USE m_juDFT
IMPLICIT NONE
CHARACTER(LEN=500):: infostring
PRINT *," Welcome to FLEUR (www.flapw.de) "
PRINT *," MaX-Release 2.1 (www.max-centre.eu)"
IF (.NOT. (juDFT_was_argument("-h").OR.juDFT_was_argument("--help"))) RETURN
!now print version info and help on command line arguments:
CALL get_compile_desc_string(infostring)
WRITE(*,'(a500)') infostring
WRITE(*,'(a)')
WRITE(*,'(a)')"------------------------------------------------------"
WRITE(*,'(a)')"Usage info:"
WRITE(*,'(a)')"The following command line options are known:"
WRITE(*,'(a)')""
WRITE(*,'(a)')"Control the input:"
WRITE(*,'(a)')"-xmlInput or -xml : use inp.xml instead of inp"
WRITE(*,'(a)')"-toXML : convert inp file to XML input file"
WRITE(*,'(a)')"-xmlXPath XXX=YYY : modify the xml-xpath of the inp.xml file"
WRITE(*,'(a)')"-n_min_size XXX : try to use at least XXX PE in Eigenvalue parallelization"
WRITE(*,'(a)')""
WRITE(*,'(a)')"Output options:"
WRITE(*,'(a)')"-no_out : do not open out file but write to stdout"
WRITE(*,'(a)')"-genEnpara : write enpara file"
WRITE(*,'(a)')""
WRITE(*,'(a)')"Control FLEUR job:"
WRITE(*,'(a)')"-check : run in check mode, i.e. stop after init"
WRITE(*,'(a)')"-wtime XXXXX : run for XXXX minutes (used to estimate if another iteration is started)"
WRITE(*,'(a)')"-j #:DIR : run subjob in directory DIR using # PEs"
WRITE(*,'(a)')"-f FILENAME : obtain info on subjobs from file FILENAME"
WRITE(*,'(a)')"-info : Print out information on recommended parallelization and available charge densities"
WRITE(*,'(a)')""
WRITE(*,'(a)')"Options useful for debugging:"
WRITE(*,'(a)')"-warn_only : Do not stop in case of warnings"
WRITE(*,'(a)')"-trace : Try to generate stacktrace in case of an error"
WRITE(*,'(a)')"-debugtime : write out the start/stop of all timers to STDOUT"
WRITE(*,'(a)')""
WRITE(*,'(a)')"Storage for eigenvalues:"
WRITE(*,'(a)')"-da,-mem,-mpi,-hdf: choose a storage for the eigenvalues"
WRITE(*,'(a)')" and eigenvectors. The default will"
WRITE(*,'(a)')" be -mem for serial and -mpi for parallel builds"
WRITE(*,'(a)')""
WRITE(*,'(a)')"Method used for diagonalization:"
WRITE(*,'(a)')"-diag:lapack,"
WRITE(*,'(a)')"-diag:scalapack,"
WRITE(*,'(a)')"-diag:elpa,"
WRITE(*,'(a)')"-diag:elemental,"
WRITE(*,'(a)')"-diag:chase,"
WRITE(*,'(a)')"-diag:magma : choose diagonalization. Not all might be available"
WRITE(*,'(a)')""
WRITE(*,'(a)')"HDF density file relevant options:"
WRITE(*,'(a)')"-no_cdn_hdf : disable HDF charge density mode (activated by default if HDF5 is available)"
WRITE(*,'(a)')"-last_extra : generate an additional file cdn_last.hdf that contains only the last density"
WRITE(*,'(a)')"-sd N : use starting density N, where N is the index of the density according to -info"
WRITE(*,'(a)')"-delden N-M : delete densities N to M"
WRITE(*,'(a)')"-delden N : delete density N"
WRITE(*,'(a)')"-delden allbutlast : delete all but the last density"
WRITE(*,'(a)')""
WRITE(*,'(a)')"-h, --help : print this text :-)"
WRITE(*,'(a)')"Please check the documentation on www.flapw.de for more details"
CALL juDFT_end("help was written",l_endXML=.FALSE.)
END SUBROUTINE fleur_help
END MODULE m_fleur_help
......@@ -3,7 +3,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/enpara",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_grepexists("$workdir/out","it= 1 is completed");
......
......@@ -3,7 +3,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/enpara",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_fileexists("$workdir/band.1");
......
......@@ -3,7 +3,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/enpara",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_grepexists("$workdir/out","it= 1 is completed");
......
......@@ -3,7 +3,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/enpara",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_grepexists("$workdir/out","it= 1 is completed");
......
......@@ -3,7 +3,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/enpara",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_fileexists("$workdir/DOS.1");
......
......@@ -5,7 +5,7 @@ jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/enpara",$workdir);
jt::copyfile("files/sym.out",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_grepexists("$workdir/out","it= *1 *is completed");
......
......@@ -4,7 +4,7 @@ jt::copyfile("files/enpara",$workdir);
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/sym.out",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_grepexists("$workdir/out","it= 1 is completed");
......
......@@ -3,7 +3,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/sym.out",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_fileexists("$workdir/out");
......
......@@ -3,7 +3,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/sym.out",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_fileexists("$workdir/out");
......
......@@ -4,7 +4,7 @@ jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/sym.out",$workdir);
jt::copyfile("files/enpara",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_fileexists("$workdir/out");
......
......@@ -3,7 +3,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/sym.out",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_fileexists("$workdir/out");
......
......@@ -4,7 +4,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/sym.out",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_grepexists("$workdir/out","it= 9 is completed");
......
......@@ -4,7 +4,7 @@ jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/sym.out",$workdir);
jt::copyfile("files/enpara",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_grepexists("$workdir/out","it= 1 is completed");
......
......@@ -4,7 +4,7 @@
jt::copyfile("files/inp.xml",$workdir);
jt::copyfile("files/sym.out",$workdir);
jt::testrun("$executable -xmlInput",$workdir);
jt::testrun("$executable ",$workdir);
#now test output
$result=jt::test_grepexists("$workdir/out","it= 1 is completed");
......
......@@ -5,25 +5,28 @@
!--------------------------------------------------------------------------------
MODULE m_types_kpts
INTEGER,PARAMETER:: kpts_by_number=1
INTEGER,PARAMETER:: kpts_by_mesh =2
INTEGER,PARAMETER:: kpts_by_list =3
TYPE t_kpts
INTEGER :: specificationType
INTEGER :: specificationType
!no
INTEGER :: nkpt
INTEGER :: ntet
REAL :: posScale
LOGICAL :: l_gamma
INTEGER :: nkpt
INTEGER :: ntet
REAL :: posScale
LOGICAL :: l_gamma
!(3,nkpt) k-vectors internal units
REAL,ALLOCATABLE ::bk(:,:)
REAL,ALLOCATABLE :: bk(:,:)
!(nkpts) weights
REAL,ALLOCATABLE ::wtkpt(:)
INTEGER :: nkptf !<k-vectors in full BZ
INTEGER :: nkpt3(3)
REAL :: kPointDensity(3) ! only used if k point set is defined as density
REAL ,ALLOCATABLE :: bkf(:,:)
INTEGER,ALLOCATABLE :: bkp(:)
INTEGER,ALLOCATABLE :: bksym(:)
REAL,ALLOCATABLE :: wtkpt(:)
INTEGER :: nkptf !<k-vectors in full BZ