Small BugFix in KCW (non collinear calculations)

This commit is contained in:
Nicola Colonna 2024-08-16 08:46:37 +00:00 committed by giannozz
parent 759cab78c1
commit fe598f4926
3 changed files with 14 additions and 23 deletions

View File

@ -3,9 +3,9 @@ add_subdirectory(PP)
###########################################################
qe_install_targets(qe_kcw qe_kcw_exe qe_kcwpp_sh_exe qe_kcwpp_interp_exe)
qe_install_targets(qe_kcw qe_kcw_exe qe_kcwpp_sh_exe qe_kcwpp_interp_exe qe_kcwpp_merge_wann_exe)
add_custom_target(
kcw
DEPENDS pw qe_pp_pw2wannier90_exe w90 qe_kcw_exe qe_kcwpp_sh_exe qe_kcwpp_interp_exe
DEPENDS pw qe_pp_pw2wannier90_exe w90 qe_kcw_exe qe_kcwpp_sh_exe qe_kcwpp_interp_exe qe_kcwpp_merge_wann_exe
COMMENT "Koopmans spectral functionals")

View File

@ -58,3 +58,11 @@ target_link_libraries(qe_kcwpp_ups_exe
qe_modules
qe_pp
qe_upflib)
###########################################################
# merge_wann.x
###########################################################
set(src_merge_wann_x merge_wann.f90)
qe_add_executable(qe_kcwpp_merge_wann_exe ${src_merge_wann_x})
set_target_properties(qe_kcwpp_merge_wann_exe PROPERTIES OUTPUT_NAME merge_wann.x)
target_link_libraries(qe_kcwpp_merge_wann_exe)

View File

@ -204,13 +204,6 @@ subroutine solve_linter_koop ( spin_ref, i_ref, delta_vr, drhog_scf, delta_vg, d
IF (noncolin) dbecsum_nc = (0.d0, 0.d0)
!
DO isolv = 1, nsolv
!
! Change the sign of the magnetic field if required
!
IF (isolv == 2) THEN
IF ( iter > 1 ) dvscfins(:, 2:4, :) = -dvscfins(:, 2:4, :)
vrs(:, 2:4) = -vrs(:, 2:4)
ENDIF
!
IF (iter == 1 ) THEN
thresh = 1.d-6
@ -221,26 +214,16 @@ subroutine solve_linter_koop ( spin_ref, i_ref, delta_vr, drhog_scf, delta_vg, d
!
IF ( new ) THEN
!
IF (noncolin) THEN
CALL sternheimer_kernel(iter==1, isolv==2, 1, lrdvwfc, iudvwfc, &
thresh, dvscfins, all_conv, averlt, drhoscf, dbecsum, &
dbecsum_nc(:,:,:,:,:,isolv))
ELSE
CALL sternheimer_kernel(iter==1, .FALSE., 1, lrdvwfc, iudvwfc, &
thresh, dvscfins, all_conv, averlt, drhoscf, dbecsum)
ENDIF
CALL sternheimer_kernel(iter==1, isolv==2, 1, lrdvwfc, iudvwfc, &
thresh, dvscfins, all_conv, averlt, drhoscf, dbecsum, &
dbecsum_nc(:,:,:,:,:,isolv))
!
ELSE
! NsC: NOT UPDATED to NC case. Anyway not used anymore
CALL sternheimer_kernel_old(iter==1, 1, i_ref, lrdvwfc, iudvwfc, &
thresh, dvscfins, all_conv, averlt, drhoscf, dbecsum ,delta_vg)
ENDIF
!
IF (isolv == 2) THEN
IF ( iter > 1 ) dvscfins(:, 2:4, :) = -dvscfins(:, 2:4, :)
vrs(:, 2:4) = -vrs(:, 2:4)
ENDIF
!
ENDDO
!
IF (nsolv==2) THEN