Commit 67e53cd1 authored by Daniel Wortmann's avatar Daniel Wortmann
Browse files

Modified help system, moved routines dealingwith kpint generation into own directory

parent a7b87600
......@@ -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/closure.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
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
)
!--------------------------------------------------------------------------------
! 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_apwsdim
CONTAINS
SUBROUTINE apws_dim(&
& bkpt,cell,input,noco,oneD,&
& nv,nv2,kq1d,kq2d,kq3d)
!
!*********************************************************************
! determines dimensions of the lapw basis set with |k+G|<rkmax.
! bkpt is the k-point given in internal units
!
! dimensions kq(i)d for charge density FFT added.
! s. bluegel, JRCAT, Feb. 97
!*********************************************************************
USE m_boxdim
USE m_ifft, ONLY : ifft235
USE m_types
IMPLICIT NONE
REAL,INTENT(IN) :: bkpt(3)
TYPE(t_cell),INTENT(IN) :: cell
TYPE(t_input),INTENT(IN) :: input
TYPE(t_noco),INTENT(IN) :: noco
TYPE(t_oneD),INTENT(IN) :: oneD
INTEGER,INTENT(OUT) :: nv,nv2,kq1d,kq2d,kq3d
INTEGER j1,j2,j3,mk1,mk2,mk3,iofile,ksfft
INTEGER ispin,nvh(2),nv2h(2)
REAL arltv1,arltv2,arltv3,rkm,rk2,r2,s(3),gmaxp
! ..
!
!-------> ABBREVIATIONS
!
! iofile : device number for in and output
! gmax : cut-off wavevector for charge density
! rkmax : cut-off for |g+k|
! gmaxp : gmaxp = gmax/rkmax, ideal: gmaxp=2
! arltv(i) : length of reciprical lattice vector along
! direction (i)
!
!---> Determine rkmax box of size mk1, mk2, mk3,
! for which |G(mk1,mk2,mk3) + (k1,k2,k3)| < rkmax
!
CALL boxdim(cell%bmat,arltv1,arltv2,arltv3)
! (add 1+1 due to integer rounding, strange k_vector in BZ)
mk1 = int(input%rkmax/arltv1) + 2
mk2 = int(input%rkmax/arltv2) + 2
mk3 = int(input%rkmax/arltv3) + 2
rkm = input%rkmax
rk2 = rkm*rkm
!---> obtain vectors
!---> in a spin-spiral calculation different basis sets are used for
!---> the two spin directions, because the cutoff radius is defined
!---> by |G + k +/- qss/2| < rkmax.
DO ispin = 1,2
nv = 0
nv2 = 0
DO j1 = -mk1,mk1
s(1) = bkpt(1) + j1 + (2*ispin - 3)/2.0*noco%qss(1)
DO j2 = -mk2,mk2
s(2) = bkpt(2) + j2 + (2*ispin - 3)/2.0*noco%qss(2)
!---> nv2 for films
s(3) = 0.0
!r2 = dotirp(s,s,cell%bbmat)
r2 = dot_product(matmul(s,cell%bbmat),s)
IF (r2.LE.rk2) nv2 = nv2 + 1
DO j3 = -mk3,mk3
s(3) = bkpt(3) + j3 + (2*ispin - 3)/2.0*noco%qss(3)
!r2 = dotirp(s,s,cell%bbmat)
r2 = dot_product(matmul(s,cell%bbmat),s)
IF (r2.LE.rk2) THEN
nv = nv + 1
END IF
END DO
END DO
END DO
!-odim
IF (oneD%odd%d1) THEN
nv2 = 0
s(1) = 0.0
s(2) = 0.0
DO j3 = -mk3,mk3
s(3) = bkpt(3) + j3 + (2*ispin - 3)/2.0*noco%qss(3)
!r2 = dotirp(s,s,cell%bbmat)
r2 = dot_product(matmul(s,cell%bbmat),s)
IF (r2.LE.rk2) THEN
nv2 = nv2 + 1
END IF
END DO
END IF
!+odim
nvh(ispin) = nv
nv2h(ispin) = nv2
END DO
nv = max(nvh(1),nvh(2))
nv2 = max(nv2h(1),nv2h(2))
!---> Determine the dimensions kq1d, kq2d, kq3d
! of the dimension of the charge density fft-box
! needed for the fast calculation of pw density
! (add 1 due to integer rounding,
! factor 2 due to positive domain)
!
gmaxp = 2.0
CALL boxdim(cell%bmat,arltv1,arltv2,arltv3)
!
mk1 = int(gmaxp*input%rkmax/arltv1) + 1
mk2 = int(gmaxp*input%rkmax/arltv2) + 1
mk3 = int(gmaxp*input%rkmax/arltv3) + 1
!---> add + 1 in spin spiral calculation, to make sure that all G's are
!---> still within the FFT-box after being shifted by the spin spiral
!---> q-vector.
IF (noco%l_ss) THEN
mk1 = mk1 + 1
mk2 = mk2 + 1
mk3 = mk3 + 1
ENDIF
!
kq1d = 2*mk1
kq2d = 2*mk2
kq3d = 2*mk3
!
!---> fft's are usually fastest for low primes
! (restrict kqid to: kqid= (2**P) * (3**Q) * (5**R)
!
ksfft = 1
! ksfft=(0,1) : KEY OF SELECTING FFT-PRDOGRAM AND RADIX-TYPE
! 0 PROGRAM, RADIX-2 ONLY
! 1 PROGRAM, RADIX-2, RADIX-3,RADIX-5
kq1d = ifft235(6,ksfft,kq1d,gmaxp)
kq2d = ifft235(6,ksfft,kq2d,gmaxp)
kq3d = ifft235(6,ksfft,kq3d,gmaxp)
RETURN
END SUBROUTINE
END
......@@ -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
......
......@@ -175,6 +175,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
)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment