Commit f2771d78 authored by Gregor Michalicek's avatar Gregor Michalicek

Merge branch 'develop' of iffgit.fz-juelich.de:fleur/fleur into develop

parents 1dd2bbda e198660d
......@@ -23,6 +23,7 @@ do
-all_tests) all_tests=1;;
-l) shift;label=$1;;
-m) shift;machine=$1;;
-cmake) shift;cmake=$1;;
-d) debug=1;;
-*) error="Unkown argument";;
*) break;; # terminate while loop
......@@ -174,8 +175,14 @@ echo "Machine config:$machine"
configure_machine
#run cmake
if [ "$cmake" ]
then
echo "Using provided cmake:$cmake"
else
cmake="cmake"
fi
cmake -Dall_tests=$all_tests -DCMAKE_BUILD_TYPE=$BUILD $DIR 2>&1 |tee configure.out
${cmake} -Dall_tests=$all_tests -DCMAKE_BUILD_TYPE=$BUILD $DIR 2>&1 |tee configure.out
if [ -r $buildname/Makefile ]
then
......
......@@ -7,4 +7,5 @@ diagonalization/magma.F90
diagonalization/elpa.F90
diagonalization/scalapack.F90
diagonalization/chase_diag.F90
diagonalization/symmetrize_matrix.f90
diagonalization/elemental.F90)
......@@ -72,7 +72,7 @@ CONTAINS
!Select the solver
SELECT CASE (priv_select_solver(parallel))
CASE (diag_elpa)
!CALL elpa(hmat,smat,ne,eig,ev)
CALL elpa_diag(hmat,smat,ne,eig,ev)
CASE (diag_elemental)
!CALL ELEMENTAL(hmat,smat,ne,eig,ev)
CASE (diag_scalapack)
......
This diff is collapsed.
!--------------------------------------------------------------------------------
! Copyright (c) 2016 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
! This file is part of FLEUR and available as free software under the conditions
! of the MIT license as expressed in the LICENSE file in more detail.
!--------------------------------------------------------------------------------
MODULE m_symmetrize_matrix
USE m_juDFT
CONTAINS
SUBROUTINE symmetrize_matrix(mpi,noco,kpts,nk,hmat,smat)
USE m_types
IMPLICIT NONE
TYPE(t_mpi),INTENT(IN) :: mpi
TYPE(t_noco),INTENT(in) :: noco
TYPE(t_kpts),INTENT(in) :: kpts
INTEGER,INTENT(in) :: nk
CLASS(t_mat),INTENT(inout) :: hmat,smat
!Check if we could exploit a real matrix even without inversion symmetry
realcomplex:IF (.NOT.noco%l_noco.AND..NOT.hmat%l_real) THEN
IF (ALL(ABS(kpts%bk(:,nk))<1E-10)) THEN
IF (ANY(ABS(AIMAG(hmat%data_c))>1e-10)) EXIT realcomplex
IF (mpi%irank==0) THEN
PRINT *,"Complex matrix made real"
WRITE(6,*) "Complex matrix made real"
END IF
!We are using Gamma point, so matrix should be real
IF (ALLOCATED(smat%data_r)) DEALLOCATE(smat%data_r)
ALLOCATE(smat%data_r(SIZE(smat%data_c,1),SIZE(smat%data_c,2)))
smat%data_r=smat%data_c;smat%l_real=.TRUE.
DEALLOCATE(smat%data_c)
IF (ALLOCATED(hmat%data_r)) DEALLOCATE(hmat%data_r)
ALLOCATE(hmat%data_r(SIZE(hmat%data_c,1),SIZE(hmat%data_c,2)))
hmat%data_r=hmat%data_c;hmat%l_real=.TRUE.
DEALLOCATE(hmat%data_c)
ENDIF
ENDIF realcomplex
END SUBROUTINE symmetrize_matrix
END MODULE m_symmetrize_matrix
......@@ -39,7 +39,9 @@ CONTAINS
#ifdef CPP_MPI
USE m_mpi_bc_potden
#endif
USE m_symmetrize_matrix
IMPLICIT NONE
TYPE(t_results),INTENT(INOUT):: results
CLASS(t_xcpot),INTENT(IN) :: xcpot
......@@ -146,6 +148,9 @@ CONTAINS
l_wu=.FALSE.
ne_all=DIMENSION%neigd
if (allocated(zmat)) deallocate(zmat)
!Try to symmetrize matrix
CALL symmetrize_matrix(mpi,noco,kpts,nk,hmat,smat)
CALL eigen_diag(hmat,smat,nk,jsp,iter,ne_all,eig,zMat)
DEALLOCATE(hmat,smat)
......@@ -159,7 +164,7 @@ CONTAINS
#else
ne_found=ne_all
#endif
IF (.NOT.l_real) THEN
IF (.NOT.zmat%l_real) THEN
zMat%data_c(:lapw%nmat,:ne_found) = CONJG(zMat%data_c(:lapw%nmat,:ne_found))
END IF
CALL write_eig(eig_id, nk,jsp,ne_found,ne_all,&
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment