Introduce a new input variable ethr_nscf in the turboEELS code.

ethr_nscf is the threshold for the convergence of eigenvalues during
the iterative diagonalization of the Hamiltonian in
the non-self-consistent-field (NSCF) calculation at
k and k+q points. Note, this quantity is NOT extensive.
This new input variable was requested by Nils Holle.
This commit is contained in:
Iurii Timrov 2020-12-15 13:33:19 +01:00
parent 43c7033487
commit 2e6d24bbfd
4 changed files with 17 additions and 5 deletions

View File

@ -214,6 +214,15 @@ input_description -distribution {Quantum Espresso} -package turboEELS -program t
} }
} }
var ethr_nscf -type REAL {
default { 1.D-11 }
info {
Threshold for the convergence of eigenvalues during
the iterative diagonalization of the Hamiltonian in
the non-self-consistent-field (NSCF) calculation at
k and k+q points. Note, this quantity is NOT extensive.
}
}
} }

View File

@ -23,7 +23,7 @@ SUBROUTINE bcast_lr_input
USE mp_global, ONLY: intra_image_comm USE mp_global, ONLY: intra_image_comm
USE mp_world, ONLY: world_comm USE mp_world, ONLY: world_comm
USE qpoint, ONLY: xq USE qpoint, ONLY: xq
USE control_lr, ONLY: lrpa, alpha_mix USE control_lr, ONLY: lrpa, alpha_mix, ethr_nscf
IMPLICIT NONE IMPLICIT NONE
! !
@ -56,6 +56,7 @@ SUBROUTINE bcast_lr_input
CALL mp_bcast (d0psi_rs, ionode_id,world_comm ) CALL mp_bcast (d0psi_rs, ionode_id,world_comm )
CALL mp_bcast (lshift_d0psi, ionode_id,world_comm ) CALL mp_bcast (lshift_d0psi, ionode_id,world_comm )
CALL mp_bcast (tddfpt, ionode_id, world_comm ) CALL mp_bcast (tddfpt, ionode_id, world_comm )
CALL mp_bcast (ethr_nscf, ionode_id, world_comm )
CALL plugin_arguments_bcast(ionode_id, world_comm) CALL plugin_arguments_bcast(ionode_id, world_comm)
! for EELS ! for EELS

View File

@ -50,7 +50,7 @@ SUBROUTINE lr_readin
USE io_rho_xml, ONLY : write_scf USE io_rho_xml, ONLY : write_scf
USE mp_bands, ONLY : ntask_groups USE mp_bands, ONLY : ntask_groups
USE constants, ONLY : eps4, rytoev USE constants, ONLY : eps4, rytoev
USE control_lr, ONLY : lrpa, alpha_mix USE control_lr, ONLY : lrpa, alpha_mix, ethr_nscf
USE mp_world, ONLY : world_comm USE mp_world, ONLY : world_comm
IMPLICIT NONE IMPLICIT NONE
@ -75,7 +75,7 @@ SUBROUTINE lr_readin
& charge_response, no_hxc, n_ipol, project, & & charge_response, no_hxc, n_ipol, project, &
& scissor, pseudo_hermitian, d0psi_rs, lshift_d0psi, & & scissor, pseudo_hermitian, d0psi_rs, lshift_d0psi, &
& q1, q2, q3, approximation, calculator, alpha_mix, start, & & q1, q2, q3, approximation, calculator, alpha_mix, start, &
& end, increment, epsil, units & end, increment, epsil, units, ethr_nscf
NAMELIST / lr_post / omeg, beta_gamma_z_prefix, w_T_npol, plot_type, epsil, itermax_int,sum_rule NAMELIST / lr_post / omeg, beta_gamma_z_prefix, w_T_npol, plot_type, epsil, itermax_int,sum_rule
namelist / lr_dav / num_eign, num_init, num_basis_max, residue_conv_thr, precondition, & namelist / lr_dav / num_eign, num_init, num_basis_max, residue_conv_thr, precondition, &
& dav_debug, reference,single_pole, sort_contr, diag_of_h, close_pre, & & dav_debug, reference,single_pole, sort_contr, diag_of_h, close_pre, &
@ -119,6 +119,7 @@ SUBROUTINE lr_readin
project = .FALSE. project = .FALSE.
max_seconds = 1.0E+7_DP max_seconds = 1.0E+7_DP
scissor = 0.d0 scissor = 0.d0
ethr_nscf = 1.D-11
! !
! For EELS ! For EELS
! !

View File

@ -33,6 +33,7 @@ SUBROUTINE lr_setup_nscf ()
USE wvfct, ONLY : nbnd, nbndx USE wvfct, ONLY : nbnd, nbndx
USE control_flags, ONLY : ethr, isolve, david, use_para_diag, & USE control_flags, ONLY : ethr, isolve, david, use_para_diag, &
& noinv, max_cg_iter & noinv, max_cg_iter
USE control_lr, ONLY : ethr_nscf
USE mp_pools, ONLY : kunit USE mp_pools, ONLY : kunit
USE spin_orb, ONLY : domag USE spin_orb, ONLY : domag
USE noncollin_module, ONLY : noncolin USE noncollin_module, ONLY : noncolin
@ -51,9 +52,9 @@ SUBROUTINE lr_setup_nscf ()
! !
IF ( .NOT. ALLOCATED( force ) ) ALLOCATE( force( 3, nat ) ) IF ( .NOT. ALLOCATED( force ) ) ALLOCATE( force( 3, nat ) )
! !
! ... threshold for diagonalization ethr - should be good for all cases ! ... threshold for diagonalization ethr
! !
ethr = 1.0D-9 / nelec ethr = ethr_nscf
! !
! ... variables for iterative diagonalization (Davidson is assumed) ! ... variables for iterative diagonalization (Davidson is assumed)
! !