diff --git a/CHANGELOG.md b/CHANGELOG.md index 493d5bdfb239a9fdb761af5ded85e8eadbc500e1..8e6b38dfb6dfc878b148c60c05aa2df44d238ee6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,17 +15,15 @@ ---- -## *UNRELEASED* (last updated: 2020-03-19) +## *UNRELEASED* (last updated: 2021-01-18) **Here we collect the list of *added*, *changed*, *deprecated*, *removed* and *fixed* features in preparation for the next release.** ### Added -- `EFSET` option for voronoi: read in whished value of Fermi level from inputcard (core state energies of starting potential is shifted accordingly) -- `<AFAC_RAD>` input for voronoi: read in a factor of radial mesh (r(i)=b*(exp(a*(i-1))-1)) where b is determined from a and rmt. Default value (a=0.025) is obtained with setting AFAC_RAD to a negative number. If a is increased (decreased) the start of the radial mesh is shifted to a lower (higher) radius. -- `POT_NS_CUTOFF` option for KKRhost and KKRimp (see issue #124) +- None ### Changed -- cutoff of potential components which are (almost) zero (see issue #124 and `POT_NS_CUTOFF`) +- None ### Deprecated - None @@ -36,6 +34,40 @@ ### Fixed - None +---- + +## v3.5 (2021-01-18) + +Some improvements and bugfixes to use with AiiDA-KKR plugin. + +### Added +- `EFSET` option for voronoi: read in whished value of Fermi level from inputcard (core state energies of starting potential is shifted accordingly) +- `<AFAC_RAD>` input for voronoi: read in a factor of radial mesh (r(i)=b*(exp(a*(i-1))-1)) where b is determined from a and rmt. Default value (a=0.025) is obtained with setting AFAC_RAD to a negative number. If a is increased (decreased) the start of the radial mesh is shifted to a lower (higher) radius. +- `POT_NS_CUTOFF` option for KKRhost and KKRimp (see issue #124) +- improved cmake settings (compile options `TIMING_DETAIL`, `ENABLE_DEBUG_SYMBOLS`, `OPTFLAGS_xHOST`. `OPTFLAGS_AMD`, `OPTFLAGS_AVX512`, `ENABLE_OMP_EVERYWHERE` and `ENABLE_OPTRPT`) +- add MKL patch for AMD hardware with `ENABLE_PATCH_INTEL` compile option (needs `mpiifort`, MPI+OpenMP parallelization and `OPTFLAGS_AMD` to be active) +- add broyden spin mixing for nonco angles +- add `NSIMPLEMIXFIRST` input to do some simplemixing steps before Broyden starts +- add `set_kmesh_large` run option to force the largest k-mesh on all energy points +- timing information for PKKprime +- use '#' as comment sign in inputcard (see issue #128) + +### Changed +- cutoff of potential components which are (almost) zero (see issue #124 and `POT_NS_CUTOFF`) +- rename `set_cheby_nosoc` to `decouple_spins_cheby` (now `set_cheby_nosoc` again gives the expected behavior of setting `SOCSCALE` to 0, see issue #120) +- print run and test options in the beginning to `output.000.txt` + +### Removed +- `mixbroydenspinangle` in KKRimp that was unused and a copy of `mixbroydenspin` + +### Fixed +- writeout of test and run options which printed garbage becaus of missing initialization +- behavior when `VCONST` and `IVSHIFT` are in input +- open some output file of KKRimp only when necessary +- small fixes for LDA+U +- small bugfixes + +---- ## v3.4 (2019-08-30) diff --git a/CMakeLists.txt b/CMakeLists.txt index 34f7dc7e476c1c1b5a8f74f8f0211713a48f2b7c..c887a7079ad157d439e6c2f9c40248502a37b32b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,8 @@ set(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR}/modules) # here the executables are written to set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ./ ) +# maybe useful for future library dependecies +set(complib "") # we define some compiler flags include( ./cmake/compiler_config.txt ) @@ -16,18 +18,26 @@ include( ./cmake/compiler_config.txt ) #define build type and compile options include( ./cmake/compile_options.txt ) - -# maybe useful for future library dependecies -set(complib "") +# default values for compile options (see cmake/compile_options.txt for details) +option(TIMING_DETAIL "Write detailed timing information (e.g. in rllsll)" OFF) +option(ENABLE_DEBUG_SYMBOLS "Add debug symbols (-g) everywhere" OFF) +option(ENABLE_OPTRPT "Generate optimization reports (*.optrpt files) at compilation" OFF) +option(OPTFLAGS_xHOST "Turn on xHost optimization flag for release build" ON) +option(OPTFLAGS_AVX512 "Use AVX512 instruction set for release build" OFF) +option(OPTFLAGS_AMD "FLAGS for AMD64 node on iffslurm (see compiler_config.txt)" OFF) +option(ENABLE_PATCH_INTEL "Use patch to make MKL think it works on intel hardware (EXPERIMENTAL!!!)" OFF) +option(ENABLE_MPI "Enable MPI parallelization" ON) +option(ENABLE_OMP "Enable OpenMP parallelization" OFF) +option(ENABLE_OMP_EVERYWHERE "Add openmp compile flags everywhere" OFF) # default values of codes to compile: option(COMPILE_KKRHOST "Compile KKRhost" ON) -option(COMPILE_KKRIMP "Compile KKRimp" ON) +option(COMPILE_KKRIMP "Compile KKRimp" OFF) option(COMPILE_KKRSUSC "Compile KKRsusc" OFF) -option(COMPILE_PKKPRIME "Compile PKKprime" ON) +option(COMPILE_PKKPRIME "Compile PKKprime" OFF) option(COMPILE_VORONOI "Compile voronoi" ON) -option(COMPILE_RHOQ "Compile rhoq" ON) +option(COMPILE_RHOQ "Compile rhoq" OFF) option(WRITE_RLLSLL_STANDALONE_INPUT "Set option to write out rllsll input files" OFF) option(ENABLE_RLLSLL_STANDALONE "Compile rllsll standalone test exec" OFF) diff --git a/cmake/compile_options.txt b/cmake/compile_options.txt index 3ded148817eae415e9e48f038b54a30019a4e986..3ba222a809a5a840c73a0f485c9b42bc41108234 100644 --- a/cmake/compile_options.txt +++ b/cmake/compile_options.txt @@ -11,13 +11,14 @@ endif() # common preprocessing options for all compilers add_definitions(-DCPP_TIMING) +if(TIMING_DETAIL) + add_definitions(-DCPP_TIMING_DETAIL) +endif() # compiler flags etc for parallelization # MPI option (enable with '-DENABLE_MPI=ON') # and OpenMP option (enable with '-DENABLE_OMP=ON') # hybrid version with -DENABLE_MPI=ON and -DENABLE_OMP=ON -option(ENABLE_MPI "Enable MPI parallelization" ON) -option(ENABLE_OMP "Enable OpenMP parallelization" OFF) set(ompflags "") # default if(ENABLE_MPI) message("MPI is enabled") @@ -29,6 +30,9 @@ if(ENABLE_MPI) set(ompflags "-qopenmp") elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU) set(ompflags "-fopenmp") + if(ENABLE_TSAN) + set(ompflags "${ompflags} -lomp") + endif() endif() set(compflag "hybrid") else() @@ -41,11 +45,25 @@ elseif(ENABLE_OMP) set(ompflags "-qopenmp") elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU) set(ompflags "-fopenmp") + if(ENABLE_TSAN) + set(ompflags "${ompflags} -lomp") + endif() endif() set(compflag "openmp") else() message("both MPI and OpenMP are disabled") endif() +if(ENABLE_OMP_EVERYWHERE) + if(CMAKE_Fortran_COMPILER_ID MATCHES Intel) + set(ompflags "-qopenmp") + elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU) + set(ompflags "-fopenmp") + if(ENABLE_TSAN) + set(ompflags "${ompflags} -lomp") + endif() + endif() + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${ompflags}") +endif() # extract version info # generate a Git version string @@ -57,9 +75,3 @@ add_definitions(-DCOMPVER2="${compver}") add_definitions(-DCOMPVER3="${compflag}") add_definitions(-DCOMPVER4="${complib}") - - -if(ENABLE_BdG) - add_definitions(-DCPP_BdG) -endif() - diff --git a/cmake/compiler_config.txt b/cmake/compiler_config.txt index 87f53953e99710c45ed7db09e9532c3e4dc9afe9..b0a18507d2a4953a634948128264d5b524aa322a 100644 --- a/cmake/compiler_config.txt +++ b/cmake/compiler_config.txt @@ -1,10 +1,28 @@ + +# automatically activate USE_LIBFLAME if BLIS_PATH and/or FLAME_PATH is given +if(BLIS_PATH OR FLAME_PATH) + message("BLIS_PATH or FLAME_PATH was given in the input. This triggers using the FLAME and BLIS libraries instead of BLAS+LAPACK.") + set(USE_LIBFLAME "ON") +else() + # this means we don't use libflame + set(USE_LIBFLAME "OFF") +endif() + +# now compiler flags etc. first intel, then gfortran + if(CMAKE_Fortran_COMPILER_ID MATCHES Intel) message("Intel compiler found") set(compver "intel") # standard compiler flags - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -traceback") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -traceback") + if(ENABLE_DEBUG_SYMBOLS) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g") + endif() + if(ENABLE_OPTRPT) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qopt-report=5") + endif() # increase stacksize on mac if(CMAKE_SYSTEM_NAME MATCHES Darwin) @@ -12,33 +30,57 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES Intel) set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Wl,-stack_size,0x80000000,-stack_addr,0xf0000000") endif() - # link serial or parallel mkl - if(ENABLE_OMP) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mkl=parallel") + if(USE_LIBFLAME) + # tell the BLIS and FLAME libs are set later, for the intel compiler we additionally need to deactovate the PARDISO solver which is part of mkl but not in libflame + add_definitions(-DNO_PARDISO) else() - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mkl=sequential") + # link serial or parallel mkl + if(ENABLE_OMP) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mkl=parallel") + else() + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mkl=sequential") + endif() endif() # debug flags - set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -r8 -CB -check all -check uninit -ftrapuv -gen-interfaces -warn all -warn notruncated_source -fpe0 -debug extended -traceback -g -sox") - #set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -r8 -CB -check all -check uninit -gen-interfaces -warn all -warn notruncated_source -debug extended -traceback -g -sox") + set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -r8 -CB -check all,noarg_temp_created -check uninit -ftrapuv -gen-interfaces -warn all -warn notruncated_source -fpe0 -debug extended -traceback -g -sox") + #set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -r8 -CB -check all,noarg_temp_created -check uninit -gen-interfaces -warn all -warn notruncated_source -debug extended -traceback -g -sox") # release flags - set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -ip -xHOST") + if(OPTFLAGS_xHOST) + + set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -ip -xHOST") + + elseif(OPTFLAGS_AMD) + + set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -march=core-avx2 -align array64byte -fma -ftz -fomit-frame-pointer") + if(ENABLE_PATCH_INTEL) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Wl,--allow-multiple-definition -static-intel -mkl") + #set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Wl,--allow-multiple-definition -static-intel -mkl -assume byterecl") + #set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -O3 -march=core-avx2 -mtune=core-avx2 -g") + set(complib "mklpatch ${complib}") + endif() + + elseif(OPTFLAGS_AVX512) + + set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -ip -xCORE-AVX512") + + endif() + if(NOT COMPILE_KKRIMP) set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -r8") endif() # add special flags for voronoi code if(COMPILE_VORONOI) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mcmodel medium -shared-intel") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mcmodel medium -shared-intel") endif() # for coverage report if(ENABLE_COV) message("Set profiling flags for test coverage report") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -prof-gen:srcpos") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -prof-gen:srcpos") endif() # the old compiler (e.g. v12.1.3 on iff003) does not recognize @@ -54,35 +96,45 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU) set(compver "gnu") # standard compiler flags - #set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none -fdefault-real-8 -fimplicit-none") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -lblas -llapack -ffree-line-length-none") + #set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none -fdefault-real-8 -fimplicit-none") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-none") # debug flags # -finit-local-zero - set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g3 -fcheck=all -fbacktrace -Wall -Wextra -mtune=native") + set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g3 -fcheck=all -fbacktrace -Wall -Wextra -mtune=native") # release flags - set(CMAKE_Fortran_FLAGS_RELEASE "-Ofast -march=native -fbacktrace") + if(OPTFLAGS_AMD) + set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -march=znver1 -mtune=znver1 -mfma -mavx2 -m3dnow -fomit-frame-pointer") + else() + set(CMAKE_Fortran_FLAGS_RELEASE "-Ofast -march=native -fbacktrace") + endif() # flags for code-coverage if(ENABLE_COV) message("Set profiling flags for test coverage report") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fprofile-arcs -ftest-coverage -fPIC") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fprofile-arcs -ftest-coverage -fPIC") + endif() + + # flags for thread sanitizer + if(ENABLE_TSAN) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fsanitize=thread -g") + set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG") endif() # disable MD5 sums for GNU compiler add_definitions(-DCPP_NOMD5) - # lapack lib on iff machines - #set(MKLROOT "/usr/local/intel/mkl") - #find_package(BLAS REQUIRED) - #message("Found BLAS version ${BLAS_VERSION}") - #find_package(LAPACK REQUIRED) - #message("Found LAPACK version ${LAPACK_VERSION}") - - find_package(BLAS) - find_package(LAPACK) - if(LAPACK_FOUND AND BLAS_FOUND) - set(lapackblas_libraries ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}) + # BLAS for thread sanitizer (POP analysis) + if(ENABLE_TSAN) + set(BLA_VENDOR "Intel10_64lp") + endif() + + if(NOT USE_LIBFLAME) + # try to find BLAS and LAPACK automatically + find_package(BLAS REQUIRED) + message("Found BLAS version ${BLAS_VERSION}: ${BLAS_LIBRARIES}") + find_package(LAPACK REQUIRED) + message("Found LAPACK version ${LAPACK_VERSION}: ${LAPACK_LIBRARIES}") endif() @@ -92,11 +144,40 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU) elseif(CMAKE_Fortran_COMPILER_ID MATCHES NAG) message("NAG compiler found") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Imodules -L/usr/local/intel/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core") - set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -C=all") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Imodules -L/usr/local/intel/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core") + set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -C=all") set(CMAKE_Fortran_FLAGS_RELEASE "-O3") # disable MD5 sums for gnu compiler add_definitions(-DCPP_NOMD5) set(compver "nag") endif() + + +if(USE_LIBFLAME) + # tell CMAKE to ues libflame in libs directory (there we link blis and libflame from where they are compiled) + # check if path to BLIS lib is given + if(BLIS_PATH) + message("BLIS_PATH was given in the input. We use this library for all BLAS calls.") + set(BLAS_LIBRARIES "${BLIS_PATH}") + else() + message(FATAL_ERROR "BLIS_PATH not set. Please specify the location of the BLIS library with -DBLIS_PATH=<path-to-libblis-mt.a>") + endif() + # check if path to FLAME lib is given + if(FLAME_PATH) + message("FLAME_PATH was given in the input. We use this library for all LAPACK calls.") + set(LAPACK_LIBRARIES "${FLAME_PATH}") + else() + message(FATAL_ERROR "FLAME_PATH not set. Please specify the location of the FLAME library with -FLAME_PATH=<path-to-libflame.a>") + endif() + set(complib "libflame") + set(complib "${complib} libflame") + message("Use BLIS: ${BLAS_LIBRARIES}") + message("Use LAPACK: ${LAPACK_LIBRARIES}") + # we need to make sure that these are linked with the openmp flags since on the cluster they are compiled like that + if(CMAKE_Fortran_COMPILER_ID MATCHES Intel) + set(LAPACK_LIBRARIES "-qopenmp ${LAPACK_LIBRARIES}") + elseif(CMAKE_Fortran_COMPILER_ID MATCHES GNU) + set(LAPACK_LIBRARIES "-fopenmp ${LAPACK_LIBRARIES}") + endif() +endif() \ No newline at end of file diff --git a/cmake/source_list_KKRhost.txt b/cmake/source_list_KKRhost.txt index a5db6c01541d289ce53a8225e5254be1e4388282..e1b1f80333752b0ceeb0b4c6991d8fd86644d526 100644 --- a/cmake/source_list_KKRhost.txt +++ b/cmake/source_list_KKRhost.txt @@ -12,8 +12,6 @@ if(ENABLE_MPI) # this works only in hybrid mode at the moment and not with OpenM endif() # parallelization of global/local solutions broken, probably because local solutions are called within global solutions -#set_source_files_properties(source/KKRhost/rll_global_solutions.F90 PROPERTIES COMPILE_FLAGS "${ompflags}") -#set_source_files_properties(source/KKRhost/sll_global_solutons.F90 PROPERTIES COMPILE_FLAGS "${ompflags}") #set_source_files_properties(source/KKRhost/rll_local_solutions.F90 PROPERTIES COMPILE_FLAGS "${ompflags}") #set_source_files_properties(source/KKRhost/sll_local_solutons.F90 PROPERTIES COMPILE_FLAGS "${ompflags}") @@ -28,11 +26,19 @@ endif() if(WRITE_RLLSLL_STANDALONE_INPUT) add_definitions(-Dtest_prep) endif() +if(WRITE_KLOOP_STANDALONE_INPUT) + add_definitions(-DCPP_WRITE_KLOOP_TEST_INPUT) +endif() # some static dimensions used in Dirac solver execute_process(COMMAND ln -s ../source/KKRhost/sprkkr_rmesh.dim .) + +# external libraries (need their own CMakeLists!) +#add_subdirectory(source/external/NPY-for-Fortran) + + # these are the source files of KKRhost, create kkr_library to be able to conveniently reuse parts of if in BdG development version add_library(lib_common STATIC source/common/broyden.f90 @@ -103,8 +109,23 @@ add_library(lib_common STATIC source/common/wronskian.f90 source/common/mathtools.f90 ) -# disable cmake auto add pf 'lib' prefix to .so file +# disable cmake auto add of 'lib' prefix to .so file SET_TARGET_PROPERTIES(lib_common PROPERTIES PREFIX "") + + +if(ENABLE_PATCH_INTEL) + # disable cmake auto add of 'lib' prefix to .so file + add_library(lib_patch_intel STATIC + source/common/patch_intel.c + source/common/patch_intel.f90 + ) + SET_TARGET_PROPERTIES(lib_patch_intel PROPERTIES PREFIX "") + # activate preprcessor flag to call patch_intel subroutine + add_definitions(-DCPP_PATCH_INTEL) + target_link_libraries(lib_common lib_patch_intel) +endif() + + add_library(lib_kkrhost STATIC source/KKRhost/addvirtual14.f90 source/KKRhost/amemagvec.f90 @@ -367,7 +388,7 @@ add_library(lib_kkrhost STATIC source/KKRhost/wunfiles.F90 source/KKRhost/ylag.f90 ) -# disable cmake auto add pf 'lib' prefix to .so file +# disable cmake auto add of 'lib' prefix to .so file SET_TARGET_PROPERTIES(lib_kkrhost PROPERTIES PREFIX "") target_link_libraries(lib_kkrhost lib_common) @@ -378,8 +399,8 @@ add_executable( source/KKRhost/main_all.F90 ) target_link_libraries(kkr.x lib_kkrhost) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(kkr.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(kkr.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() target_link_libraries(kkr.x "${ompflags}") @@ -391,7 +412,7 @@ if(ENABLE_BdG) source/KKRhost/main1a_dummy_BdG.f90 ) target_link_libraries(kkr_BdG_radial.x lib_kkrhost) - if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(kkr_BdG_radial.x ${lapackblas_libraries}) + if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(kkr_BdG_radial.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() endif() diff --git a/cmake/source_list_KKRimp.txt b/cmake/source_list_KKRimp.txt index f6e74a6b3cc97b14e12174fca142749a18b923af..0b77fbb70bea76702966bf57fa4d65afbc8203c8 100644 --- a/cmake/source_list_KKRimp.txt +++ b/cmake/source_list_KKRimp.txt @@ -185,6 +185,6 @@ add_executable( source/KKRimp/kkrflex.F90 ) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(kkrflex.exe ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(kkrflex.exe ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() diff --git a/cmake/source_list_PKKprime.txt b/cmake/source_list_PKKprime.txt index 842b52d813d8f91168f14d876b337e0907088f98..05d007c57fe291ece0542466c4242cceb3d3d6d7 100644 --- a/cmake/source_list_PKKprime.txt +++ b/cmake/source_list_PKKprime.txt @@ -26,6 +26,7 @@ add_library(lib_pkkr STATIC source/common/global_variables.F90 source/common/version_info.F90 source/common/version.F90 + source/common/profiling.f90 source/PKKprime/type_inc.F90 source/PKKprime/mod_mympi.F90 source/PKKprime/mod_ioformat.f90 @@ -59,8 +60,8 @@ add_executable( source/PKKprime/main.f90 ) target_link_libraries(Pkkr.x lib_pkkr) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(Pkkr.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(Pkkr.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() @@ -71,8 +72,8 @@ add_executable( source/PKKprime/bands.f90 ) target_link_libraries(band.x lib_pkkr) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(band.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(band.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() @@ -82,8 +83,8 @@ add_executable( source/PKKprime/mergerefined.F90 ) target_link_libraries(mergerefined.x lib_pkkr) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(mergerefined.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(mergerefined.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() @@ -93,8 +94,8 @@ add_executable( source/PKKprime/refineBZparts.f90 ) target_link_libraries(refineBZparts.x lib_pkkr) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(refineBZparts.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(refineBZparts.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() @@ -104,8 +105,8 @@ add_executable( source/PKKprime/Amatprecalc.f90 ) target_link_libraries(Amatprecalc.x lib_pkkr) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(Amatprecalc.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(Amatprecalc.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() @@ -115,8 +116,8 @@ add_executable( source/PKKprime/calculate_spinmixing.F90 ) target_link_libraries(calculate_spinmixing.x lib_pkkr) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(calculate_spinmixing.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(calculate_spinmixing.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() @@ -126,8 +127,8 @@ add_executable( source/PKKprime/visdata.F90 ) target_link_libraries(visdata.x lib_pkkr) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(visdata.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(visdata.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() @@ -137,8 +138,8 @@ add_executable( source/PKKprime/vis2int.F90 ) target_link_libraries(vis2int.x lib_pkkr) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(vis2int.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(vis2int.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() @@ -148,7 +149,7 @@ add_executable( source/PKKprime/test.F90 ) target_link_libraries(test.x lib_pkkr) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(test.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(test.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() diff --git a/cmake/source_list_rhoq.txt b/cmake/source_list_rhoq.txt index d2cba895665b4f2c49746cadcd687e2965d2b83b..9376a28726a99c39218fada7ef494a7c0a173f2f 100644 --- a/cmake/source_list_rhoq.txt +++ b/cmake/source_list_rhoq.txt @@ -30,6 +30,6 @@ add_executable( source/rhoq/mod_rhoq.F90 ) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(rhoq.x ${lapackblas_libraries}) +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(rhoq.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) endif() diff --git a/cmake/source_list_rllsll_test.txt b/cmake/source_list_rllsll_test.txt index e18fbb77225ccc54b68db3b09e460ea826d7f9c8..1302eafe815000e82c3bd67321d3fe8cedc6a7d2 100644 --- a/cmake/source_list_rllsll_test.txt +++ b/cmake/source_list_rllsll_test.txt @@ -14,6 +14,6 @@ add_executable( source/common/version_info.F90 source/common/version.F90 ) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(rllsll_standalone.x ${lapackblas_libraries}) -endif() + +target_link_libraries(rllsll_standalone.x ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) + diff --git a/cmake/source_list_voronoi.txt b/cmake/source_list_voronoi.txt index 21d985530e3fac6fc96a1c3eacbebd5aa801364c..96d78430c7e0dc970b66268e346836bda2a0eb8e 100644 --- a/cmake/source_list_voronoi.txt +++ b/cmake/source_list_voronoi.txt @@ -61,6 +61,6 @@ add_executable( source/voronoi/inc.geometry ) -if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - target_link_libraries(voronoi.exe ${lapackblas_libraries}) -endif() +if(CMAKE_Fortran_COMPILER_ID MATCHES GNU OR USE_LIBFLAME) + target_link_libraries(voronoi.exe ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) +endif() \ No newline at end of file diff --git a/docs/settings_ford.md b/docs/settings_ford.md index 9728dfceec4099c5b4a638d1e4065b2dd5fd4621..d87a1dc755b6fcd47347eb28dd784339391e2af9 100644 --- a/docs/settings_ford.md +++ b/docs/settings_ford.md @@ -3,7 +3,7 @@ summary: Source code documentation of the Jülich KKR code family author: The Jülich KKR team email: p.ruessmann@fz-juelich.de license: by-nc -version: 3.4 +version: 3.5 project_website: https://iffgit.fz-juelich.de/kkr/jukkr project_download: https://iffgit.fz-juelich.de/kkr/jukkr src_dir: ../source/common/ diff --git a/source/KKRhost/bzirr3d.f90 b/source/KKRhost/bzirr3d.f90 index 8095792979c7b218da83616f0cd941cd22f446d2..761e6843cc04091f24e8ccbdfa6549fa58715724 100644 --- a/source/KKRhost/bzirr3d.f90 +++ b/source/KKRhost/bzirr3d.f90 @@ -85,6 +85,8 @@ contains allocate (ibk(0:maxk1,0:maxk2,0:maxk3)) + ! initialization + cf(:) = 0.0_dp ! heck if we are in surface mode lsurf = .false. diff --git a/source/KKRhost/kkrmat01.F90 b/source/KKRhost/kkrmat01.F90 index 0c7baf70114e4ed9f65bf8d051b1daeb12d12082..37f75774bd416b25cb4e3d5c51d3dcdd88be02df 100644 --- a/source/KKRhost/kkrmat01.F90 +++ b/source/KKRhost/kkrmat01.F90 @@ -52,7 +52,7 @@ contains #endif use :: mod_types, only: t_inc use :: mod_runoptions, only: print_program_flow, use_Chebychev_solver, use_qdos, use_virtual_atoms, & - write_green_imp, write_rhoq_input, set_cheby_nosoc + write_green_imp, write_rhoq_input, decouple_spins_cheby use :: mod_rhoqtools, only: rhoq_find_kmask, rhoq_saveg, rhoq_write_tau0, rhoq_read_mu0_scoef use :: global_variables, only: nembd1, nembd2, nsheld, nclsd, naclsd, lmmaxd, nprincd, nrd, nrefd, lmgf0d, krel, ndim_slabinv, alm, almgf0 use :: mod_constants, only: czero, cone, nsymaxd, ci,pi @@ -343,7 +343,7 @@ contains ! ---------------------------------------------------------------------- ! LLY Lloyd ! -------------------------------------------------------------------- - if (.not. use_Chebychev_solver .or. set_cheby_nosoc) then + if (.not. use_Chebychev_solver .or. decouple_spins_cheby) then ! $omp single do i2 = 1, alm do i1 = 1, alm diff --git a/source/KKRhost/main0.F90 b/source/KKRhost/main0.F90 index 8dfbdbb8a3436304a645382bd4ec4586c30f309c..b53aca49136d9c378a2bc932e3ecf0ba93da1b21 100644 --- a/source/KKRhost/main0.F90 +++ b/source/KKRhost/main0.F90 @@ -1477,7 +1477,7 @@ contains write (iunit, '(1A)') ' Screened Korringa-Kohn-Rostoker Electronic Structure Code' write (iunit, '(1A)') ' for Bulk and Interfaces' - write (iunit, '(1A)') ' Juelich-Munich 2001 - 2018' + write (iunit, '(1A)') ' Juelich-Munich 2001 - 2021' write (iunit, '(1A)') '' write (iunit, '(2A)') ' Code version: ', trim(version1) write (iunit, '(6A)') ' Compile options: ', trim(version2), ' ', trim(version3), ' ', trim(version4) diff --git a/source/KKRhost/main1b.F90 b/source/KKRhost/main1b.F90 index 6ea3c30a498566cd3bf34acf29456ad96a850802..d03d3c1818365fb88696d9e69fb9aa1633b74848 100644 --- a/source/KKRhost/main1b.F90 +++ b/source/KKRhost/main1b.F90 @@ -37,7 +37,7 @@ contains use :: mod_datatypes, only: dp, sp use :: mod_runoptions, only: calc_exchange_couplings, formatted_file, set_gmat_to_zero, use_Chebychev_solver, & use_qdos, use_readcpa, write_deci_tmat, write_gmat_plain, write_green_host, write_green_imp, write_kkrimp_input, & - write_pkkr_input, write_pkkr_operators, write_rhoq_input, write_gmat_ascii, set_cheby_nosoc + write_pkkr_input, write_pkkr_operators, write_rhoq_input, write_gmat_ascii, decouple_spins_cheby use :: mod_constants, only: czero, cone, pi use :: mod_operators_for_fscode, only: operators_for_fscode use :: mod_getscratch, only: opendafile @@ -522,9 +522,9 @@ contains end if do i = 1, lm1 trefll(i, i, i1) = wn1(i, i) - if (use_Chebychev_solver .and. .not.set_cheby_nosoc) trefll(lm1+i, lm1+i, i1) = wn1(i, i) + if (use_Chebychev_solver .and. .not.decouple_spins_cheby) trefll(lm1+i, lm1+i, i1) = wn1(i, i) dtrefll(i, i, i1) = wn2(i, i) ! LLY - if (use_Chebychev_solver .and. .not.set_cheby_nosoc) dtrefll(lm1+i, lm1+i, i1) = wn2(i, i) ! LLY + if (use_Chebychev_solver .and. .not.decouple_spins_cheby) dtrefll(lm1+i, lm1+i, i1) = wn2(i, i) ! LLY end do if (write_rhoq_input) then @@ -567,7 +567,7 @@ contains tmat(:, :) = t_tgmat%tmat(:, :, irec) end if - if (use_Chebychev_solver .and. .not. set_cheby_nosoc) then + if (use_Chebychev_solver .and. .not. decouple_spins_cheby) then ! read in theta and phi for noncolinear theta = theta_at(i1) phi = phi_at(i1) @@ -587,7 +587,7 @@ contains tmat(:, :) = t_lloyd%dtmat(:, :, irec) end if - if (use_Chebychev_solver .and. .not. set_cheby_nosoc) call rotatematrix(tmat, theta, phi, lmgf0d, 0) ! LLY + if (use_Chebychev_solver .and. .not. decouple_spins_cheby) call rotatematrix(tmat, theta, phi, lmgf0d, 0) ! LLY dtmatll(1:lmmaxd, 1:lmmaxd, i1) = tmat(1:lmmaxd, 1:lmmaxd) ! LLY if (t_lloyd%dtmat_to_file) then @@ -752,7 +752,7 @@ contains if (lly/=0) then ! LLY - if (use_Chebychev_solver .and. .not.set_cheby_nosoc) then + if (use_Chebychev_solver .and. .not.decouple_spins_cheby) then cdos_lly(ie, ispin) = tralpha(ie, ispin) - lly_grtr(ie, ispin)/volbz(1) + 2.0_dp*lly_g0tr(ie) ! LLY else if (lly/=2) then ! LLY Lloyd diff --git a/source/KKRhost/main1c.F90 b/source/KKRhost/main1c.F90 index 7a2c0b0b3de66316c4ba2ea42015cda2a91279e6..1a4c8f23e3cc3001fc36819f019b6cac1b9e4158 100644 --- a/source/KKRhost/main1c.F90 +++ b/source/KKRhost/main1c.F90 @@ -41,7 +41,7 @@ contains use mod_datatypes, only: dp use mod_runoptions, only: calc_gmat_lm_full, fix_nonco_angles, relax_SpinAngle_Dirac, use_Chebychev_solver, & use_decimation, use_qdos, write_DOS, write_complex_qdos, write_density_ascii, write_rho2ns, write_DOS_lm, & - set_cheby_nosoc, disable_print_serialnumber + decouple_spins_cheby, disable_print_serialnumber use mod_constants, only: czero, pi use mod_profiling, only: memocc use mod_mympi, only: myrank, master @@ -811,7 +811,7 @@ contains ! Write out lm charges and moments ! ------------------------------------------------------------------- withorbmom = krel+korbit - if (set_cheby_nosoc) withorbmom = nspin-1 !withorbmom+1 + if (decouple_spins_cheby) withorbmom = nspin-1 !withorbmom+1 call wrmoms(withorbmom, natyp, nspinpot, charge, muorb, lmax, lmaxd1) ! ---------------------------------------------------------------------- diff --git a/source/KKRhost/main_all.F90 b/source/KKRhost/main_all.F90 index db144bd3ea070ec90576fe8b47cb676709c132db..0c00ce09f1bc19d71d5d1c8e31b36651411a9a05 100644 --- a/source/KKRhost/main_all.F90 +++ b/source/KKRhost/main_all.F90 @@ -4,6 +4,7 @@ ! of the MIT license as expressed in the LICENSE.md file in more detail. ! !-----------------------------------------------------------------------------------------! + ! ----------------------------------------------------------------------------------- !> Summary: Main program for the JM-KKR !> Author: Philipp Ruessmann, Bernd Zimmermann, Phivos Mavropoulos, R. Zeller, and many others ... @@ -59,7 +60,9 @@ program kkrcode rc, rcls, rclsimp, refpot, righttinvll, rmesh, rmtnew, rmtrefat, rnew, rpan_intervall, rr, rrel, rrot, rs, rws, s, rmt, rmtref, & socscale, socscl, srrel, thesme, thetas, thetasnew, tleft, tright, rmrel, uldau, vins, visp, vref, vtrel, wez, wg, wldau, & yrg, zat, zrel, ueff - +#ifdef CPP_PATCH_INTEL + use mod_patch_intel, only: patch_intel +#endif implicit none @@ -90,6 +93,16 @@ program kkrcode ! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< initialize MPI !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +#ifdef CPP_PATCH_INTEL + ! this makes the MKL think it works on intel hardware even if it runs on AMD + ! seems to give better performance than unpatched MKL or BLIS+LIBFLAME + call patch_intel() +#endif + + + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! start KKR with main0 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> diff --git a/source/KKRhost/mixnocospin.f90 b/source/KKRhost/mixnocospin.f90 index 59eb96c333b5e0f4093006176277e34b0123edee..727e2d001646f7efc81ab7ab401e1d1130564f67 100644 --- a/source/KKRhost/mixnocospin.f90 +++ b/source/KKRhost/mixnocospin.f90 @@ -23,7 +23,7 @@ contains subroutine spinmix_noco(iter, natyp, theta, phi, fixdir, angles_new, totmoment, iounit) use mod_datatypes, only: dp use mod_constants, only: pi - use mod_runoptions, only: use_boyden_spinmix, write_angles_alliter, disable_print_serialnumber, fix_nonco_angles, set_cheby_nosoc + use mod_runoptions, only: use_broyden_spinmix, write_angles_alliter, disable_print_serialnumber, fix_nonco_angles, decouple_spins_cheby use global_variables, only: qbound_spin use mod_version_info, only: version_print_header use mod_wunfiles, only: t_params @@ -45,7 +45,7 @@ contains ! MdSD,PR: write information on new angles to output file - if (.not.set_cheby_nosoc) then + if (.not.decouple_spins_cheby) then write (1337,*) write (1337, '(" I1 In/Out THETA[deg] In/Out PHI[deg] FIXDIR[boolean] RMS(angles)[deg]")') @@ -77,7 +77,7 @@ contains end do end if - end if ! .not.set_cheby_nosoc + end if ! .not.decouple_spins_cheby ! rewrite new theta and phi to nonco_angle_out.dat, nonco_angle.dat is the input if (.not. fix_nonco_angles) then @@ -87,7 +87,7 @@ contains call version_print_header(iounit, disable_print=disable_print_serialnumber) if (write_angles_alliter) open(unit=iounit+1, file='nonco_angle_out_all_iter.dat', form='formatted', position='append') - if (.not.use_boyden_spinmix) then + if (.not.use_broyden_spinmix) then ! conventional scheme: use output angles as input do i1 = 1, natyp @@ -219,7 +219,7 @@ contains phi = atan2(moment(2), moment(1)) ! theta is 0 or pi else - if (moment(3) < 0.0_dp) then + if (moment(3) < 0.0_dp .and. abs(moment(3)) > 1e-14_dp) then theta = pi else theta = 0.0_dp diff --git a/source/KKRhost/renorm_lly.f90 b/source/KKRhost/renorm_lly.f90 index bfb091b5c85bfa3528c9542f0e409f50b27ea1e9..8543348d645fe74fe3ecbbbc2d726de52a85be51 100644 --- a/source/KKRhost/renorm_lly.f90 +++ b/source/KKRhost/renorm_lly.f90 @@ -29,7 +29,7 @@ contains subroutine renorm_lly(cdos_lly, ielast, nspin, natyp, cden, lmaxp1, conc, iestart, ieend, wez, ircut, ipan, ez, zat, rho2ns, r2nef, denef, denefat, espv) use :: mod_datatypes, only: dp - use :: mod_runoptions, only: use_Chebychev_solver, set_cheby_nosoc + use :: mod_runoptions, only: use_Chebychev_solver, decouple_spins_cheby use :: mod_constants, only: czero, pi use :: global_variables, only: ipand, natypd, lmaxd, npotd, iemxd, irmd, lmpotd, krel, nspind implicit none @@ -91,7 +91,7 @@ contains end do end do ! Now the locally-summed charge/energy is in cdos_loc, charge/energy/atom in chadd - if (.not. use_Chebychev_solver .or. set_cheby_nosoc) then + if (.not. use_Chebychev_solver .or. decouple_spins_cheby) then do ie = iestart, ieend do ispin = 1, nspin ! Renormalization factor per energy: @@ -130,7 +130,7 @@ contains ! ENDDO ! ENDDO - if (nspin==1 .or. (use_Chebychev_solver .and. .not. set_cheby_nosoc) ) cren(:, 2) = cren(:, 1) + if (nspin==1 .or. (use_Chebychev_solver .and. .not. decouple_spins_cheby) ) cren(:, 2) = cren(:, 1) ! Now apply renormalization to energy-integrated density diff --git a/source/KKRhost/rhooutnew.f90 b/source/KKRhost/rhooutnew.f90 index 293f00d395725f3f03d4e412bfa08fdc2e204848..3218e7895d2188b2e2a9f39a992d5ed0b6bab661 100644 --- a/source/KKRhost/rhooutnew.f90 +++ b/source/KKRhost/rhooutnew.f90 @@ -22,7 +22,7 @@ contains rll, ull, rllleft, sllleft, cden, cdenlm, cdenns, rho2nsc, corbital, gflle_part, rpan_intervall, ipan_intervall, nspin) use :: mod_constants, only: cone,czero,pi - use :: mod_runoptions, only: calc_gmat_lm_full, use_ldau, set_cheby_nosoc + use :: mod_runoptions, only: calc_gmat_lm_full, use_ldau, decouple_spins_cheby use :: mod_profiling, only: memocc use :: global_variables, only: lmmaxd, ncleb, ntotd, nfund, korbit use :: mod_datatypes, only: dp @@ -103,7 +103,7 @@ contains pnsi = czero ! set LMSHIFT value which is need to construct CDEN - if (set_cheby_nosoc) then + if (decouple_spins_cheby) then lmshift1(:) = 0 lmshift2(:) = 0 else diff --git a/source/KKRhost/rhovalnew.F90 b/source/KKRhost/rhovalnew.F90 index ec94550143d7a532730f122e4f1e7b1bdd657bd0..5441f6e64bf490ec210c8e788d7e0427f5e8e5b2 100644 --- a/source/KKRhost/rhovalnew.F90 +++ b/source/KKRhost/rhovalnew.F90 @@ -41,7 +41,7 @@ contains use :: mod_save_wavefun, only: t_wavefunctions, read_wavefunc use :: mod_runoptions, only: calc_exchange_couplings, calc_gmat_lm_full, disable_tmat_sratrick, fix_nonco_angles, & use_qdos, write_complex_qdos, write_pkkr_operators, write_DOS_lm, set_cheby_nospeedup, & - set_cheby_nosoc, disable_print_serialnumber, set_gmat_to_zero + decouple_spins_cheby, disable_print_serialnumber, set_gmat_to_zero use :: mod_version_info, only: version_print_header use :: global_variables, only: lmmaxd, iemxd, ncleb, lmxspd, irmd, ntotd, nrmaxd, lmpotd, nspotd, nfund, korbit, mmaxd, nspind use :: mod_constants, only: czero, cvlight, cone, pi, ci @@ -224,7 +224,7 @@ contains call memocc(i_stat, product(shape(vins))*kind(vins), 'VINS', 'RHOVALNEW') vins = 0.0_dp vins(1:irmdnew, 1:lmpotd, 1) = vinsnew(1:irmdnew, 1:lmpotd, ipot) - if (.not.set_cheby_nosoc) vins(1:irmdnew, 1:lmpotd, nspin) = vinsnew(1:irmdnew, 1:lmpotd, ipot+nspin-1) + if (.not.decouple_spins_cheby) vins(1:irmdnew, 1:lmpotd, nspin) = vinsnew(1:irmdnew, 1:lmpotd, ipot+nspin-1) ! set up the non-spherical ll' matrix for potential VLL' allocate (vnspll0(lmmaxd,lmmaxd,irmdnew), stat=i_stat) @@ -477,7 +477,7 @@ contains ! recalculate wavefuntions, also include left solution ! contruct the spin-orbit coupling hamiltonian and add to potential - if ( .not. set_cheby_nosoc) then + if ( .not. decouple_spins_cheby) then call spinorbit_ham(lmax, lmmax0d, vins, rnew, eryd, zat, cvlight, socscale, nspin, lmpotd, theta, phi, ipan_intervall, & rpan_intervall, npan_tot, ncheb, irmdnew, nrmaxd, vnspll0, vnspll1(:,:,:,ith), '1') else @@ -508,7 +508,7 @@ contains jlk2(:, :, ith) = czero gmatprefactor = czero jlk_index = 0 - if (set_cheby_nosoc) then + if (decouple_spins_cheby) then use_fullgmat = 0 else use_fullgmat = 1 @@ -554,7 +554,7 @@ contains !------------------------------------------------------------------------------ if ((t_wavefunctions%nwfsavemax>0 .and. (.not. (rllleft_was_read_in .and. sllleft_was_read_in))) .or. (t_wavefunctions%nwfsavemax==0)) then ! read/recalc wavefunctions left contruct the TRANSPOSE spin-orbit coupling hamiltonian and add to potential - if ( .not. set_cheby_nosoc) then + if ( .not. decouple_spins_cheby) then call spinorbit_ham(lmax, lmmax0d, vins, rnew, eryd, zat, cvlight, socscale, nspin, lmpotd, theta, phi, ipan_intervall, rpan_intervall, npan_tot, ncheb, irmdnew, nrmaxd, & vnspll0, vnspll1(:,:,:,ith), 'rll') else @@ -637,7 +637,7 @@ contains ! $omp end critical #endif - if ( .not. set_cheby_nosoc) then + if ( .not. decouple_spins_cheby) then ! rotate gmat from global frame to local frame call rotatematrix(gmat0, theta, phi, lmmax0d, 1) end if @@ -706,7 +706,7 @@ contains !------------------------------------------------------------------------------ ! Get orbital moment ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - if (.not. set_cheby_nosoc) then + if (.not. decouple_spins_cheby) then do iorb = 1, 3 call rhooutnew(nsra, lmax, gmatll(1,1,ie), ek, lmpotd, cone, npan_tot, ncheb, cleb, icleb, iend, irmdnew, thetasnew, ifunm, imt1, lmsp, rll(:,:,:,ith), & ! SLL(:,:,:,ith), ! commented out since sll is not used in rhooutnew ull(:,:,:,ith), rllleft(:,:,:,ith), sllleft(:,:,:,ith), cden(:,:,:,ith), cdenlm(:,:,:,ith), cdenns(:,:,ith), r2orbc(:,:,:,ith), iorb, gflle_part(:,:,ith), rpan_intervall, ipan_intervall, nspin) @@ -745,7 +745,7 @@ contains muorb(lmaxd1+1, 1:3) = muorb(lmaxd1+1, 1:3) + muorb(lm1, 1:3) end do end do ! IORB - end if ! .not. set_cheby_nosoc + end if ! .not. decouple_spins_cheby end do ! IE loop #ifdef CPP_OMP @@ -1029,9 +1029,9 @@ contains ! MdSD: Should this also be corrected if the angles change? den_out(0:lmaxd1, 1:ielast, 1:nspin/(nspin-korbit)) = den(0:lmaxd1, 1:ielast, 1, 1:nspin/(nspin-korbit)) ! calculate new THETA and PHI for non-colinear - ! if (.not. fix_nonco_angles .and. .not.set_cheby_nosoc) then + ! if (.not. fix_nonco_angles .and. .not.decouple_spins_cheby) then ! MdSD: now the new directions are always calculated, which can be useful for information purposes - if (.not.set_cheby_nosoc) then + if (.not.decouple_spins_cheby) then rho2ns_temp(1, 1) = rho2int(1) rho2ns_temp(2, 2) = rho2int(2) rho2ns_temp(1, 2) = rho2int(3) @@ -1052,12 +1052,12 @@ contains totxymoment = sqrt(moment(1)**2+moment(2)**2) ! MdSD: theta not 0 or pi - if (abs(totxymoment)>1d-05) then + if (abs(totxymoment)>1e-05_dp) then thetanew = acos(moment(3)/totmoment) phinew = atan2(moment(2), moment(1)) ! MdSD: theta is 0 or pi else - if (moment(3) < 0.0_dp) then + if (moment(3) < 0.0_dp .and. abs(moment(3)) > 1e-14_dp) then thetanew = pi else thetanew = 0.0_dp @@ -1066,8 +1066,8 @@ contains end if if (t_inc%i_write>0) then - write (1337, *) 'moment', myrank, moment(1), moment(2), moment(3) - write (1337, *) thetanew/(2.0_dp*pi)*360.0_dp, phinew/(2.0_dp*pi)*360.0_dp + write (1337, '(A,i5,3es16.7)') 'moment', myrank, moment(1), moment(2), moment(3) + write (1337, '(2es16.7)') thetanew/(2.0_dp*pi)*360.0_dp, phinew/(2.0_dp*pi)*360.0_dp end if ! only on master different from zero: angles_new(1) = thetanew diff --git a/source/KKRhost/rinput13.F90 b/source/KKRhost/rinput13.F90 index f1476d0fa37a6911375ed718b69c05d6553d20f4..e9a1c912cf62d41b76209b9d801a8b3ff4633ee2 100644 --- a/source/KKRhost/rinput13.F90 +++ b/source/KKRhost/rinput13.F90 @@ -40,11 +40,11 @@ contains qmtet, qmphi, kreadldau, lopt, ueff, jeff, erefldau, invmod, verbosity, MPI_scheme, special_straight_mixing) use mod_profiling, only: memocc - use mod_runoptions, only: read_runoptions, calc_DOS_Efermi, calc_GF_Efermi, calc_exchange_couplings, & + use mod_runoptions, only: read_runoptions, print_runoptions, calc_DOS_Efermi, calc_GF_Efermi, calc_exchange_couplings, & dirac_scale_SpeefOfLight, disable_charge_neutrality, disable_print_serialnumber, modify_soc_Dirac, relax_SpinAngle_Dirac, search_Efermi, & set_kmesh_large, stop_1b, stop_1c, use_BdG, use_Chebychev_solver, use_cond_LB, use_decimation, use_lloyd, use_qdos, & use_rigid_Efermi, use_semicore, use_virtual_atoms, write_green_host, write_green_imp, write_kkrimp_input, & - write_pkkr_input, write_pkkr_operators, use_ldau, set_cheby_nospeedup, set_cheby_nosoc, write_tb_coupling + write_pkkr_input, write_pkkr_operators, use_ldau, set_cheby_nospeedup, decouple_spins_cheby, write_tb_coupling, set_cheby_nosoc use mod_constants, only: cvlight, ryd use mod_wunfiles, only: t_params use memoryhandling, only: allocate_semi_inf_host, allocate_magnetization, allocate_cell, allocate_cpa, allocate_soc, allocate_ldau @@ -313,6 +313,8 @@ contains write (1337, *) ' <<< Reading in new style of run-options. >>>' if (oldstyle) write (1337, *) ' WARNING: this may overwrite old-style run-options' call read_runoptions() + ! write all runoptions + call print_runoptions(1337)! write to output.0.txt @@ -884,9 +886,9 @@ contains if (use_Chebychev_solver) korbit = 1 - if (set_cheby_nosoc) then - write (*, '(A)') 'Warning: detected test option <set_cheby_nosoc>: use spin-decoupled radial equations with new solver' - write (1337, *) 'Warning: detected test option <set_cheby_nosoc>: reset KORBIT to zero but use NEWSOSOL for spin-decoupled matrices with explicit spin-loop' + if (decouple_spins_cheby) then + write (*, '(A)') 'Warning: detected test option <decouple_spins_cheby>: use spin-decoupled radial equations with new solver' + write (1337, *) 'Warning: detected test option <decouple_spins_cheby>: reset KORBIT to zero but use NEWSOSOL for spin-decoupled matrices with explicit spin-loop' korbit = 0 end if @@ -1165,7 +1167,7 @@ contains ! End of allocation of SOC arrays !-------------------------------------------------------------------------------- if (use_Chebychev_solver) then ! Spin-orbit - if (use_Chebychev_solver .and. (nspin/=2) .and. .not.set_cheby_nosoc) stop ' set NSPIN = 2 for SOC solver in inputcard' + if (use_Chebychev_solver .and. (nspin/=2) .and. .not.decouple_spins_cheby) stop ' set NSPIN = 2 for SOC solver in inputcard' npan_log = 30 npan_eq = 30 ncheb = 10 @@ -1193,7 +1195,7 @@ contains end if call ioinput('<SOCSCL> ', uio, 1, 7, ier) - if (ier==0) then + if (ier==0 .and. .not.(set_cheby_nosoc .or. decouple_spins_cheby)) then write (111, '(A10)') '<SOCSCL> ' do i = 1, natyp call ioinput('<SOCSCL> ', uio, i, 7, ier) @@ -1207,6 +1209,10 @@ contains ! !Bernd - old way ! write(111,FMT='(A10,50E10.2)') '<SOCSCL>= ',(SOCSCALE(I1),I1=1,NATYP) ! !Bernd - old way + elseif (set_cheby_nosoc .or. decouple_spins_cheby) then + write(*,*) 'Skipped reading <SOCSCL> because <set_cheby_nosoc>= T or <decouple_spins_cheby>= T. Automatically use <SOCSCL>=0.' + socscale(:) = 0.0_dp + write (111, fmt='(A18,50E10.2)') '<SOCSCL>= ', (socscale(i1), i1=1, natyp) else write (111, fmt='(A18,50E10.2)') 'Default <SOCSCL>= ', (socscale(i1), i1=1, natyp) end if @@ -1527,6 +1533,15 @@ contains intervz = 1 end if + call ioinput('<set_kmesh_large>', uio, 1, 7, ier) + if (ier==0) then + read (unit=uio, fmt=*, iostat=ier) set_kmesh_large + if (ier/=0) stop 'Error reading `set_kmesh_large`: check your inputcard' + write (111, fmt='(A18,A2)') '<set_kmesh_large>=', set_kmesh_large + else + write (111, fmt='(A26,A2)') 'Default <set_kmesh_large>=', set_kmesh_large + end if + ! Energy contour npol = 7 call ioinput('NPOL ', uio, 1, 7, ier) @@ -1904,6 +1919,8 @@ contains if (calc_exchange_couplings) then nsteps = 1 write (1337, *) 'RUNOPT XCPL used, setting NSTEPS to 1' + set_kmesh_large = .true. + write (1337, *) 'RUNOPT XCPL used, enabling set_kmesh_large' end if if (write_kkrimp_input) then nsteps = 1 @@ -1992,7 +2009,7 @@ contains end if ! for broyden spin mixing of noncollinear directions - ! activated with the <use_boyden_spinmix> run option + ! only used with the <use_broyden_spinmix> run option call ioinput('SPINMIXALPHA ', uio, 1, 7, ier) if (ier==0) then read (unit=uio, fmt=*, iostat=ier) mixfac_broydenspin diff --git a/source/KKRhost/startb1.f90 b/source/KKRhost/startb1.f90 index 1f125fbb7ec8be5c89375e4634d16acc21204737..6fb2699c4e0cc4d7f31a887a93fcb972ecf1fde9 100644 --- a/source/KKRhost/startb1.f90 +++ b/source/KKRhost/startb1.f90 @@ -496,7 +496,7 @@ contains do j = 1, irmin(ih) vm2z(j, i) = vm2z(j, i) + vconst end do - else if (abs(vconst)>eps) then + else if (abs(vconst)>eps .and. ivshift==0) then write (1337, *) 'shifting potential by VCONST=', vconst do j = 1, nr vm2z(j, i) = vm2z(j, i) + vconst diff --git a/source/KKRhost/testdim.f90 b/source/KKRhost/testdim.f90 index b24fd870477b3340f87526c7b22e128be9bbd467..0d6082c6b72b94f50dde60a57bea80aa3309677a 100644 --- a/source/KKRhost/testdim.f90 +++ b/source/KKRhost/testdim.f90 @@ -31,7 +31,7 @@ contains subroutine testdim(nspin,naez,nemb,natyp,ins,insref,nref,irns,nlayer,krel,nspind, & nprincd,knosph,irnsd,korbit,invmod) - use :: mod_runoptions, only: calc_complex_bandstructure, use_Chebychev_solver, use_cont, use_virtual_atoms, set_cheby_nosoc + use :: mod_runoptions, only: calc_complex_bandstructure, use_Chebychev_solver, use_cont, use_virtual_atoms, decouple_spins_cheby implicit none integer, intent (in) :: ins !! 0 (MT), 1(ASA), 2(Full Potential) @@ -103,7 +103,7 @@ contains end if if (use_Chebychev_solver .and. korbit==0) then - if (set_cheby_nosoc) then + if (decouple_spins_cheby) then write (6, *) 'Using NEWSOSOL for decoupled spin channels.' else write (6, *) 'Using option NEWSOSOL, change KORBIT in the inputcard from', korbit, 'to 1' diff --git a/source/KKRhost/tmat_newsolver.F90 b/source/KKRhost/tmat_newsolver.F90 index 1e293bd459617db08d7db2a0d0b0ca00f1662762..3b266c8b95feb74383458ab65287a7914a1efdf4 100644 --- a/source/KKRhost/tmat_newsolver.F90 +++ b/source/KKRhost/tmat_newsolver.F90 @@ -45,7 +45,7 @@ contains #endif use :: mod_datatypes, only: dp use :: mod_runoptions, only: calc_exchange_couplings, disable_tmat_sratrick, formatted_file, stop_1b, & - write_BdG_tests, write_pkkr_operators, write_rhoq_input, set_cheby_nospeedup, set_cheby_nosoc, calc_wronskian + write_BdG_tests, write_pkkr_operators, write_rhoq_input, set_cheby_nospeedup, decouple_spins_cheby, calc_wronskian use :: mod_constants, only: czero, cone, cvlight use :: global_variables, only: ntotd, ncleb, nrmaxd, mmaxd, nspind, nspotd, iemxd, lmmaxd, korbit use :: mod_wunfiles, only: t_params @@ -190,7 +190,7 @@ contains vnspll0, vnspll1, hlk, jlk, hlk2, jlk2, tmatsph, ull, rll, sll, rllleft, sllleft) vins(1:irmdnew, 1:lmpot, 1) = vinsnew(1:irmdnew, 1:lmpot, ipot) - if (.not.set_cheby_nosoc) vins(1:irmdnew, 1:lmpot, nspin) = vinsnew(1:irmdnew, 1:lmpot, ipot+nspin-1) + if (.not.decouple_spins_cheby) vins(1:irmdnew, 1:lmpot, nspin) = vinsnew(1:irmdnew, 1:lmpot, ipot+nspin-1) KBdG = 0 #ifdef CPP_BdG @@ -345,7 +345,7 @@ contains !$omp end critical #endif - if ( .not. set_cheby_nosoc) then + if ( .not. decouple_spins_cheby) then ! Contruct the spin-orbit coupling hamiltonian and add to potential call spinorbit_ham(lmax, lmmax0d, vins, rnew, eryd, zat, cvlight, socscale, nspin, lmpot, theta, phi, ipan_intervall, rpan_intervall, npan_tot, ncheb, irmdnew, nrmaxd, & vnspll0(:,:,:), vnspll1(:,:,:,ith), '1') @@ -411,7 +411,7 @@ contains hlk2(:, :, ith) = czero jlk2(:, :, ith) = czero gmatprefactor = czero - if (set_cheby_nosoc) then + if (decouple_spins_cheby) then use_fullgmat = 0 else use_fullgmat = 1 diff --git a/source/KKRhost/writekkrflex.f90 b/source/KKRhost/writekkrflex.f90 index 162890916a962efbb0bc4ad34a6384a049de8b4a..e9eb3c352729c564e6a3fdeb5e5c2f8ef0c0068e 100644 --- a/source/KKRhost/writekkrflex.f90 +++ b/source/KKRhost/writekkrflex.f90 @@ -84,7 +84,6 @@ contains end if ! read in non-collinear angles -! call read_angles(t_params, natyp, theta, phi) theta(1:natyp) = t_params%theta(1:natyp) phi(1:natyp) = t_params%phi(1:natyp) diff --git a/source/KKRhost/wunfiles.F90 b/source/KKRhost/wunfiles.F90 index f9b99b9632e1171763734f2da5a607a7c709c181..13e58ac6b1e50cd99560d29ad835cb56641e9433 100644 --- a/source/KKRhost/wunfiles.F90 +++ b/source/KKRhost/wunfiles.F90 @@ -366,7 +366,7 @@ contains use :: mod_runoptions, only: impurity_operator_only, relax_SpinAngle_Dirac, use_Chebychev_solver, use_qdos, & write_cpa_projection_file, write_deci_tmat, write_gmat_file, write_green_host, write_green_imp, write_gref_file, & write_kkrimp_input, write_lloyd_cdos_file, write_lloyd_dgref_file, write_lloyd_dtmat_file, write_lloyd_file, & - write_lloyd_g0tr_file, write_lloyd_tralpha_file, write_pkkr_input, write_pkkr_operators, write_tmat_file, set_cheby_nosoc + write_lloyd_g0tr_file, write_lloyd_tralpha_file, write_pkkr_input, write_pkkr_operators, write_tmat_file, decouple_spins_cheby implicit none ! .. @@ -691,7 +691,7 @@ contains t_inc%naclsmax = naclsmax t_inc%nshell0 = nshell(0) if (use_Chebychev_solver) t_inc%newsosol = .true. - if (set_cheby_nosoc) t_inc%nosoc = .true. + if (decouple_spins_cheby) t_inc%nosoc = .true. if (write_deci_tmat) t_inc%deci_out = .true. !-------------------------------------------------------------------------------- ! t_inc t_inc t_inc t_inc t_inc t_inc t_inc t_inc t_inc t_inc diff --git a/source/KKRimp/kkrflex.F90 b/source/KKRimp/kkrflex.F90 index a33206109159a8d0e2e88a01c612a911a360c20f..29225bbac2f698a8facd6f49897606be6c6cc9ed 100644 --- a/source/KKRimp/kkrflex.F90 +++ b/source/KKRimp/kkrflex.F90 @@ -79,6 +79,9 @@ program kkrflex use mod_mathtools use mod_version_info +#ifdef CPP_PATCH_INTEL + use mod_patch_intel, only: patch_intel +#endif implicit none !*********************************** @@ -213,6 +216,14 @@ mpi_size=1 ! find serial number that is printed to files call construct_serialnr() + +#ifdef CPP_PATCH_INTEL + ! this makes the MKL think it works on intel hardware even if it runs on AMD + ! seems to give better performance than unpatched MKL or BLIS+LIBFLAME + call patch_intel() +#endif + + ! ********************************************************** ! open the log (and timing) file for each processor ! the log file is called out_log.xxx.txt where xxx is @@ -265,7 +276,7 @@ mythread = omp_get_thread_num() if (myrank==0 .and. mythread==0) then nthreads = omp_get_num_threads() write (*, '(/79("*")//1X,A,I5//79("*")/)') 'Number of OpenMP threads used:', nthreads - if(t_inc%i_write) write (1337, '(/79("*")//1X,A,I5//79("*")/)') 'Number of OpenMP threads used:', nthreads + if(t_inc%i_write>0) write (1337, '(/79("*")//1X,A,I5//79("*")/)') 'Number of OpenMP threads used:', nthreads end if !$omp end parallel #endif diff --git "a/source/KKRsusc/SOURCE/rhoval_new.f90\\" "b/source/KKRsusc/SOURCE/rhoval_new.f90\\" deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/source/PKKprime/mod_calconfs.F90 b/source/PKKprime/mod_calconfs.F90 index e8cf9b9247702e6d895a8c086e08b3a71a9d7e53..5f311ae0e489f41a75f714cd41259e070bb673ff 100644 --- a/source/PKKprime/mod_calconfs.F90 +++ b/source/PKKprime/mod_calconfs.F90 @@ -1288,13 +1288,28 @@ contains if(cfg%lspin==1 .or. force_spin) then call IoInput('LSPINATOM ',uio,1,7,ierr) - read(unit=uio,fmt=*) cfg%lspinperatom + if(ierr==0) then + read(unit=uio,fmt=*) cfg%lspinperatom + else ! ensures compatibility of old format input files + write(*,*) "Warning : LSPINATOM set to 0 by default !" + cfg%lspinperatom=0 + end if!ierr==0 call IoInput('LTORQ ',uio,1,7,ierr) - read(unit=uio,fmt=*) cfg%ltorq + if(ierr==0) then + read(unit=uio,fmt=*) cfg%ltorq + else ! ensures compatibility of old format input files + write(*,*) "Warning : LTORQ set to 0 by default !" + cfg%ltorq=0 + end if!ierr==0 call IoInput('LTORQATOM ',uio,1,7,ierr) - read(unit=uio,fmt=*) cfg%ltorqperatom + if(ierr==0) then + read(unit=uio,fmt=*) cfg%ltorqperatom + else ! ensures compatibility of old format input files + write(*,*) "Warning : LTORQATOM set to 0 by default !" + cfg%ltorqperatom=0 + end if!ierr==0 call IoInput('LSPINFLUX ',uio,1,7,ierr) if(ierr==0) then @@ -1313,7 +1328,12 @@ contains end if!ierr==0 call IoInput('SIMPSON ',uio,1,7,ierr) - read(unit=uio,fmt=*) cfg%simpson + if(ierr==0) then + read(unit=uio,fmt=*) cfg%simpson + else ! ensures compatibility of old format input files + write(*,*) "Warning : SIMPSON set to F by default !" + cfg%simpson = .false. + end if!ierr==0 call IoInput('LSAVEEIGV ',uio,1,7,ierr) read(unit=uio,fmt=*) inum @@ -1324,7 +1344,12 @@ contains end if call IoInput('LRASHBA ',uio,1,7,ierr) - read(unit=uio,fmt=*) cfg%lrashba + if(ierr==0) then + read(unit=uio,fmt=*) cfg%lrashba + else ! ensures compatibility of old format input files + write(*,*) "Warning : LRASHBA set to F by default !" + cfg%lrashba = 0 + end if!ierr==0 if(cfg%lrashba==1)then call IoInput('ILAYER ',uio,1,7,ierr) read(unit=uio,fmt=*) cfg%ilayer diff --git a/source/PKKprime/mod_fermisurf.F90 b/source/PKKprime/mod_fermisurf.F90 index a5607af7a39dd1304d3212e2dbb5786867dddde2..8450ca392afc9c57c3a4d70ca9c0923eff320f81 100644 --- a/source/PKKprime/mod_fermisurf.F90 +++ b/source/PKKprime/mod_fermisurf.F90 @@ -24,6 +24,9 @@ contains use mod_fermisurf_3D, only: find_fermisurface_3D use mod_fermisurf_2D, only: find_fermisurface_2D use mod_fermisurf_basic, only: save_kpointsfile_int +#ifdef CPP_TIMING + use mod_timing, only: timing_start, timing_stop +#endif implicit none @@ -44,12 +47,21 @@ contains +#ifdef CPP_TIMING + call timing_start(' prepare FS calculation') +#endif call read_fscfg(lfsurf, nCub3, nFSiter, nROOTiter, nstepsconnect, nCut_iter, roottype, rooteps, lrefine, nrefinenew) if(lfsurf/=1) return !initialize symmetries call set_symmetries(inc, lattice, symmetries) +#ifdef CPP_TIMING + call timing_stop(' prepare FS calculation') +#endif +#ifdef CPP_TIMING + call timing_start(' calculate FS') +#endif select case (inc%nBZdim) case(2); call find_fermisurface_2D( inc, lattice, cluster, tgmatrx, symmetries, nCub3, nFSiter, nROOTiter, nstepsconnect, & & nCut_iter, roottype, rooteps, lrefine, nrefinenew, nkpts_int, kpoints_int, areas_int ) @@ -57,6 +69,9 @@ contains & nCut_iter, roottype, rooteps, lrefine, nrefinenew, nkpts_int, kpoints_int, areas_int ) case default; stop 'dimens must be 2 or 3' end select +#ifdef CPP_TIMING + call timing_stop(' calculate FS') +#endif ! save the integration k-points and areas to a file diff --git a/source/PKKprime/mod_fermisurf_3D.F90 b/source/PKKprime/mod_fermisurf_3D.F90 index 2f6f22e3063c80e4613c03f751c360becd64ee40..d960576b08111054b50d32882d90fb04245590c1 100644 --- a/source/PKKprime/mod_fermisurf_3D.F90 +++ b/source/PKKprime/mod_fermisurf_3D.F90 @@ -29,6 +29,9 @@ contains use mod_ioformat, only: filename_cubesinfo, ext_formatted, fmt_fn_ext use mod_iohelp, only: file_present use mod_fermisurf_basic, only: get_cubesinfo_filename, read_cubesfile, save_cubesfile, mark_cubes_FScross, find_kpoints_irredset, save_kpointsfile_vis +#ifdef CPP_TIMING + use mod_timing, only: timing_start, timing_stop +#endif implicit none type(inc_type), intent(in) :: inc @@ -59,6 +62,9 @@ contains character(len=256) :: filename, filetest logical :: l_cubesfile, l_exist +#ifdef CPP_TIMING + call timing_start(' FS 3D - get cubes') +#endif call get_IBZwedge_faces(lattice%recbv, symmetries%nsym_used, symmetries%rotmat, symmetries%isym_used, nfaces, nvec, dscal, bounds) @@ -134,12 +140,18 @@ contains end do!icube end if!iterstart==1 +#ifdef CPP_TIMING + call timing_stop(' FS 3D - get cubes') +#endif !====== != scan the cubes for intersections !====== do iter=iterstart,nFSiter +#ifdef CPP_TIMING + call timing_start(' FS 3D - FS iter - mark cubes in IBZ') +#endif !=== mark the cubes that lie (at least with one corner) within the first BZ ===! call mark_cubes_in_IBZ(nCub3, nfaces, nvec, dscal, bounds, nmarked, imarked) if(myrank==master) then @@ -148,7 +160,13 @@ contains write(*,'("***** Iteration ",I0," *****")') iter write(*,'(2X,2(A,I0),(A,F5.1,A))') 'Cubes found within the IBZ: ', nmarked, ' of ', ntotal, ' (= ', real(nmarked*100)/ntotal,' %)' end if!myrank==master +#ifdef CPP_TIMING + call timing_stop(' FS 3D - FS iter - mark cubes in IBZ') +#endif +#ifdef CPP_TIMING + call timing_start(' FS 3D - FS iter - find FS crossings') +#endif !========= mark the cubes that cross the Fermi surface =========! !=== (only searching across the four diagonals of the cubes) ===! ntotal = nmarked @@ -161,7 +179,13 @@ contains write(*,'(2X,2(A,I0),(A,F5.1,A))') 'Cubes found intersecting with FS: ', nmarked, ' of ', ntotal, ' (= ', real(nmarked*100)/ntotal,' %)' call save_cubesfile(nCub3, nmarked, imarked, lintermediate=.true.) end if!myrank==master +#ifdef CPP_TIMING + call timing_stop(' FS 3D - FS iter - find FS crossings') +#endif +#ifdef CPP_TIMING + call timing_start(' FS 3D - FS iter - divide cubes') +#endif !=== cut the remaining cubes into smaller pieces and update the indices ===! ! write(1000+myrank,*) iter, nCut_iter(iter) call cut_and_update_cubes(nCut_iter(iter), nCub3, nmarked, imarked) @@ -170,6 +194,9 @@ contains write(filename,'("cubes_iter=",I0,"_step=",I0,"_",(A),".vtp")') iter, 3, 'cut' call cubes2VTK(filename, nCub3, nmarked, imarked, bounds) end if!myrank==master +#ifdef CPP_TIMING + call timing_stop(' FS 3D - FS iter - divide cubes') +#endif end do!iter @@ -238,6 +265,10 @@ contains ! dtmp=dtmp+datan(ii*0.1d0)/ii ! end do!ii +#ifdef CPP_TIMING + call timing_start(' FS 3D - find FS intersections') +#endif + ! write(*,*) 'before sub find_intesection_triangles, myrank=',myrank call find_intesection_triangles( inc, lattice, cluster, tgmatrx, symmetries, & & nCub3, bounds, nmarked, imarked, & @@ -248,6 +279,9 @@ contains call find_kpoints_irredset( bounds, nkpts_vis, kpoints_vis, nkpts_irr, kpt2irr, irr2kpt) +#ifdef CPP_TIMING + call timing_stop(' FS 3D - find FS intersections') +#endif !save the visualization k-points to a file if(myrank==master) call save_kpointsfile_vis(nkpts_vis, nkpts_irr, kpoints_vis, symmetries%nsym_used, symmetries%isym_used, kpt2irr, irr2kpt, vis2int) @@ -277,6 +311,9 @@ contains use mod_fermisurf_basic, only: roots_along_edge, compare_two_eigv_in_substeps, ROOT_IMAG, ROOT_REAL, generate_cubevertices #ifdef CPP_MPI use mpi +#endif +#ifdef CPP_TIMING + use mod_timing, only: timing_start, timing_stop #endif implicit none @@ -407,6 +444,10 @@ contains !update statusbar if(mod(icub,printstep)==0 .and. myrank==master) write(*,FMT=200) +#ifdef CPP_TIMING + if (icub==1) call timing_start(' FS 3D - find FS intersections - time1') + if (icub==1) call timing_start(' FS 3D - find FS intersections - time10') +#endif ! write(iofile,'(A,I0)') 'starting cube ', imarked(icub+ioff) @@ -433,6 +474,11 @@ contains & eigwends(:,:,iedge) ) end do!iedge +#ifdef CPP_TIMING + if (icub==1) call timing_stop(' FS 3D - find FS intersections - time1') + if (icub==10) call timing_stop(' FS 3D - find FS intersections - time10') +#endif + #ifdef CPP_DEBUG write(iofile,'(2X,"#roots found on the edges:")') do iedge=1,19 diff --git a/source/PKKprime/mod_routines.F90 b/source/PKKprime/mod_routines.F90 index 0521c21efbd1e82da12a39ba80a23431493f7c37..3f67991c190b31b9130b73e140c06d56a7707f1d 100644 --- a/source/PKKprime/mod_routines.F90 +++ b/source/PKKprime/mod_routines.F90 @@ -28,6 +28,10 @@ contains #ifdef CPP_MPI use mpi #endif +#ifdef CPP_TIMING + use mod_timing, only: timing_init, timing_start, timing_stop + use mod_types, only: t_inc ! needed to set i_time=0 for all but the master rank +#endif implicit none @@ -46,13 +50,23 @@ contains #endif call mympi_init() +#ifdef CPP_TIMING + if (myrank/=master) t_inc%i_time = 0 ! diable writeing of the timing file for all but the master rank + call timing_init(myrank, disable_serial_number=.true.) +#endif + !Read in TBKKR-data +#ifdef CPP_TIMING + call timing_start('Read TBkkr-data') +#endif call read_inc(inc) - call read_TBkkrdata(inc, lattice, cluster, tgmatrx) !Perform tests if(myrank==master) call testpath(inc, lattice, cluster, tgmatrx) +#ifdef CPP_TIMING + call timing_stop('Read TBkkr-data') +#endif !Calculate the Fermi Surface call fermisurface(inc, lattice, cluster, tgmatrx, nkpts, kpoints, areas) diff --git a/source/PKKprime/mod_scattering.F90 b/source/PKKprime/mod_scattering.F90 index 2ff1357b5d81cd82e14ee20668e9e2f8b784e2d5..451f6a3c8d4cae69c497e206916cd5a52b1339f4 100644 --- a/source/PKKprime/mod_scattering.F90 +++ b/source/PKKprime/mod_scattering.F90 @@ -102,7 +102,7 @@ contains use mod_mympi, only: myrank, nranks, master use mod_mathtools, only: pi #ifdef CPP_TIMING - use mod_timing, only: timing_init, timing_start, timing_stop + use mod_timing, only: timing_start, timing_stop #endif use mpi implicit none @@ -167,7 +167,6 @@ contains BZVol = getBZvolume(lattice%recbv) #ifdef CPP_TIMING - call timing_init(myrank, disable_serial_number=.true.) call timing_start('Read in of data') #endif diff --git a/source/common/findgroup.f90 b/source/common/findgroup.f90 index bf4e476e855b12d2bf744a90656a5f10d0419d28..86a1bddd7f4b0cfb7fab713ee76400140777d688 100644 --- a/source/common/findgroup.f90 +++ b/source/common/findgroup.f90 @@ -274,11 +274,16 @@ contains real (kind=dp) :: bravais1(3,3),tol integer :: i,j,isym,nsym,i0,ia character(len=10) :: charstr(64) - logical :: llatbas,lbulk + logical :: llatbas, lbulk + logical, save :: writesymfile = .true. tol=1e-5 ! ------------------------------------------------------------- nsym = 0 - call pointgrp(rotmat,rotname) + + if (myrank/=master) writesymfile = .false. ! write only once on master rank + call pointgrp(rotmat,rotname, writesymfile) + if (myrank==master) writesymfile = .false. ! suppresses further sym.out creation + do i=1,3 do j=1,3 bravais1(j,i) = bravais(j,i) diff --git a/source/common/ioinput.f90 b/source/common/ioinput.f90 index 911c1d56ddea4b1a77597ea7f2610b8aae3fd4bf..9c535660db650dec1f58ed1c98cb3d82f7cec62e 100644 --- a/source/common/ioinput.f90 +++ b/source/common/ioinput.f90 @@ -153,7 +153,7 @@ contains integer, intent(in) :: ifile integer, parameter :: maxcol = 2048 - integer :: ierror, ios, nlinetmp, ncoltmp, iline + integer :: ierror, ios, nlinetmp, ncoltmp, iline, ipos character(len=maxcol) :: line character(len=:), allocatable :: linetmp @@ -195,6 +195,17 @@ contains rewind (ifile) do iline = 1, nlines read (ifile, fmt='(A)') linetmp + + ! now remove comments which follow the '#' sign + ! to do this we overwrite linetmp starting from the '#' sign with spaces + ipos = index(linetmp, '#') + if (ipos>0) then + write(1337,'(A)') 'WARNING: Found "#" in inputcard and change line for reading' + write(1337,'(2A)') 'Original line:', linetmp + linetmp(ipos:) = ' ' + write(1337,'(2A)') 'Changed to:', linetmp + end if + call capitalize_escaped_keywords(linetmp, linetxt(iline), ierror) if (ierror==1) then write(1337,'(A,I5,A)') 'Warning capitalizing line ', iline, ' of inputcard.' @@ -204,16 +215,18 @@ contains write(*, '(A,I5,A)') 'Error capitalizing line ', iline, ' of inputcard.' stop end if - end do + + end do ! iline !-------------------------------------------------------------------------------- ! close inputcard and finish up !-------------------------------------------------------------------------------- close (ifile) inputcard_is_read = .true. - end if + + end if ! .not.inputcard_is_read - end subroutine + end subroutine read_inputcard !------------------------------------------------------------------------------- !> Summary: Capitalize all escaped keywords in a string diff --git a/source/common/patch_intel.c b/source/common/patch_intel.c new file mode 100644 index 0000000000000000000000000000000000000000..bc7d055ade9a2dcb2100130b7966a1b30bf10719 --- /dev/null +++ b/source/common/patch_intel.c @@ -0,0 +1,196 @@ +/* Code from Agner Fog to improve performance of INTEL compiler/libraries on AMD */ + + + +/*********************** intel_cpu_feature_patch.c ************************** +* Author: Agner Fog +* Date created: 2014-07-30 +* Last modified: 2019-12-29 +* Source URL: https://www.agner.org/optimize/intel_dispatch_patch.zip +* Language: C or C++ +* +* Description: +* Patch for Intel compiler version 13.0 and later, including the general +* libraries, LIBM and SVML, but not MKL and VML. +* +* Example of how to patch Intel's CPU feature dispatcher in order to improve +* compatibility of generated code with non-Intel processors. +* In Windows: Use the static link libraries (*.lib), not the dynamic link +* librarise (*.DLL). +* In Linux and Mac: use static linking (*.a) or dynamic linking (*.so). +* +* Include this code in your C or C++ program and call intel_cpu_patch(); +* before any call to the library functions. +* +* Copyright (c) 2014-2019. BSD License 2.0 +******************************************************************************/ +#include <stdint.h> + +#ifdef __cplusplus // use C-style linking +extern "C" { +#endif + +// link to Intel libraries +extern int64_t __intel_cpu_feature_indicator; // CPU feature bits +extern int64_t __intel_cpu_feature_indicator_x; // CPU feature bits +void __intel_cpu_features_init(); // unfair dispatcher: checks CPU features for Intel CPU's only +void __intel_cpu_features_init_x(); // fair dispatcher: checks CPU features without discriminating by CPU brand + +#ifdef __cplusplus +} // end of extern "C" +#endif + +void intel_cpu_patch() { + // force a re-evaluation of the CPU features without discriminating by CPU brand + __intel_cpu_feature_indicator = 0; + __intel_cpu_feature_indicator_x = 0; + __intel_cpu_features_init_x(); + __intel_cpu_feature_indicator = __intel_cpu_feature_indicator_x; +} + +/*********************** intel_mkl_cpuid_patch.c ************************** +* Author: Agner Fog +* Date created: 2019-12-29 +* Source URL: https://www.agner.org/optimize/intel_dispatch_patch.zip +* Language: C or C++ +* +* Description: +* Patch for Intel Math Kernel Library (MKL) version 14.0 and later, except +* the Vector Math Library (VML). +* +* Example of how to override Intel's CPU feature dispatcher in order to improve +* compatibility of Intel function libraries with non-Intel processors. +* +* Include this code in your C or C++ program and make sure it is linked before +* any Intel libraries. You may need to include intel_mkl_feature_patch.c as well. +* +* Copyright (c) 2019. BSD License 2.0 +******************************************************************************/ +//#include <stdint.h> +#ifdef __cplusplus // use C-style linking +extern "C" { +#endif +/* + // detect if Intel CPU + int mkl_serv_intel_cpu() { + return 1; + } + + // detect if Intel CPU + int mkl_serv_intel_cpu_true() { + return 1; + } + + + int mkl_serv_cpuhaspnr_true() { + return 0; + } + + int mkl_serv_cpuhaspnr() { + return 0; + } + + int mkl_serv_cpuhasnhm() { + return 0; + } + + int mkl_serv_cpuisbulldozer() { + return 0; + } + + int mkl_serv_cpuiszen() { + return 1; + } + + int mkl_serv_cpuisatomsse4_2() { + return 0; + } + + int mkl_serv_cpuisatomssse3() { + return 0; + } + + int mkl_serv_cpuisitbarcelona() { + return 0; + } + + int mkl_serv_cpuisskl() { + return 0; + } + + int mkl_serv_cpuisknm() { + return 0; + } + + int mkl_serv_cpuisclx() { + return 0; + } + + int mkl_serv_get_microarchitecture() { + // I don't know what this number means + return 33; + } + int mkl_serv_cpuisclx() { + return 1; + } + int mkl_serv_cpuiszen() { + return 1; + } +*/ + int mkl_serv_intel_cpu() { + return 1; + } + + int mkl_serv_intel_cpu_true() { + return 1; + } + +#ifdef __cplusplus +} // end of extern "C" +#endif +/*********************** intel_mkl_feature_patch.c ************************** +* Author: Agner Fog +* Date created: 2014-07-30 +* Last modified: 2019-12-29 +* Source URL: https://www.agner.org/optimize/intel_dispatch_patch.zip +* Language: C or C++ +* +* Description: +* Patch for Intel Math Kernel Library (MKL) version 14.0 and later, except +* the Vector Math Library (VML). +* +* Example of how to patch Intel's CPU feature dispatcher in order to improve +* compatibility of Intel function libraries with non-Intel processors. +* In Windows: Use the static link libraries (*.lib), not the dynamic link +* librarise (*.DLL). +* In Linux and Mac: use static linking (*.a) or dynamic linking (*.so). +* +* Include this code in your C or C++ program and call intel_mkl_patch(); +* before any call to the MKL functions. You may need to include +* intel_mkl_cpuid_patch.c as well. +* +* Copyright (c) 2014-2019. BSD License 2.0 +******************************************************************************/ +//#include <stdint.h> + +#ifdef __cplusplus // use C-style linking +extern "C" { +#endif + +// link to MKL libraries +extern int64_t __intel_mkl_feature_indicator; // CPU feature bits +extern int64_t __intel_mkl_feature_indicator_x; // CPU feature bits +void __intel_mkl_features_init(); // unfair dispatcher: checks CPU features for Intel CPU's only +void __intel_mkl_features_init_x(); // fair dispatcher: checks CPU features without discriminating by CPU brand + +#ifdef __cplusplus +} // end of extern "C" +#endif + +void intel_mkl_patch() { + // force a re-evaluation of the CPU features without discriminating by CPU brand + __intel_mkl_feature_indicator = 0; + __intel_mkl_feature_indicator_x = 0; + __intel_mkl_features_init_x(); + __intel_mkl_feature_indicator = __intel_mkl_feature_indicator_x; +} diff --git a/source/common/patch_intel.f90 b/source/common/patch_intel.f90 new file mode 100644 index 0000000000000000000000000000000000000000..b31a152d42214dfa3a67304a41b18cb5fcc701d0 --- /dev/null +++ b/source/common/patch_intel.f90 @@ -0,0 +1,43 @@ + +!-----------------------------------------------------------------------------------------! +! Copyright (c) 2020 Peter Grünberg Institut, Forschungszentrum Jülich, Germany ! +! This file is part of Jülich KKR code and available as free software under the conditions! +! of the MIT license as expressed in the LICENSE.md file in more detail. ! +!-----------------------------------------------------------------------------------------! + +module mod_patch_intel + + private + public :: patch_intel + + + !------------------------------------------------------------------------------- + !> Summary: interface to patch_intel.c which make mkl believe it works on a intel CPU + !> Author: + !> Category: + !> Deprecated: False + !> taken from fleur code, seems to give better performance on AMD hardware + !> than unpatched MKL or AMD's BLIS+FLAME libraries. + !------------------------------------------------------------------------------- +contains + + subroutine patch_intel() + !we try to patch the intel libraries to overwrite determination of 'INTEL' brand + !otherwise performance on AMD CPUs is bad. + INTERFACE + subroutine mkl_patch() BIND(C, name="intel_mkl_patch") + END subroutine + END INTERFACE + INTERFACE + subroutine cpu_patch() BIND(C, name="intel_cpu_patch") + END subroutine + END INTERFACE + + print *,"INTEL PATCH applied" + + call cpu_patch() + call mkl_patch() + + end subroutine patch_intel + +end module mod_patch_intel \ No newline at end of file diff --git a/source/common/pointgrp.f90 b/source/common/pointgrp.f90 index 348bd5cc76695604e7d5f22d2e1b37a8d6cbfd59..1d43e15c5cd2991b957c1bfe9c7a812830befad1 100644 --- a/source/common/pointgrp.f90 +++ b/source/common/pointgrp.f90 @@ -24,10 +24,14 @@ contains !> This subroutine defines the rotation matrices for all the 32 point groups and names them after !> J.F. Cornwell (Group Theory??) second edition Appendix D, p 324-325 !------------------------------------------------------------------------------- - subroutine pointgrp(rotmat, rotname) + subroutine pointgrp(rotmat, rotname, writesymfile) implicit none + ! optional input, can trigger writeout of symmetry matrices to sym.out file + logical, optional :: writesymfile + integer, parameter :: iou=3514 ! file unit for sym.out file + ! .. Output variables real (kind=dp), dimension(64, 3, 3), intent(out) :: rotmat !! Rotation matrices character (len=10), dimension(64), intent(out) :: rotname !! Name of the space group @@ -243,6 +247,20 @@ contains rotname(56+is) = 'I' // rotname(48+is) end do + ! for FS code we should be able to write out the symmetries to a file + if (present(writesymfile)) then + if(writesymfile)then + open(unit=iou,file='sym.out',form='formatted',action='write') + write(iou,'(I0)') 64 + do is=1,64 + write(iou,'(A)') ROTNAME(is) + write(iou,'(3ES25.16)') ROTMAT(is,:,:) + end do + close(iou) + writesymfile = .false. + end if ! writesymfile + end if ! present(writesymfile) + ! ccccccccccccccccccccccccccccccccccccccccccccccccc end subroutine pointgrp diff --git a/source/common/runoptions.F90 b/source/common/runoptions.F90 index bf0c430dd0f990db59608cb9dac221918f4bda65..536ad1e866a60a6816978fab17999b84cd2010c1 100644 --- a/source/common/runoptions.F90 +++ b/source/common/runoptions.F90 @@ -19,7 +19,8 @@ module mod_runoptions logical :: calc_DOS_Efermi = .false. !!calculate DOS at Fermi energy only (former: 'DOS-EF') logical :: calc_GF_Efermi = .false. !!calculation of cluster Green function at E Fermi (former: 'GF-EF') logical :: set_cheby_nospeedup = .false. !!always calculate irregular solution in Chebychev solver (even if not needed) (former: 'norllsll') - logical :: set_cheby_nosoc = .false. !!decouple matrices in Chebychev solver neglecting SOC (former: 'NOSOC') + logical :: decouple_spins_cheby = .false. !!decouple spin matrices in Chebychev solver neglecting SOC and for collinear calculations only + logical :: set_cheby_nosoc = .false. !!set SOC strength to 0 for all atoms (former: 'NOSOC') logical :: use_cheby_quadprec = .false. !!use quadruple precision in Chebychev solver for irregular solution (former: 'quadprec') logical :: calc_complex_bandstructure = .false. !!complex band structure (former: 'COMPLEX') logical :: calc_exchange_couplings = .false. !!calculate magnetic exchange coupling parameters (former: 'XCPL') @@ -112,8 +113,8 @@ module mod_runoptions logical :: write_tmat_file = .false. !!write t-matix to file (former: 'tmatfile') logical :: write_tb_coupling = .false. !!write couplings in tight-binging reference system to file `couplings.dat` (former: 'godfrin') logical :: calc_wronskian = .false. !!calculate the wronskian relations of first and second kind for the wavefunctions (see PhD Bauer pp 48) - logical :: use_boyden_spinmix = .false. !! use broyden spin mixing for noncollinear angles - logical :: write_angles_alliter= .false. !! use broyden spin mixing for noncollinear angles + logical :: use_broyden_spinmix = .false. !! use broyden spin mixing for noncollinear angles + logical :: write_angles_alliter= .false. !! write out noncollinear angles for all iterations !some old run and test options have been removed: ! 'atptshft': replaced by presence or absence of IVSHIFT in inputcard @@ -204,6 +205,7 @@ module mod_runoptions call set_runoption(symmetrize_potential_madelung , '<symmetrize_potential_madelung>' , '<potsymm>' ) call set_runoption(use_cheby_quadprec , '<use_cheby_quadprec>' , '<quadprec>') call set_runoption(set_cheby_nosoc , '<set_cheby_nosoc>' , '<NOSOC>' ) + call set_runoption(decouple_spins_cheby , '<decouple_spins_cheby>') call set_runoption(set_empty_system , '<set_empty_system>' , '<zeropot>' ) call set_runoption(write_tmat_file , '<write_tmat_file>' , '<tmatfile>') call set_runoption(write_tb_coupling , '<write_tb_coupling>' , '<godfrin>' ) @@ -233,7 +235,7 @@ module mod_runoptions call set_runoption(use_lloyd , '<use_lloyd>' , '<LLOYD>' ) call set_runoption(write_gmat_file , '<write_gmat_file>' , '<gmatfile>') call set_runoption(calc_wronskian , '<calc_wronskian>' , '<wronskian>') - call set_runoption(use_boyden_spinmix , '<use_boyden_spinmix>' , '<bryspinmix>') + call set_runoption(use_broyden_spinmix , '<use_broyden_spinmix>' , '<bryspinmix>') call set_runoption(write_angles_alliter , '<write_angles_alliter>') end subroutine read_runoptions @@ -746,6 +748,7 @@ module mod_runoptions call mpi_bcast(symmetrize_potential_madelung , 1, mpi_logical, master, mpi_comm_world, ierr) call mpi_bcast(use_cheby_quadprec , 1, mpi_logical, master, mpi_comm_world, ierr) call mpi_bcast(set_cheby_nosoc , 1, mpi_logical, master, mpi_comm_world, ierr) + call mpi_bcast(decouple_spins_cheby , 1, mpi_logical, master, mpi_comm_world, ierr) call mpi_bcast(set_empty_system , 1, mpi_logical, master, mpi_comm_world, ierr) call mpi_bcast(write_tmat_file , 1, mpi_logical, master, mpi_comm_world, ierr) call mpi_bcast(write_tb_coupling , 1, mpi_logical, master, mpi_comm_world, ierr) @@ -775,10 +778,124 @@ module mod_runoptions call mpi_bcast(use_lloyd , 1, mpi_logical, master, mpi_comm_world, ierr) call mpi_bcast(write_gmat_file , 1, mpi_logical, master, mpi_comm_world, ierr) call mpi_bcast(calc_wronskian , 1, mpi_logical, master, mpi_comm_world, ierr) - call mpi_bcast(use_boyden_spinmix , 1, mpi_logical, master, mpi_comm_world, ierr) + call mpi_bcast(use_broyden_spinmix , 1, mpi_logical, master, mpi_comm_world, ierr) call mpi_bcast(write_angles_alliter , 1, mpi_logical, master, mpi_comm_world, ierr) end subroutine bcast_runoptions #endif + !------------------------------------------------------------------------------- + !> Summary: Write out the runoptions to file with iounit unit + !> Author: Philipp Ruessmann + !> Category: KKRhost + !> Deprecated: False ! This needs to be set to True for deprecated subroutines + !> + !> needs to be updated if new runoptions are added! + !------------------------------------------------------------------------------- + subroutine print_runoptions(iounit) + + implicit none + integer, intent(in) :: iounit !! unit for the writeout of the runoptions + + write(iounit, '(A)') "# List of run options:" + write(iounit, '(A35,1x,1L,3x,A)') '<calc_GF_Efermi>=', calc_GF_Efermi, "calculation of cluster Green function at E Fermi (former: 'GF-EF')" + write(iounit, '(A35,1x,1L,3x,A)') '<set_cheby_nospeedup>=', set_cheby_nospeedup, "always calculate irregular solution in Chebychev solver (even if not needed) (former: 'norllsll')" + write(iounit, '(A35,1x,1L,3x,A)') '<set_cheby_nosoc>=', set_cheby_nosoc, "set SOC strength to 0 for all atoms (former: 'NOSOC')" + write(iounit, '(A35,1x,1L,3x,A)') '<decouple_spins_cheby>=', decouple_spins_cheby, "decouple spin matrices in Chebychev solver neglecting SOC and for collinear calculations only" + write(iounit, '(A35,1x,1L,3x,A)') '<calc_complex_bandstructure>=', calc_complex_bandstructure, "complex band structure (former: 'COMPLEX')" + write(iounit, '(A35,1x,1L,3x,A)') '<calc_exchange_couplings>=', calc_exchange_couplings, "calculate magnetic exchange coupling parameters (former: 'XCPL')" + write(iounit, '(A35,1x,1L,3x,A)') '<calc_exchange_couplings_energy>=', calc_exchange_couplings_energy, "write energy-resolved Jij-files also if npol/=0 (former: 'Jijenerg')" + write(iounit, '(A35,1x,1L,3x,A)') '<calc_gmat_lm_full>=', calc_gmat_lm_full, "calculate all lm-lm components of systems greens function and store to file `gflle` (former: 'lmlm-dos')" + write(iounit, '(A35,1x,1L,3x,A)') '<dirac_scale_SpeefOfLight>=', dirac_scale_SpeefOfLight, "scale the speed of light for Dirac solver (former: 'CSCALE')" + write(iounit, '(A35,1x,1L,3x,A)') '<disable_charge_neutrality>=', disable_charge_neutrality, "no charge neutrailty required: leaving Fermi level unaffected (former: 'no-neutr')" + write(iounit, '(A35,1x,1L,3x,A)') '<disable_print_serialnumber>=', disable_print_serialnumber, "deactivate writing of serial number and version information to files (for backwards compatibility) (former: 'noserial')" + write(iounit, '(A35,1x,1L,3x,A)') '<disable_reference_system>=', disable_reference_system, "deactivate the tight-binding reference system (former: 'lrefsysf')" + write(iounit, '(A35,1x,1L,3x,A)') '<disable_tmat_sratrick>=', disable_tmat_sratrick, "deactivate SRATRICK in solver for t-matirx (former: 'nosph')" + write(iounit, '(A35,1x,1L,3x,A)') '<fix_nonco_angles>=', fix_nonco_angles, "fix direction of non-collinear magnetic moments (Chebychev solver) (former: 'FIXMOM')" + write(iounit, '(A35,1x,1L,3x,A)') '<formatted_file>=', formatted_file, "write files ascii-format. only effective with some other write-options (former: 'fileverb')" + write(iounit, '(A35,1x,1L,3x,A)') '<impurity_operator_only>=', impurity_operator_only, "only for `write_pkkr_operators`: disable costly recalculation of host operators (former: 'IMP_ONLY')" + write(iounit, '(A35,1x,1L,3x,A)') '<modify_soc_Dirac>=', modify_soc_Dirac, "modify SOC for Dirac solver (former: 'SOC')" + write(iounit, '(A35,1x,1L,3x,A)') '<no_madelung>=', no_madelung, "do not add some energy terms (coulomb, XC, eff. pot.) to total energy (former: 'NoMadel')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_Gij>=', print_Gij, "print cluster G_ij matrices to outfile (former: 'Gmatij')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_gmat>=', print_gmat, "print Gmat to outfile (former: 'Gmat')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_ickeck>=', print_ickeck, "enable test-output of ICHECK matrix from gfmask (former: 'ICHECK')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_kmesh>=', print_kmesh, "output of k-mesh (former: 'k-net')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_kpoints>=', print_kpoints, "print k-points to outfile (former: 'BZKP')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_program_flow>=', print_program_flow, "monitor the program flow in some parts of the code (former: 'flow')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_radial_mesh>=', print_radial_mesh, "write mesh information to output (former: 'RMESH')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_refpot>=', print_refpot, "test output of refpot (former: 'REFPOT')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_tau_structure>=', print_tau_structure, "write extensive information about k-mesh symmetrization and structure of site-diagonal tau matrices to output (former: 'TAUSTRUC')" + write(iounit, '(A35,1x,1L,3x,A)') '<print_tmat>=', print_tmat, "print t-matrix to outfile (former: 'tmat')" + write(iounit, '(A35,1x,1L,3x,A)') '<relax_SpinAngle_Dirac>=', relax_SpinAngle_Dirac, "relax the spin angle in a SCF calculation [only DIRAC mode] (former: 'ITERMDIR')" + write(iounit, '(A35,1x,1L,3x,A)') '<search_Efermi>=', search_Efermi, "modify convergence parameters to scan for fermi energy only (to reach charge neutrality). (former: 'SEARCHEF')" + write(iounit, '(A35,1x,1L,3x,A)') '<set_gmat_to_zero>=', set_gmat_to_zero, "set GMAT=0 in evaluation of density (former: 'GMAT=0')" + write(iounit, '(A35,1x,1L,3x,A)') '<set_empty_system>=', set_empty_system, "set potential and nuclear charge to zero (former: 'zeropot')" + write(iounit, '(A35,1x,1L,3x,A)') '<set_kmesh_large>=', set_kmesh_large, "set equal k-mesh (largest) for all energy points (former: 'fix mesh')" + write(iounit, '(A35,1x,1L,3x,A)') '<set_kmesh_small>=', set_kmesh_small, "set equal k-mesh (smallest) for all energy points (former: 'fix4mesh')" + write(iounit, '(A35,1x,1L,3x,A)') '<set_tmat_noinversion>=', set_tmat_noinversion, "do not perform inversion to get msst = Delta t^-1, but msst = Delta t. (former: 'testgmat')" + write(iounit, '(A35,1x,1L,3x,A)') '<simulate_asa>=', simulate_asa, "set non-spherical potential to zero in full-potential calculation with Chebychev solver (former: 'simulasa')" + write(iounit, '(A35,1x,1L,3x,A)') '<slow_mixing_Efermi>=', slow_mixing_Efermi, "renormalize Fermi-energy shift by mixing factor during mixing (former: 'slow-neu')" + write(iounit, '(A35,1x,1L,3x,A)') '<stop_1a>=', stop_1a, "stop after main1a (former: 'STOP1A')" + write(iounit, '(A35,1x,1L,3x,A)') '<stop_1b>=', stop_1b, "stop after main1b (former: 'STOP1B')" + write(iounit, '(A35,1x,1L,3x,A)') '<stop_1c>=', stop_1c, "stop after main1c (former: 'STOP1C')" + write(iounit, '(A35,1x,1L,3x,A)') '<symmetrize_gmat>=', symmetrize_gmat, "use symmetrization [G(k) + G(-k)]/2 in k-point loop (former: 'symG(k)')" + write(iounit, '(A35,1x,1L,3x,A)') '<symmetrize_potential_cubic>=', symmetrize_potential_cubic, "keep only symmetric part of potential (L=1,11,21,25,43,47). (former: 'potcubic')" + write(iounit, '(A35,1x,1L,3x,A)') '<symmetrize_potential_madelung>=', symmetrize_potential_madelung, "symmetrize potential in consistency to madelung potential (former: 'potsymm')" + write(iounit, '(A35,1x,1L,3x,A)') '<torque_operator_onlyMT>=', torque_operator_onlyMT, "for torque operator: include only the part within the muffin tin (former: 'ONLYMT')" + write(iounit, '(A35,1x,1L,3x,A)') '<torque_operator_onlySph>=', torque_operator_onlySph, "for torque operator: include only the spherically symmetric part (former: 'ONLYSPH')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_BdG>=', use_BdG, "use Bogoliubov-de-Gennes Formalism (former: 'useBdG')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_Chebychev_solver>=', use_Chebychev_solver, "use the Chebychev solver (former: 'NEWSOSOL')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_cond_LB>=', use_cond_LB, "perform calculation of conductance in Landauer-Büttiker formalism (former: 'CONDUCT')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_cont>=', use_cont, "no usage of embedding points. NEMB is set to 0. (former: 'CONT')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_deci_onebulk>=', use_deci_onebulk, "in case of decimation: use same bulk on right and left. Speeds up calculations. (former: 'ONEBULK')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_decimation>=', use_decimation, "use Decimation technique for semi-infinite systems (former: 'DECIMATE')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_ewald_2d>=', use_ewald_2d, "use 2D ewald sum instead of 3D sum (Attention: does not work always!) (former: 'ewald2d')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_full_BZ>=', use_full_BZ, "use full Brillouin zone, i.e. switch off symmetries for k-space integration (former: 'fullBZ')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_ldau>=', use_ldau, "use LDA+U as exchange-correlation potential (former: 'LDA+U')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_lloyd>=', use_lloyd, "use Lloyds formula to correct finite angular momentum cutoff (former: 'LLOYD')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_qdos>=', use_qdos, "writes out qdos files for band structure calculations. (former: 'qdos')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_readcpa>=', use_readcpa, "read cpa t-matrix from file (former: 'readcpa')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_rigid_Efermi>=', use_rigid_Efermi, "keep the Fermi energy fixed during self-consistency (former: 'rigid-ef')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_semicore>=', use_semicore, "use semicore contour (former: 'SEMICORE')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_spherical_potential_only>=', use_spherical_potential_only, "keeping only spherical component of potential (former: 'Vspher')" + write(iounit, '(A35,1x,1L,3x,A)') '<use_virtual_atoms>=', use_virtual_atoms, "add virtual atoms (former: 'VIRATOMS')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_BdG_tests>=', write_BdG_tests, "test options for Bogouliubov-deGennes (former: 'BdG_dev')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_DOS>=', write_DOS, "write out DOS files in any case (also if npol!=0) (former: 'DOS')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_DOS_lm>=', write_DOS_lm, "write out DOS files with decomposition into l and m components (former: 'lmdos')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_gmat_plain>=', write_gmat_plain, "write out Green function as plain text file (former: 'GPLAIN')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_green_host>=', write_green_host, "write green function of the host to file `green_host` (former: 'WRTGREEN')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_green_imp>=', write_green_imp, "write out impurity Green function to GMATLL_GES (former: 'GREENIMP')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_complex_qdos>=', write_complex_qdos, "write complex qdos to file (former: 'compqdos')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_cpa_projection_file>=', write_cpa_projection_file, "write CPA projectors to file (former: 'projfile')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_deci_pot>=', write_deci_pot, "write decimation-potential file (former: 'deci-pot')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_deci_tmat>=', write_deci_tmat, "write t-matrix to file 'decifile' (former: 'deci-out')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_density_ascii>=', write_density_ascii, "write density rho2ns to file densitydn.ascii (former: 'den-asci')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_energy_mesh>=', write_energy_mesh, "write out the energy mesh to file `emesh.scf` (former: 'EMESH')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_generalized_potential>=', write_generalized_potential, "write potential in general format. Usually prepares for running the VORONOI program. (former: 'GENPOT')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_gmat_file>=', write_gmat_file, "write GMAT to file (former: 'gmatfile')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_gref_file>=', write_gref_file, "write GREF to file (former: 'greffile')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_gmat_ascii>=', write_gmat_ascii, "write GMAT to formatted file `gmat.ascii` (former: 'gmatasci')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_kkrimp_input>=', write_kkrimp_input, "write out files for KKRimp-code (former: 'KKRFLEX')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_kkrsusc_input>=', write_kkrsusc_input, "write out files for KKRsusc-code (former: 'KKRSUSC')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_kpts_file>=', write_kpts_file, "write and read k-mesh to/from file `kpoints` (former: 'kptsfile')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_cdos_file>=', write_lloyd_cdos_file, "write Lloyd array to file (former: 'wrtcdos')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_dgref_file>=', write_lloyd_dgref_file, "write Lloyd array to file (former: 'wrtdgref')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_dtmat_file>=', write_lloyd_dtmat_file, "write Lloyd array to file (former: 'wrtdtmat')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_file>=', write_lloyd_file, "write several Lloyd-arrays to files (former: 'llyfiles')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_g0tr_file>=', write_lloyd_g0tr_file, "write Lloyd array to file (former: 'wrtgotr')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_lloyd_tralpha_file>=', write_lloyd_tralpha_file, "write Lloyd array to file (former: 'wrttral')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_madelung_file>=', write_madelung_file, "write madelung summation to file 'abvmad.unformatted' instead of keeping it in memory (former: 'madelfil')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_pkkr_input>=', write_pkkr_input, "write out files for Pkkprime-code (former: 'FERMIOUT')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_pkkr_operators>=', write_pkkr_operators, "for Fermi-surface output: calculate various operators in KKR basis. (former: 'OPERATOR')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_potential_tests>=', write_potential_tests, "write potential at different steps in main2 to different files (former: 'vintrasp' and 'vpotout')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_rho2ns>=', write_rho2ns, "write array rho2ns into file out_rhoval (from main1c) and out_rhotot (from main2) (former: 'RHOVALTW' and 'RHOVALW')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_rhoq_input>=', write_rhoq_input, "write out files needed for rhoq module (Quasiparticle interference) (former: 'rhoqtest')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_tmat_file>=', write_tmat_file, "write t-matix to file (former: 'tmatfile')" + write(iounit, '(A35,1x,1L,3x,A)') '<write_tb_coupling>=', write_tb_coupling, "write couplings in tight-binging reference system to file `couplings.dat` (former: 'godfrin')" + write(iounit, '(A35,1x,1L,3x,A)') '<calc_wronskian>=', calc_wronskian, "calculate the wronskian relations of first and second kind for the wavefunctions (see PhD Bauer pp 48)" + write(iounit, '(A35,1x,1L,3x,A)') '<use_broyden_spinmix>=', use_broyden_spinmix, "use broyden spin mixing for noncollinear angles" + write(iounit, '(A35,1x,1L,3x,A)') '<write_angles_alliter>=', write_angles_alliter, "write out noncollinear angles for all iterations" + + end subroutine print_runoptions + end module mod_runoptions diff --git a/source/common/spinorbit_ham.f90 b/source/common/spinorbit_ham.f90 index 011e5f007fcd64e09e2d3c6856f4944a6c78fb57..5e0d00a2132c955b82a6c6387c0c47fda3fd4275 100644 --- a/source/common/spinorbit_ham.f90 +++ b/source/common/spinorbit_ham.f90 @@ -33,7 +33,7 @@ contains use :: mod_datatypes, only: dp use :: mod_constants, only: czero - use :: mod_runoptions, only: set_cheby_nosoc + use :: mod_runoptions, only: set_cheby_nosoc, decouple_spins_cheby use :: mod_cheb, only: getclambdacinv use :: mod_spin_orbit_compl, only: spin_orbit_compl use :: mod_rotatespinframe, only: rotatematrix @@ -136,7 +136,7 @@ contains ! contruct prefactor of spin-orbit hamiltonian hsofac = 0e0_dp vnspll1 = (0e0_dp, 0e0_dp) - if (set_cheby_nosoc .or. zat<1e-6_dp) then + if (set_cheby_nosoc .or. decouple_spins_cheby .or. zat<1e-6_dp) then vnspll1(1:2*lmmaxd, 1:2*lmmaxd, 1:irmdnew) = vnspll(1:2*lmmaxd, 1:2*lmmaxd, 1:irmdnew) else do ir = 1, irmdnew diff --git "a/source/deprecated/from_KKRimp/rhoval_new.f90\\" "b/source/deprecated/from_KKRimp/rhoval_new.f90\\" deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/inputcard b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/inputcard new file mode 100644 index 0000000000000000000000000000000000000000..0368a46508da21c340209d6677cd5a73ab3eb721 --- /dev/null +++ b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/inputcard @@ -0,0 +1,54 @@ + ***Running options*** +RUNOPT +full invLLOYD NEWSOSOL ++-------+-------+-------+-------+-------+ +TESTOPT +NOSOC + ++-------+-------+-------+-------+-------+ + LMAX=2 NSPIN=2 NATYP=4 +-------------------------------------------- + ** Description of lattice** +ALATBASIS= 10.263 +LATTICE=1 +BRAVAIS + 0.0 0.5 0.5 + 0.5 0.0 0.5 + 0.5 0.5 0.0 +---------------------------------------------------------------------- +NAEZ=4 NEMB=0 NEMBZ=0 KAOEZ=1 +CARTESIAN= f +RBASIS <SOCSCL> + 0.00000 0.00000 0.00000 0.0 + 0.25000 0.25000 0.25000 0.0 + 0.50000 0.50000 0.50000 0.0 + 0.75000 0.75000 0.75000 0.0 +---------------------------------------------------------------------- +Parameters for the clusters (if same spherical cluster else cylindrical) +RCLUSTZ=1.05d0 +---------------------------------------------------------------------- +ATOMINFO +Z LMXC KFG CLS REFPOT NTC FAC IRNS RMT WGHT +14.0 3 2 1 0 0 1 1 1 1.00 208 2.2d0 1.0d0 +14.0 3 2 1 0 0 1 1 1 1.00 208 2.2d0 1.0d0 + 0.0 0 0 0 0 0 1 1 1 1.00 208 2.2d0 1.0d0 + 0.0 0 0 0 0 0 1 1 1 1.00 208 2.2d0 1.0d0 +---------------------------------------------------------------------- +EMIN EMAX TEMPR NPOL NPT1 NPT2 NPT3 +-0.40 1.2 473.d0 5 3 10 3 +---------------------------------------------------------------------- +BZDIVIDE= 10 10 10 +---------------------------------------------------------------------- +NSTEPS IMIX STRMIX FCM QBOUND BRYMIX ITDBRY + 1 5 0.010 20.0 1.D-8 0.06 20 +---------------------------------------------------------------------- +Parameters for ewald sums +RMAX=7.0d0 GMAX=65.0d0 (fcc 7 65) +---------------------------------------------------------------------- + +NPAN_LOG= 8 +NPAN_EQ= 3 +NCHEB= 7 +R_LOG= 0.60 + +<decouple_spins_cheby>= T diff --git a/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/potential b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/potential new file mode 120000 index 0000000000000000000000000000000000000000..ec68b8ce5a0075c3ad91b1826f9a3ef716d1febd --- /dev/null +++ b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/potential @@ -0,0 +1 @@ +../potential \ No newline at end of file diff --git a/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/shapefun b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/shapefun new file mode 120000 index 0000000000000000000000000000000000000000..5499a713f4624579e925222f0ba0e508381077fb --- /dev/null +++ b/tests/KKRhost/test_inputs/test_03.2_NOSOC/NEWSOSOL_DECOUPLED_SPINS/shapefun @@ -0,0 +1 @@ +../shapefun \ No newline at end of file diff --git a/tests/KKRhost/test_inputs/test_04.1/inputcard b/tests/KKRhost/test_inputs/test_04.1/inputcard index 101ebff17c957483a3317d16adb8756e878e1e7d..8e4dc71633abf043ab3834a27b5d51cffc6829f7 100644 --- a/tests/KKRhost/test_inputs/test_04.1/inputcard +++ b/tests/KKRhost/test_inputs/test_04.1/inputcard @@ -67,7 +67,4 @@ NPAN_EQ= 3 NCHEB= 6 R_LOG= 0.600000000000000 -NPAN_LOG= 5 -NPAN_EQ= 3 -NCHEB= 6 -R_LOG= 0.600000000000000 +<set_kmesh_large>= T diff --git a/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00002 b/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00002 index 61308b2e2ac4f4b0b6494643a3edb2d93d54d136..2f7a13947fe357dbf957314055a944ffab34107b 100644 --- a/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00002 +++ b/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00002 @@ -1,68 +1,68 @@ -# serial: kkrjm_v2.3-64-g8cc70fc_mpi_20180831102945; MD5 (potential) = 9a1124b567de286b27a5602d727b59f3; MD5 (shapefun) = 2a2e1c5c0b89c36da8d88650ba34a20e +# serial: JuKKR_v3.1-1717-g1f7d9f5_gnu_20201103133014; 00000000000000000000000000000000 potential; 00000000000000000000000000000000 shapefun # off-diagonal exchange coupling constants # for atom IT = 2 on site IQ = 2 impurity site = 1 # R_IQ,JQ J_IT,JT D_IT,JT S_IT,JT A_IT,JT Rvec JT # ( ALAT ) ( Ry ) # - 1.00000000 -0.83636663E-02 0.18976607E-17 -0.16050221E-05 0.88273932E-13 -1.00000000 0.00000000 0.00000000 2 11 - 1.00000000 -0.83636663E-02 0.10349026E-17 0.16050221E-05 -0.88281191E-13 0.00000000 -1.00000000 0.00000000 2 16 - 1.00000000 -0.83636663E-02 0.14600428E-18 0.16050221E-05 -0.88281142E-13 0.00000000 1.00000000 0.00000000 2 17 - 1.00000000 -0.83636663E-02 -0.54838341E-18 -0.16050221E-05 0.88273976E-13 1.00000000 0.00000000 0.00000000 2 22 - 1.41421356 -0.91731971E-02 0.71090636E-18 0.43819938E-13 -0.93730079E-06 -1.00000000 -1.00000000 0.00000000 2 10 - 1.41421356 -0.91731971E-02 0.47083333E-18 -0.43819130E-13 0.93730079E-06 -1.00000000 1.00000000 0.00000000 2 12 - 1.41421356 -0.91731971E-02 0.74879682E-18 -0.43819128E-13 0.93730079E-06 1.00000000 -1.00000000 0.00000000 2 21 - 1.41421356 -0.91731971E-02 0.50269308E-18 0.43819939E-13 -0.93730079E-06 1.00000000 1.00000000 0.00000000 2 23 - 2.00000000 0.28014748E-02 0.40050260E-17 -0.14981927E-06 0.47104896E-13 -2.00000000 0.00000000 0.00000000 2 6 - 2.00000000 0.28014748E-02 0.26075830E-17 0.14981927E-06 -0.47109748E-13 0.00000000 -2.00000000 0.00000000 2 15 - 2.00000000 0.28014748E-02 0.67608466E-17 0.14981927E-06 -0.47111987E-13 0.00000000 2.00000000 0.00000000 2 18 - 2.00000000 0.28014748E-02 0.48109943E-17 -0.14981927E-06 0.47101222E-13 2.00000000 0.00000000 0.00000000 2 27 - 2.23606798 -0.83568629E-02 0.94401450E-18 0.32330835E-06 0.21935118E-06 -2.00000000 -1.00000000 0.00000000 2 5 - 2.23606798 -0.83568629E-02 0.61005864E-18 0.32330843E-06 -0.21935122E-06 -2.00000000 1.00000000 0.00000000 2 7 - 2.23606798 -0.83568629E-02 0.97165785E-18 -0.32330843E-06 0.21935122E-06 -1.00000000 -2.00000000 0.00000000 2 9 - 2.23606798 -0.83568629E-02 0.60824271E-18 -0.32330835E-06 -0.21935118E-06 -1.00000000 2.00000000 0.00000000 2 13 - 2.23606798 -0.83568629E-02 0.62284646E-18 -0.32330835E-06 -0.21935118E-06 1.00000000 -2.00000000 0.00000000 2 20 - 2.23606798 -0.83568629E-02 0.32331699E-18 -0.32330843E-06 0.21935122E-06 1.00000000 2.00000000 0.00000000 2 24 - 2.23606798 -0.83568629E-02 0.49233594E-18 0.32330843E-06 -0.21935122E-06 2.00000000 -1.00000000 0.00000000 2 26 - 2.23606798 -0.83568629E-02 0.19521754E-18 0.32330835E-06 0.21935118E-06 2.00000000 1.00000000 0.00000000 2 28 - 2.82842712 0.26607947E-02 0.66319002E-17 0.45004104E-15 -0.10241133E-05 -2.00000000 -2.00000000 0.00000000 2 4 - 2.82842712 0.26607947E-02 0.49869260E-17 -0.45050590E-15 0.10241133E-05 -2.00000000 2.00000000 0.00000000 2 8 - 2.82842712 0.26607947E-02 0.43618946E-17 -0.45050206E-15 0.10241133E-05 2.00000000 -2.00000000 0.00000000 2 25 - 2.82842712 0.26607947E-02 0.53747417E-17 0.45012027E-15 -0.10241133E-05 2.00000000 2.00000000 0.00000000 2 29 - 3.00000000 0.14787638E-02 -0.16914816E-17 -0.29261724E-06 0.50056964E-13 -3.00000000 0.00000000 0.00000000 2 3 - 3.00000000 0.14787638E-02 -0.26944937E-17 0.29261724E-06 -0.50069220E-13 0.00000000 -3.00000000 0.00000000 2 14 - 3.00000000 0.14787638E-02 0.43666405E-17 0.29261724E-06 -0.50070381E-13 0.00000000 3.00000000 0.00000000 2 19 - 3.00000000 0.14787638E-02 0.23211008E-17 -0.29261724E-06 0.50060374E-13 3.00000000 0.00000000 0.00000000 2 30 + 1.00000000 0.91949538E-04 0.17898225E-18 -0.13678665E-05 0.87333726E-13 -1.00000000E+00 0.00000000E+00 0.00000000E+00 2 11 + 1.00000000 0.91949538E-04 -0.29486368E-18 0.13678665E-05 -0.87333653E-13 0.00000000E+00 -1.00000000E+00 0.00000000E+00 2 16 + 1.00000000 0.91949538E-04 0.17964965E-18 0.13678665E-05 -0.87333619E-13 0.00000000E+00 1.00000000E+00 0.00000000E+00 2 17 + 1.00000000 0.91949538E-04 -0.13603020E-18 -0.13678665E-05 0.87333717E-13 1.00000000E+00 0.00000000E+00 0.00000000E+00 2 22 + 1.41421356 -0.36219625E-03 0.13570908E-18 0.31495998E-13 -0.71483289E-06 -1.00000000E+00 -1.00000000E+00 0.00000000E+00 2 10 + 1.41421356 -0.36219625E-03 0.25155664E-19 -0.31495999E-13 0.71483289E-06 -1.00000000E+00 1.00000000E+00 0.00000000E+00 2 12 + 1.41421356 -0.36219625E-03 -0.29348947E-19 -0.31496031E-13 0.71483289E-06 1.00000000E+00 -1.00000000E+00 0.00000000E+00 2 21 + 1.41421356 -0.36219625E-03 -0.14501691E-18 0.31495956E-13 -0.71483289E-06 1.00000000E+00 1.00000000E+00 0.00000000E+00 2 23 + 2.00000000 0.37352049E-04 -0.93853008E-20 0.11741786E-06 0.41560390E-13 -2.00000000E+00 0.00000000E+00 0.00000000E+00 2 6 + 2.00000000 0.37352049E-04 0.14383369E-18 -0.11741786E-06 -0.41560403E-13 0.00000000E+00 -2.00000000E+00 0.00000000E+00 2 15 + 2.00000000 0.37352049E-04 -0.14342054E-18 -0.11741786E-06 -0.41560400E-13 0.00000000E+00 2.00000000E+00 0.00000000E+00 2 18 + 2.00000000 0.37352049E-04 0.81573992E-20 0.11741786E-06 0.41560394E-13 2.00000000E+00 0.00000000E+00 0.00000000E+00 2 27 + 2.23606798 0.27648596E-04 -0.14553037E-19 0.33892372E-07 -0.37742198E-06 -2.00000000E+00 -1.00000000E+00 0.00000000E+00 2 5 + 2.23606798 0.27648596E-04 0.12352948E-18 0.33892419E-07 0.37742196E-06 -2.00000000E+00 1.00000000E+00 0.00000000E+00 2 7 + 2.23606798 0.27648596E-04 -0.46850493E-19 -0.33892419E-07 -0.37742196E-06 -1.00000000E+00 -2.00000000E+00 0.00000000E+00 2 9 + 2.23606798 0.27648596E-04 0.54409724E-19 -0.33892372E-07 0.37742198E-06 -1.00000000E+00 2.00000000E+00 0.00000000E+00 2 13 + 2.23606798 0.27648596E-04 -0.53017577E-19 -0.33892372E-07 0.37742198E-06 1.00000000E+00 -2.00000000E+00 0.00000000E+00 2 20 + 2.23606798 0.27648596E-04 0.44506155E-19 -0.33892419E-07 -0.37742196E-06 1.00000000E+00 2.00000000E+00 0.00000000E+00 2 24 + 2.23606798 0.27648596E-04 -0.12328622E-18 0.33892419E-07 0.37742196E-06 2.00000000E+00 -1.00000000E+00 0.00000000E+00 2 26 + 2.23606798 0.27648596E-04 0.18572729E-19 0.33892372E-07 -0.37742198E-06 2.00000000E+00 1.00000000E+00 0.00000000E+00 2 28 + 2.82842712 -0.63799665E-06 0.56126309E-18 -0.15639335E-13 -0.51856069E-06 -2.00000000E+00 -2.00000000E+00 0.00000000E+00 2 4 + 2.82842712 -0.63799665E-06 -0.20357581E-18 0.15639347E-13 0.51856069E-06 -2.00000000E+00 2.00000000E+00 0.00000000E+00 2 8 + 2.82842712 -0.63799665E-06 0.19329802E-18 0.15639343E-13 0.51856069E-06 2.00000000E+00 -2.00000000E+00 0.00000000E+00 2 25 + 2.82842712 -0.63799665E-06 -0.56442472E-18 -0.15639336E-13 -0.51856069E-06 2.00000000E+00 2.00000000E+00 0.00000000E+00 2 29 + 3.00000000 0.37352049E-04 -0.15360517E-18 0.11741786E-06 0.41560394E-13 -3.00000000E+00 0.00000000E+00 0.00000000E+00 2 3 + 3.00000000 0.37352049E-04 -0.30019052E-18 -0.11741786E-06 -0.41560401E-13 0.00000000E+00 -3.00000000E+00 0.00000000E+00 2 14 + 3.00000000 0.37352049E-04 0.29559435E-18 -0.11741786E-06 -0.41560402E-13 0.00000000E+00 3.00000000E+00 0.00000000E+00 2 19 + 3.00000000 0.37352049E-04 0.15623299E-18 0.11741786E-06 0.41560398E-13 3.00000000E+00 0.00000000E+00 0.00000000E+00 2 30 #& - 0.86602540 0.35845296E-02 -0.16722559E-17 0.14587608E-12 0.25666040E-05 -0.50000000 -0.50000000 0.50000000 3 2 - 0.86602540 0.35845296E-02 -0.39592135E-18 -0.14587520E-12 -0.25666040E-05 -0.50000000 0.50000000 0.50000000 3 43 - 0.86602540 0.35845296E-02 -0.89867869E-18 -0.14587526E-12 -0.25666040E-05 0.50000000 -0.50000000 0.50000000 3 48 - 0.86602540 0.35845296E-02 -0.16402578E-18 0.14587548E-12 0.25666040E-05 0.50000000 0.50000000 0.50000000 3 49 - 1.65831240 0.51762952E-03 -0.55919565E-13 -0.57799932E-06 0.15539236E-06 -1.50000000 -0.50000000 0.50000000 3 37 - 1.65831240 0.51762952E-03 0.55918668E-13 -0.57799935E-06 -0.15539233E-06 -1.50000000 0.50000000 0.50000000 3 38 - 1.65831240 0.51762952E-03 0.55918984E-13 0.57799935E-06 0.15539233E-06 -0.50000000 -1.50000000 0.50000000 3 42 - 1.65831240 0.51762952E-03 -0.55920061E-13 0.57799932E-06 -0.15539236E-06 -0.50000000 1.50000000 0.50000000 3 44 - 1.65831240 0.51762952E-03 -0.55920144E-13 0.57799932E-06 -0.15539236E-06 0.50000000 -1.50000000 0.50000000 3 47 - 1.65831240 0.51762952E-03 0.55918509E-13 0.57799935E-06 0.15539233E-06 0.50000000 1.50000000 0.50000000 3 50 - 1.65831240 0.51762952E-03 0.55918846E-13 -0.57799935E-06 -0.15539233E-06 1.50000000 -0.50000000 0.50000000 3 54 - 1.65831240 0.51762952E-03 -0.55919809E-13 -0.57799932E-06 0.15539236E-06 1.50000000 0.50000000 0.50000000 3 55 - 2.17944947 0.71920399E-03 -0.67891287E-18 0.13386259E-13 -0.68665365E-07 -1.50000000 -1.50000000 0.50000000 3 36 - 2.17944947 0.71920399E-03 -0.49540081E-18 -0.13386044E-13 0.68665365E-07 -1.50000000 1.50000000 0.50000000 3 39 - 2.17944947 0.71920399E-03 -0.71081183E-18 -0.13386030E-13 0.68665365E-07 1.50000000 -1.50000000 0.50000000 3 53 - 2.17944947 0.71920399E-03 -0.58740290E-18 0.13386207E-13 -0.68665365E-07 1.50000000 1.50000000 0.50000000 3 56 - 2.59807621 0.13122593E-02 -0.61319981E-18 0.33002310E-06 -0.51267127E-06 -2.50000000 -0.50000000 0.50000000 3 32 - 2.59807621 0.13122593E-02 -0.16617553E-18 0.33002315E-06 0.51267126E-06 -2.50000000 0.50000000 0.50000000 3 33 - 2.59807621 0.13122593E-02 -0.76383626E-18 -0.33002315E-06 -0.51267126E-06 -0.50000000 -2.50000000 0.50000000 3 41 - 2.59807621 0.13122593E-02 -0.13796201E-17 -0.33002310E-06 0.51267127E-06 -0.50000000 2.50000000 0.50000000 3 45 - 2.59807621 0.13122593E-02 -0.47932066E-18 -0.33002310E-06 0.51267127E-06 0.50000000 -2.50000000 0.50000000 3 46 - 2.59807621 0.13122593E-02 -0.38864618E-18 -0.33002315E-06 -0.51267126E-06 0.50000000 2.50000000 0.50000000 3 51 - 2.59807621 0.13122593E-02 -0.17104686E-17 0.33002315E-06 0.51267126E-06 2.50000000 -0.50000000 0.50000000 3 59 - 2.59807621 0.13122593E-02 -0.78571900E-18 0.33002310E-06 -0.51267127E-06 2.50000000 0.50000000 0.50000000 3 60 - 2.95803989 0.45540091E-03 -0.56713963E-18 0.66489650E-06 -0.28938005E-06 -2.50000000 -1.50000000 0.50000000 3 31 - 2.95803989 0.45540091E-03 -0.67450084E-18 0.66489648E-06 0.28938006E-06 -2.50000000 1.50000000 0.50000000 3 34 - 2.95803989 0.45540091E-03 -0.44331868E-18 -0.66489648E-06 -0.28938006E-06 -1.50000000 -2.50000000 0.50000000 3 35 - 2.95803989 0.45540091E-03 -0.44056045E-18 -0.66489650E-06 0.28938005E-06 -1.50000000 2.50000000 0.50000000 3 40 - 2.95803989 0.45540091E-03 -0.49173461E-18 -0.66489650E-06 0.28938005E-06 1.50000000 -2.50000000 0.50000000 3 52 - 2.95803989 0.45540091E-03 -0.34770952E-18 -0.66489648E-06 -0.28938006E-06 1.50000000 2.50000000 0.50000000 3 57 - 2.95803989 0.45540091E-03 -0.34393078E-18 0.66489648E-06 0.28938006E-06 2.50000000 -1.50000000 0.50000000 3 58 - 2.95803989 0.45540091E-03 -0.25694348E-18 0.66489650E-06 -0.28938005E-06 2.50000000 1.50000000 0.50000000 3 61 + 0.86602540 0.37653945E-02 -0.43570963E-18 0.14018160E-12 0.23080243E-05 -5.00000000E-01 -5.00000000E-01 5.00000000E-01 3 2 + 0.86602540 0.37653945E-02 0.57816694E-18 -0.14018176E-12 -0.23080243E-05 -5.00000000E-01 5.00000000E-01 5.00000000E-01 3 43 + 0.86602540 0.37653945E-02 -0.18204643E-18 -0.14018167E-12 -0.23080243E-05 5.00000000E-01 -5.00000000E-01 5.00000000E-01 3 48 + 0.86602540 0.37653945E-02 -0.22586960E-18 0.14018151E-12 0.23080243E-05 5.00000000E-01 5.00000000E-01 5.00000000E-01 3 49 + 1.65831240 -0.13525709E-03 -0.62697114E-13 -0.55124823E-06 0.50610780E-06 -1.50000000E+00 -5.00000000E-01 5.00000000E-01 3 37 + 1.65831240 -0.13525709E-03 0.62697214E-13 -0.55124825E-06 -0.50610777E-06 -1.50000000E+00 5.00000000E-01 5.00000000E-01 3 38 + 1.65831240 -0.13525709E-03 0.62697372E-13 0.55124825E-06 0.50610777E-06 -5.00000000E-01 -1.50000000E+00 5.00000000E-01 3 42 + 1.65831240 -0.13525709E-03 -0.62697512E-13 0.55124823E-06 -0.50610780E-06 -5.00000000E-01 1.50000000E+00 5.00000000E-01 3 44 + 1.65831240 -0.13525709E-03 -0.62697140E-13 0.55124823E-06 -0.50610780E-06 5.00000000E-01 -1.50000000E+00 5.00000000E-01 3 47 + 1.65831240 -0.13525709E-03 0.62697597E-13 0.55124825E-06 0.50610777E-06 5.00000000E-01 1.50000000E+00 5.00000000E-01 3 50 + 1.65831240 -0.13525709E-03 0.62697058E-13 -0.55124825E-06 -0.50610777E-06 1.50000000E+00 -5.00000000E-01 5.00000000E-01 3 54 + 1.65831240 -0.13525709E-03 -0.62697006E-13 -0.55124823E-06 0.50610780E-06 1.50000000E+00 5.00000000E-01 5.00000000E-01 3 55 + 2.17944947 0.13983983E-03 -0.10388684E-18 0.21234244E-13 -0.29094243E-06 -1.50000000E+00 -1.50000000E+00 5.00000000E-01 3 36 + 2.17944947 0.13983983E-03 -0.62091179E-19 -0.21234224E-13 0.29094243E-06 -1.50000000E+00 1.50000000E+00 5.00000000E-01 3 39 + 2.17944947 0.13983983E-03 0.89315770E-20 -0.21234226E-13 0.29094243E-06 1.50000000E+00 -1.50000000E+00 5.00000000E-01 3 53 + 2.17944947 0.13983983E-03 0.13260979E-18 0.21234218E-13 -0.29094243E-06 1.50000000E+00 1.50000000E+00 5.00000000E-01 3 56 + 2.59807621 -0.78368796E-04 -0.21740809E-18 0.32208315E-06 -0.79021687E-14 -2.50000000E+00 -5.00000000E-01 5.00000000E-01 3 32 + 2.59807621 -0.78368796E-04 -0.79974150E-19 0.32208315E-06 -0.79021722E-14 -2.50000000E+00 5.00000000E-01 5.00000000E-01 3 33 + 2.59807621 -0.78368796E-04 -0.29749751E-18 -0.32208315E-06 0.79021712E-14 -5.00000000E-01 -2.50000000E+00 5.00000000E-01 3 41 + 2.59807621 -0.78368796E-04 -0.28085968E-18 -0.32208315E-06 0.79021656E-14 -5.00000000E-01 2.50000000E+00 5.00000000E-01 3 45 + 2.59807621 -0.78368796E-04 -0.12290804E-18 -0.32208315E-06 0.79021687E-14 5.00000000E-01 -2.50000000E+00 5.00000000E-01 3 46 + 2.59807621 -0.78368796E-04 -0.65596775E-19 -0.32208315E-06 0.79021692E-14 5.00000000E-01 2.50000000E+00 5.00000000E-01 3 51 + 2.59807621 -0.78368796E-04 -0.20726667E-18 0.32208315E-06 -0.79021694E-14 2.50000000E+00 -5.00000000E-01 5.00000000E-01 3 59 + 2.59807621 -0.78368796E-04 0.25611625E-18 0.32208315E-06 -0.79021720E-14 2.50000000E+00 5.00000000E-01 5.00000000E-01 3 60 + 2.95803989 -0.13459247E-03 0.20217104E-18 0.60562794E-06 0.32380493E-14 -2.50000000E+00 -1.50000000E+00 5.00000000E-01 3 31 + 2.95803989 -0.13459247E-03 0.85677723E-19 0.60562794E-06 0.32380421E-14 -2.50000000E+00 1.50000000E+00 5.00000000E-01 3 34 + 2.95803989 -0.13459247E-03 0.14482482E-18 -0.60562794E-06 -0.32380635E-14 -1.50000000E+00 -2.50000000E+00 5.00000000E-01 3 35 + 2.95803989 -0.13459247E-03 0.27024737E-18 -0.60562794E-06 -0.32380578E-14 -1.50000000E+00 2.50000000E+00 5.00000000E-01 3 40 + 2.95803989 -0.13459247E-03 -0.27257479E-21 -0.60562794E-06 -0.32380728E-14 1.50000000E+00 -2.50000000E+00 5.00000000E-01 3 52 + 2.95803989 -0.13459247E-03 0.22809328E-18 -0.60562794E-06 -0.32380648E-14 1.50000000E+00 2.50000000E+00 5.00000000E-01 3 57 + 2.95803989 -0.13459247E-03 -0.52986648E-19 0.60562794E-06 0.32380536E-14 2.50000000E+00 -1.50000000E+00 5.00000000E-01 3 58 + 2.95803989 -0.13459247E-03 0.31849701E-18 0.60562794E-06 0.32380496E-14 2.50000000E+00 1.50000000E+00 5.00000000E-01 3 61 #& diff --git a/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00003 b/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00003 index 3b82329e85d832cc3c60f952836163bac5b17146..e7705c88457ea487a1ea58720c92711e830fe2c6 100644 --- a/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00003 +++ b/tests/KKRhost/test_inputs/test_04.1/ref/Jij.atom00003 @@ -1,68 +1,68 @@ -# serial: kkrjm_v2.3-64-g8cc70fc_mpi_20180831102945; MD5 (potential) = 9a1124b567de286b27a5602d727b59f3; MD5 (shapefun) = 2a2e1c5c0b89c36da8d88650ba34a20e +# serial: JuKKR_v3.1-1717-g1f7d9f5_gnu_20201103133014; 00000000000000000000000000000000 potential; 00000000000000000000000000000000 shapefun # off-diagonal exchange coupling constants # for atom IT = 3 on site IQ = 3 impurity site = 2 # R_IQ,JQ J_IT,JT D_IT,JT S_IT,JT A_IT,JT Rvec JT # ( ALAT ) ( Ry ) # - 0.86602540 0.35845296E-02 0.17730103E-17 0.14587574E-12 0.25666040E-05 0.50000000 0.50000000 -0.50000000 2 1 - 0.86602540 0.35845296E-02 0.95946263E-19 0.14587580E-12 0.25666040E-05 -0.50000000 -0.50000000 -0.50000000 2 10 - 0.86602540 0.35845296E-02 0.10388724E-17 -0.14587578E-12 -0.25666040E-05 -0.50000000 0.50000000 -0.50000000 2 11 - 0.86602540 0.35845296E-02 0.59349235E-18 -0.14587548E-12 -0.25666040E-05 0.50000000 -0.50000000 -0.50000000 2 16 - 1.65831240 0.51762952E-03 0.55919889E-13 -0.57799932E-06 0.15539236E-06 -1.50000000 -0.50000000 -0.50000000 2 5 - 1.65831240 0.51762952E-03 -0.55918814E-13 -0.57799935E-06 -0.15539233E-06 -1.50000000 0.50000000 -0.50000000 2 6 - 1.65831240 0.51762952E-03 -0.55918464E-13 0.57799935E-06 0.15539233E-06 -0.50000000 -1.50000000 -0.50000000 2 9 - 1.65831240 0.51762952E-03 0.55920127E-13 0.57799932E-06 -0.15539236E-06 -0.50000000 1.50000000 -0.50000000 2 12 - 1.65831240 0.51762952E-03 0.55920038E-13 0.57799932E-06 -0.15539236E-06 0.50000000 -1.50000000 -0.50000000 2 15 - 1.65831240 0.51762952E-03 -0.55918852E-13 0.57799935E-06 0.15539233E-06 0.50000000 1.50000000 -0.50000000 2 17 - 1.65831240 0.51762952E-03 -0.55918576E-13 -0.57799935E-06 -0.15539233E-06 1.50000000 -0.50000000 -0.50000000 2 21 - 1.65831240 0.51762952E-03 0.55919554E-13 -0.57799932E-06 0.15539236E-06 1.50000000 0.50000000 -0.50000000 2 22 - 2.17944947 0.71920399E-03 0.59410847E-18 0.13386229E-13 -0.68665365E-07 -1.50000000 -1.50000000 -0.50000000 2 4 - 2.17944947 0.71920399E-03 0.77856664E-18 -0.13386025E-13 0.68665365E-07 -1.50000000 1.50000000 -0.50000000 2 7 - 2.17944947 0.71920399E-03 0.57502974E-18 -0.13386037E-13 0.68665365E-07 1.50000000 -1.50000000 -0.50000000 2 20 - 2.17944947 0.71920399E-03 0.63930837E-18 0.13386272E-13 -0.68665365E-07 1.50000000 1.50000000 -0.50000000 2 23 - 2.59807621 0.13122593E-02 0.15587342E-17 0.33002315E-06 0.51267126E-06 -2.50000000 0.50000000 -0.50000000 2 3 - 2.59807621 0.13122593E-02 0.34625483E-18 -0.33002310E-06 0.51267127E-06 -0.50000000 2.50000000 -0.50000000 2 13 - 2.59807621 0.13122593E-02 0.13169674E-17 -0.33002310E-06 0.51267127E-06 0.50000000 -2.50000000 -0.50000000 2 14 - 2.59807621 0.13122593E-02 0.64569083E-18 -0.33002315E-06 -0.51267126E-06 0.50000000 2.50000000 -0.50000000 2 18 - 2.59807621 0.13122593E-02 0.12108508E-18 0.33002315E-06 0.51267126E-06 2.50000000 -0.50000000 -0.50000000 2 26 - 2.59807621 0.13122593E-02 0.58858628E-18 0.33002310E-06 -0.51267127E-06 2.50000000 0.50000000 -0.50000000 2 27 - 2.59807621 0.13122593E-02 0.81064110E-18 0.33002310E-06 -0.51267127E-06 -2.50000000 -0.50000000 -0.50000000 2 63 - 2.59807621 0.13122593E-02 0.25627277E-18 -0.33002315E-06 -0.51267126E-06 -0.50000000 -2.50000000 -0.50000000 2 66 - 2.95803989 0.45540091E-03 0.50819127E-18 -0.66489650E-06 0.28938005E-06 -1.50000000 2.50000000 -0.50000000 2 8 - 2.95803989 0.45540091E-03 0.45549302E-18 -0.66489648E-06 -0.28938006E-06 1.50000000 2.50000000 -0.50000000 2 24 - 2.95803989 0.45540091E-03 0.69692413E-18 0.66489648E-06 0.28938006E-06 2.50000000 -1.50000000 -0.50000000 2 25 - 2.95803989 0.45540091E-03 0.66484395E-18 0.66489650E-06 -0.28938005E-06 2.50000000 1.50000000 -0.50000000 2 28 - 2.95803989 0.45540091E-03 0.25489938E-18 0.66489650E-06 -0.28938005E-06 -2.50000000 -1.50000000 -0.50000000 2 62 - 2.95803989 0.45540091E-03 0.29898149E-18 0.66489648E-06 0.28938006E-06 -2.50000000 1.50000000 -0.50000000 2 64 - 2.95803989 0.45540091E-03 0.38135457E-18 -0.66489648E-06 -0.28938006E-06 -1.50000000 -2.50000000 -0.50000000 2 65 - 2.95803989 0.45540091E-03 0.41099316E-18 -0.66489650E-06 0.28938005E-06 1.50000000 -2.50000000 -0.50000000 2 67 + 0.86602540 0.37653945E-02 0.65174667E-18 0.14018147E-12 0.23080243E-05 5.00000000E-01 5.00000000E-01 -5.00000000E-01 2 1 + 0.86602540 0.37653945E-02 0.49385070E-18 0.14018126E-12 0.23080243E-05 -5.00000000E-01 -5.00000000E-01 -5.00000000E-01 2 10 + 0.86602540 0.37653945E-02 0.32019142E-18 -0.14018153E-12 -0.23080243E-05 -5.00000000E-01 5.00000000E-01 -5.00000000E-01 2 11 + 0.86602540 0.37653945E-02 -0.44947308E-18 -0.14018135E-12 -0.23080243E-05 5.00000000E-01 -5.00000000E-01 -5.00000000E-01 2 16 + 1.65831240 -0.13525709E-03 0.62697004E-13 -0.55124823E-06 0.50610780E-06 -1.50000000E+00 -5.00000000E-01 -5.00000000E-01 2 5 + 1.65831240 -0.13525709E-03 -0.62697063E-13 -0.55124825E-06 -0.50610777E-06 -1.50000000E+00 5.00000000E-01 -5.00000000E-01 2 6 + 1.65831240 -0.13525709E-03 -0.62697608E-13 0.55124825E-06 0.50610777E-06 -5.00000000E-01 -1.50000000E+00 -5.00000000E-01 2 9 + 1.65831240 -0.13525709E-03 0.62697159E-13 0.55124823E-06 -0.50610780E-06 -5.00000000E-01 1.50000000E+00 -5.00000000E-01 2 12 + 1.65831240 -0.13525709E-03 0.62697518E-13 0.55124823E-06 -0.50610780E-06 5.00000000E-01 -1.50000000E+00 -5.00000000E-01 2 15 + 1.65831240 -0.13525709E-03 -0.62697367E-13 0.55124825E-06 0.50610777E-06 5.00000000E-01 1.50000000E+00 -5.00000000E-01 2 17 + 1.65831240 -0.13525709E-03 -0.62697206E-13 -0.55124825E-06 -0.50610777E-06 1.50000000E+00 -5.00000000E-01 -5.00000000E-01 2 21 + 1.65831240 -0.13525709E-03 0.62697119E-13 -0.55124823E-06 0.50610780E-06 1.50000000E+00 5.00000000E-01 -5.00000000E-01 2 22 + 2.17944947 0.13983983E-03 -0.12722769E-18 0.21234235E-13 -0.29094243E-06 -1.50000000E+00 -1.50000000E+00 -5.00000000E-01 2 4 + 2.17944947 0.13983983E-03 -0.10890870E-20 -0.21234230E-13 0.29094243E-06 -1.50000000E+00 1.50000000E+00 -5.00000000E-01 2 7 + 2.17944947 0.13983983E-03 0.71386487E-19 -0.21234253E-13 0.29094243E-06 1.50000000E+00 -1.50000000E+00 -5.00000000E-01 2 20 + 2.17944947 0.13983983E-03 0.12834826E-18 0.21234236E-13 -0.29094243E-06 1.50000000E+00 1.50000000E+00 -5.00000000E-01 2 23 + 2.59807621 -0.78368796E-04 0.20604044E-18 0.32208315E-06 -0.79021707E-14 -2.50000000E+00 5.00000000E-01 -5.00000000E-01 2 3 + 2.59807621 -0.78368796E-04 0.12551978E-18 -0.32208315E-06 0.79021618E-14 -5.00000000E-01 2.50000000E+00 -5.00000000E-01 2 13 + 2.59807621 -0.78368796E-04 0.28290020E-18 -0.32208315E-06 0.79021697E-14 5.00000000E-01 -2.50000000E+00 -5.00000000E-01 2 14 + 2.59807621 -0.78368796E-04 0.29869354E-18 -0.32208315E-06 0.79021695E-14 5.00000000E-01 2.50000000E+00 -5.00000000E-01 2 18 + 2.59807621 -0.78368796E-04 0.82867062E-19 0.32208315E-06 -0.79021698E-14 2.50000000E+00 -5.00000000E-01 -5.00000000E-01 2 26 + 2.59807621 -0.78368796E-04 0.21898996E-18 0.32208315E-06 -0.79021681E-14 2.50000000E+00 5.00000000E-01 -5.00000000E-01 2 27 + 2.59807621 -0.78368796E-04 -0.25974002E-18 0.32208315E-06 -0.79021711E-14 -2.50000000E+00 -5.00000000E-01 -5.00000000E-01 2 63 + 2.59807621 -0.78368796E-04 0.63545837E-19 -0.32208315E-06 0.79021675E-14 -5.00000000E-01 -2.50000000E+00 -5.00000000E-01 2 66 + 2.95803989 -0.13459247E-03 0.30915472E-20 -0.60562794E-06 -0.32380679E-14 -1.50000000E+00 2.50000000E+00 -5.00000000E-01 2 8 + 2.95803989 -0.13459247E-03 -0.13928517E-18 -0.60562794E-06 -0.32380636E-14 1.50000000E+00 2.50000000E+00 -5.00000000E-01 2 24 + 2.95803989 -0.13459247E-03 -0.83645294E-19 0.60562794E-06 0.32380471E-14 2.50000000E+00 -1.50000000E+00 -5.00000000E-01 2 25 + 2.95803989 -0.13459247E-03 -0.20466876E-18 0.60562794E-06 0.32380536E-14 2.50000000E+00 1.50000000E+00 -5.00000000E-01 2 28 + 2.95803989 -0.13459247E-03 -0.32623162E-18 0.60562794E-06 0.32380486E-14 -2.50000000E+00 -1.50000000E+00 -5.00000000E-01 2 62 + 2.95803989 -0.13459247E-03 0.56915014E-19 0.60562794E-06 0.32380548E-14 -2.50000000E+00 1.50000000E+00 -5.00000000E-01 2 64 + 2.95803989 -0.13459247E-03 -0.22570487E-18 -0.60562794E-06 -0.32380647E-14 -1.50000000E+00 -2.50000000E+00 -5.00000000E-01 2 65 + 2.95803989 -0.13459247E-03 -0.26908993E-18 -0.60562794E-06 -0.32380630E-14 1.50000000E+00 -2.50000000E+00 -5.00000000E-01 2 67 #& - 1.00000000 -0.83636663E-02 -0.84142030E-18 -0.16050220E-05 0.88274378E-13 -1.00000000 0.00000000 0.00000000 3 37 - 1.00000000 -0.83636663E-02 -0.93594791E-18 0.16050220E-05 -0.88280737E-13 0.00000000 -1.00000000 0.00000000 3 42 - 1.00000000 -0.83636663E-02 -0.24346711E-17 0.16050220E-05 -0.88280638E-13 0.00000000 1.00000000 0.00000000 3 43 - 1.00000000 -0.83636663E-02 -0.25465874E-17 -0.16050220E-05 0.88274365E-13 1.00000000 0.00000000 0.00000000 3 48 - 1.41421356 -0.91731971E-02 -0.19529097E-17 0.43819524E-13 -0.93730079E-06 -1.00000000 -1.00000000 0.00000000 3 36 - 1.41421356 -0.91731971E-02 -0.20028595E-17 -0.43819491E-13 0.93730079E-06 -1.00000000 1.00000000 0.00000000 3 38 - 1.41421356 -0.91731971E-02 -0.15628490E-17 -0.43819460E-13 0.93730079E-06 1.00000000 -1.00000000 0.00000000 3 47 - 1.41421356 -0.91731971E-02 -0.15919536E-17 0.43819456E-13 -0.93730079E-06 1.00000000 1.00000000 0.00000000 3 49 - 2.00000000 0.28014749E-02 -0.38815562E-17 -0.14981926E-06 0.47101395E-13 -2.00000000 0.00000000 0.00000000 3 32 - 2.00000000 0.28014749E-02 -0.67726408E-17 0.14981926E-06 -0.47111417E-13 0.00000000 -2.00000000 0.00000000 3 41 - 2.00000000 0.28014749E-02 -0.18662693E-17 0.14981926E-06 -0.47112268E-13 0.00000000 2.00000000 0.00000000 3 44 - 2.00000000 0.28014749E-02 -0.25179903E-17 -0.14981926E-06 0.47101401E-13 2.00000000 0.00000000 0.00000000 3 54 - 2.23606798 -0.83568629E-02 -0.14162388E-17 0.32330835E-06 0.21935118E-06 -2.00000000 -1.00000000 0.00000000 3 31 - 2.23606798 -0.83568629E-02 -0.15733550E-17 0.32330843E-06 -0.21935122E-06 -2.00000000 1.00000000 0.00000000 3 33 - 2.23606798 -0.83568629E-02 -0.14616371E-17 -0.32330843E-06 0.21935122E-06 -1.00000000 -2.00000000 0.00000000 3 35 - 2.23606798 -0.83568629E-02 -0.16835088E-17 -0.32330835E-06 -0.21935118E-06 -1.00000000 2.00000000 0.00000000 3 39 - 2.23606798 -0.83568629E-02 -0.16718426E-17 -0.32330835E-06 -0.21935118E-06 1.00000000 -2.00000000 0.00000000 3 46 - 2.23606798 -0.83568629E-02 -0.18907005E-17 -0.32330843E-06 0.21935122E-06 1.00000000 2.00000000 0.00000000 3 50 - 2.23606798 -0.83568629E-02 -0.18522378E-17 0.32330843E-06 -0.21935122E-06 2.00000000 -1.00000000 0.00000000 3 53 - 2.23606798 -0.83568629E-02 -0.19949944E-17 0.32330835E-06 0.21935118E-06 2.00000000 1.00000000 0.00000000 3 55 - 2.82842712 0.26607948E-02 -0.29324193E-17 -0.44932692E-15 0.10241133E-05 -2.00000000 2.00000000 0.00000000 3 34 - 2.82842712 0.26607948E-02 -0.34427876E-17 -0.44964355E-15 0.10241133E-05 2.00000000 -2.00000000 0.00000000 3 52 - 2.82842712 0.26607948E-02 0.18007062E-17 0.45003109E-15 -0.10241133E-05 2.00000000 2.00000000 0.00000000 3 56 - 2.82842712 0.26607948E-02 -0.83508529E-17 0.45006631E-15 -0.10241133E-05 -2.00000000 -2.00000000 0.00000000 3 69 - 3.00000000 0.14787639E-02 -0.63306752E-17 0.29261724E-06 -0.50064344E-13 0.00000000 3.00000000 0.00000000 3 45 - 3.00000000 0.14787639E-02 -0.77390367E-17 -0.29261724E-06 0.50065153E-13 3.00000000 0.00000000 0.00000000 3 59 - 3.00000000 0.14787639E-02 0.68863514E-17 -0.29261724E-06 0.50065498E-13 -3.00000000 0.00000000 0.00000000 3 68 - 3.00000000 0.14787639E-02 0.39269252E-17 0.29261724E-06 -0.50064818E-13 0.00000000 -3.00000000 0.00000000 3 70 + 1.00000000 0.91949538E-04 0.45318954E-18 -0.13678665E-05 0.87333566E-13 -1.00000000E+00 0.00000000E+00 0.00000000E+00 3 37 + 1.00000000 0.91949538E-04 -0.50374617E-18 0.13678665E-05 -0.87333532E-13 0.00000000E+00 -1.00000000E+00 0.00000000E+00 3 42 + 1.00000000 0.91949538E-04 0.47815580E-18 0.13678665E-05 -0.87333586E-13 0.00000000E+00 1.00000000E+00 0.00000000E+00 3 43 + 1.00000000 0.91949538E-04 -0.38949584E-18 -0.13678665E-05 0.87333584E-13 1.00000000E+00 0.00000000E+00 0.00000000E+00 3 48 + 1.41421356 -0.36219625E-03 -0.24761686E-19 0.31495994E-13 -0.71483289E-06 -1.00000000E+00 -1.00000000E+00 0.00000000E+00 3 36 + 1.41421356 -0.36219625E-03 0.14623947E-18 -0.31496033E-13 0.71483289E-06 -1.00000000E+00 1.00000000E+00 0.00000000E+00 3 38 + 1.41421356 -0.36219625E-03 -0.14916423E-18 -0.31496037E-13 0.71483289E-06 1.00000000E+00 -1.00000000E+00 0.00000000E+00 3 47 + 1.41421356 -0.36219625E-03 0.28769767E-19 0.31496027E-13 -0.71483289E-06 1.00000000E+00 1.00000000E+00 0.00000000E+00 3 49 + 2.00000000 0.37352049E-04 0.10648929E-18 0.11741786E-06 0.41560399E-13 -2.00000000E+00 0.00000000E+00 0.00000000E+00 3 32 + 2.00000000 0.37352049E-04 0.59085725E-19 -0.11741786E-06 -0.41560397E-13 0.00000000E+00 -2.00000000E+00 0.00000000E+00 3 41 + 2.00000000 0.37352049E-04 -0.61157035E-19 -0.11741786E-06 -0.41560398E-13 0.00000000E+00 2.00000000E+00 0.00000000E+00 3 44 + 2.00000000 0.37352049E-04 -0.11307252E-18 0.11741786E-06 0.41560398E-13 2.00000000E+00 0.00000000E+00 0.00000000E+00 3 54 + 2.23606798 0.27648595E-04 0.37446886E-19 0.33892368E-07 -0.37742198E-06 -2.00000000E+00 -1.00000000E+00 0.00000000E+00 3 31 + 2.23606798 0.27648595E-04 -0.10516518E-19 0.33892415E-07 0.37742196E-06 -2.00000000E+00 1.00000000E+00 0.00000000E+00 3 33 + 2.23606798 0.27648595E-04 0.83309023E-19 -0.33892415E-07 -0.37742196E-06 -1.00000000E+00 -2.00000000E+00 0.00000000E+00 3 35 + 2.23606798 0.27648595E-04 -0.17304597E-18 -0.33892368E-07 0.37742198E-06 -1.00000000E+00 2.00000000E+00 0.00000000E+00 3 39 + 2.23606798 0.27648595E-04 0.17159078E-18 -0.33892368E-07 0.37742198E-06 1.00000000E+00 -2.00000000E+00 0.00000000E+00 3 46 + 2.23606798 0.27648595E-04 -0.82938054E-19 -0.33892415E-07 -0.37742196E-06 1.00000000E+00 2.00000000E+00 0.00000000E+00 3 50 + 2.23606798 0.27648595E-04 0.94933584E-20 0.33892415E-07 0.37742196E-06 2.00000000E+00 -1.00000000E+00 0.00000000E+00 3 53 + 2.23606798 0.27648595E-04 -0.35350237E-19 0.33892368E-07 -0.37742198E-06 2.00000000E+00 1.00000000E+00 0.00000000E+00 3 55 + 2.82842712 -0.63799645E-06 -0.18053408E-18 0.15639327E-13 0.51856070E-06 -2.00000000E+00 2.00000000E+00 0.00000000E+00 3 34 + 2.82842712 -0.63799645E-06 0.17818858E-18 0.15639332E-13 0.51856070E-06 2.00000000E+00 -2.00000000E+00 0.00000000E+00 3 52 + 2.82842712 -0.63799645E-06 -0.62277660E-18 -0.15639337E-13 -0.51856070E-06 2.00000000E+00 2.00000000E+00 0.00000000E+00 3 56 + 2.82842712 -0.63799645E-06 0.61417811E-18 -0.15639338E-13 -0.51856070E-06 -2.00000000E+00 -2.00000000E+00 0.00000000E+00 3 69 + 3.00000000 0.37352049E-04 0.22746320E-18 -0.11741786E-06 -0.41560393E-13 0.00000000E+00 3.00000000E+00 0.00000000E+00 3 45 + 3.00000000 0.37352049E-04 0.27992374E-18 0.11741786E-06 0.41560402E-13 3.00000000E+00 0.00000000E+00 0.00000000E+00 3 59 + 3.00000000 0.37352049E-04 -0.28669136E-18 0.11741786E-06 0.41560397E-13 -3.00000000E+00 0.00000000E+00 0.00000000E+00 3 68 + 3.00000000 0.37352049E-04 -0.23126755E-18 -0.11741786E-06 -0.41560399E-13 0.00000000E+00 -3.00000000E+00 0.00000000E+00 3 70 #& diff --git a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/inputcard b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/inputcard index b052f6de363d35f255468dade005f7c2af21d8aa..10cf10eb9c7f20abb9cff3621c70f780aa6dc05f 100644 --- a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/inputcard +++ b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/inputcard @@ -61,3 +61,5 @@ HFIELD=0.00 JIJRAD= 3.0 JIJSITEI= 2 2 3 JIJSITEJ= 2 2 3 + +<set_kmesh_large>= T diff --git a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00002 b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00002 index 624400590feb2007f6d908efc03c55fdc120ecb0..527dd890fd1cd2ab9a01d568377dbe5a7314e1f1 100644 --- a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00002 +++ b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00002 @@ -1,18 +1,18 @@ -# serial: kkrjm_v2.3-64-g8cc70fc_mpi_20180905082255; MD5 (potential) = 14ddafa231a8ee9e0a34b4d0dd10a860; MD5 (shapefun) = 2a2e1c5c0b89c36da8d88650ba34a20e +# serial: JuKKR_v3.1-1717-g1f7d9f5_gnu_20201103133243; 00000000000000000000000000000000 potential; 00000000000000000000000000000000 shapefun # off-diagonal exchange coupling constants # for atom IT = 2 on site IQ = 2 # R_IQ,JQ J_IT,JT JT # ( ALAT ) ( Ry ) # - 0.86602540 0.35941497E-02 3 5 - 3.00000000 0.14664035E-02 2 6 - 2.82842712 0.26976060E-02 2 7 - 2.23606798 -0.83986382E-02 2 8 - 2.00000000 0.28385389E-02 2 9 - 1.41421356 -0.92168810E-02 2 10 - 1.00000000 -0.83979723E-02 2 11 - 2.95803989 0.45237483E-03 3 12 - 2.59807621 0.13166116E-02 3 13 - 2.17944947 0.72423323E-03 3 14 - 1.65831240 0.51782812E-03 3 15 + 0.86602540 0.37764954E-02 3 5 + 3.00000000 0.39495883E-04 2 6 + 2.82842712 0.11677144E-05 2 7 + 2.23606798 0.24829416E-04 2 8 + 2.00000000 0.39495883E-04 2 9 + 1.41421356 -0.36515737E-03 2 10 + 1.00000000 0.96536330E-04 2 11 + 2.95803989 -0.13806683E-03 3 12 + 2.59807621 -0.80177438E-04 3 13 + 2.17944947 0.14304881E-03 3 14 + 1.65831240 -0.13574534E-03 3 15 & diff --git a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00003 b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00003 index a01b56f16b753777038692c1738dac21fc830963..38c45acdf89a0c0e8a316883c45d6a285e22f8d4 100644 --- a/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00003 +++ b/tests/KKRhost/test_inputs/test_04_Jijs_Fe_slab_lmax2_noSOC/ref/Jij.atom00003 @@ -1,18 +1,18 @@ -# serial: kkrjm_v2.3-64-g8cc70fc_mpi_20180905082255; MD5 (potential) = 14ddafa231a8ee9e0a34b4d0dd10a860; MD5 (shapefun) = 2a2e1c5c0b89c36da8d88650ba34a20e +# serial: JuKKR_v3.1-1717-g1f7d9f5_gnu_20201103133243; 00000000000000000000000000000000 potential; 00000000000000000000000000000000 shapefun # off-diagonal exchange coupling constants # for atom IT = 3 on site IQ = 3 # R_IQ,JQ J_IT,JT JT # ( ALAT ) ( Ry ) # - 0.86602540 0.35941497E-02 2 16 - 2.59807621 0.13166116E-02 2 17 - 2.17944947 0.72423323E-03 2 18 - 1.65831240 0.51782812E-03 2 19 - 2.95803989 0.45237483E-03 2 20 - 2.23606798 -0.83986382E-02 3 21 - 2.00000000 0.28385389E-02 3 22 - 2.82842712 0.26976060E-02 3 23 - 1.41421356 -0.92168810E-02 3 24 - 1.00000000 -0.83979723E-02 3 25 - 3.00000000 0.14664035E-02 3 26 + 0.86602540 0.37764954E-02 2 16 + 2.59807621 -0.80177438E-04 2 17 + 2.17944947 0.14304881E-03 2 18 + 1.65831240 -0.13574534E-03 2 19 + 2.95803989 -0.13806683E-03 2 20 + 2.23606798 0.24829416E-04 3 21 + 2.00000000 0.39495883E-04 3 22 + 2.82842712 0.11677144E-05 3 23 + 1.41421356 -0.36515737E-03 3 24 + 1.00000000 0.96536330E-04 3 25 + 3.00000000 0.39495883E-04 3 26 & diff --git a/tests/KKRhost/tools/kkrparser_functions.py b/tests/KKRhost/tools/kkrparser_functions.py index 44edf3ec469ee296b3f34b63fb6c6551bc50cfeb..b10d778b41618fb6f15d983985d704728f7bbef7 100644 --- a/tests/KKRhost/tools/kkrparser_functions.py +++ b/tests/KKRhost/tools/kkrparser_functions.py @@ -20,7 +20,7 @@ __copyright__ = (u"Copyright (c), 2017, Forschungszentrum Jülich GmbH," "IAS-1/PGI-1, Germany. All rights reserved.") __license__ = "MIT license, see LICENSE.txt file" __contributors__ = u"Philipp Rüßmann" -__version__ = "1.7" +__version__ = "1.8" #################################################################################### @@ -78,6 +78,19 @@ def get_rms(outfile, outfile2, debug=False): return rms_charge, rms_spin, rms_charge_atoms[-natoms:], rms_spin_atoms[-natoms:] +def get_noco_rms(outfile, debug=False): + """ + Get average noco rms error + """ + if debug: print(outfile) + try: + rms_noco = parse_array_float(outfile, 'Total RMS(angles)', [1, ':', 1], debug=debug) + except: + rms_noco = [] + if debug: traceback.print_exc() + return rms_noco + + def get_neutr(outfile): res = parse_array_float(outfile, 'charge neutrality in unit cell', [1, '=', 1]) return res @@ -395,10 +408,16 @@ def use_newsosol(outfile_0init): f = open_general(outfile_0init) tmptxt = f.readlines() f.close() - itmp = search_string('NEWSOSOL', tmptxt) newsosol = False - if itmp>=0: + # old style (RUNOPT output) + itmp = search_string('NEWSOSOL', tmptxt) + if itmp>=0 and tmptxt[itmp].split()[0]=='NEWSOSOL': newsosol = True + itmp = search_string('<use_Chebychev_solver>=', tmptxt) + # new style: check for output of runoptions + if itmp>=0 : + if tmptxt[itmp].split()[1][:1]=='T': + newsosol = True return newsosol @@ -728,6 +747,18 @@ def parse_kkr_outputfile(out_dict, outfile, outfile_0init, outfile_000, timing_f msg_list.append(msg) if debug: traceback.print_exc() + # get RMS info for nonco angles + try: + if nspin>1 and newsosol: + result = get_noco_rms(outfile, debug) + if len(result)>0: + out_dict['convergence_group']['noco_angles_rms_all_iterations'] = result[:] + out_dict['convergence_group']['noco_angles_rms_all_iterations_unit'] = 'degrees' + except: + msg = "Error parsing output of KKR: noco angles rms value" + msg_list.append(msg) + if debug: traceback.print_exc() + try: result = get_EF(outfile) out_dict['fermi_energy'] = result[-1] diff --git a/tests/KKRhost/tools/run_test_03_2.sh b/tests/KKRhost/tools/run_test_03_2.sh index 55ae599423ab6af655e6c99988764a9345a7bd08..10b87083c2709cc10a001cc72a90a8b1021c9717 100755 --- a/tests/KKRhost/tools/run_test_03_2.sh +++ b/tests/KKRhost/tools/run_test_03_2.sh @@ -11,5 +11,9 @@ cd .. cd NEWSOSOL_SOCSCL0/ mpirun -np 3 ../../../kkr.x | tee out_kkr grep -A10000 'Information on renormalization by Lloyds formula' output.000.txt > out_last.txt -cd ../../ +cd ../ +cd NEWSOSOL_DECOUPLED_SPINS/ +mpirun -np 3 ../../../kkr.x | tee out_kkr +grep -A10000 'Information on renormalization by Lloyds formula' output.000.txt > out_last.txt +cd ../../ diff --git a/tests/KKRhost/tools/test_verify_results.py b/tests/KKRhost/tools/test_verify_results.py index 9cd078a5704dff57e653c1c2cc80602de26c0b64..db5e8fc46a4bb1a0b35baed41b8f2460f53d476a 100644 --- a/tests/KKRhost/tools/test_verify_results.py +++ b/tests/KKRhost/tools/test_verify_results.py @@ -19,7 +19,7 @@ class Test_serial(): def test_2_Fe_slab(self): path0 = 'test_run02_serial_1_1/' - standard_verify(path0, rms_threshold=7*10**-8) + standard_verify(path0, rms_threshold=7*10**-8, debug=True) def test_3_Si_lloyd(self): path0 = 'test_run03_serial_1_1/' @@ -230,7 +230,7 @@ class Test_SOC(): def test_2_Fe_slab(self): path0 = 'test_run02.1_hybrid_1_3/' - standard_verify(path0, rms_threshold=1*10**-8, rms_threshold_end=1*10**-8) + standard_verify(path0, rms_threshold=2*10**-8, rms_threshold_end=1*10**-8) def test_3_Si_lloyd(self): path0 = 'test_run03.1_hybrid_1_3/' @@ -241,11 +241,16 @@ class Test_SOC(): # check convergence of both runs standard_verify(path0+'NEWSOSOL_NOSOC/', rms_threshold=1.5*10**-6, rms_threshold_end=1.5*10**-6, neutr_threshold=8*10**-5) standard_verify(path0+'NEWSOSOL_SOCSCL0/', rms_threshold=1.5*10**-6, rms_threshold_end=1.5*10**-6, neutr_threshold=8*10**-5) + standard_verify(path0+'NEWSOSOL_DECOUPLED_SPINS//', rms_threshold=1.5*10**-6, rms_threshold_end=1.5*10**-6, neutr_threshold=8*10**-5) # cross check both runs against each other (comparing output writte to 'out_last.txt') num, text = read_file(path0+'NEWSOSOL_NOSOC/out_last.txt') num_ref, text_ref = read_file(path0+'NEWSOSOL_SOCSCL0/out_last.txt') assert std(num-num_ref)<5*10**-12 assert set(text)-set(text_ref)==set() + # compare also to decoupled spin channels + num, text = read_file(path0+'NEWSOSOL_DECOUPLED_SPINS/out_last.txt') + assert std(num-num_ref)<5*10**-12 + assert set(text)-set(text_ref)==set() def test_4_Jijs_SOC(self): paths = ['test_run04.1_hybrid_1_3/'] @@ -308,12 +313,12 @@ class Test_SOC(): # helper functions -def standard_verify(path0, rms_threshold=10**-8, rms_threshold_end=10**-8, neutr_threshold=10**-6): +def standard_verify(path0, rms_threshold=10**-8, rms_threshold_end=10**-8, neutr_threshold=10**-6, debug=False): """ wrapper for standard tests reading output and comparins rms and charge neutrality """ # use parser function from aiida-kkr - success, parser_msgs, out_dict = parse_kkr_outputfile({}, path0+'out_kkr', path0+'output.0.txt', path0+'output.000.txt', path0+'out_timing.000.txt', path0+'out_potential', path0+'nonco_angle_out.dat') + success, parser_msgs, out_dict = parse_kkr_outputfile({}, path0+'out_kkr', path0+'output.0.txt', path0+'output.000.txt', path0+'out_timing.000.txt', path0+'out_potential', path0+'nonco_angle_out.dat', debug=debug) pprint.pprint(parser_msgs) pprint.pprint(out_dict) # first check if parsing was successful diff --git a/tests/KKRimp/clean_kkrimp_tests.sh b/tests/KKRimp/clean_kkrimp_tests.sh index 597dc7e0796fa3484ef9932ce220e59c8e62e55f..508d46ebb6fb988e5c92fcc7c4383269175d4018 100755 --- a/tests/KKRimp/clean_kkrimp_tests.sh +++ b/tests/KKRimp/clean_kkrimp_tests.sh @@ -10,6 +10,7 @@ rm -rf test_case_kkrflex_host_in_host/imp/test_run_tmatnew_mpi_8 rm -rf test_case_kkrflex_host_in_host/imp/test_run_nosavewf/out rm -rf test_case_kkrflex_host_in_host/imp/test_run_nosratrick/out rm -rf test_case_kkrflex_host_in_host/imp/test_run_Jij/out +rm -rf test_case_kkrflex_host_in_host/imp/test_run_Jij_hybrid/out rm -rf test_case_kkrflex_host_in_host/imp/test_run_Jij_savewf/out rm -rf test_case_kkrflex_host_in_host/imp/test_run_Jij_nosratrick/out rm -f test_case_kkrflex_host_in_host/imp/test_run_{Jij,Jij_nosratrick,Jij_savewf,nosavewf,nosratrick}/{ldaupot,out_*,storage_*,test_*} diff --git a/tests/KKRimp/kkrimp_run_tests_manual.sh b/tests/KKRimp/kkrimp_run_tests_manual.sh index c7abacacee1f89a2d023ebde9477e37748fb6d53..7d808fffa76db1262af3ef5e906376c33a288b5f 100755 --- a/tests/KKRimp/kkrimp_run_tests_manual.sh +++ b/tests/KKRimp/kkrimp_run_tests_manual.sh @@ -117,6 +117,14 @@ fi if [[ ! -f test_case_kkrflex_host_in_host/imp/test_run_Jij/out ]]; then echo "test 12" cd test_case_kkrflex_host_in_host/imp/test_run_Jij/ + ln -s ../../../../kkrflex.exe_mpi kkrflex.exe + export OMP_NUM_THREADS=1; mpirun -np 8 ./kkrflex.exe | tee out + cd ../../../ +fi + +if [[ ! -f test_case_kkrflex_host_in_host/imp/test_run_Jij_hybrid/out ]]; then + echo "test 12" + cd test_case_kkrflex_host_in_host/imp/test_run_Jij_hybrid/ ln -s ../../../../kkrflex.exe_hybrid kkrflex.exe export OMP_NUM_THREADS=1; mpirun -np 8 ./kkrflex.exe | tee out cd ../../../ @@ -125,7 +133,7 @@ fi if [[ ! -f test_case_kkrflex_host_in_host/imp/test_run_Jij_savewf/out ]]; then echo "test 13" cd test_case_kkrflex_host_in_host/imp/test_run_Jij_savewf/ - ln -s ../../../../kkrflex.exe_hybrid kkrflex.exe + ln -s ../../../../kkrflex.exe_mpi kkrflex.exe export OMP_NUM_THREADS=1; mpirun -np 8 ./kkrflex.exe | tee out cd ../../../ fi @@ -133,7 +141,7 @@ fi if [[ ! -f test_case_kkrflex_host_in_host/imp/test_run_Jij_nosratrick/out ]]; then echo "test 14" cd test_case_kkrflex_host_in_host/imp/test_run_Jij_nosratrick/ - ln -s ../../../../kkrflex.exe_hybrid kkrflex.exe + ln -s ../../../../kkrflex.exe_mpi kkrflex.exe export OMP_NUM_THREADS=1; mpirun -np 8 ./kkrflex.exe | tee out cd ../../../ fi diff --git a/tests/KKRimp/test_case_kkrflex_host_in_host/imp/test_verify.py b/tests/KKRimp/test_case_kkrflex_host_in_host/imp/test_verify.py index f8e83ec7dd7e5c6448d4d2070e708034224452f0..41204f2d14392191c63b888a68515dd95c1e18db 100644 --- a/tests/KKRimp/test_case_kkrflex_host_in_host/imp/test_verify.py +++ b/tests/KKRimp/test_case_kkrflex_host_in_host/imp/test_verify.py @@ -52,10 +52,13 @@ class Tests_scf_SOC(): def test_Jij(self): check_Jijs('test_run_Jij', refpath='host_in_host_Jijs') - def test_Jij(self): + def test_Jij_hybrid(self): + check_Jijs('test_run_Jij_hybrid', refpath='host_in_host_Jijs') + + def test_Jij_savewf(self): check_Jijs('test_run_Jij_savewf', refpath='host_in_host_Jijs') - def test_Jij(self): + def test_Jij_nosratrick(self): check_Jijs('test_run_Jij_nosratrick', refpath='host_in_host_Jijs', sracomp=True)