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:
Juerg Hutter 2022-07-16 19:47:41 +02:00 committed by GitHub
parent 83879e1e52
commit 00065fbbfa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 664 additions and 114 deletions

View file

@ -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
!

View file

@ -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)

View file

@ -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.", &

View file

@ -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, &

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View 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

View 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

View 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

View 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

View 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

View 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

View file

@ -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