mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-28 14:15:19 -04:00
Optionally switch off ADMM XC correction in TDDFPT kernel (#2205)
* GAPW_XC bug fix for linear response * GAPW/GAPW_XC linear response refactoring * Prettify and update regtests * Remove filter and adjust regtest value * Pretty * Linear response for ADMM/GAPW * TDDFT/ADMM/GAPW excitation energies. More regtests. Some refactoring. * Merge with upstream * Optionally switch off ADMM XC correction in TDDFPT kernel
This commit is contained in:
parent
83879e1e52
commit
00065fbbfa
18 changed files with 664 additions and 114 deletions
|
|
@ -475,6 +475,8 @@ MODULE cp_control_types
|
|||
INTEGER :: auto_basis_p_lri_aux = 1
|
||||
!> use symmetric definition of ADMM Kernel correction
|
||||
LOGICAL :: admm_symm
|
||||
!> Use/Ignore possible ADMM Kernel XC correction
|
||||
LOGICAL :: admm_xc_correction
|
||||
!
|
||||
! DIPOLE_MOMENTS subsection
|
||||
!
|
||||
|
|
|
|||
|
|
@ -1282,6 +1282,7 @@ CONTAINS
|
|||
CALL section_vals_val_get(t_section, "RKS_TRIPLETS", l_val=t_control%rks_triplets)
|
||||
CALL section_vals_val_get(t_section, "DO_LRIGPW", l_val=t_control%do_lrigpw)
|
||||
CALL section_vals_val_get(t_section, "ADMM_KERNEL_CORRECTION_SYMMETRIC", l_val=t_control%admm_symm)
|
||||
CALL section_vals_val_get(t_section, "ADMM_KERNEL_XC_CORRECTION", l_val=t_control%admm_xc_correction)
|
||||
|
||||
! read automatically generated auxiliary basis for LRI
|
||||
CALL section_vals_val_get(t_section, "AUTO_BASIS", n_rep_val=nrep)
|
||||
|
|
|
|||
|
|
@ -1386,6 +1386,14 @@ CONTAINS
|
|||
CALL section_add_keyword(section, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="ADMM_KERNEL_XC_CORRECTION", &
|
||||
description="Use/Ignore ADMM correction xc functional for TD kernel."// &
|
||||
"XC correction functional is defined in ground state XC section.", &
|
||||
n_var=1, type_of_var=logical_t, &
|
||||
default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
|
||||
CALL section_add_keyword(section, keyword)
|
||||
CALL keyword_release(keyword)
|
||||
|
||||
CALL keyword_create(keyword, __LOCATION__, name="ADMM_KERNEL_CORRECTION_SYMMETRIC", &
|
||||
description="ADMM correction functional in kernel is applied symmetrically."// &
|
||||
"Original implementation is using a non-symmetric formula.", &
|
||||
|
|
|
|||
|
|
@ -364,7 +364,8 @@ CONTAINS
|
|||
! full TDDFPT kernel
|
||||
CALL fhxc_kernel(Aop_evects, evects, is_rks_triplets, do_hfx, do_admm, qs_env, &
|
||||
kernel_env%full_kernel, kernel_env_admm_aux, sub_env, work_matrices, &
|
||||
tddfpt_control%admm_symm, do_lri_response)
|
||||
tddfpt_control%admm_symm, tddfpt_control%admm_xc_correction, &
|
||||
do_lri_response)
|
||||
ELSE IF (tddfpt_control%kernel == tddfpt_kernel_stda) THEN
|
||||
! sTDA kernel
|
||||
CALL stda_kernel(Aop_evects, evects, is_rks_triplets, qs_env, tddfpt_control%stda_control, &
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ CONTAINS
|
|||
!> \param sub_env parallel (sub)group environment
|
||||
!> \param work_matrices collection of work matrices (modified on exit)
|
||||
!> \param admm_symm use symmetric definition of ADMM kernel correction
|
||||
!> \param admm_xc_correction use ADMM XC kernel correction
|
||||
!> \param do_lrigpw ...
|
||||
!> \par History
|
||||
!> * 06.2016 created [Sergey Chulkov]
|
||||
|
|
@ -97,14 +98,14 @@ CONTAINS
|
|||
! **************************************************************************************************
|
||||
SUBROUTINE fhxc_kernel(Aop_evects, evects, is_rks_triplets, &
|
||||
do_hfx, do_admm, qs_env, kernel_env, kernel_env_admm_aux, &
|
||||
sub_env, work_matrices, admm_symm, do_lrigpw)
|
||||
sub_env, work_matrices, admm_symm, admm_xc_correction, do_lrigpw)
|
||||
TYPE(cp_fm_p_type), DIMENSION(:, :) :: Aop_evects, evects
|
||||
LOGICAL, INTENT(in) :: is_rks_triplets, do_hfx, do_admm
|
||||
TYPE(qs_environment_type), POINTER :: qs_env
|
||||
TYPE(full_kernel_env_type), POINTER :: kernel_env, kernel_env_admm_aux
|
||||
TYPE(tddfpt_subgroup_env_type), INTENT(in) :: sub_env
|
||||
TYPE(tddfpt_work_matrices), INTENT(inout) :: work_matrices
|
||||
LOGICAL, INTENT(in) :: admm_symm, do_lrigpw
|
||||
LOGICAL, INTENT(in) :: admm_symm, admm_xc_correction, do_lrigpw
|
||||
|
||||
CHARACTER(LEN=*), PARAMETER :: routineN = 'fhxc_kernel'
|
||||
|
||||
|
|
@ -268,111 +269,113 @@ CONTAINS
|
|||
END IF
|
||||
|
||||
! ADMM correction
|
||||
IF (do_admm .AND. dft_control%admm_control%aux_exch_func /= do_admm_aux_exch_func_none) THEN
|
||||
CALL tddfpt_construct_aux_fit_density(rho_orb_struct=work_matrices%rho_orb_struct_sub, &
|
||||
rho_aux_fit_struct=work_matrices%rho_aux_fit_struct_sub, &
|
||||
local_rho_set=work_matrices%local_rho_set_admm, &
|
||||
qs_env=qs_env, sub_env=sub_env, &
|
||||
wfm_rho_orb=work_matrices%rho_ao_orb_fm_sub, &
|
||||
wfm_rho_aux_fit=work_matrices%rho_ao_aux_fit_fm_sub, &
|
||||
wfm_aux_orb=work_matrices%wfm_aux_orb_sub)
|
||||
! - C_{HF} d^{2}E_{x, ADMM}^{DFT}[\hat{\rho}] / d\hat{\rho}^2
|
||||
IF (admm_symm) THEN
|
||||
CALL dbcsr_get_info(rho_ia_ao_aux_fit(1)%matrix, row_blk_size=blk_sizes)
|
||||
ALLOCATE (A_xc_munu_sub(nspins))
|
||||
DO ispin = 1, nspins
|
||||
ALLOCATE (A_xc_munu_sub(ispin)%matrix)
|
||||
CALL dbcsr_create(matrix=A_xc_munu_sub(ispin)%matrix, name="ADMM_XC", &
|
||||
dist=sub_env%dbcsr_dist, matrix_type=dbcsr_type_symmetric, &
|
||||
row_blk_size=blk_sizes, col_blk_size=blk_sizes, nze=0)
|
||||
CALL cp_dbcsr_alloc_block_from_nbl(A_xc_munu_sub(ispin)%matrix, sub_env%sab_aux_fit)
|
||||
CALL dbcsr_set(A_xc_munu_sub(ispin)%matrix, 0.0_dp)
|
||||
END DO
|
||||
IF (do_admm .AND. admm_xc_correction) THEN
|
||||
IF (dft_control%admm_control%aux_exch_func /= do_admm_aux_exch_func_none) THEN
|
||||
CALL tddfpt_construct_aux_fit_density(rho_orb_struct=work_matrices%rho_orb_struct_sub, &
|
||||
rho_aux_fit_struct=work_matrices%rho_aux_fit_struct_sub, &
|
||||
local_rho_set=work_matrices%local_rho_set_admm, &
|
||||
qs_env=qs_env, sub_env=sub_env, &
|
||||
wfm_rho_orb=work_matrices%rho_ao_orb_fm_sub, &
|
||||
wfm_rho_aux_fit=work_matrices%rho_ao_aux_fit_fm_sub, &
|
||||
wfm_aux_orb=work_matrices%wfm_aux_orb_sub)
|
||||
! - C_{HF} d^{2}E_{x, ADMM}^{DFT}[\hat{\rho}] / d\hat{\rho}^2
|
||||
IF (admm_symm) THEN
|
||||
CALL dbcsr_get_info(rho_ia_ao_aux_fit(1)%matrix, row_blk_size=blk_sizes)
|
||||
ALLOCATE (A_xc_munu_sub(nspins))
|
||||
DO ispin = 1, nspins
|
||||
ALLOCATE (A_xc_munu_sub(ispin)%matrix)
|
||||
CALL dbcsr_create(matrix=A_xc_munu_sub(ispin)%matrix, name="ADMM_XC", &
|
||||
dist=sub_env%dbcsr_dist, matrix_type=dbcsr_type_symmetric, &
|
||||
row_blk_size=blk_sizes, col_blk_size=blk_sizes, nze=0)
|
||||
CALL cp_dbcsr_alloc_block_from_nbl(A_xc_munu_sub(ispin)%matrix, sub_env%sab_aux_fit)
|
||||
CALL dbcsr_set(A_xc_munu_sub(ispin)%matrix, 0.0_dp)
|
||||
END DO
|
||||
|
||||
CALL pw_env_get(sub_env%pw_env, auxbas_pw_pool=auxbas_pw_pool)
|
||||
ALLOCATE (V_rspace_sub(nspins))
|
||||
DO ispin = 1, nspins
|
||||
NULLIFY (V_rspace_sub(ispin)%pw)
|
||||
CALL pw_pool_create_pw(auxbas_pw_pool, V_rspace_sub(ispin)%pw, &
|
||||
use_data=REALDATA3D, in_space=REALSPACE)
|
||||
CALL pw_zero(V_rspace_sub(ispin)%pw)
|
||||
END DO
|
||||
CALL pw_env_get(sub_env%pw_env, auxbas_pw_pool=auxbas_pw_pool)
|
||||
ALLOCATE (V_rspace_sub(nspins))
|
||||
DO ispin = 1, nspins
|
||||
NULLIFY (V_rspace_sub(ispin)%pw)
|
||||
CALL pw_pool_create_pw(auxbas_pw_pool, V_rspace_sub(ispin)%pw, &
|
||||
use_data=REALDATA3D, in_space=REALSPACE)
|
||||
CALL pw_zero(V_rspace_sub(ispin)%pw)
|
||||
END DO
|
||||
|
||||
IF (admm_env%do_gapw) THEN
|
||||
basis_type = "AUX_FIT_SOFT"
|
||||
task_list => sub_env%task_list_aux_fit_soft
|
||||
IF (admm_env%do_gapw) THEN
|
||||
basis_type = "AUX_FIT_SOFT"
|
||||
task_list => sub_env%task_list_aux_fit_soft
|
||||
ELSE
|
||||
basis_type = "AUX_FIT"
|
||||
task_list => sub_env%task_list_aux_fit
|
||||
END IF
|
||||
|
||||
CALL tddfpt_apply_xc(A_ia_rspace=V_rspace_sub, &
|
||||
kernel_env=kernel_env_admm_aux, &
|
||||
rho_ia_struct=work_matrices%rho_aux_fit_struct_sub, &
|
||||
is_rks_triplets=is_rks_triplets, pw_env=sub_env%pw_env, &
|
||||
work_v_xc=work_matrices%wpw_rspace_sub, &
|
||||
work_v_xc_tau=work_matrices%wpw_tau_rspace_sub)
|
||||
DO ispin = 1, nspins
|
||||
CALL pw_scale(V_rspace_sub(ispin)%pw, V_rspace_sub(ispin)%pw%pw_grid%dvol)
|
||||
CALL integrate_v_rspace(v_rspace=V_rspace_sub(ispin), &
|
||||
hmat=A_xc_munu_sub(ispin), &
|
||||
qs_env=qs_env, calculate_forces=.FALSE., &
|
||||
pw_env_external=sub_env%pw_env, &
|
||||
basis_type=basis_type, &
|
||||
task_list_external=task_list)
|
||||
END DO
|
||||
IF (admm_env%do_gapw) THEN
|
||||
rho_atom_set => sub_env%local_rho_set_admm%rho_atom_set
|
||||
rho1_atom_set => work_matrices%local_rho_set_admm%rho_atom_set
|
||||
CALL calculate_xc_2nd_deriv_atom(rho_atom_set, rho1_atom_set, qs_env, &
|
||||
kernel_env_admm_aux%xc_section, &
|
||||
sub_env%para_env, do_tddfpt2=.TRUE., do_triplet=.FALSE., &
|
||||
kind_set_external=admm_env%admm_gapw_env%admm_kind_set)
|
||||
CALL update_ks_atom(qs_env, A_xc_munu_sub, rho_ia_ao_aux_fit, forces=.FALSE., tddft=.TRUE., &
|
||||
rho_atom_external=rho1_atom_set, &
|
||||
kind_set_external=admm_env%admm_gapw_env%admm_kind_set, &
|
||||
oce_external=admm_env%admm_gapw_env%oce, &
|
||||
sab_external=sub_env%sab_aux_fit)
|
||||
END IF
|
||||
ALLOCATE (dbwork)
|
||||
CALL dbcsr_create(dbwork, template=work_matrices%A_ia_munu_sub(1)%matrix)
|
||||
CALL cp_fm_create(work_aux_orb, &
|
||||
matrix_struct=work_matrices%wfm_aux_orb_sub%matrix_struct)
|
||||
CALL cp_fm_create(work_orb_orb, &
|
||||
matrix_struct=work_matrices%rho_ao_orb_fm_sub%matrix_struct)
|
||||
CALL cp_fm_get_info(work_aux_orb, nrow_global=nao_aux, ncol_global=nao)
|
||||
DO ispin = 1, nspins
|
||||
CALL cp_dbcsr_sm_fm_multiply(A_xc_munu_sub(ispin)%matrix, sub_env%admm_A, &
|
||||
work_aux_orb, nao)
|
||||
CALL cp_gemm('T', 'N', nao, nao, nao_aux, 1.0_dp, sub_env%admm_A, &
|
||||
work_aux_orb, 0.0_dp, work_orb_orb)
|
||||
CALL dbcsr_copy(dbwork, work_matrices%A_ia_munu_sub(1)%matrix)
|
||||
CALL dbcsr_set(dbwork, 0.0_dp)
|
||||
CALL copy_fm_to_dbcsr(work_orb_orb, dbwork, keep_sparsity=.TRUE.)
|
||||
CALL dbcsr_add(work_matrices%A_ia_munu_sub(ispin)%matrix, dbwork, 1.0_dp, 1.0_dp)
|
||||
END DO
|
||||
CALL dbcsr_release(dbwork)
|
||||
DEALLOCATE (dbwork)
|
||||
DO ispin = 1, nspins
|
||||
CALL pw_pool_give_back_pw(auxbas_pw_pool, V_rspace_sub(ispin)%pw)
|
||||
END DO
|
||||
DEALLOCATE (V_rspace_sub)
|
||||
CALL cp_fm_release(work_aux_orb)
|
||||
CALL cp_fm_release(work_orb_orb)
|
||||
DO ispin = 1, nspins
|
||||
CALL dbcsr_deallocate_matrix(A_xc_munu_sub(ispin)%matrix)
|
||||
END DO
|
||||
DEALLOCATE (A_xc_munu_sub)
|
||||
ELSE
|
||||
basis_type = "AUX_FIT"
|
||||
task_list => sub_env%task_list_aux_fit
|
||||
END IF
|
||||
|
||||
CALL tddfpt_apply_xc(A_ia_rspace=V_rspace_sub, &
|
||||
kernel_env=kernel_env_admm_aux, &
|
||||
rho_ia_struct=work_matrices%rho_aux_fit_struct_sub, &
|
||||
is_rks_triplets=is_rks_triplets, pw_env=sub_env%pw_env, &
|
||||
work_v_xc=work_matrices%wpw_rspace_sub, &
|
||||
work_v_xc_tau=work_matrices%wpw_tau_rspace_sub)
|
||||
DO ispin = 1, nspins
|
||||
CALL pw_scale(V_rspace_sub(ispin)%pw, V_rspace_sub(ispin)%pw%pw_grid%dvol)
|
||||
CALL integrate_v_rspace(v_rspace=V_rspace_sub(ispin), &
|
||||
hmat=A_xc_munu_sub(ispin), &
|
||||
qs_env=qs_env, calculate_forces=.FALSE., &
|
||||
pw_env_external=sub_env%pw_env, &
|
||||
basis_type=basis_type, &
|
||||
task_list_external=task_list)
|
||||
END DO
|
||||
IF (admm_env%do_gapw) THEN
|
||||
rho_atom_set => sub_env%local_rho_set_admm%rho_atom_set
|
||||
rho1_atom_set => work_matrices%local_rho_set_admm%rho_atom_set
|
||||
CALL calculate_xc_2nd_deriv_atom(rho_atom_set, rho1_atom_set, qs_env, &
|
||||
kernel_env_admm_aux%xc_section, &
|
||||
sub_env%para_env, do_tddfpt2=.TRUE., do_triplet=.FALSE., &
|
||||
kind_set_external=admm_env%admm_gapw_env%admm_kind_set)
|
||||
CALL update_ks_atom(qs_env, A_xc_munu_sub, rho_ia_ao_aux_fit, forces=.FALSE., tddft=.TRUE., &
|
||||
rho_atom_external=rho1_atom_set, &
|
||||
kind_set_external=admm_env%admm_gapw_env%admm_kind_set, &
|
||||
oce_external=admm_env%admm_gapw_env%oce, &
|
||||
sab_external=sub_env%sab_aux_fit)
|
||||
END IF
|
||||
ALLOCATE (dbwork)
|
||||
CALL dbcsr_create(dbwork, template=work_matrices%A_ia_munu_sub(1)%matrix)
|
||||
CALL cp_fm_create(work_aux_orb, &
|
||||
matrix_struct=work_matrices%wfm_aux_orb_sub%matrix_struct)
|
||||
CALL cp_fm_create(work_orb_orb, &
|
||||
matrix_struct=work_matrices%rho_ao_orb_fm_sub%matrix_struct)
|
||||
CALL cp_fm_get_info(work_aux_orb, nrow_global=nao_aux, ncol_global=nao)
|
||||
DO ispin = 1, nspins
|
||||
CALL cp_dbcsr_sm_fm_multiply(A_xc_munu_sub(ispin)%matrix, sub_env%admm_A, &
|
||||
work_aux_orb, nao)
|
||||
CALL cp_gemm('T', 'N', nao, nao, nao_aux, 1.0_dp, sub_env%admm_A, &
|
||||
work_aux_orb, 0.0_dp, work_orb_orb)
|
||||
CALL dbcsr_copy(dbwork, work_matrices%A_ia_munu_sub(1)%matrix)
|
||||
CALL dbcsr_set(dbwork, 0.0_dp)
|
||||
CALL copy_fm_to_dbcsr(work_orb_orb, dbwork, keep_sparsity=.TRUE.)
|
||||
CALL dbcsr_add(work_matrices%A_ia_munu_sub(ispin)%matrix, dbwork, 1.0_dp, 1.0_dp)
|
||||
END DO
|
||||
CALL dbcsr_release(dbwork)
|
||||
DEALLOCATE (dbwork)
|
||||
DO ispin = 1, nspins
|
||||
CALL pw_pool_give_back_pw(auxbas_pw_pool, V_rspace_sub(ispin)%pw)
|
||||
END DO
|
||||
DEALLOCATE (V_rspace_sub)
|
||||
CALL cp_fm_release(work_aux_orb)
|
||||
CALL cp_fm_release(work_orb_orb)
|
||||
DO ispin = 1, nspins
|
||||
CALL dbcsr_deallocate_matrix(A_xc_munu_sub(ispin)%matrix)
|
||||
END DO
|
||||
DEALLOCATE (A_xc_munu_sub)
|
||||
ELSE
|
||||
CALL tddfpt_apply_xc(A_ia_rspace=work_matrices%A_ia_rspace_sub, &
|
||||
kernel_env=kernel_env_admm_aux, &
|
||||
rho_ia_struct=work_matrices%rho_aux_fit_struct_sub, &
|
||||
is_rks_triplets=is_rks_triplets, pw_env=sub_env%pw_env, &
|
||||
work_v_xc=work_matrices%wpw_rspace_sub, &
|
||||
work_v_xc_tau=work_matrices%wpw_tau_rspace_sub)
|
||||
IF (admm_env%do_gapw) THEN
|
||||
CPWARN("GAPW/ADMM needs symmetric ADMM kernel")
|
||||
CPABORT("GAPW/ADMM@TDDFT")
|
||||
CALL tddfpt_apply_xc(A_ia_rspace=work_matrices%A_ia_rspace_sub, &
|
||||
kernel_env=kernel_env_admm_aux, &
|
||||
rho_ia_struct=work_matrices%rho_aux_fit_struct_sub, &
|
||||
is_rks_triplets=is_rks_triplets, pw_env=sub_env%pw_env, &
|
||||
work_v_xc=work_matrices%wpw_rspace_sub, &
|
||||
work_v_xc_tau=work_matrices%wpw_tau_rspace_sub)
|
||||
IF (admm_env%do_gapw) THEN
|
||||
CPWARN("GAPW/ADMM needs symmetric ADMM kernel")
|
||||
CPABORT("GAPW/ADMM@TDDFT")
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
|
|
|||
|
|
@ -406,7 +406,7 @@ CONTAINS
|
|||
END IF
|
||||
CALL qs_fgxc_release(ks_env, fxc_rho, fxc_tau, gxc_rho, gxc_tau)
|
||||
|
||||
IF (do_admm) THEN
|
||||
IF (do_admm .AND. tddfpt_control%admm_xc_correction) THEN
|
||||
IF (dft_control%admm_control%aux_exch_func == do_admm_aux_exch_func_none) THEN
|
||||
! nothing to do
|
||||
ELSE
|
||||
|
|
|
|||
|
|
@ -269,10 +269,17 @@ CONTAINS
|
|||
IF (tddfpt_control%kernel == tddfpt_kernel_full) THEN
|
||||
IF (do_admm) THEN
|
||||
! Full kernel with ADMM
|
||||
CALL create_kernel_env(kernel_env=full_kernel_env, &
|
||||
rho_struct_sub=work_matrices%rho_orb_struct_sub, &
|
||||
xc_section=admm_env%xc_section_primary, &
|
||||
is_rks_triplets=tddfpt_control%rks_triplets, sub_env=sub_env)
|
||||
IF (tddfpt_control%admm_xc_correction) THEN
|
||||
CALL create_kernel_env(kernel_env=full_kernel_env, &
|
||||
rho_struct_sub=work_matrices%rho_orb_struct_sub, &
|
||||
xc_section=admm_env%xc_section_primary, &
|
||||
is_rks_triplets=tddfpt_control%rks_triplets, sub_env=sub_env)
|
||||
ELSE
|
||||
CALL create_kernel_env(kernel_env=full_kernel_env, &
|
||||
rho_struct_sub=work_matrices%rho_orb_struct_sub, &
|
||||
xc_section=xc_section, &
|
||||
is_rks_triplets=tddfpt_control%rks_triplets, sub_env=sub_env)
|
||||
END IF
|
||||
|
||||
CALL tddfpt_construct_aux_fit_density(rho_orb_struct=work_matrices%rho_orb_struct_sub, &
|
||||
rho_aux_fit_struct=work_matrices%rho_aux_fit_struct_sub, &
|
||||
|
|
@ -869,12 +876,15 @@ CONTAINS
|
|||
CALL xc_write(log_unit, xc_section, lsd)
|
||||
IF (tddfpt_control%do_hfx) THEN
|
||||
IF (tddfpt_control%do_admm) THEN
|
||||
WRITE (log_unit, "(T2,A,T62,A19)") "KERNEL|", "ADMM exact exchange"
|
||||
WRITE (log_unit, "(T2,A,T62,A19)") "KERNEL|", "ADMM Exact Exchange"
|
||||
IF (tddfpt_control%admm_xc_correction) THEN
|
||||
WRITE (log_unit, "(T2,A,T60,A21)") "KERNEL|", "Apply ADMM Kernel XC Correction"
|
||||
END IF
|
||||
IF (tddfpt_control%admm_symm) THEN
|
||||
WRITE (log_unit, "(T2,A,T60,A21)") "KERNEL|", "symmetric ADMM kernel"
|
||||
WRITE (log_unit, "(T2,A,T60,A21)") "KERNEL|", "Symmetric ADMM Kernel"
|
||||
END IF
|
||||
ELSE
|
||||
WRITE (log_unit, "(T2,A,T67,A14)") "KERNEL|", "exact exchange"
|
||||
WRITE (log_unit, "(T2,A,T67,A14)") "KERNEL|", "Exact Exchange"
|
||||
END IF
|
||||
END IF
|
||||
IF (tddfpt_control%do_lrigpw) THEN
|
||||
|
|
|
|||
|
|
@ -10,5 +10,4 @@ h2o_periodic.inp 87 1e-05
|
|||
h2o_gga.inp 87 1e-05 0.165143521103E+02
|
||||
h2o_gapw.inp 87 1e-05 0.170288288429E+02
|
||||
h2o_gapw_xc.inp 87 1e-05 0.170142638188E+02
|
||||
h2o_admm_gapw.inp 87 1e-05 0.165349668089E+02
|
||||
#EOF
|
||||
|
|
|
|||
|
|
@ -7,4 +7,5 @@ h2o_lri.inp 87 1e-05
|
|||
h2o_pade_fd.inp 87 1e-05 0.168333363169E+02
|
||||
h2o_hfx.inp 87 1e-05 0.155040875037E+02
|
||||
h2o_hfx_admm.inp 87 1e-05 0.153251090463E+02
|
||||
h2o_admm_gapw.inp 87 1e-05 0.165349668089E+02
|
||||
#EOF
|
||||
|
|
|
|||
|
|
@ -16,4 +16,5 @@ h2o_dip09.inp 86 1e-09
|
|||
h2o_dip10.inp 86 1e-09 0.150644266924E+00
|
||||
h2o_dip11.inp 86 1e-09 0.804659694314E-01
|
||||
h2o_dip11b.inp 86 1e-09 0.104678363910E+00
|
||||
h2o_dip12.inp 86 1e-09 -0.129459747287E+00
|
||||
#EOF
|
||||
|
|
|
|||
96
tests/QS/regtest-debug-4/h2o_dip12.inp
Normal file
96
tests/QS/regtest-debug-4/h2o_dip12.inp
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&PROPERTIES
|
||||
&TDDFPT
|
||||
KERNEL FULL
|
||||
ADMM_KERNEL_CORRECTION_SYMMETRIC T
|
||||
ADMM_KERNEL_XC_CORRECTION F
|
||||
NSTATES 1
|
||||
MAX_ITER 50
|
||||
CONVERGENCE [eV] 1.0e-7
|
||||
&END TDDFPT
|
||||
&END PROPERTIES
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GPW
|
||||
&END QS
|
||||
BASIS_SET_FILE_NAME BASIS_SET
|
||||
BASIS_SET_FILE_NAME BASIS_ADMM
|
||||
&AUXILIARY_DENSITY_MATRIX_METHOD
|
||||
ADMM_PURIFICATION_METHOD NONE
|
||||
EXCH_CORRECTION_FUNC PBEX
|
||||
EXCH_SCALING_MODEL NONE
|
||||
METHOD BASIS_PROJECTION
|
||||
&END
|
||||
&EFIELD
|
||||
&END
|
||||
&EXCITED_STATES T
|
||||
STATE 1
|
||||
&END EXCITED_STATES
|
||||
&SCF
|
||||
SCF_GUESS ATOMIC
|
||||
&OT
|
||||
PRECONDITIONER FULL_SINGLE_INVERSE
|
||||
MINIMIZER DIIS
|
||||
&END
|
||||
&OUTER_SCF
|
||||
MAX_SCF 20
|
||||
EPS_SCF 1.0E-7
|
||||
&END
|
||||
MAX_SCF 50
|
||||
EPS_SCF 1.0E-7
|
||||
&END SCF
|
||||
&XC
|
||||
&XC_FUNCTIONAL PBE0
|
||||
&END XC_FUNCTIONAL
|
||||
&END XC
|
||||
&PRINT
|
||||
&MOMENTS ON
|
||||
PERIODIC .FALSE.
|
||||
REFERENCE COM
|
||||
&END
|
||||
&END
|
||||
&POISSON
|
||||
PERIODIC NONE
|
||||
POISSON_SOLVER MT
|
||||
&END
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC [angstrom] 4.0 4.0 4.0
|
||||
PERIODIC NONE
|
||||
&END
|
||||
&COORD
|
||||
O 0.000000 0.000000 -0.065587
|
||||
H 0.000000 -0.757136 0.520545
|
||||
H 0.000000 0.757136 0.520545
|
||||
&END COORD
|
||||
&TOPOLOGY
|
||||
&CENTER_COORDINATES
|
||||
&END
|
||||
&END
|
||||
&KIND H
|
||||
BASIS_SET DZV-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q1
|
||||
&END KIND
|
||||
&KIND O
|
||||
BASIS_SET DZVP-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q6
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT dipole
|
||||
RUN_TYPE DEBUG
|
||||
&END GLOBAL
|
||||
&DEBUG
|
||||
DEBUG_FORCES .FALSE.
|
||||
DEBUG_STRESS_TENSOR .FALSE.
|
||||
DEBUG_DIPOLE .TRUE.
|
||||
DEBUG_POLARIZABILITY .FALSE.
|
||||
DE 0.0002
|
||||
&END
|
||||
|
||||
11
tests/QS/regtest-tddfpt-admm/TEST_FILES
Normal file
11
tests/QS/regtest-tddfpt-admm/TEST_FILES
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# runs are executed in the same order as in this file
|
||||
# the second field tells which test should be run in order to compare with the last available output
|
||||
# e.g. 0 means do not compare anything, running is enough
|
||||
# 1 compares the last total energy in the file
|
||||
# for details see cp2k/tools/do_regtest
|
||||
#
|
||||
h2o_a01.inp 1 5.0E-11 -17.21071638924079
|
||||
h2o_a02.inp 1 5.0E-11 -17.20961421163643
|
||||
h2o_a03.inp 1 5.0E-11 -17.20804254307528
|
||||
h2o_a04.inp 1 5.0E-11 -17.20949405791527
|
||||
#EOF
|
||||
107
tests/QS/regtest-tddfpt-admm/h2o_a01.inp
Normal file
107
tests/QS/regtest-tddfpt-admm/h2o_a01.inp
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&PROPERTIES
|
||||
&TDDFPT
|
||||
KERNEL FULL
|
||||
ADMM_KERNEL_CORRECTION_SYMMETRIC F
|
||||
ADMM_KERNEL_XC_CORRECTION F
|
||||
&XC
|
||||
&XC_FUNCTIONAL PBE
|
||||
&END XC_FUNCTIONAL
|
||||
&END XC
|
||||
NSTATES 2
|
||||
MAX_ITER 50
|
||||
CONVERGENCE [eV] 1.0e-7
|
||||
RKS_TRIPLETS F
|
||||
&END TDDFPT
|
||||
&END PROPERTIES
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GPW
|
||||
&END QS
|
||||
BASIS_SET_FILE_NAME BASIS_SET
|
||||
BASIS_SET_FILE_NAME BASIS_ADMM
|
||||
&AUXILIARY_DENSITY_MATRIX_METHOD
|
||||
ADMM_PURIFICATION_METHOD NONE
|
||||
EXCH_CORRECTION_FUNC PBEX
|
||||
EXCH_SCALING_MODEL NONE
|
||||
METHOD BASIS_PROJECTION
|
||||
&END
|
||||
&EXCITED_STATES T
|
||||
STATE 1
|
||||
&END EXCITED_STATES
|
||||
&SCF
|
||||
SCF_GUESS ATOMIC
|
||||
&OT
|
||||
PRECONDITIONER FULL_SINGLE_INVERSE
|
||||
MINIMIZER DIIS
|
||||
&END
|
||||
&OUTER_SCF
|
||||
MAX_SCF 20
|
||||
EPS_SCF 1.0E-7
|
||||
&END
|
||||
MAX_SCF 50
|
||||
EPS_SCF 1.0E-7
|
||||
&END SCF
|
||||
&XC
|
||||
&XC_FUNCTIONAL PBE0
|
||||
&END XC_FUNCTIONAL
|
||||
&END XC
|
||||
&MGRID
|
||||
CUTOFF 300
|
||||
REL_CUTOFF 60
|
||||
&END
|
||||
&POISSON
|
||||
PERIODIC NONE
|
||||
POISSON_SOLVER MT
|
||||
&END
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC [angstrom] 4.0 4.0 4.0
|
||||
PERIODIC NONE
|
||||
&END
|
||||
&COORD
|
||||
O 0.000000 0.000000 0.000000
|
||||
H 0.000000 -0.757136 0.580545
|
||||
H 0.000000 0.757136 0.580545
|
||||
&END COORD
|
||||
&TOPOLOGY
|
||||
&CENTER_COORDINATES
|
||||
&END
|
||||
&END
|
||||
&KIND H
|
||||
BASIS_SET DZV-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q1
|
||||
&END KIND
|
||||
&KIND O
|
||||
BASIS_SET DZVP-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q6
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&PRINT
|
||||
&FORCES
|
||||
&END
|
||||
&END
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT ftest
|
||||
RUN_TYPE GEO_OPT
|
||||
&END GLOBAL
|
||||
&MOTION
|
||||
&GEO_OPT
|
||||
MAX_ITER 1
|
||||
&END
|
||||
&END
|
||||
&DEBUG
|
||||
DEBUG_FORCES .TRUE.
|
||||
DEBUG_STRESS_TENSOR .FALSE.
|
||||
DEBUG_DIPOLE .FALSE.
|
||||
DEBUG_POLARIZABILITY .FALSE.
|
||||
STOP_ON_MISMATCH F
|
||||
DE 0.0005
|
||||
&END
|
||||
|
||||
103
tests/QS/regtest-tddfpt-admm/h2o_a02.inp
Normal file
103
tests/QS/regtest-tddfpt-admm/h2o_a02.inp
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&PROPERTIES
|
||||
&TDDFPT
|
||||
KERNEL FULL
|
||||
ADMM_KERNEL_CORRECTION_SYMMETRIC T
|
||||
ADMM_KERNEL_XC_CORRECTION T
|
||||
NSTATES 2
|
||||
MAX_ITER 50
|
||||
CONVERGENCE [eV] 1.0e-7
|
||||
RKS_TRIPLETS F
|
||||
&END TDDFPT
|
||||
&END PROPERTIES
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GPW
|
||||
&END QS
|
||||
BASIS_SET_FILE_NAME BASIS_SET
|
||||
BASIS_SET_FILE_NAME BASIS_ADMM
|
||||
&AUXILIARY_DENSITY_MATRIX_METHOD
|
||||
ADMM_PURIFICATION_METHOD NONE
|
||||
EXCH_CORRECTION_FUNC PBEX
|
||||
EXCH_SCALING_MODEL NONE
|
||||
METHOD BASIS_PROJECTION
|
||||
&END
|
||||
&EXCITED_STATES T
|
||||
STATE 1
|
||||
&END EXCITED_STATES
|
||||
&SCF
|
||||
SCF_GUESS ATOMIC
|
||||
&OT
|
||||
PRECONDITIONER FULL_SINGLE_INVERSE
|
||||
MINIMIZER DIIS
|
||||
&END
|
||||
&OUTER_SCF
|
||||
MAX_SCF 20
|
||||
EPS_SCF 1.0E-7
|
||||
&END
|
||||
MAX_SCF 50
|
||||
EPS_SCF 1.0E-7
|
||||
&END SCF
|
||||
&XC
|
||||
&XC_FUNCTIONAL PBE0
|
||||
&END XC_FUNCTIONAL
|
||||
&END XC
|
||||
&MGRID
|
||||
CUTOFF 300
|
||||
REL_CUTOFF 60
|
||||
&END
|
||||
&POISSON
|
||||
PERIODIC NONE
|
||||
POISSON_SOLVER MT
|
||||
&END
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC [angstrom] 4.0 4.0 4.0
|
||||
PERIODIC NONE
|
||||
&END
|
||||
&COORD
|
||||
O 0.000000 0.000000 0.000000
|
||||
H 0.000000 -0.757136 0.580545
|
||||
H 0.000000 0.757136 0.580545
|
||||
&END COORD
|
||||
&TOPOLOGY
|
||||
&CENTER_COORDINATES
|
||||
&END
|
||||
&END
|
||||
&KIND H
|
||||
BASIS_SET DZV-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q1
|
||||
&END KIND
|
||||
&KIND O
|
||||
BASIS_SET DZVP-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q6
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&PRINT
|
||||
&FORCES
|
||||
&END
|
||||
&END
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT ftest
|
||||
RUN_TYPE GEO_OPT
|
||||
&END GLOBAL
|
||||
&MOTION
|
||||
&GEO_OPT
|
||||
MAX_ITER 1
|
||||
&END
|
||||
&END
|
||||
&DEBUG
|
||||
DEBUG_FORCES .TRUE.
|
||||
DEBUG_STRESS_TENSOR .FALSE.
|
||||
DEBUG_DIPOLE .FALSE.
|
||||
DEBUG_POLARIZABILITY .FALSE.
|
||||
STOP_ON_MISMATCH F
|
||||
DE 0.0005
|
||||
&END
|
||||
|
||||
103
tests/QS/regtest-tddfpt-admm/h2o_a03.inp
Normal file
103
tests/QS/regtest-tddfpt-admm/h2o_a03.inp
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&PROPERTIES
|
||||
&TDDFPT
|
||||
KERNEL FULL
|
||||
ADMM_KERNEL_CORRECTION_SYMMETRIC T
|
||||
ADMM_KERNEL_XC_CORRECTION F
|
||||
NSTATES 2
|
||||
MAX_ITER 50
|
||||
CONVERGENCE [eV] 1.0e-7
|
||||
RKS_TRIPLETS F
|
||||
&END TDDFPT
|
||||
&END PROPERTIES
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GPW
|
||||
&END QS
|
||||
BASIS_SET_FILE_NAME BASIS_SET
|
||||
BASIS_SET_FILE_NAME BASIS_ADMM
|
||||
&AUXILIARY_DENSITY_MATRIX_METHOD
|
||||
ADMM_PURIFICATION_METHOD NONE
|
||||
EXCH_CORRECTION_FUNC NONE
|
||||
EXCH_SCALING_MODEL NONE
|
||||
METHOD BASIS_PROJECTION
|
||||
&END
|
||||
&EXCITED_STATES T
|
||||
STATE 1
|
||||
&END EXCITED_STATES
|
||||
&SCF
|
||||
SCF_GUESS ATOMIC
|
||||
&OT
|
||||
PRECONDITIONER FULL_SINGLE_INVERSE
|
||||
MINIMIZER DIIS
|
||||
&END
|
||||
&OUTER_SCF
|
||||
MAX_SCF 20
|
||||
EPS_SCF 1.0E-7
|
||||
&END
|
||||
MAX_SCF 50
|
||||
EPS_SCF 1.0E-7
|
||||
&END SCF
|
||||
&XC
|
||||
&XC_FUNCTIONAL PBE0
|
||||
&END XC_FUNCTIONAL
|
||||
&END XC
|
||||
&MGRID
|
||||
CUTOFF 300
|
||||
REL_CUTOFF 60
|
||||
&END
|
||||
&POISSON
|
||||
PERIODIC NONE
|
||||
POISSON_SOLVER MT
|
||||
&END
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC [angstrom] 4.0 4.0 4.0
|
||||
PERIODIC NONE
|
||||
&END
|
||||
&COORD
|
||||
O 0.000000 0.000000 0.000000
|
||||
H 0.000000 -0.757136 0.580545
|
||||
H 0.000000 0.757136 0.580545
|
||||
&END COORD
|
||||
&TOPOLOGY
|
||||
&CENTER_COORDINATES
|
||||
&END
|
||||
&END
|
||||
&KIND H
|
||||
BASIS_SET DZV-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q1
|
||||
&END KIND
|
||||
&KIND O
|
||||
BASIS_SET DZVP-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q6
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&PRINT
|
||||
&FORCES
|
||||
&END
|
||||
&END
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT ftest
|
||||
RUN_TYPE GEO_OPT
|
||||
&END GLOBAL
|
||||
&MOTION
|
||||
&GEO_OPT
|
||||
MAX_ITER 1
|
||||
&END
|
||||
&END
|
||||
&DEBUG
|
||||
DEBUG_FORCES .TRUE.
|
||||
DEBUG_STRESS_TENSOR .FALSE.
|
||||
DEBUG_DIPOLE .FALSE.
|
||||
DEBUG_POLARIZABILITY .FALSE.
|
||||
STOP_ON_MISMATCH F
|
||||
DE 0.0005
|
||||
&END
|
||||
|
||||
103
tests/QS/regtest-tddfpt-admm/h2o_a04.inp
Normal file
103
tests/QS/regtest-tddfpt-admm/h2o_a04.inp
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
&FORCE_EVAL
|
||||
METHOD Quickstep
|
||||
&PROPERTIES
|
||||
&TDDFPT
|
||||
KERNEL FULL
|
||||
ADMM_KERNEL_CORRECTION_SYMMETRIC T
|
||||
ADMM_KERNEL_XC_CORRECTION F
|
||||
NSTATES 2
|
||||
MAX_ITER 50
|
||||
CONVERGENCE [eV] 1.0e-7
|
||||
RKS_TRIPLETS F
|
||||
&END TDDFPT
|
||||
&END PROPERTIES
|
||||
&DFT
|
||||
&QS
|
||||
METHOD GPW
|
||||
&END QS
|
||||
BASIS_SET_FILE_NAME BASIS_SET
|
||||
BASIS_SET_FILE_NAME BASIS_ADMM
|
||||
&AUXILIARY_DENSITY_MATRIX_METHOD
|
||||
ADMM_PURIFICATION_METHOD NONE
|
||||
EXCH_CORRECTION_FUNC PBEX
|
||||
EXCH_SCALING_MODEL NONE
|
||||
METHOD BASIS_PROJECTION
|
||||
&END
|
||||
&EXCITED_STATES T
|
||||
STATE 1
|
||||
&END EXCITED_STATES
|
||||
&SCF
|
||||
SCF_GUESS ATOMIC
|
||||
&OT
|
||||
PRECONDITIONER FULL_SINGLE_INVERSE
|
||||
MINIMIZER DIIS
|
||||
&END
|
||||
&OUTER_SCF
|
||||
MAX_SCF 20
|
||||
EPS_SCF 1.0E-7
|
||||
&END
|
||||
MAX_SCF 50
|
||||
EPS_SCF 1.0E-7
|
||||
&END SCF
|
||||
&XC
|
||||
&XC_FUNCTIONAL PBE0
|
||||
&END XC_FUNCTIONAL
|
||||
&END XC
|
||||
&MGRID
|
||||
CUTOFF 300
|
||||
REL_CUTOFF 60
|
||||
&END
|
||||
&POISSON
|
||||
PERIODIC NONE
|
||||
POISSON_SOLVER MT
|
||||
&END
|
||||
&END DFT
|
||||
&SUBSYS
|
||||
&CELL
|
||||
ABC [angstrom] 4.0 4.0 4.0
|
||||
PERIODIC NONE
|
||||
&END
|
||||
&COORD
|
||||
O 0.000000 0.000000 0.000000
|
||||
H 0.000000 -0.757136 0.580545
|
||||
H 0.000000 0.757136 0.580545
|
||||
&END COORD
|
||||
&TOPOLOGY
|
||||
&CENTER_COORDINATES
|
||||
&END
|
||||
&END
|
||||
&KIND H
|
||||
BASIS_SET DZV-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q1
|
||||
&END KIND
|
||||
&KIND O
|
||||
BASIS_SET DZVP-GTH-PADE
|
||||
BASIS_SET AUX_FIT FIT3
|
||||
POTENTIAL GTH-PADE-q6
|
||||
&END KIND
|
||||
&END SUBSYS
|
||||
&PRINT
|
||||
&FORCES
|
||||
&END
|
||||
&END
|
||||
&END FORCE_EVAL
|
||||
&GLOBAL
|
||||
PRINT_LEVEL LOW
|
||||
PROJECT ftest
|
||||
RUN_TYPE GEO_OPT
|
||||
&END GLOBAL
|
||||
&MOTION
|
||||
&GEO_OPT
|
||||
MAX_ITER 1
|
||||
&END
|
||||
&END
|
||||
&DEBUG
|
||||
DEBUG_FORCES .TRUE.
|
||||
DEBUG_STRESS_TENSOR .FALSE.
|
||||
DEBUG_DIPOLE .FALSE.
|
||||
DEBUG_POLARIZABILITY .FALSE.
|
||||
STOP_ON_MISMATCH F
|
||||
DE 0.0005
|
||||
&END
|
||||
|
||||
|
|
@ -57,6 +57,7 @@ QS/regtest-cdft-hirshfeld
|
|||
SIRIUS/regtest-1 sirius
|
||||
QS/regtest-embed libint
|
||||
QS/regtest-pod
|
||||
QS/regtest-tddfpt-admm libint
|
||||
QS/regtest-debug-1
|
||||
QS/regtest-debug-2 libint
|
||||
QS/regtest-debug-3 libint
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue